| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844 |
- <?php
- // +----------------------------------------------------------------------
- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- // +----------------------------------------------------------------------
- // | Author: liu21st <liu21st@gmail.com>
- // +----------------------------------------------------------------------
- /**
- +------------------------------------------------------------------------------
- * HTML标签库解析类
- +------------------------------------------------------------------------------
- * @category Think
- * @package Think
- * @subpackage Template
- * @author liu21st <liu21st@gmail.com>
- * @version $Id$
- +------------------------------------------------------------------------------
- */
- import('TagLib');
- class TagLibHtml extends TagLib
- {//类定义开始
- public function _initialize() {
- $this->xml = dirname(__FILE__).'/Tags/html.xml';
- }
- /**
- +----------------------------------------------------------
- * editor标签解析 插入可视化编辑器
- * 格式: <html:editor id="editor" name="remark" type="FCKeditor" content="{$vo.remark}" />
- +----------------------------------------------------------
- * @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 = '<!-- 编辑器调用开始 --><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 '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'> var editer_$id;".
- "KindEditor.ready(function(K) {".
- "editer_$id = K.create('textarea#$id', {" .
- "allowFileManager : true" .
- "});".
- "});".
- "</script>";*/
- $parseStr.="<div style='margin-bottom:5px; '><textarea id='".$id."' name='".$name."' class='ketext' style='".$style."' >".$content."</textarea> </div>";
- break;
- case 'MAILEDITOR':
-
- /*$parseStr="<script type='text/javascript'> var editer_$id;" .
- "KindEditor.ready(function(K) {".
- "editer_$id = K.create('textarea#$id', {" .
- "allowFileManager : true" .
- "skinType: 'tinymce',".
- "urlType : 'domain',".
- "resizeMode : 0".
- "});" .
- "});".
- "</script>";*/
-
- $parseStr.="<div style='margin-bottom:5px; '><textarea id='".$id."' name='".$name."' style='".$style."' >".$content."</textarea> </div>";
- break;
- default :
- $parseStr = '<textarea id="'.$id.'" style="'.$style.'" name="'.$name.'" >'.$content.'</textarea>';
- }
- return $parseStr;
- }
- /**
- +----------------------------------------------------------
- * link标签解析
- * 格式: <html:link file="" type="" />
- +----------------------------------------------------------
- * @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 = "<script type='text/javascript' src='".$file."'></script> ";
- }elseif($type=='css') {
- $parseStr = "<link rel='stylesheet' type='text/css' href='".$file."' />";
- }
- return $parseStr;
- }
- /**
- +----------------------------------------------------------
- * link标签解析
- * 格式: <html:link file="" type="" />
- +----------------------------------------------------------
- * @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 = "<script type='text/javascript' src='".$basepath.'/'.str_replace(array('.','#'), array('/','.'),$file).'.js'."'></script> ";
- }elseif($type=='css') {
- $parseStr = "<link rel='stylesheet' type='text/css' href='".$basepath.'/'.str_replace(array('.','#'), array('/','.'),$file).'.css'."' />";
- }
- return $parseStr;
- }
- /**
- +----------------------------------------------------------
- * imageBtn标签解析
- * 格式: <html:imageBtn type="" value="" />
- +----------------------------------------------------------
- * @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 = '<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 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 = '<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 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 = '<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($'.$options.' as $key=>$val) { ?>';
- 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($'.$values.');$i++) { ?>';
- 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 checkboxs="" checked="" />
- +----------------------------------------------------------
- * @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 .= '<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 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 .= '<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:list datasource="" show="" />
- *
- +----------------------------------------------------------
- * @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 = "<!-- Think 系统列表组件开始 -->\n";
- $parseStr .= '<table id="'.$id.'" class="'.$style.'" cellpadding=0 cellspacing=0 >';
- $parseStr .= '<tr><td colspan="'.$colNum.'" class="topTd" ></td></tr>';
- $parseStr .= '<tr class="row" >';
- //列表需要显示的字段
- $fields = array();
- foreach($show as $key=>$val) {
- $fields[] = explode(':',$val);
- }
- if(!empty($checkbox) && 'true'==strtolower($checkbox)) {//如果指定需要显示checkbox列
- $parseStr .='<th width="8"><input type="checkbox" id="check" onclick="CheckAll(\''.$id.'\')"></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];
- $parseStr .= '<a href="javascript:sortBy(\''.$property[0].'\',\'{$sort}\',\''.MODULE_NAME.'\',\''.ACTION_NAME.'\')" title="'.L("TAG_LANG_ORDER").$showname[2].'{$sortType} ">'.$showname[0].'<eq name="order" value="'.$property[0].'" ><img src="__TMPL__Common/images/{$sortImg}.gif" width="12" height="17" border="0" align="absmiddle"></eq></a></th>';
- }
- if(!empty($action)) {//如果指定显示操作功能列
- $parseStr .= '<th width="60px">'.l("TAG_LANG_OPERATE").'</th>';
- }
- $parseStr .= '</tr>';
- $parseStr .= '<volist name="'.$datasource.'" id="'.$name.'" ><tr class="row" >'; //支持鼠标移动单元行颜色变化 具体方法在js中定义
- if(!empty($checkbox)) {//如果需要显示checkbox 则在每行开头显示checkbox
- $parseStr .= '<td><input type="checkbox" name="key" class="key" value="{$'.$name.'.'.$pk.'}"></td>';
- }
- foreach($fields as $field) {
- //显示定义的列表字段
- $parseStr .= '<td>';
- 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 .= '<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) {
- $property[1] = str_replace("#",",",$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])) {//显示指定的功能项
- $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 .= '<a href="javascript:'.$c[1].'(\'{$'.$name.'.'.$pk.'}\')"><?php if(0== (is_array($'.$name.')?$'.$name.'["status"]:$'.$name.'->status)){ ?>'.$b[1].'<?php } ?></a><a href="javascript:'.$c[0].'({$'.$name.'.'.$pk.'})"><?php if(1== (is_array($'.$name.')?$'.$name.'["status"]:$'.$name.'->status)){ ?>'.$b[0].'<?php } ?></a> ';
- }else {
- $act_idx ++;
- $t_parseStr .= '<a href="javascript:'.$a[0].'(\'{$'.$name.'.'.$pk.'}\')"><?php if(0== (is_array($'.$name.')?$'.$name.'["status"]:$'.$name.'->status)){ ?>'.$b[1].'<?php } ?><?php if(1== (is_array($'.$name.')?$'.$name.'["status"]:$'.$name.'->status)){ ?>'.$b[0].'<?php } ?></a> ';
- }
- }else {
- $act_idx ++;
- $t_parseStr .= '<a href="javascript:'.$a[0].'(\'{$'.$name.'.'.$pk.'}\')">'.$a[1].'</a> ';
- }
- }else{
- $array = explode('|',$val);
- if(count($array)>2) {
- $act_idx ++;
- $t_parseStr .= ' <a href="javascript:'.$array[1].'(\'{$'.$name.'.'.$array[0].'}\')">'.$array[2].'</a> ';
- }else{
- $act_idx ++;
- $t_parseStr .= ' {$'.$name.'.'.$val.'} ';
- }
- }
- }
- if($act_idx > 1){
- $parseStr .= '<td class="op_action"><div class="viewOpBox_demo">';
- $parseStr .= $t_parseStr;
- $parseStr .= '</div><a href="javascript:void(0);" class="opration"><span>操作</span><i></i></a></td>';
- }
- else{
- $parseStr .= '<td class="op_action">';
- $parseStr .= $t_parseStr;
- $parseStr .= '</td>';
- }
- }
- }
- $parseStr .= '</tr></volist><tr><td colspan="'.$colNum.'" class="bottomTd"> </td></tr></table>';
- $parseStr .= "\n<!-- Think 系统列表组件结束 -->\n";
- return $parseStr;
- }
-
- /**
- +----------------------------------------------------------
- * tree_list标签解析
- * 格式: <html:list datasource="" show="" />
- *
- +----------------------------------------------------------
- * @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 = "<!-- Think 系统列表组件开始 -->\n";
- $parseStr .= '<table id="'.$id.'" class="'.$style.'" cellpadding=0 cellspacing=0 >';
- $parseStr .= '<tr><td colspan="'.$colNum.'" class="topTd" > </td></tr>';
- $parseStr .= '<tr class="row" >';
- //列表需要显示的字段
- $fields = array();
- foreach($show as $key=>$val) {
- $fields[] = explode(':',$val);
- }
- if(!empty($checkbox) && 'true'==strtolower($checkbox)) {//如果指定需要显示checkbox列
- $parseStr .='<th width="8"><input type="checkbox" id="check" onclick="CheckAll(\''.$id.'\')"></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];
- $parseStr .= '<a href="javascript:sortBy(\''.$property[0].'\',\'{$sort}\',\''.MODULE_NAME.'\',\''.ACTION_NAME.'\')" title="'.L("TAG_LANG_ORDER").$showname[2].'{$sortType} ">'.$showname[0].'<eq name="order" value="'.$property[0].'" ><img src="__TMPL__Common/images/{$sortImg}.gif" width="12" height="17" border="0" align="absmiddle"></eq></a></th>';
- }
- if(!empty($action)) {//如果指定显示操作功能列
- $parseStr .= '<th >'.l("TAG_LANG_OPERATE").'</th>';
- }
- $parseStr .= '</tr>';
- $parseStr .= '<volist name="'.$datasource.'" id="'.$name.'" ><tr class="row" >'; //支持鼠标移动单元行颜色变化 具体方法在js中定义
- if(!empty($checkbox)) {//如果需要显示checkbox 则在每行开头显示checkbox
- $parseStr .= '<td>';
- $parseStr .= '<if condition="$'.$name.'[level] eq -1"><input type="checkbox" name="key" class="key" value="{$'.$name.'.'.$pk.'}"><else /> </if>';
- $parseStr .= '</td>';
- }
- foreach($fields as $field) {
- //显示定义的列表字段
- $parseStr .= '<td>';
- 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 .= '<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);
- $b = explode('|',$a[1]);
- if(count($b)>1) {
- $c = explode('|',$a[0]);
- if(count($c)>1) {
- $parseStr .= '<a href="javascript:'.$c[1].'(\'{$'.$name.'.'.$pk.'}\')"><?php if(0== (is_array($'.$name.')?$'.$name.'["status"]:$'.$name.'->status)){ ?>'.$b[1].'<?php } ?></a><a href="javascript:'.$c[0].'({$'.$name.'.'.$pk.'})"><?php if(1== (is_array($'.$name.')?$'.$name.'["status"]:$'.$name.'->status)){ ?>'.$b[0].'<?php } ?></a> ';
- }else {
- $parseStr .= '<a href="javascript:'.$a[0].'(\'{$'.$name.'.'.$pk.'}\')"><?php if(0== (is_array($'.$name.')?$'.$name.'["status"]:$'.$name.'->status)){ ?>'.$b[1].'<?php } ?><?php if(1== (is_array($'.$name.')?$'.$name.'["status"]:$'.$name.'->status)){ ?>'.$b[0].'<?php } ?></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 colspan="'.$colNum.'" class="bottomTd"> </td></tr></table>';
- $parseStr .= "\n<!-- Think 系统列表组件结束 -->\n";
- return $parseStr;
- }
- /**
- +----------------------------------------------------------
- * imgUpload标签解析
- * 格式: <html:imgUpload name='name' value='value' width='width' height='height' />
- +----------------------------------------------------------
- * @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 = "<if condition=\"".$value." eq ''\">./admin/Tpl/default/Common/images/no_pic.gif<else />{".$value."}</if>";
- $svalue = "{".$value."}";
- }
- else
- {
- $img_url = "./admin/Tpl/default/Common/images/no_pic.gif";
- $svalue = "";
- }
-
- /*$parseStr="<div style='width:120px; height:40px; margin-left:10px; display:inline-block; float:left;' class='none_border'><script type='text/javascript'>var editer_$id;".
- "KindEditor.ready(function(K) {".
- "editer_$id = K.create('textarea#$id', {" .
- "allowFileManager : true," .
- "items : ['upload_image'],".
- "skinType: 'tinymce',".
- "allowFileManager : true,".
- "resizeMode : 0".
- "});".
- "});".
- "KE.show({".
- "id : eid,".
- "items : ['upload_image'],".
- "skinType: 'tinymce',".
- "allowFileManager : true,".
- "resizeMode : 0".
- "});"
- "</script>";
- if($value)
- $parseStr.= "<div style='font-size:0px;'><textarea id='".$id."' name='".$name."' style='width:120px; height:25px;' >{".$value."}</textarea> </div></div>";
- else
- $parseStr.= "<div style='font-size:0px;'><textarea id='".$id."' name='".$name."' style='width:120px; height:25px;' ></textarea> </div>";
- $parseStr.="<input type='text' id='focus_".$id."' style='font-size:0px; border:0px; padding:0px; margin:0px; line-height:0px; width:0px; height:0px;' /></div>";
- $parseStr.= "<img src='".$img_url."' ".$script." style='display:inline-block; float:left; cursor:pointer; margin-left:10px; border:#ccc solid 1px; width:".$width."px; height:".$height."px;' id='img_".$id."' />";
- $parseStr.= "<img src='".__ROOT__."/admin/Tpl/default/Common/images/del.gif' style='".$hide." margin-left:10px; float:left; border:#ccc solid 1px; width:35px; height:35px; cursor:pointer;' id='img_del_".$id."' onclick='delimg(\"".$id."\")' title='删除' />";
- */
-
- if(empty($value))
- $cls="display:none";
- else
- $cls= "<if condition=\"".$value." eq ''\">display:none</if>";
-
- $parseStr= "<span>
- <div style='float:left; height:".$width."px; padding-top:1px;'>
- <input type='hidden' value='".$svalue."' name='$name' id='keimg_h_$id' />
- <div class='buttonActive' style='margin-right:5px;'>
- <div class='buttonContent'>
- <button type='button' class='keimg ke-icon-upload_image' rel='$id'>选择图片</button>
- </div>
- </div>
- </div>
- <a href='$img_url' target='_blank' id='keimg_a_$id' ><img src='$img_url' id='keimg_m_$id' width=$width height=$height style='float:left; border:#ccc solid 1px; margin-left:5px;' /></a>
- <div style='float:left; height:".$width."px; padding-top:1px;'>
- <div class='buttonActive'>
- <div class='buttonContent'>
- <img src='".__ROOT__."/admin/Tpl/default/Common/images/del.gif' style='$cls; margin-left:10px; float:left; border:#ccc solid 1px; width:35px; height:35px; cursor:pointer;' class='keimg_d' rel='$id' title='删除'>
- </div>
- </div>
- </div>
- </span>";
-
- 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 = "<if condition=\"".$value." eq ''\">./admin/Tpl/default/Common/images/no_pic.gif<else />{".$value."}</if>";
- $svalue = "{".$value."}";
- }
- else
- {
- $img_url = "./admin/Tpl/default/Common/images/no_pic.gif";
- $svalue = "";
- }
- if(empty($value))
- $cls="display:none";
- else
- $cls= "<if condition=\"".$value." eq ''\">display:none</if>";
- $id_a = $id.'_a';
- $parseStr = "<span>
- <div style='float:left; height:".$height."px; padding-top:1px;' onclick='open_avatar_view($dstwidth,$detheight,\"$id\");'>
- <div class='buttonActive' style='margin-right:5px;'>
- <div class='buttonContent'>
- <button type='button' class=' ke-icon-upload_image' >选择图片</button>
- </div>
- </div>
- </div>
- <a href='$img_url' target='_blank' id='$id_a' >
- <img src='$img_url' id='$id' width='$width' height='$height' style='float:left; border:#ccc solid 1px; margin-left:5px;'>
- </a>
- <input type='hidden' name='$id' value='$svalue'>
- </span>";
- 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 = "<if condition=\"".$value." eq ''\">./admin/Tpl/default/Common/images/no_pic.gif<else />{".$value."}</if>";
- $svalue = "{".$value."}";
- }
- else
- {
- $file_url = "./admin/Tpl/default/Common/images/no_pic.gif";
- $svalue = "";
- }
- if(empty($value))
- $cls="display:none";
- else
- $cls= "<if condition=\"".$value." eq ''\">display:none</if>";
-
- $parseStr= "<span>
- <div style='float:left; height:".$width."px; padding-top:1px;'>
- <input type='hidden' value='".$svalue."' name='$name' id='keimg_h_$name' />
- <div class='buttonActive' style='margin-right:5px;'>
- <div class='buttonContent'>
- <button type='button' class='kefile ke-icon-upload_file' rel='$name'>选择文件</button>
- </div>
- </div>
- </div>
- <div style='float:left; height:".$width."px; padding-top:1px;'>
- <div class='buttonActive'>
- <div class='buttonContent'>
- <input type='text' value='' name='kefile_url' class='kefile_url' readonly style='width:500px'/>
- </div>
- </div>
- </div>
- </span>";
- return $parseStr;
- }
- }//类定义结束
- ?>
|