// +---------------------------------------------------------------------- /** +------------------------------------------------------------------------------ * HTML标签库解析类 +------------------------------------------------------------------------------ * @category Think * @package Think * @subpackage Template * @author liu21st * @version $Id$ +------------------------------------------------------------------------------ */ import('TagLib'); class TagLibHtml extends TagLib {//类定义开始 public function _initialize() { $this->xml = dirname(__FILE__).'/Tags/html.xml'; } /** +---------------------------------------------------------- * editor标签解析 插入可视化编辑器 * 格式: +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $attr 标签属性 +---------------------------------------------------------- * @return string|void +---------------------------------------------------------- */ public function _editor($attr) { $tag = $this->parseXmlAttr($attr,'editor'); $id = !empty($tag['id'])?$tag['id']: '_editor'; $name = $tag['name']; $style = !empty($tag['style'])?$tag['style']:'width:750px; height:350px;'; $width = !empty($tag['width'])?$tag['width']: '100%'; $height = !empty($tag['height'])?$tag['height'] :'320px'; $content = $tag['content']; $type = $tag['type'] ; switch(strtoupper($type)) { case 'FCKEDITOR': $parseStr = ' '; break; case 'EWEBEDITOR': $parseStr = ""; break; case 'NETEASE': $parseStr = ''; break; case 'UBB': $parseStr = '
'; break; case 'KINDEDITOR': /*$parseStr="";*/ $parseStr.="
"; break; case 'MAILEDITOR': /*$parseStr="";*/ $parseStr.="
"; break; default : $parseStr = ''; } return $parseStr; } /** +---------------------------------------------------------- * link标签解析 * 格式: +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $attr 标签属性 +---------------------------------------------------------- * @return string|void +---------------------------------------------------------- */ public function _link($attr) { $tag = $this->parseXmlAttr($attr,'link'); $file = $tag['href']; $type = isset($tag['type'])? strtolower($tag['type']): strtolower(substr(strrchr($file, '.'),1)); if($type=='js') { $parseStr = " "; }elseif($type=='css') { $parseStr = ""; } return $parseStr; } /** +---------------------------------------------------------- * link标签解析 * 格式: +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $attr 标签属性 +---------------------------------------------------------- * @return string|void +---------------------------------------------------------- */ public function _import($attr) { $tag = $this->parseXmlAttr($attr,'import'); $file = $tag['file']; $basepath = !empty($tag['basepath'])?$tag['basepath']:WEB_PUBLIC_PATH; $type = !empty($tag['type'])? strtolower($tag['type']):'js'; if($type=='js') { $parseStr = " "; }elseif($type=='css') { $parseStr = ""; } return $parseStr; } /** +---------------------------------------------------------- * imageBtn标签解析 * 格式: +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $attr 标签属性 +---------------------------------------------------------- * @return string|void +---------------------------------------------------------- */ public function _imageBtn($attr) { $tag = $this->parseXmlAttr($attr,'imageBtn'); $name = $tag['name']; //名称 $value = $tag['value']; //文字 $id = $tag['id']; //ID $style = $tag['style']; //样式名 $click = $tag['click']; //点击 $type = empty($tag['type'])?'button':$tag['type']; //按钮类型 if(!empty($name)) { $parseStr = '
'; }else { $parseStr = '
'; } return $parseStr; } /** +---------------------------------------------------------- * imageLink标签解析 * 格式: +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $attr 标签属性 +---------------------------------------------------------- * @return string|void +---------------------------------------------------------- */ public function _imgLink($attr) { $tag = $this->parseXmlAttr($attr,'imgLink'); $name = $tag['name']; //名称 $alt = $tag['alt']; //文字 $id = $tag['id']; //ID $style = $tag['style']; //样式名 $click = $tag['click']; //点击 $type = $tag['type']; //点击 if(empty($type)) { $type = 'button'; } $parseStr = ''; return $parseStr; } /** +---------------------------------------------------------- * select标签解析 * 格式: +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $attr 标签属性 +---------------------------------------------------------- * @return string|void +---------------------------------------------------------- */ public function _select($attr) { $tag = $this->parseXmlAttr($attr,'select'); $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 = ''; } if(!empty($first)) { $parseStr .= ''; } if(!empty($options)) { $parseStr .= '$val) { ?>'; if(!empty($selected)) { $parseStr .= ''; $parseStr .= ''; $parseStr .= ''; $parseStr .= ''; }else { $parseStr .= ''; } $parseStr .= ''; }else if(!empty($values)) { $parseStr .= ''; if(!empty($selected)) { $parseStr .= ''; $parseStr .= ''; $parseStr .= ''; $parseStr .= ''; }else { $parseStr .= ''; } $parseStr .= ''; } $parseStr .= ''; return $parseStr; } /** +---------------------------------------------------------- * checkbox标签解析 * 格式: +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $attr 标签属性 +---------------------------------------------------------- * @return string|void +---------------------------------------------------------- */ public function _checkbox($attr) { $tag = $this->parseXmlAttr($attr,'checkbox'); $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 .= ''.$val.$separator; }else { $parseStr .= ''.$val.$separator; } } return $parseStr; } /** +---------------------------------------------------------- * radio标签解析 * 格式: +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $attr 标签属性 +---------------------------------------------------------- * @return string|void +---------------------------------------------------------- */ public function _radio($attr) { $tag = $this->parseXmlAttr($attr,'radio'); $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 .= ''.$val.$separator; }else { $parseStr .= ''.$val.$separator; } } return $parseStr; } /** +---------------------------------------------------------- * list标签解析 * 格式: * +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $attr 标签属性 +---------------------------------------------------------- * @return string +---------------------------------------------------------- */ public function _list($attr) { $tag = $this->parseXmlAttr($attr,'list'); $id = $tag['id']; //表格ID $datasource = $tag['datasource']; //列表显示的数据源VoList名称 $pk = empty($tag['pk'])?'id':$tag['pk'];//主键名,默认为id $style = $tag['style']; //样式名 $name = !empty($tag['name'])?$tag['name']:'vo'; //Vo对象名 $action = $tag['action']; //是否显示功能操作 $checkbox = $tag['checkbox']; //是否显示Checkbox 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($checkbox)) $colNum++; if(!empty($action)) $colNum++; //显示开始 $parseStr = "\n"; $parseStr .= ''; $parseStr .= ''; $parseStr .= ''; //列表需要显示的字段 $fields = array(); foreach($show as $key=>$val) { $fields[] = explode(':',$val); } if(!empty($checkbox) && 'true'==strtolower($checkbox)) {//如果指定需要显示checkbox列 $parseStr .=''; } foreach($fields as $field) {//显示指定的字段 $property = explode('|',$field[0]); $showname = explode('|',$field[1]); if(isset($showname[1])) { $parseStr .= ''; } if(!empty($action)) {//如果指定显示操作功能列 $parseStr .= ''; } $parseStr .= ''; $parseStr .= ''; //支持鼠标移动单元行颜色变化 具体方法在js中定义 if(!empty($checkbox)) {//如果需要显示checkbox 则在每行开头显示checkbox $parseStr .= ''; } foreach($fields as $field) { //显示定义的列表字段 $parseStr .= ''; } if(!empty($action)) {//显示功能操作 if(!empty($actionlist[0])) {//显示指定的功能项 $act_idx = 0; $t_parseStr = ""; foreach($actionlist as $val) { if(strpos($val,':')) { $a = explode(':',$val); $b = explode('|',$a[1]); if(count($b)>1) { $c = explode('|',$a[0]); if(count($c)>1) { $act_idx ++; $t_parseStr .= 'status)){ ?>'.$b[1].'status)){ ?>'.$b[0].' '; }else { $act_idx ++; $t_parseStr .= 'status)){ ?>'.$b[1].'status)){ ?>'.$b[0].' '; } }else { $act_idx ++; $t_parseStr .= ''.$a[1].' '; } }else{ $array = explode('|',$val); if(count($array)>2) { $act_idx ++; $t_parseStr .= ' '.$array[2].' '; }else{ $act_idx ++; $t_parseStr .= ' {$'.$name.'.'.$val.'} '; } } } if($act_idx > 1){ $parseStr .= ''; } else{ $parseStr .= ''; } } } $parseStr .= '
'; }else { $parseStr .= ''; } $showname[2] = isset($showname[2])?$showname[2]:$showname[0]; $parseStr .= ''.$showname[0].''.l("TAG_LANG_OPERATE").'
'; if(!empty($field[2])) { // 支持列表字段链接功能 具体方法由JS函数实现 $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 .= ''; }else{ $parseStr .= ''; } }else { //如果没有指定默认传编号值 $parseStr .= ''; } } 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) { $property[1] = str_replace("#",",",$property[1]); $parseStr .= '{$'.$name.'.'.$property[0].'|'.$property[1].'}'; }else { $parseStr .= '{$'.$name.'.'.$field[0].'}'; } } if(!empty($field[2])) { $parseStr .= ''; } $parseStr .= '
'; $parseStr .= $t_parseStr; $parseStr .= '
操作
'; $parseStr .= $t_parseStr; $parseStr .= '
 
'; $parseStr .= "\n\n"; return $parseStr; } /** +---------------------------------------------------------- * tree_list标签解析 * 格式: * +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $attr 标签属性 +---------------------------------------------------------- * @return string +---------------------------------------------------------- */ public function _tree_list($attr) { $tag = $this->parseXmlAttr($attr,'list'); $id = $tag['id']; //表格ID $datasource = $tag['datasource']; //列表显示的数据源VoList名称 $pk = empty($tag['pk'])?'id':$tag['pk'];//主键名,默认为id $style = $tag['style']; //样式名 $name = !empty($tag['name'])?$tag['name']:'vo'; //Vo对象名 $action = $tag['action']; //是否显示功能操作 $checkbox = $tag['checkbox']; //是否显示Checkbox 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($checkbox)) $colNum++; if(!empty($action)) $colNum++; //显示开始 $parseStr = "\n"; $parseStr .= ''; $parseStr .= ''; $parseStr .= ''; //列表需要显示的字段 $fields = array(); foreach($show as $key=>$val) { $fields[] = explode(':',$val); } if(!empty($checkbox) && 'true'==strtolower($checkbox)) {//如果指定需要显示checkbox列 $parseStr .=''; } foreach($fields as $field) {//显示指定的字段 $property = explode('|',$field[0]); $showname = explode('|',$field[1]); if(isset($showname[1])) { $parseStr .= ''; } if(!empty($action)) {//如果指定显示操作功能列 $parseStr .= ''; } $parseStr .= ''; $parseStr .= ''; //支持鼠标移动单元行颜色变化 具体方法在js中定义 if(!empty($checkbox)) {//如果需要显示checkbox 则在每行开头显示checkbox $parseStr .= ''; } foreach($fields as $field) { //显示定义的列表字段 $parseStr .= ''; } if(!empty($action)) {//显示功能操作 if(!empty($actionlist[0])) {//显示指定的功能项 $parseStr .= ''; } } $parseStr .= '
 
'; }else { $parseStr .= ''; } $showname[2] = isset($showname[2])?$showname[2]:$showname[0]; $parseStr .= ''.$showname[0].''.l("TAG_LANG_OPERATE").'
'; $parseStr .= ' '; $parseStr .= ''; if(!empty($field[2])) { // 支持列表字段链接功能 具体方法由JS函数实现 $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 .= ''; }else{ $parseStr .= ''; } }else { //如果没有指定默认传编号值 $parseStr .= ''; } } 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 .= ''; } $parseStr .= ''; foreach($actionlist as $val) { if(strpos($val,':')) { $a = explode(':',$val); $b = explode('|',$a[1]); if(count($b)>1) { $c = explode('|',$a[0]); if(count($c)>1) { $parseStr .= 'status)){ ?>'.$b[1].'status)){ ?>'.$b[0].' '; }else { $parseStr .= 'status)){ ?>'.$b[1].'status)){ ?>'.$b[0].' '; } }else { $parseStr .= ''.$a[1].' '; } }else{ $array = explode('|',$val); if(count($array)>2) { $parseStr .= ' '.$array[2].' '; }else{ $parseStr .= ' {$'.$name.'.'.$val.'} '; } } } $parseStr .= '
 
'; $parseStr .= "\n\n"; return $parseStr; } /** +---------------------------------------------------------- * imgUpload标签解析 * 格式: +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $attr 标签属性 +---------------------------------------------------------- * @return string|void +---------------------------------------------------------- */ public function _imgUpload($attr) { $tag = $this->parseXmlAttr($attr,'imgUpload'); $name = $tag['name']; $id = $tag['id']; $width = $tag['width']?$tag['width']:'35'; $height = $tag['height']?$tag['height']:'35'; $value = $tag['value']; if($value) { $img_url = "./admin/Tpl/default/Common/images/no_pic.gif{".$value."}"; $svalue = "{".$value."}"; } else { $img_url = "./admin/Tpl/default/Common/images/no_pic.gif"; $svalue = ""; } /*$parseStr="
"; if($value) $parseStr.= "
"; else $parseStr.= "
"; $parseStr.=""; $parseStr.= ""; $parseStr.= ""; */ if(empty($value)) $cls="display:none"; else $cls= "display:none"; $parseStr= "
"; return $parseStr; } public function _imgcutUpload($attr) { $tag = $this->parseXmlAttr($attr,'imgcutUpload'); $name = $tag['name']; $id = $tag['id']; $width = $tag['width']?$tag['width']:'35'; $height = $tag['height']?$tag['height']:'35'; $dstwidth = $tag['dstwidth']?$tag['dstwidth']:'35'; $detheight = $tag['detheight']?$tag['detheight']:'35'; $value = $tag['value']; if($value) { $img_url = "./admin/Tpl/default/Common/images/no_pic.gif{".$value."}"; $svalue = "{".$value."}"; } else { $img_url = "./admin/Tpl/default/Common/images/no_pic.gif"; $svalue = ""; } if(empty($value)) $cls="display:none"; else $cls= "display:none"; $id_a = $id.'_a'; $parseStr = "
"; return $parseStr; } public function _fileUpload($attr) { $tag = $this->parseXmlAttr($attr,'fileUpload'); $name = $tag['name']; $id = $tag['id']; $width = $tag['width']?$tag['width']:'35'; $height = $tag['height']?$tag['height']:'35'; $value = $tag['value']; if($value) { $file_url = "./admin/Tpl/default/Common/images/no_pic.gif{".$value."}"; $svalue = "{".$value."}"; } else { $file_url = "./admin/Tpl/default/Common/images/no_pic.gif"; $svalue = ""; } if(empty($value)) $cls="display:none"; else $cls= "display:none"; $parseStr= "
"; return $parseStr; } }//类定义结束 ?>