<?php<liu21st@gmail.com>namespace Think\Template\TagLib;
use Think\Template\TagLib;
class Html extends TagLib
{
protected $tags = array(
'editor' => array('attr' => 'id,name,style,width,height,type', 'close' => 1),
'select' => array('attr' => 'name,options,values,output,multiple,id,size,first,change,selected,dblclick', 'close' => 0),
'grid' => array('attr' => 'id,pk,style,action,actionlist,show,datasource', 'close' => 0),
'list' => array('attr' => 'id,pk,style,action,actionlist,show,datasource,checkbox', 'close' => 0),
'imagebtn' => array('attr' => 'id,name,value,type,style,click', 'close' => 0),
'checkbox' => array('attr' => 'name,checkboxes,checked,separator', 'close' => 0),
'radio' => array('attr' => 'name,radios,checked,separator', 'close' => 0),
);
/**
* editor标签解析 插入可视化编辑器
* 格式: <html:editor id="editor" name="remark" type="FCKeditor" style="" >{$vo.remark}</html:editor>
* @access public
* @param array $tag 标签属性
* @return string|void
*/
public function _editor($tag, $content)
{
$id = !empty($tag['id']) ? $tag['id'] : '_editor';
$name = $tag['name'];
$style = !empty($tag['style']) ? $tag['style'] : '';
$width = !empty($tag['width']) ? $tag['width'] : '100%';
$height = !empty($tag['height']) ? $tag['height'] : '320px';
$type = $tag['type'];
switch (strtoupper($type)) {
case 'FCKEDITOR':
$parseStr = '<script type="text/javascript" src="__ROOT__/Public/Js/FCKeditor/fckeditor.js"></script><textarea id="' . $id . '" name="' . $name . '">' . $content . '</textarea><script type="text/javascript"> var oFCKeditor = new FCKeditor( "' . $id . '","' . $width . '","' . $height . '" ) ; oFCKeditor.BasePath = "__ROOT__/Public/Js/FCKeditor/" ; oFCKeditor.ReplaceTextarea() ;function resetEditor(){setContents("' . $id . '",document.getElementById("' . $id . '").value)}; function saveEditor(){document.getElementById("' . $id . '").value = getContents("' . $id . '");} function InsertHTML(html){ var oEditor = FCKeditorAPI.GetInstance("' . $id . '") ;if (oEditor.EditMode == FCK_EDITMODE_WYSIWYG ){oEditor.InsertHtml(html) ;}else alert( "FCK必须处于WYSIWYG模式!" ) ;}</script> ';
break;
case 'FCKMINI':
$parseStr = '<script type="text/javascript" src="__ROOT__/Public/Js/FCKMini/fckeditor.js"></script><textarea id="' . $id . '" name="' . $name . '">' . $content . '</textarea><script type="text/javascript"> var oFCKeditor = new FCKeditor( "' . $id . '","' . $width . '","' . $height . '" ) ; oFCKeditor.BasePath = "__ROOT__/Public/Js/FCKMini/" ; oFCKeditor.ReplaceTextarea() ;function resetEditor(){setContents("' . $id . '",document.getElementById("' . $id . '").value)}; function saveEditor(){document.getElementById("' . $id . '").value = getContents("' . $id . '");} function InsertHTML(html){ var oEditor = FCKeditorAPI.GetInstance("' . $id . '") ;if (oEditor.EditMode == FCK_EDITMODE_WYSIWYG ){oEditor.InsertHtml(html) ;}else alert( "FCK必须处于WYSIWYG模式!" ) ;}</script> ';
break;
case 'EWEBEDITOR':
$parseStr = "<script type='text/javascript' src='__ROOT__/Public/Js/eWebEditor/js/edit.js'></script><input type='hidden' id='{$id}' name='{$name}' value='{$conent}'><iframe src='__ROOT__/Public/Js/eWebEditor/ewebeditor.htm?id={$name}' frameborder=0 scrolling=no width='{$width}' height='{$height}'></iframe><script type='text/javascript'>function saveEditor(){document.getElementById('{$id}').value = getHTML();} </script>";
break;
case 'NETEASE':
$parseStr = '<textarea id="' . $id . '" name="' . $name . '" style="display:none">' . $content . '</textarea><iframe ID="Editor" name="Editor" src="__ROOT__/Public/Js/HtmlEditor/index.html?ID=' . $name . '" frameBorder="0" marginHeight="0" marginWidth="0" scrolling="No" style="height:' . $height . ';width:' . $width . '"></iframe>';
break;
case 'UBB':
$parseStr = '<script type="text/javascript" src="__ROOT__/Public/Js/UbbEditor.js"></script><div style="padding:1px;width:' . $width . ';border:1px solid silver;float:left;"><script LANGUAGE="JavaScript"> showTool(); </script></div><div><TEXTAREA id="UBBEditor" name="' . $name . '" style="clear:both;float:none;width:' . $width . ';height:' . $height . '" >' . $content . '</TEXTAREA></div><div style="padding:1px;width:' . $width . ';border:1px solid silver;float:left;"><script LANGUAGE="JavaScript">showEmot(); </script></div>';
break;
case 'KINDEDITOR':
$parseStr = '<script type="text/javascript" src="__ROOT__/Public/Js/KindEditor/kindeditor.js"></script><script type="text/javascript"> KE.show({ id : \'' . $id . '\' ,urlType : "absolute"});</script><textarea id="' . $id . '" style="' . $style . '" name="' . $name . '" >' . $content . '</textarea>';
break;
default:
$parseStr = '<textarea id="' . $id . '" style="' . $style . '" name="' . $name . '" >' . $content . '</textarea>';
}
return $parseStr;
}
/**
* imageBtn标签解析
* 格式: <html:imageBtn type="" value="" />
* @access public
* @param array $tag 标签属性
* @return string|void
*/
public function _imageBtn($tag)
{
$name = $tag['name']; $value = $tag['value']; $id = isset($tag['id']) ? $tag['id'] : ''; $style = isset($tag['style']) ? $tag['style'] : ''; $click = isset($tag['click']) ? $tag['click'] : ''; $type = empty($tag['type']) ? 'button' : $tag['type'];
if (!empty($name)) {
$parseStr = '<div class="' . $style . '" ><input type="' . $type . '" id="' . $id . '" name="' . $name . '" value="' . $value . '" onclick="' . $click . '" class="' . $name . ' imgButton"></div>';
} else {
$parseStr = '<div class="' . $style . '" ><input type="' . $type . '" id="' . $id . '" name="' . $name . '" value="' . $value . '" onclick="' . $click . '" class="button"></div>';
}
return $parseStr;
}
/**
* imageLink标签解析
* 格式: <html:imageLink type="" value="" />
* @access public
* @param array $tag 标签属性
* @return string|void
*/
public function _imgLink($tag)
{
$name = $tag['name']; $alt = $tag['alt']; $id = $tag['id']; $style = $tag['style']; $click = $tag['click']; $type = $tag['type']; if (empty($type)) {
$type = 'button';
}
$parseStr = '<span class="' . $style . '" ><input title="' . $alt . '" type="' . $type . '" id="' . $id . '" name="' . $name . '" onmouseover="this.style.filter=\'alpha(opacity=100)\'" onmouseout="this.style.filter=\'alpha(opacity=80)\'" onclick="' . $click . '" align="absmiddle" class="' . $name . ' imgLink"></span>';
return $parseStr;
}
/**
* select标签解析
* 格式: <html:select options="name" selected="value" />
* @access public
* @param array $tag 标签属性
* @return string|void
*/
public function _select($tag)
{
$name = $tag['name'];
$options = $tag['options'];
$values = $tag['values'];
$output = $tag['output'];
$multiple = $tag['multiple'];
$id = $tag['id'];
$size = $tag['size'];
$first = $tag['first'];
$selected = $tag['selected'];
$style = $tag['style'];
$ondblclick = $tag['dblclick'];
$onchange = $tag['change'];
if (!empty($multiple)) {
$parseStr = '<select id="' . $id . '" name="' . $name . '" ondblclick="' . $ondblclick . '" onchange="' . $onchange . '" multiple="multiple" class="' . $style . '" size="' . $size . '" >';
} else {
$parseStr = '<select id="' . $id . '" name="' . $name . '" onchange="' . $onchange . '" ondblclick="' . $ondblclick . '" class="' . $style . '" >';
}
if (!empty($first)) {
$parseStr .= '<option value="" >' . $first . '</option>';
}
if (!empty($options)) {
$parseStr .= '<?php foreach(';
if (!empty($selected)) {
$parseStr .= '<?php if(!empty($' . $selected . ') && ($' . $selected . ' == $key || in_array($key,$' . $selected . '))) { ?>';
$parseStr .= '<option selected="selected" value="<?php echo $key ?>"><?php echo $val ?></option>';
$parseStr .= '<?php }else { ?><option value="<?php echo $key ?>"><?php echo $val ?></option>';
$parseStr .= '<?php } ?>';
} else {
$parseStr .= '<option value="<?php echo $key ?>"><?php echo $val ?></option>';
}
$parseStr .= '<?php } ?>';
} else if (!empty($values)) {
$parseStr .= '<?php for($i=0;$i<count(';
if (!empty($selected)) {
$parseStr .= '<?php if(isset($' . $selected . ') && ((is_string($' . $selected . ') && $' . $selected . ' == $' . $values . '[$i]) || (is_array($' . $selected . ') && in_array($' . $values . '[$i],$' . $selected . ')))) { ?>';
$parseStr .= '<option selected="selected" value="<?php echo $' . $values . '[$i] ?>"><?php echo $' . $output . '[$i] ?></option>';
$parseStr .= '<?php }else { ?><option value="<?php echo $' . $values . '[$i] ?>"><?php echo $' . $output . '[$i] ?></option>';
$parseStr .= '<?php } ?>';
} else {
$parseStr .= '<option value="<?php echo $' . $values . '[$i] ?>"><?php echo $' . $output . '[$i] ?></option>';
}
$parseStr .= '<?php } ?>';
}
$parseStr .= '</select>';
return $parseStr;
}
/**
* checkbox标签解析
* 格式: <html:checkbox checkboxes="" checked="" />
* @access public
* @param array $tag 标签属性
* @return string|void
*/
public function _checkbox($tag)
{
$name = $tag['name'];
$checkboxes = $tag['checkboxes'];
$checked = $tag['checked'];
$separator = $tag['separator'];
$checkboxes = $this->tpl->get($checkboxes);
$checked = $this->tpl->get($checked) ? $this->tpl->get($checked) : $checked;
$parseStr = '';
foreach ($checkboxes as $key => $val) {
if ($checked == $key || in_array($key, $checked)) {
$parseStr .= '<input type="checkbox" checked="checked" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
} else {
$parseStr .= '<input type="checkbox" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
}
}
return $parseStr;
}
/**
* radio标签解析
* 格式: <html:radio radios="name" checked="value" />
* @access public
* @param array $tag 标签属性
* @return string|void
*/
public function _radio($tag)
{
$name = $tag['name'];
$radios = $tag['radios'];
$checked = $tag['checked'];
$separator = $tag['separator'];
$radios = $this->tpl->get($radios);
$checked = $this->tpl->get($checked) ? $this->tpl->get($checked) : $checked;
$parseStr = '';
foreach ($radios as $key => $val) {
if ($checked == $key) {
$parseStr .= '<input type="radio" checked="checked" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
} else {
$parseStr .= '<input type="radio" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
}
}
return $parseStr;
}
/**
* list标签解析
* 格式: <html:grid datasource="" show="vo" />
* @access public
* @param array $tag 标签属性
* @return string
*/
public function _grid($tag)
{
$id = $tag['id']; $datasource = $tag['datasource']; $pk = empty($tag['pk']) ? 'id' : $tag['pk']; $style = $tag['style']; $name = !empty($tag['name']) ? $tag['name'] : 'vo'; $action = !empty($tag['action']) ? $tag['action'] : false; $key = !empty($tag['key']) ? true : false;
if (isset($tag['actionlist'])) {
$actionlist = explode(',', trim($tag['actionlist'])); }
if (substr($tag['show'], 0, 1) == '$') {
$show = $this->tpl->get(substr($tag['show'], 1));
} else {
$show = $tag['show'];
}
$show = explode(',', $show);
$colNum = count($show);
if (!empty($action)) {
$colNum++;
}
if (!empty($key)) {
$colNum++;
}
$parseStr = "\n";
$parseStr .= '<table id="' . $id . '" class="' . $style . '" cellpadding=0 cellspacing=0 >';
$parseStr .= '<tr><td height="5" colspan="' . $colNum . '" class="topTd" ></td></tr>';
$parseStr .= '<tr class="row" >';
$fields = array();
foreach ($show as $val) {
$fields[] = explode(':', $val);
}
if (!empty($key)) {
$parseStr .= '<th width="12">No</th>';
}
foreach ($fields as $field) { $property = explode('|', $field[0]);
$showname = explode('|', $field[1]);
if (isset($showname[1])) {
$parseStr .= '<th width="' . $showname[1] . '">';
} else {
$parseStr .= '<th>';
}
$parseStr .= $showname[0] . '</th>';
}
if (!empty($action)) { $parseStr .= '<th >操作</th>';
}
$parseStr .= '</tr>';
$parseStr .= '<volist name="' . $datasource . '" id="' . $name . '" ><tr class="row" >';
if (!empty($key)) {
$parseStr .= '<td>{$i}</td>';
}
foreach ($fields as $field) {
$parseStr .= '<td>';
if (!empty($field[2])) {
$href = explode('|', $field[2]);
if (count($href) > 1) {
$array = explode('^', $href[1]);
if (count($array) > 1) {
foreach ($array as $a) {
$temp[] = '\'{$' . $name . '.' . $a . '|addslashes}\'';
}
$parseStr .= '<a href="javascript:' . $href[0] . '(' . implode(',', $temp) . ')">';
} else {
$parseStr .= '<a href="javascript:' . $href[0] . '(\'{$' . $name . '.' . $href[1] . '|addslashes}\')">';
}
} else {
$parseStr .= '<a href="javascript:' . $field[2] . '(\'{$' . $name . '.' . $pk . '|addslashes}\')">';
}
}
if (strpos($field[0], '^')) {
$property = explode('^', $field[0]);
foreach ($property as $p) {
$unit = explode('|', $p);
if (count($unit) > 1) {
$parseStr .= '{$' . $name . '.' . $unit[0] . '|' . $unit[1] . '} ';
} else {
$parseStr .= '{$' . $name . '.' . $p . '} ';
}
}
} else {
$property = explode('|', $field[0]);
if (count($property) > 1) {
$parseStr .= '{$' . $name . '.' . $property[0] . '|' . $property[1] . '}';
} else {
$parseStr .= '{$' . $name . '.' . $field[0] . '}';
}
}
if (!empty($field[2])) {
$parseStr .= '</a>';
}
$parseStr .= '</td>';
}
if (!empty($action)) { if (!empty($actionlist[0])) { $parseStr .= '<td>';
foreach ($actionlist as $val) {
if (strpos($val, ':')) {
$a = explode(':', $val);
if (count($a) > 2) {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $a[2] . '}\')">' . $a[1] . '</a> ';
} else {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $pk . '}\')">' . $a[1] . '</a> ';
}
} else {
$array = explode('|', $val);
if (count($array) > 2) {
$parseStr .= ' <a href="javascript:' . $array[1] . '(\'{$' . $name . '.' . $array[0] . '}\')">' . $array[2] . '</a> ';
} else {
$parseStr .= ' {$' . $name . '.' . $val . '} ';
}
}
}
$parseStr .= '</td>';
}
}
$parseStr .= '</tr></volist><tr><td height="5" colspan="' . $colNum . '" class="bottomTd"></td></tr></table>';
$parseStr .= "\n\n";
return $parseStr;
}
/**
* list标签解析
* 格式: <html:list datasource="" show="" />
* @access public
* @param array $tag 标签属性
* @return string
*/
public function _list($tag)
{
$id = $tag['id']; $datasource = $tag['datasource']; $pk = empty($tag['pk']) ? 'id' : $tag['pk']; $style = $tag['style']; $name = !empty($tag['name']) ? $tag['name'] : 'vo'; $action = 'true' == $tag['action'] ? true : false; $key = !empty($tag['key']) ? true : false;
$sort = 'false' == $tag['sort'] ? false : true;
$checkbox = $tag['checkbox']; if (isset($tag['actionlist'])) {
if (substr($tag['actionlist'], 0, 1) == '$') {
$actionlist = $this->tpl->get(substr($tag['actionlist'], 1));
} else {
$actionlist = $tag['actionlist'];
}
$actionlist = explode(',', trim($actionlist)); }
if (substr($tag['show'], 0, 1) == '$') {
$show = $this->tpl->get(substr($tag['show'], 1));
} else {
$show = $tag['show'];
}
$show = explode(',', $show);
$colNum = count($show);
if (!empty($checkbox)) {
$colNum++;
}
if (!empty($action)) {
$colNum++;
}
if (!empty($key)) {
$colNum++;
}
$parseStr = "\n";
$parseStr .= '<table id="' . $id . '" class="' . $style . '" cellpadding=0 cellspacing=0 >';
$parseStr .= '<tr><td height="5" colspan="' . $colNum . '" class="topTd" ></td></tr>';
$parseStr .= '<tr class="row" >';
$fields = array();
foreach ($show as $val) {
$fields[] = explode(':', $val);
}
if (!empty($checkbox) && 'true' == strtolower($checkbox)) { $parseStr .= '<th width="8"><input type="checkbox" id="check" onclick="CheckAll(\'' . $id . '\')"></th>';
}
if (!empty($key)) {
$parseStr .= '<th width="12">No</th>';
}
foreach ($fields as $field) { $property = explode('|', $field[0]);
$showname = explode('|', $field[1]);
if (isset($showname[1])) {
$parseStr .= '<th width="' . $showname[1] . '">';
} else {
$parseStr .= '<th>';
}
$showname[2] = isset($showname[2]) ? $showname[2] : $showname[0];
if ($sort) {
$parseStr .= '<a href="javascript:sortBy(\'' . $property[0] . '\',\'{$sort}\',\'' . ACTION_NAME . '\')" title="按照' . $showname[2] . '{$sortType} ">' . $showname[0] . '<eq name="order" value="' . $property[0] . '" ><img src="__PUBLIC__/images/{$sortImg}.gif" width="12" height="17" border="0" align="absmiddle"></eq></a></th>';
} else {
$parseStr .= $showname[0] . '</th>';
}
}
if (!empty($action)) { $parseStr .= '<th >操作</th>';
}
$parseStr .= '</tr>';
$parseStr .= '<volist name="' . $datasource . '" id="' . $name . '" ><tr class="row" '; if (!empty($checkbox)) {
}
$parseStr .= '>';
if (!empty($checkbox)) { $parseStr .= '<td><input type="checkbox" name="key" value="{$' . $name . '.' . $pk . '}"></td>';
}
if (!empty($key)) {
$parseStr .= '<td>{$i}</td>';
}
foreach ($fields as $field) {
$parseStr .= '<td>';
if (!empty($field[2])) {
$href = explode('|', $field[2]);
if (count($href) > 1) {
$array = explode('^', $href[1]);
if (count($array) > 1) {
foreach ($array as $a) {
$temp[] = '\'{$' . $name . '.' . $a . '|addslashes}\'';
}
$parseStr .= '<a href="javascript:' . $href[0] . '(' . implode(',', $temp) . ')">';
} else {
$parseStr .= '<a href="javascript:' . $href[0] . '(\'{$' . $name . '.' . $href[1] . '|addslashes}\')">';
}
} else {
$parseStr .= '<a href="javascript:' . $field[2] . '(\'{$' . $name . '.' . $pk . '|addslashes}\')">';
}
}
if (strpos($field[0], '^')) {
$property = explode('^', $field[0]);
foreach ($property as $p) {
$unit = explode('|', $p);
if (count($unit) > 1) {
$parseStr .= '{$' . $name . '.' . $unit[0] . '|' . $unit[1] . '} ';
} else {
$parseStr .= '{$' . $name . '.' . $p . '} ';
}
}
} else {
$property = explode('|', $field[0]);
if (count($property) > 1) {
$parseStr .= '{$' . $name . '.' . $property[0] . '|' . $property[1] . '}';
} else {
$parseStr .= '{$' . $name . '.' . $field[0] . '}';
}
}
if (!empty($field[2])) {
$parseStr .= '</a>';
}
$parseStr .= '</td>';
}
if (!empty($action)) { if (!empty($actionlist[0])) { $parseStr .= '<td>';
foreach ($actionlist as $val) {
if (strpos($val, ':')) {
$a = explode(':', $val);
if (count($a) > 2) {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $a[2] . '}\')">' . $a[1] . '</a> ';
} else {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $pk . '}\')">' . $a[1] . '</a> ';
}
} else {
$array = explode('|', $val);
if (count($array) > 2) {
$parseStr .= ' <a href="javascript:' . $array[1] . '(\'{$' . $name . '.' . $array[0] . '}\')">' . $array[2] . '</a> ';
} else {
$parseStr .= ' {$' . $name . '.' . $val . '} ';
}
}
}
$parseStr .= '</td>';
}
}
$parseStr .= '</tr></volist><tr><td height="5" colspan="' . $colNum . '" class="bottomTd"></td></tr></table>';
$parseStr .= "\n\n";
return $parseStr;
}
}
. $options . ' as $key=>$val) { ?>';
if (!empty($selected)) {
$parseStr .= '{{{PHP2}}}';
$parseStr .= '<option selected="selected" value="{{{PHP3}}}">{{{PHP4}}}</option>';
$parseStr .= '{{{PHP5}}}<option value="{{{PHP6}}}">{{{PHP7}}}</option>';
$parseStr .= '{{{PHP8}}}';
} else {
$parseStr .= '<option value="{{{PHP9}}}">{{{PHP10}}}</option>';
}
$parseStr .= '{{{PHP11}}}';
} else if (!empty($values)) {
$parseStr .= '{{{PHP12}}}';
if (!empty($selected)) {
$parseStr .= '{{{PHP13}}}';
$parseStr .= '<option selected="selected" value="{{{PHP14}}}">{{{PHP15}}}</option>';
$parseStr .= '{{{PHP16}}}<option value="{{{PHP17}}}">{{{PHP18}}}</option>';
$parseStr .= '{{{PHP19}}}';
} else {
$parseStr .= '<option value="{{{PHP20}}}">{{{PHP21}}}</option>';
}
$parseStr .= '{{{PHP22}}}';
}
$parseStr .= '</select>';
return $parseStr;
}
/**
* checkbox标签解析
* 格式: <html:checkbox checkboxes="" checked="" />
* @access public
* @param array $tag 标签属性
* @return string|void
*/
public function _checkbox($tag)
{
$name = $tag['name'];
$checkboxes = $tag['checkboxes'];
$checked = $tag['checked'];
$separator = $tag['separator'];
$checkboxes = $this->tpl->get($checkboxes);
$checked = $this->tpl->get($checked) ? $this->tpl->get($checked) : $checked;
$parseStr = '';
foreach ($checkboxes as $key => $val) {
if ($checked == $key || in_array($key, $checked)) {
$parseStr .= '<input type="checkbox" checked="checked" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
} else {
$parseStr .= '<input type="checkbox" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
}
}
return $parseStr;
}
/**
* radio标签解析
* 格式: <html:radio radios="name" checked="value" />
* @access public
* @param array $tag 标签属性
* @return string|void
*/
public function _radio($tag)
{
$name = $tag['name'];
$radios = $tag['radios'];
$checked = $tag['checked'];
$separator = $tag['separator'];
$radios = $this->tpl->get($radios);
$checked = $this->tpl->get($checked) ? $this->tpl->get($checked) : $checked;
$parseStr = '';
foreach ($radios as $key => $val) {
if ($checked == $key) {
$parseStr .= '<input type="radio" checked="checked" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
} else {
$parseStr .= '<input type="radio" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
}
}
return $parseStr;
}
/**
* list标签解析
* 格式: <html:grid datasource="" show="vo" />
* @access public
* @param array $tag 标签属性
* @return string
*/
public function _grid($tag)
{
$id = $tag['id']; $datasource = $tag['datasource']; $pk = empty($tag['pk']) ? 'id' : $tag['pk']; $style = $tag['style']; $name = !empty($tag['name']) ? $tag['name'] : 'vo'; $action = !empty($tag['action']) ? $tag['action'] : false; $key = !empty($tag['key']) ? true : false;
if (isset($tag['actionlist'])) {
$actionlist = explode(',', trim($tag['actionlist'])); }
if (substr($tag['show'], 0, 1) == '$') {
$show = $this->tpl->get(substr($tag['show'], 1));
} else {
$show = $tag['show'];
}
$show = explode(',', $show);
$colNum = count($show);
if (!empty($action)) {
$colNum++;
}
if (!empty($key)) {
$colNum++;
}
$parseStr = "\n";
$parseStr .= '<table id="' . $id . '" class="' . $style . '" cellpadding=0 cellspacing=0 >';
$parseStr .= '<tr><td height="5" colspan="' . $colNum . '" class="topTd" ></td></tr>';
$parseStr .= '<tr class="row" >';
$fields = array();
foreach ($show as $val) {
$fields[] = explode(':', $val);
}
if (!empty($key)) {
$parseStr .= '<th width="12">No</th>';
}
foreach ($fields as $field) { $property = explode('|', $field[0]);
$showname = explode('|', $field[1]);
if (isset($showname[1])) {
$parseStr .= '<th width="' . $showname[1] . '">';
} else {
$parseStr .= '<th>';
}
$parseStr .= $showname[0] . '</th>';
}
if (!empty($action)) { $parseStr .= '<th >操作</th>';
}
$parseStr .= '</tr>';
$parseStr .= '<volist name="' . $datasource . '" id="' . $name . '" ><tr class="row" >';
if (!empty($key)) {
$parseStr .= '<td>{$i}</td>';
}
foreach ($fields as $field) {
$parseStr .= '<td>';
if (!empty($field[2])) {
$href = explode('|', $field[2]);
if (count($href) > 1) {
$array = explode('^', $href[1]);
if (count($array) > 1) {
foreach ($array as $a) {
$temp[] = '\'{$' . $name . '.' . $a . '|addslashes}\'';
}
$parseStr .= '<a href="javascript:' . $href[0] . '(' . implode(',', $temp) . ')">';
} else {
$parseStr .= '<a href="javascript:' . $href[0] . '(\'{$' . $name . '.' . $href[1] . '|addslashes}\')">';
}
} else {
$parseStr .= '<a href="javascript:' . $field[2] . '(\'{$' . $name . '.' . $pk . '|addslashes}\')">';
}
}
if (strpos($field[0], '^')) {
$property = explode('^', $field[0]);
foreach ($property as $p) {
$unit = explode('|', $p);
if (count($unit) > 1) {
$parseStr .= '{$' . $name . '.' . $unit[0] . '|' . $unit[1] . '} ';
} else {
$parseStr .= '{$' . $name . '.' . $p . '} ';
}
}
} else {
$property = explode('|', $field[0]);
if (count($property) > 1) {
$parseStr .= '{$' . $name . '.' . $property[0] . '|' . $property[1] . '}';
} else {
$parseStr .= '{$' . $name . '.' . $field[0] . '}';
}
}
if (!empty($field[2])) {
$parseStr .= '</a>';
}
$parseStr .= '</td>';
}
if (!empty($action)) { if (!empty($actionlist[0])) { $parseStr .= '<td>';
foreach ($actionlist as $val) {
if (strpos($val, ':')) {
$a = explode(':', $val);
if (count($a) > 2) {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $a[2] . '}\')">' . $a[1] . '</a> ';
} else {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $pk . '}\')">' . $a[1] . '</a> ';
}
} else {
$array = explode('|', $val);
if (count($array) > 2) {
$parseStr .= ' <a href="javascript:' . $array[1] . '(\'{$' . $name . '.' . $array[0] . '}\')">' . $array[2] . '</a> ';
} else {
$parseStr .= ' {$' . $name . '.' . $val . '} ';
}
}
}
$parseStr .= '</td>';
}
}
$parseStr .= '</tr></volist><tr><td height="5" colspan="' . $colNum . '" class="bottomTd"></td></tr></table>';
$parseStr .= "\n\n";
return $parseStr;
}
/**
* list标签解析
* 格式: <html:list datasource="" show="" />
* @access public
* @param array $tag 标签属性
* @return string
*/
public function _list($tag)
{
$id = $tag['id']; $datasource = $tag['datasource']; $pk = empty($tag['pk']) ? 'id' : $tag['pk']; $style = $tag['style']; $name = !empty($tag['name']) ? $tag['name'] : 'vo'; $action = 'true' == $tag['action'] ? true : false; $key = !empty($tag['key']) ? true : false;
$sort = 'false' == $tag['sort'] ? false : true;
$checkbox = $tag['checkbox']; if (isset($tag['actionlist'])) {
if (substr($tag['actionlist'], 0, 1) == '$') {
$actionlist = $this->tpl->get(substr($tag['actionlist'], 1));
} else {
$actionlist = $tag['actionlist'];
}
$actionlist = explode(',', trim($actionlist)); }
if (substr($tag['show'], 0, 1) == '$') {
$show = $this->tpl->get(substr($tag['show'], 1));
} else {
$show = $tag['show'];
}
$show = explode(',', $show);
$colNum = count($show);
if (!empty($checkbox)) {
$colNum++;
}
if (!empty($action)) {
$colNum++;
}
if (!empty($key)) {
$colNum++;
}
$parseStr = "\n";
$parseStr .= '<table id="' . $id . '" class="' . $style . '" cellpadding=0 cellspacing=0 >';
$parseStr .= '<tr><td height="5" colspan="' . $colNum . '" class="topTd" ></td></tr>';
$parseStr .= '<tr class="row" >';
$fields = array();
foreach ($show as $val) {
$fields[] = explode(':', $val);
}
if (!empty($checkbox) && 'true' == strtolower($checkbox)) { $parseStr .= '<th width="8"><input type="checkbox" id="check" onclick="CheckAll(\'' . $id . '\')"></th>';
}
if (!empty($key)) {
$parseStr .= '<th width="12">No</th>';
}
foreach ($fields as $field) { $property = explode('|', $field[0]);
$showname = explode('|', $field[1]);
if (isset($showname[1])) {
$parseStr .= '<th width="' . $showname[1] . '">';
} else {
$parseStr .= '<th>';
}
$showname[2] = isset($showname[2]) ? $showname[2] : $showname[0];
if ($sort) {
$parseStr .= '<a href="javascript:sortBy(\'' . $property[0] . '\',\'{$sort}\',\'' . ACTION_NAME . '\')" title="按照' . $showname[2] . '{$sortType} ">' . $showname[0] . '<eq name="order" value="' . $property[0] . '" ><img src="__PUBLIC__/images/{$sortImg}.gif" width="12" height="17" border="0" align="absmiddle"></eq></a></th>';
} else {
$parseStr .= $showname[0] . '</th>';
}
}
if (!empty($action)) { $parseStr .= '<th >操作</th>';
}
$parseStr .= '</tr>';
$parseStr .= '<volist name="' . $datasource . '" id="' . $name . '" ><tr class="row" '; if (!empty($checkbox)) {
}
$parseStr .= '>';
if (!empty($checkbox)) { $parseStr .= '<td><input type="checkbox" name="key" value="{$' . $name . '.' . $pk . '}"></td>';
}
if (!empty($key)) {
$parseStr .= '<td>{$i}</td>';
}
foreach ($fields as $field) {
$parseStr .= '<td>';
if (!empty($field[2])) {
$href = explode('|', $field[2]);
if (count($href) > 1) {
$array = explode('^', $href[1]);
if (count($array) > 1) {
foreach ($array as $a) {
$temp[] = '\'{$' . $name . '.' . $a . '|addslashes}\'';
}
$parseStr .= '<a href="javascript:' . $href[0] . '(' . implode(',', $temp) . ')">';
} else {
$parseStr .= '<a href="javascript:' . $href[0] . '(\'{$' . $name . '.' . $href[1] . '|addslashes}\')">';
}
} else {
$parseStr .= '<a href="javascript:' . $field[2] . '(\'{$' . $name . '.' . $pk . '|addslashes}\')">';
}
}
if (strpos($field[0], '^')) {
$property = explode('^', $field[0]);
foreach ($property as $p) {
$unit = explode('|', $p);
if (count($unit) > 1) {
$parseStr .= '{$' . $name . '.' . $unit[0] . '|' . $unit[1] . '} ';
} else {
$parseStr .= '{$' . $name . '.' . $p . '} ';
}
}
} else {
$property = explode('|', $field[0]);
if (count($property) > 1) {
$parseStr .= '{$' . $name . '.' . $property[0] . '|' . $property[1] . '}';
} else {
$parseStr .= '{$' . $name . '.' . $field[0] . '}';
}
}
if (!empty($field[2])) {
$parseStr .= '</a>';
}
$parseStr .= '</td>';
}
if (!empty($action)) { if (!empty($actionlist[0])) { $parseStr .= '<td>';
foreach ($actionlist as $val) {
if (strpos($val, ':')) {
$a = explode(':', $val);
if (count($a) > 2) {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $a[2] . '}\')">' . $a[1] . '</a> ';
} else {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $pk . '}\')">' . $a[1] . '</a> ';
}
} else {
$array = explode('|', $val);
if (count($array) > 2) {
$parseStr .= ' <a href="javascript:' . $array[1] . '(\'{$' . $name . '.' . $array[0] . '}\')">' . $array[2] . '</a> ';
} else {
$parseStr .= ' {$' . $name . '.' . $val . '} ';
}
}
}
$parseStr .= '</td>';
}
}
$parseStr .= '</tr></volist><tr><td height="5" colspan="' . $colNum . '" class="bottomTd"></td></tr></table>';
$parseStr .= "\n\n";
return $parseStr;
}
}
. $values . ');$i++) { ?>';
if (!empty($selected)) {
$parseStr .= '{{{PHP13}}}';
$parseStr .= '<option selected="selected" value="{{{PHP14}}}">{{{PHP15}}}</option>';
$parseStr .= '{{{PHP16}}}<option value="{{{PHP17}}}">{{{PHP18}}}</option>';
$parseStr .= '{{{PHP19}}}';
} else {
$parseStr .= '<option value="{{{PHP20}}}">{{{PHP21}}}</option>';
}
$parseStr .= '{{{PHP22}}}';
}
$parseStr .= '</select>';
return $parseStr;
}
/**
* checkbox标签解析
* 格式: <html:checkbox checkboxes="" checked="" />
* @access public
* @param array $tag 标签属性
* @return string|void
*/
public function _checkbox($tag)
{
$name = $tag['name'];
$checkboxes = $tag['checkboxes'];
$checked = $tag['checked'];
$separator = $tag['separator'];
$checkboxes = $this->tpl->get($checkboxes);
$checked = $this->tpl->get($checked) ? $this->tpl->get($checked) : $checked;
$parseStr = '';
foreach ($checkboxes as $key => $val) {
if ($checked == $key || in_array($key, $checked)) {
$parseStr .= '<input type="checkbox" checked="checked" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
} else {
$parseStr .= '<input type="checkbox" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
}
}
return $parseStr;
}
/**
* radio标签解析
* 格式: <html:radio radios="name" checked="value" />
* @access public
* @param array $tag 标签属性
* @return string|void
*/
public function _radio($tag)
{
$name = $tag['name'];
$radios = $tag['radios'];
$checked = $tag['checked'];
$separator = $tag['separator'];
$radios = $this->tpl->get($radios);
$checked = $this->tpl->get($checked) ? $this->tpl->get($checked) : $checked;
$parseStr = '';
foreach ($radios as $key => $val) {
if ($checked == $key) {
$parseStr .= '<input type="radio" checked="checked" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
} else {
$parseStr .= '<input type="radio" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
}
}
return $parseStr;
}
/**
* list标签解析
* 格式: <html:grid datasource="" show="vo" />
* @access public
* @param array $tag 标签属性
* @return string
*/
public function _grid($tag)
{
$id = $tag['id']; $datasource = $tag['datasource']; $pk = empty($tag['pk']) ? 'id' : $tag['pk']; $style = $tag['style']; $name = !empty($tag['name']) ? $tag['name'] : 'vo'; $action = !empty($tag['action']) ? $tag['action'] : false; $key = !empty($tag['key']) ? true : false;
if (isset($tag['actionlist'])) {
$actionlist = explode(',', trim($tag['actionlist'])); }
if (substr($tag['show'], 0, 1) == '$') {
$show = $this->tpl->get(substr($tag['show'], 1));
} else {
$show = $tag['show'];
}
$show = explode(',', $show);
$colNum = count($show);
if (!empty($action)) {
$colNum++;
}
if (!empty($key)) {
$colNum++;
}
$parseStr = "\n";
$parseStr .= '<table id="' . $id . '" class="' . $style . '" cellpadding=0 cellspacing=0 >';
$parseStr .= '<tr><td height="5" colspan="' . $colNum . '" class="topTd" ></td></tr>';
$parseStr .= '<tr class="row" >';
$fields = array();
foreach ($show as $val) {
$fields[] = explode(':', $val);
}
if (!empty($key)) {
$parseStr .= '<th width="12">No</th>';
}
foreach ($fields as $field) { $property = explode('|', $field[0]);
$showname = explode('|', $field[1]);
if (isset($showname[1])) {
$parseStr .= '<th width="' . $showname[1] . '">';
} else {
$parseStr .= '<th>';
}
$parseStr .= $showname[0] . '</th>';
}
if (!empty($action)) { $parseStr .= '<th >操作</th>';
}
$parseStr .= '</tr>';
$parseStr .= '<volist name="' . $datasource . '" id="' . $name . '" ><tr class="row" >';
if (!empty($key)) {
$parseStr .= '<td>{$i}</td>';
}
foreach ($fields as $field) {
$parseStr .= '<td>';
if (!empty($field[2])) {
$href = explode('|', $field[2]);
if (count($href) > 1) {
$array = explode('^', $href[1]);
if (count($array) > 1) {
foreach ($array as $a) {
$temp[] = '\'{$' . $name . '.' . $a . '|addslashes}\'';
}
$parseStr .= '<a href="javascript:' . $href[0] . '(' . implode(',', $temp) . ')">';
} else {
$parseStr .= '<a href="javascript:' . $href[0] . '(\'{$' . $name . '.' . $href[1] . '|addslashes}\')">';
}
} else {
$parseStr .= '<a href="javascript:' . $field[2] . '(\'{$' . $name . '.' . $pk . '|addslashes}\')">';
}
}
if (strpos($field[0], '^')) {
$property = explode('^', $field[0]);
foreach ($property as $p) {
$unit = explode('|', $p);
if (count($unit) > 1) {
$parseStr .= '{$' . $name . '.' . $unit[0] . '|' . $unit[1] . '} ';
} else {
$parseStr .= '{$' . $name . '.' . $p . '} ';
}
}
} else {
$property = explode('|', $field[0]);
if (count($property) > 1) {
$parseStr .= '{$' . $name . '.' . $property[0] . '|' . $property[1] . '}';
} else {
$parseStr .= '{$' . $name . '.' . $field[0] . '}';
}
}
if (!empty($field[2])) {
$parseStr .= '</a>';
}
$parseStr .= '</td>';
}
if (!empty($action)) { if (!empty($actionlist[0])) { $parseStr .= '<td>';
foreach ($actionlist as $val) {
if (strpos($val, ':')) {
$a = explode(':', $val);
if (count($a) > 2) {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $a[2] . '}\')">' . $a[1] . '</a> ';
} else {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $pk . '}\')">' . $a[1] . '</a> ';
}
} else {
$array = explode('|', $val);
if (count($array) > 2) {
$parseStr .= ' <a href="javascript:' . $array[1] . '(\'{$' . $name . '.' . $array[0] . '}\')">' . $array[2] . '</a> ';
} else {
$parseStr .= ' {$' . $name . '.' . $val . '} ';
}
}
}
$parseStr .= '</td>';
}
}
$parseStr .= '</tr></volist><tr><td height="5" colspan="' . $colNum . '" class="bottomTd"></td></tr></table>';
$parseStr .= "\n\n";
return $parseStr;
}
/**
* list标签解析
* 格式: <html:list datasource="" show="" />
* @access public
* @param array $tag 标签属性
* @return string
*/
public function _list($tag)
{
$id = $tag['id']; $datasource = $tag['datasource']; $pk = empty($tag['pk']) ? 'id' : $tag['pk']; $style = $tag['style']; $name = !empty($tag['name']) ? $tag['name'] : 'vo'; $action = 'true' == $tag['action'] ? true : false; $key = !empty($tag['key']) ? true : false;
$sort = 'false' == $tag['sort'] ? false : true;
$checkbox = $tag['checkbox']; if (isset($tag['actionlist'])) {
if (substr($tag['actionlist'], 0, 1) == '$') {
$actionlist = $this->tpl->get(substr($tag['actionlist'], 1));
} else {
$actionlist = $tag['actionlist'];
}
$actionlist = explode(',', trim($actionlist)); }
if (substr($tag['show'], 0, 1) == '$') {
$show = $this->tpl->get(substr($tag['show'], 1));
} else {
$show = $tag['show'];
}
$show = explode(',', $show);
$colNum = count($show);
if (!empty($checkbox)) {
$colNum++;
}
if (!empty($action)) {
$colNum++;
}
if (!empty($key)) {
$colNum++;
}
$parseStr = "\n";
$parseStr .= '<table id="' . $id . '" class="' . $style . '" cellpadding=0 cellspacing=0 >';
$parseStr .= '<tr><td height="5" colspan="' . $colNum . '" class="topTd" ></td></tr>';
$parseStr .= '<tr class="row" >';
$fields = array();
foreach ($show as $val) {
$fields[] = explode(':', $val);
}
if (!empty($checkbox) && 'true' == strtolower($checkbox)) { $parseStr .= '<th width="8"><input type="checkbox" id="check" onclick="CheckAll(\'' . $id . '\')"></th>';
}
if (!empty($key)) {
$parseStr .= '<th width="12">No</th>';
}
foreach ($fields as $field) { $property = explode('|', $field[0]);
$showname = explode('|', $field[1]);
if (isset($showname[1])) {
$parseStr .= '<th width="' . $showname[1] . '">';
} else {
$parseStr .= '<th>';
}
$showname[2] = isset($showname[2]) ? $showname[2] : $showname[0];
if ($sort) {
$parseStr .= '<a href="javascript:sortBy(\'' . $property[0] . '\',\'{$sort}\',\'' . ACTION_NAME . '\')" title="按照' . $showname[2] . '{$sortType} ">' . $showname[0] . '<eq name="order" value="' . $property[0] . '" ><img src="__PUBLIC__/images/{$sortImg}.gif" width="12" height="17" border="0" align="absmiddle"></eq></a></th>';
} else {
$parseStr .= $showname[0] . '</th>';
}
}
if (!empty($action)) { $parseStr .= '<th >操作</th>';
}
$parseStr .= '</tr>';
$parseStr .= '<volist name="' . $datasource . '" id="' . $name . '" ><tr class="row" '; if (!empty($checkbox)) {
}
$parseStr .= '>';
if (!empty($checkbox)) { $parseStr .= '<td><input type="checkbox" name="key" value="{$' . $name . '.' . $pk . '}"></td>';
}
if (!empty($key)) {
$parseStr .= '<td>{$i}</td>';
}
foreach ($fields as $field) {
$parseStr .= '<td>';
if (!empty($field[2])) {
$href = explode('|', $field[2]);
if (count($href) > 1) {
$array = explode('^', $href[1]);
if (count($array) > 1) {
foreach ($array as $a) {
$temp[] = '\'{$' . $name . '.' . $a . '|addslashes}\'';
}
$parseStr .= '<a href="javascript:' . $href[0] . '(' . implode(',', $temp) . ')">';
} else {
$parseStr .= '<a href="javascript:' . $href[0] . '(\'{$' . $name . '.' . $href[1] . '|addslashes}\')">';
}
} else {
$parseStr .= '<a href="javascript:' . $field[2] . '(\'{$' . $name . '.' . $pk . '|addslashes}\')">';
}
}
if (strpos($field[0], '^')) {
$property = explode('^', $field[0]);
foreach ($property as $p) {
$unit = explode('|', $p);
if (count($unit) > 1) {
$parseStr .= '{$' . $name . '.' . $unit[0] . '|' . $unit[1] . '} ';
} else {
$parseStr .= '{$' . $name . '.' . $p . '} ';
}
}
} else {
$property = explode('|', $field[0]);
if (count($property) > 1) {
$parseStr .= '{$' . $name . '.' . $property[0] . '|' . $property[1] . '}';
} else {
$parseStr .= '{$' . $name . '.' . $field[0] . '}';
}
}
if (!empty($field[2])) {
$parseStr .= '</a>';
}
$parseStr .= '</td>';
}
if (!empty($action)) { if (!empty($actionlist[0])) { $parseStr .= '<td>';
foreach ($actionlist as $val) {
if (strpos($val, ':')) {
$a = explode(':', $val);
if (count($a) > 2) {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $a[2] . '}\')">' . $a[1] . '</a> ';
} else {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $pk . '}\')">' . $a[1] . '</a> ';
}
} else {
$array = explode('|', $val);
if (count($array) > 2) {
$parseStr .= ' <a href="javascript:' . $array[1] . '(\'{$' . $name . '.' . $array[0] . '}\')">' . $array[2] . '</a> ';
} else {
$parseStr .= ' {$' . $name . '.' . $val . '} ';
}
}
}
$parseStr .= '</td>';
}
}
$parseStr .= '</tr></volist><tr><td height="5" colspan="' . $colNum . '" class="bottomTd"></td></tr></table>';
$parseStr .= "\n\n";
return $parseStr;
}
}
. $options . ' as $key=>$val) { ?>';
if (!empty($selected)) {
$parseStr .= '{{{PHP2}}}';
$parseStr .= '<option selected="selected" value="{{{PHP3}}}">{{{PHP4}}}</option>';
$parseStr .= '{{{PHP5}}}<option value="{{{PHP6}}}">{{{PHP7}}}</option>';
$parseStr .= '{{{PHP8}}}';
} else {
$parseStr .= '<option value="{{{PHP9}}}">{{{PHP10}}}</option>';
}
$parseStr .= '{{{PHP11}}}';
} else if (!empty($values)) {
$parseStr .= '{{{PHP12}}}';
if (!empty($selected)) {
$parseStr .= '{{{PHP13}}}';
$parseStr .= '<option selected="selected" value="{{{PHP14}}}">{{{PHP15}}}</option>';
$parseStr .= '{{{PHP16}}}<option value="{{{PHP17}}}">{{{PHP18}}}</option>';
$parseStr .= '{{{PHP19}}}';
} else {
$parseStr .= '<option value="{{{PHP20}}}">{{{PHP21}}}</option>';
}
$parseStr .= '{{{PHP22}}}';
}
$parseStr .= '</select>';
return $parseStr;
}
/**
* checkbox标签解析
* 格式: <html:checkbox checkboxes="" checked="" />
* @access public
* @param array $tag 标签属性
* @return string|void
*/
public function _checkbox($tag)
{
$name = $tag['name'];
$checkboxes = $tag['checkboxes'];
$checked = $tag['checked'];
$separator = $tag['separator'];
$checkboxes = $this->tpl->get($checkboxes);
$checked = $this->tpl->get($checked) ? $this->tpl->get($checked) : $checked;
$parseStr = '';
foreach ($checkboxes as $key => $val) {
if ($checked == $key || in_array($key, $checked)) {
$parseStr .= '<input type="checkbox" checked="checked" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
} else {
$parseStr .= '<input type="checkbox" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
}
}
return $parseStr;
}
/**
* radio标签解析
* 格式: <html:radio radios="name" checked="value" />
* @access public
* @param array $tag 标签属性
* @return string|void
*/
public function _radio($tag)
{
$name = $tag['name'];
$radios = $tag['radios'];
$checked = $tag['checked'];
$separator = $tag['separator'];
$radios = $this->tpl->get($radios);
$checked = $this->tpl->get($checked) ? $this->tpl->get($checked) : $checked;
$parseStr = '';
foreach ($radios as $key => $val) {
if ($checked == $key) {
$parseStr .= '<input type="radio" checked="checked" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
} else {
$parseStr .= '<input type="radio" name="' . $name . '[]" value="' . $key . '">' . $val . $separator;
}
}
return $parseStr;
}
/**
* list标签解析
* 格式: <html:grid datasource="" show="vo" />
* @access public
* @param array $tag 标签属性
* @return string
*/
public function _grid($tag)
{
$id = $tag['id']; $datasource = $tag['datasource']; $pk = empty($tag['pk']) ? 'id' : $tag['pk']; $style = $tag['style']; $name = !empty($tag['name']) ? $tag['name'] : 'vo'; $action = !empty($tag['action']) ? $tag['action'] : false; $key = !empty($tag['key']) ? true : false;
if (isset($tag['actionlist'])) {
$actionlist = explode(',', trim($tag['actionlist'])); }
if (substr($tag['show'], 0, 1) == '$') {
$show = $this->tpl->get(substr($tag['show'], 1));
} else {
$show = $tag['show'];
}
$show = explode(',', $show);
$colNum = count($show);
if (!empty($action)) {
$colNum++;
}
if (!empty($key)) {
$colNum++;
}
$parseStr = "\n";
$parseStr .= '<table id="' . $id . '" class="' . $style . '" cellpadding=0 cellspacing=0 >';
$parseStr .= '<tr><td height="5" colspan="' . $colNum . '" class="topTd" ></td></tr>';
$parseStr .= '<tr class="row" >';
$fields = array();
foreach ($show as $val) {
$fields[] = explode(':', $val);
}
if (!empty($key)) {
$parseStr .= '<th width="12">No</th>';
}
foreach ($fields as $field) { $property = explode('|', $field[0]);
$showname = explode('|', $field[1]);
if (isset($showname[1])) {
$parseStr .= '<th width="' . $showname[1] . '">';
} else {
$parseStr .= '<th>';
}
$parseStr .= $showname[0] . '</th>';
}
if (!empty($action)) { $parseStr .= '<th >操作</th>';
}
$parseStr .= '</tr>';
$parseStr .= '<volist name="' . $datasource . '" id="' . $name . '" ><tr class="row" >';
if (!empty($key)) {
$parseStr .= '<td>{$i}</td>';
}
foreach ($fields as $field) {
$parseStr .= '<td>';
if (!empty($field[2])) {
$href = explode('|', $field[2]);
if (count($href) > 1) {
$array = explode('^', $href[1]);
if (count($array) > 1) {
foreach ($array as $a) {
$temp[] = '\'{$' . $name . '.' . $a . '|addslashes}\'';
}
$parseStr .= '<a href="javascript:' . $href[0] . '(' . implode(',', $temp) . ')">';
} else {
$parseStr .= '<a href="javascript:' . $href[0] . '(\'{$' . $name . '.' . $href[1] . '|addslashes}\')">';
}
} else {
$parseStr .= '<a href="javascript:' . $field[2] . '(\'{$' . $name . '.' . $pk . '|addslashes}\')">';
}
}
if (strpos($field[0], '^')) {
$property = explode('^', $field[0]);
foreach ($property as $p) {
$unit = explode('|', $p);
if (count($unit) > 1) {
$parseStr .= '{$' . $name . '.' . $unit[0] . '|' . $unit[1] . '} ';
} else {
$parseStr .= '{$' . $name . '.' . $p . '} ';
}
}
} else {
$property = explode('|', $field[0]);
if (count($property) > 1) {
$parseStr .= '{$' . $name . '.' . $property[0] . '|' . $property[1] . '}';
} else {
$parseStr .= '{$' . $name . '.' . $field[0] . '}';
}
}
if (!empty($field[2])) {
$parseStr .= '</a>';
}
$parseStr .= '</td>';
}
if (!empty($action)) { if (!empty($actionlist[0])) { $parseStr .= '<td>';
foreach ($actionlist as $val) {
if (strpos($val, ':')) {
$a = explode(':', $val);
if (count($a) > 2) {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $a[2] . '}\')">' . $a[1] . '</a> ';
} else {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $pk . '}\')">' . $a[1] . '</a> ';
}
} else {
$array = explode('|', $val);
if (count($array) > 2) {
$parseStr .= ' <a href="javascript:' . $array[1] . '(\'{$' . $name . '.' . $array[0] . '}\')">' . $array[2] . '</a> ';
} else {
$parseStr .= ' {$' . $name . '.' . $val . '} ';
}
}
}
$parseStr .= '</td>';
}
}
$parseStr .= '</tr></volist><tr><td height="5" colspan="' . $colNum . '" class="bottomTd"></td></tr></table>';
$parseStr .= "\n\n";
return $parseStr;
}
/**
* list标签解析
* 格式: <html:list datasource="" show="" />
* @access public
* @param array $tag 标签属性
* @return string
*/
public function _list($tag)
{
$id = $tag['id']; $datasource = $tag['datasource']; $pk = empty($tag['pk']) ? 'id' : $tag['pk']; $style = $tag['style']; $name = !empty($tag['name']) ? $tag['name'] : 'vo'; $action = 'true' == $tag['action'] ? true : false; $key = !empty($tag['key']) ? true : false;
$sort = 'false' == $tag['sort'] ? false : true;
$checkbox = $tag['checkbox']; if (isset($tag['actionlist'])) {
if (substr($tag['actionlist'], 0, 1) == '$') {
$actionlist = $this->tpl->get(substr($tag['actionlist'], 1));
} else {
$actionlist = $tag['actionlist'];
}
$actionlist = explode(',', trim($actionlist)); }
if (substr($tag['show'], 0, 1) == '$') {
$show = $this->tpl->get(substr($tag['show'], 1));
} else {
$show = $tag['show'];
}
$show = explode(',', $show);
$colNum = count($show);
if (!empty($checkbox)) {
$colNum++;
}
if (!empty($action)) {
$colNum++;
}
if (!empty($key)) {
$colNum++;
}
$parseStr = "\n";
$parseStr .= '<table id="' . $id . '" class="' . $style . '" cellpadding=0 cellspacing=0 >';
$parseStr .= '<tr><td height="5" colspan="' . $colNum . '" class="topTd" ></td></tr>';
$parseStr .= '<tr class="row" >';
$fields = array();
foreach ($show as $val) {
$fields[] = explode(':', $val);
}
if (!empty($checkbox) && 'true' == strtolower($checkbox)) { $parseStr .= '<th width="8"><input type="checkbox" id="check" onclick="CheckAll(\'' . $id . '\')"></th>';
}
if (!empty($key)) {
$parseStr .= '<th width="12">No</th>';
}
foreach ($fields as $field) { $property = explode('|', $field[0]);
$showname = explode('|', $field[1]);
if (isset($showname[1])) {
$parseStr .= '<th width="' . $showname[1] . '">';
} else {
$parseStr .= '<th>';
}
$showname[2] = isset($showname[2]) ? $showname[2] : $showname[0];
if ($sort) {
$parseStr .= '<a href="javascript:sortBy(\'' . $property[0] . '\',\'{$sort}\',\'' . ACTION_NAME . '\')" title="按照' . $showname[2] . '{$sortType} ">' . $showname[0] . '<eq name="order" value="' . $property[0] . '" ><img src="__PUBLIC__/images/{$sortImg}.gif" width="12" height="17" border="0" align="absmiddle"></eq></a></th>';
} else {
$parseStr .= $showname[0] . '</th>';
}
}
if (!empty($action)) { $parseStr .= '<th >操作</th>';
}
$parseStr .= '</tr>';
$parseStr .= '<volist name="' . $datasource . '" id="' . $name . '" ><tr class="row" '; if (!empty($checkbox)) {
}
$parseStr .= '>';
if (!empty($checkbox)) { $parseStr .= '<td><input type="checkbox" name="key" value="{$' . $name . '.' . $pk . '}"></td>';
}
if (!empty($key)) {
$parseStr .= '<td>{$i}</td>';
}
foreach ($fields as $field) {
$parseStr .= '<td>';
if (!empty($field[2])) {
$href = explode('|', $field[2]);
if (count($href) > 1) {
$array = explode('^', $href[1]);
if (count($array) > 1) {
foreach ($array as $a) {
$temp[] = '\'{$' . $name . '.' . $a . '|addslashes}\'';
}
$parseStr .= '<a href="javascript:' . $href[0] . '(' . implode(',', $temp) . ')">';
} else {
$parseStr .= '<a href="javascript:' . $href[0] . '(\'{$' . $name . '.' . $href[1] . '|addslashes}\')">';
}
} else {
$parseStr .= '<a href="javascript:' . $field[2] . '(\'{$' . $name . '.' . $pk . '|addslashes}\')">';
}
}
if (strpos($field[0], '^')) {
$property = explode('^', $field[0]);
foreach ($property as $p) {
$unit = explode('|', $p);
if (count($unit) > 1) {
$parseStr .= '{$' . $name . '.' . $unit[0] . '|' . $unit[1] . '} ';
} else {
$parseStr .= '{$' . $name . '.' . $p . '} ';
}
}
} else {
$property = explode('|', $field[0]);
if (count($property) > 1) {
$parseStr .= '{$' . $name . '.' . $property[0] . '|' . $property[1] . '}';
} else {
$parseStr .= '{$' . $name . '.' . $field[0] . '}';
}
}
if (!empty($field[2])) {
$parseStr .= '</a>';
}
$parseStr .= '</td>';
}
if (!empty($action)) { if (!empty($actionlist[0])) { $parseStr .= '<td>';
foreach ($actionlist as $val) {
if (strpos($val, ':')) {
$a = explode(':', $val);
if (count($a) > 2) {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $a[2] . '}\')">' . $a[1] . '</a> ';
} else {
$parseStr .= '<a href="javascript:' . $a[0] . '(\'{$' . $name . '.' . $pk . '}\')">' . $a[1] . '</a> ';
}
} else {
$array = explode('|', $val);
if (count($array) > 2) {
$parseStr .= ' <a href="javascript:' . $array[1] . '(\'{$' . $name . '.' . $array[0] . '}\')">' . $array[2] . '</a> ';
} else {
$parseStr .= ' {$' . $name . '.' . $val . '} ';
}
}
}
$parseStr .= '</td>';
}
}
$parseStr .= '</tr></volist><tr><td height="5" colspan="' . $colNum . '" class="bottomTd"></td></tr></table>';
$parseStr .= "\n\n";
return $parseStr;
}
}