mirror of
https://e.coding.net/circlecloud/MinecraftAccount.git
synced 2025-11-26 21:46:09 +00:00
41
ThinkPHP/Library/Think/Template/Driver/Ease.class.php
Normal file
41
ThinkPHP/Library/Think/Template/Driver/Ease.class.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
namespace Think\Template\Driver;
|
||||
/**
|
||||
* EaseTemplate模板引擎驱动
|
||||
*/
|
||||
class Ease {
|
||||
/**
|
||||
* 渲染模板输出
|
||||
* @access public
|
||||
* @param string $templateFile 模板文件名
|
||||
* @param array $var 模板变量
|
||||
* @return void
|
||||
*/
|
||||
public function fetch($templateFile,$var) {
|
||||
$templateFile = substr($templateFile,strlen(THEME_PATH),-5);
|
||||
$CacheDir = substr(CACHE_PATH,0,-1);
|
||||
$TemplateDir = substr(THEME_PATH,0,-1);
|
||||
vendor('EaseTemplate.template#ease');
|
||||
$config = array(
|
||||
'CacheDir' => $CacheDir,
|
||||
'TemplateDir' => $TemplateDir,
|
||||
'TplType' => 'html'
|
||||
);
|
||||
if(C('TMPL_ENGINE_CONFIG')) {
|
||||
$config = array_merge($config,C('TMPL_ENGINE_CONFIG'));
|
||||
}
|
||||
$tpl = new \EaseTemplate($config);
|
||||
$tpl->set_var($var);
|
||||
$tpl->set_file($templateFile);
|
||||
$tpl->p();
|
||||
}
|
||||
}
|
||||
39
ThinkPHP/Library/Think/Template/Driver/Lite.class.php
Normal file
39
ThinkPHP/Library/Think/Template/Driver/Lite.class.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
namespace Think\Template\Driver;
|
||||
/**
|
||||
* TemplateLite模板引擎驱动
|
||||
*/
|
||||
class Lite {
|
||||
/**
|
||||
* 渲染模板输出
|
||||
* @access public
|
||||
* @param string $templateFile 模板文件名
|
||||
* @param array $var 模板变量
|
||||
* @return void
|
||||
*/
|
||||
public function fetch($templateFile,$var) {
|
||||
vendor("TemplateLite.class#template");
|
||||
$templateFile = substr($templateFile,strlen(THEME_PATH));
|
||||
$tpl = new \Template_Lite();
|
||||
$tpl->template_dir = THEME_PATH;
|
||||
$tpl->compile_dir = CACHE_PATH ;
|
||||
$tpl->cache_dir = TEMP_PATH ;
|
||||
if(C('TMPL_ENGINE_CONFIG')) {
|
||||
$config = C('TMPL_ENGINE_CONFIG');
|
||||
foreach ($config as $key=>$val){
|
||||
$tpl->{$key} = $val;
|
||||
}
|
||||
}
|
||||
$tpl->assign($var);
|
||||
$tpl->display($templateFile);
|
||||
}
|
||||
}
|
||||
28
ThinkPHP/Library/Think/Template/Driver/Mobile.class.php
Normal file
28
ThinkPHP/Library/Think/Template/Driver/Mobile.class.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: luofei614<weibo.com/luofei614>
|
||||
// +----------------------------------------------------------------------
|
||||
namespace Think\Template\Driver;
|
||||
/**
|
||||
* MobileTemplate模板引擎驱动
|
||||
*/
|
||||
class Mobile {
|
||||
/**
|
||||
* 渲染模板输出
|
||||
* @access public
|
||||
* @param string $templateFile 模板文件名
|
||||
* @param array $var 模板变量
|
||||
* @return void
|
||||
*/
|
||||
public function fetch($templateFile,$var) {
|
||||
$templateFile=substr($templateFile,strlen(THEME_PATH));
|
||||
$var['_think_template_path']=$templateFile;
|
||||
exit(json_encode($var));
|
||||
}
|
||||
}
|
||||
40
ThinkPHP/Library/Think/Template/Driver/Smart.class.php
Normal file
40
ThinkPHP/Library/Think/Template/Driver/Smart.class.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
namespace Think\Template\Driver;
|
||||
/**
|
||||
* Smart模板引擎驱动
|
||||
*/
|
||||
class Smart {
|
||||
/**
|
||||
* 渲染模板输出
|
||||
* @access public
|
||||
* @param string $templateFile 模板文件名
|
||||
* @param array $var 模板变量
|
||||
* @return void
|
||||
*/
|
||||
public function fetch($templateFile,$var) {
|
||||
$templateFile = substr($templateFile,strlen(THEME_PATH));
|
||||
vendor('SmartTemplate.class#smarttemplate');
|
||||
$tpl = new \SmartTemplate($templateFile);
|
||||
$tpl->caching = C('TMPL_CACHE_ON');
|
||||
$tpl->template_dir = THEME_PATH;
|
||||
$tpl->compile_dir = CACHE_PATH ;
|
||||
$tpl->cache_dir = TEMP_PATH ;
|
||||
if(C('TMPL_ENGINE_CONFIG')) {
|
||||
$config = C('TMPL_ENGINE_CONFIG');
|
||||
foreach ($config as $key=>$val){
|
||||
$tpl->{$key} = $val;
|
||||
}
|
||||
}
|
||||
$tpl->assign($var);
|
||||
$tpl->output();
|
||||
}
|
||||
}
|
||||
41
ThinkPHP/Library/Think/Template/Driver/Smarty.class.php
Normal file
41
ThinkPHP/Library/Think/Template/Driver/Smarty.class.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
namespace Think\Template\Driver;
|
||||
/**
|
||||
* Smarty模板引擎驱动
|
||||
*/
|
||||
class Smarty {
|
||||
|
||||
/**
|
||||
* 渲染模板输出
|
||||
* @access public
|
||||
* @param string $templateFile 模板文件名
|
||||
* @param array $var 模板变量
|
||||
* @return void
|
||||
*/
|
||||
public function fetch($templateFile,$var) {
|
||||
$templateFile = substr($templateFile,strlen(THEME_PATH));
|
||||
vendor('Smarty.Smarty#class');
|
||||
$tpl = new \Smarty();
|
||||
$tpl->caching = C('TMPL_CACHE_ON');
|
||||
$tpl->template_dir = THEME_PATH;
|
||||
$tpl->compile_dir = CACHE_PATH ;
|
||||
$tpl->cache_dir = TEMP_PATH ;
|
||||
if(C('TMPL_ENGINE_CONFIG')) {
|
||||
$config = C('TMPL_ENGINE_CONFIG');
|
||||
foreach ($config as $key=>$val){
|
||||
$tpl->{$key} = $val;
|
||||
}
|
||||
}
|
||||
$tpl->assign($var);
|
||||
$tpl->display($templateFile);
|
||||
}
|
||||
}
|
||||
246
ThinkPHP/Library/Think/Template/TagLib.class.php
Normal file
246
ThinkPHP/Library/Think/Template/TagLib.class.php
Normal file
@@ -0,0 +1,246 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
namespace Think\Template;
|
||||
/**
|
||||
* ThinkPHP标签库TagLib解析基类
|
||||
*/
|
||||
class TagLib {
|
||||
|
||||
/**
|
||||
* 标签库定义XML文件
|
||||
* @var string
|
||||
* @access protected
|
||||
*/
|
||||
protected $xml = '';
|
||||
protected $tags = array();// 标签定义
|
||||
/**
|
||||
* 标签库名称
|
||||
* @var string
|
||||
* @access protected
|
||||
*/
|
||||
protected $tagLib ='';
|
||||
|
||||
/**
|
||||
* 标签库标签列表
|
||||
* @var string
|
||||
* @access protected
|
||||
*/
|
||||
protected $tagList = array();
|
||||
|
||||
/**
|
||||
* 标签库分析数组
|
||||
* @var string
|
||||
* @access protected
|
||||
*/
|
||||
protected $parse = array();
|
||||
|
||||
/**
|
||||
* 标签库是否有效
|
||||
* @var string
|
||||
* @access protected
|
||||
*/
|
||||
protected $valid = false;
|
||||
|
||||
/**
|
||||
* 当前模板对象
|
||||
* @var object
|
||||
* @access protected
|
||||
*/
|
||||
protected $tpl;
|
||||
|
||||
protected $comparison = array(' nheq '=>' !== ',' heq '=>' === ',' neq '=>' != ',' eq '=>' == ',' egt '=>' >= ',' gt '=>' > ',' elt '=>' <= ',' lt '=>' < ');
|
||||
|
||||
/**
|
||||
* 架构函数
|
||||
* @access public
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->tagLib = strtolower(substr(get_class($this),6));
|
||||
$this->tpl = \Think\Think::instance('Think\\Template');
|
||||
}
|
||||
|
||||
/**
|
||||
* TagLib标签属性分析 返回标签属性数组
|
||||
* @access public
|
||||
* @param string $tagStr 标签内容
|
||||
* @return array
|
||||
*/
|
||||
public function parseXmlAttr($attr,$tag) {
|
||||
//XML解析安全过滤
|
||||
$attr = str_replace('&','___', $attr);
|
||||
$xml = '<tpl><tag '.$attr.' /></tpl>';
|
||||
$xml = simplexml_load_string($xml);
|
||||
if(!$xml) {
|
||||
E(L('_XML_TAG_ERROR_').' : '.$attr);
|
||||
}
|
||||
$xml = (array)($xml->tag->attributes());
|
||||
if(isset($xml['@attributes'])){
|
||||
$array = array_change_key_case($xml['@attributes']);
|
||||
if($array) {
|
||||
$tag = strtolower($tag);
|
||||
if(!isset($this->tags[$tag])){
|
||||
// 检测是否存在别名定义
|
||||
foreach($this->tags as $key=>$val){
|
||||
if(isset($val['alias']) && in_array($tag,explode(',',$val['alias']))){
|
||||
$item = $val;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$item = $this->tags[$tag];
|
||||
}
|
||||
$attrs = explode(',',$item['attr']);
|
||||
if(isset($item['must'])){
|
||||
$must = explode(',',$item['must']);
|
||||
}else{
|
||||
$must = array();
|
||||
}
|
||||
foreach($attrs as $name) {
|
||||
if( isset($array[$name])) {
|
||||
$array[$name] = str_replace('___','&',$array[$name]);
|
||||
}elseif(false !== array_search($name,$must)){
|
||||
E(L('_PARAM_ERROR_').':'.$name);
|
||||
}
|
||||
}
|
||||
return $array;
|
||||
}
|
||||
}else{
|
||||
return array();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析条件表达式
|
||||
* @access public
|
||||
* @param string $condition 表达式标签内容
|
||||
* @return array
|
||||
*/
|
||||
public function parseCondition($condition) {
|
||||
$condition = str_ireplace(array_keys($this->comparison),array_values($this->comparison),$condition);
|
||||
$condition = preg_replace('/\$(\w+):(\w+)\s/is','$\\1->\\2 ',$condition);
|
||||
switch(strtolower(C('TMPL_VAR_IDENTIFY'))) {
|
||||
case 'array': // 识别为数组
|
||||
$condition = preg_replace('/\$(\w+)\.(\w+)\s/is','$\\1["\\2"] ',$condition);
|
||||
break;
|
||||
case 'obj': // 识别为对象
|
||||
$condition = preg_replace('/\$(\w+)\.(\w+)\s/is','$\\1->\\2 ',$condition);
|
||||
break;
|
||||
default: // 自动判断数组或对象 只支持二维
|
||||
$condition = preg_replace('/\$(\w+)\.(\w+)\s/is','(is_array($\\1)?$\\1["\\2"]:$\\1->\\2) ',$condition);
|
||||
}
|
||||
if(false !== strpos($condition, '$Think'))
|
||||
$condition = preg_replace_callback('/(\$Think.*?)\s/is', array($this, 'parseThinkVar'), $condition);
|
||||
return $condition;
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动识别构建变量
|
||||
* @access public
|
||||
* @param string $name 变量描述
|
||||
* @return string
|
||||
*/
|
||||
public function autoBuildVar($name) {
|
||||
if('Think.' == substr($name,0,6)){
|
||||
// 特殊变量
|
||||
return $this->parseThinkVar($name);
|
||||
}elseif(strpos($name,'.')) {
|
||||
$vars = explode('.',$name);
|
||||
$var = array_shift($vars);
|
||||
switch(strtolower(C('TMPL_VAR_IDENTIFY'))) {
|
||||
case 'array': // 识别为数组
|
||||
$name = '$'.$var;
|
||||
foreach ($vars as $key=>$val){
|
||||
if(0===strpos($val,'$')) {
|
||||
$name .= '["{'.$val.'}"]';
|
||||
}else{
|
||||
$name .= '["'.$val.'"]';
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'obj': // 识别为对象
|
||||
$name = '$'.$var;
|
||||
foreach ($vars as $key=>$val)
|
||||
$name .= '->'.$val;
|
||||
break;
|
||||
default: // 自动判断数组或对象 只支持二维
|
||||
$name = 'is_array($'.$var.')?$'.$var.'["'.$vars[0].'"]:$'.$var.'->'.$vars[0];
|
||||
}
|
||||
}elseif(strpos($name,':')){
|
||||
// 额外的对象方式支持
|
||||
$name = '$'.str_replace(':','->',$name);
|
||||
}elseif(!defined($name)) {
|
||||
$name = '$'.$name;
|
||||
}
|
||||
return $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于标签属性里面的特殊模板变量解析
|
||||
* 格式 以 Think. 打头的变量属于特殊模板变量
|
||||
* @access public
|
||||
* @param string $varStr 变量字符串
|
||||
* @return string
|
||||
*/
|
||||
public function parseThinkVar($varStr){
|
||||
if(is_array($varStr)){//用于正则替换回调函数
|
||||
$varStr = $varStr[1];
|
||||
}
|
||||
$vars = explode('.',$varStr);
|
||||
$vars[1] = strtoupper(trim($vars[1]));
|
||||
$parseStr = '';
|
||||
if(count($vars)>=3){
|
||||
$vars[2] = trim($vars[2]);
|
||||
switch($vars[1]){
|
||||
case 'SERVER': $parseStr = '$_SERVER[\''.$vars[2].'\']';break;
|
||||
case 'GET': $parseStr = '$_GET[\''.$vars[2].'\']';break;
|
||||
case 'POST': $parseStr = '$_POST[\''.$vars[2].'\']';break;
|
||||
case 'COOKIE':
|
||||
if(isset($vars[3])) {
|
||||
$parseStr = '$_COOKIE[\''.$vars[2].'\'][\''.$vars[3].'\']';
|
||||
}elseif(C('COOKIE_PREFIX')){
|
||||
$parseStr = '$_COOKIE[\''.C('COOKIE_PREFIX').$vars[2].'\']';
|
||||
}else{
|
||||
$parseStr = '$_COOKIE[\''.$vars[2].'\']';
|
||||
}
|
||||
break;
|
||||
case 'SESSION':
|
||||
if(isset($vars[3])) {
|
||||
$parseStr = '$_SESSION[\''.$vars[2].'\'][\''.$vars[3].'\']';
|
||||
}elseif(C('SESSION_PREFIX')){
|
||||
$parseStr = '$_SESSION[\''.C('SESSION_PREFIX').'\'][\''.$vars[2].'\']';
|
||||
}else{
|
||||
$parseStr = '$_SESSION[\''.$vars[2].'\']';
|
||||
}
|
||||
break;
|
||||
case 'ENV': $parseStr = '$_ENV[\''.$vars[2].'\']';break;
|
||||
case 'REQUEST': $parseStr = '$_REQUEST[\''.$vars[2].'\']';break;
|
||||
case 'CONST': $parseStr = strtoupper($vars[2]);break;
|
||||
case 'LANG': $parseStr = 'L("'.$vars[2].'")';break;
|
||||
case 'CONFIG': $parseStr = 'C("'.$vars[2].'")';break;
|
||||
}
|
||||
}else if(count($vars)==2){
|
||||
switch($vars[1]){
|
||||
case 'NOW': $parseStr = "date('Y-m-d g:i a',time())";break;
|
||||
case 'VERSION': $parseStr = 'THINK_VERSION';break;
|
||||
case 'TEMPLATE':$parseStr = 'C("TEMPLATE_NAME")';break;
|
||||
case 'LDELIM': $parseStr = 'C("TMPL_L_DELIM")';break;
|
||||
case 'RDELIM': $parseStr = 'C("TMPL_R_DELIM")';break;
|
||||
default: if(defined($vars[1])) $parseStr = $vars[1];
|
||||
}
|
||||
}
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
// 获取标签定义
|
||||
public function getTags(){
|
||||
return $this->tags;
|
||||
}
|
||||
}
|
||||
614
ThinkPHP/Library/Think/Template/TagLib/Cx.class.php
Normal file
614
ThinkPHP/Library/Think/Template/TagLib/Cx.class.php
Normal file
@@ -0,0 +1,614 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
namespace Think\Template\TagLib;
|
||||
use Think\Template\TagLib;
|
||||
/**
|
||||
* CX标签库解析类
|
||||
*/
|
||||
class Cx extends TagLib {
|
||||
|
||||
// 标签定义
|
||||
protected $tags = array(
|
||||
// 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次
|
||||
'php' => array(),
|
||||
'volist' => array('attr'=>'name,id,offset,length,key,mod','level'=>3,'alias'=>'iterate'),
|
||||
'foreach' => array('attr'=>'name,item,key','level'=>3),
|
||||
'if' => array('attr'=>'condition','level'=>2),
|
||||
'elseif' => array('attr'=>'condition','close'=>0),
|
||||
'else' => array('attr'=>'','close'=>0),
|
||||
'switch' => array('attr'=>'name','level'=>2),
|
||||
'case' => array('attr'=>'value,break'),
|
||||
'default' => array('attr'=>'','close'=>0),
|
||||
'compare' => array('attr'=>'name,value,type','level'=>3,'alias'=>'eq,equal,notequal,neq,gt,lt,egt,elt,heq,nheq'),
|
||||
'range' => array('attr'=>'name,value,type','level'=>3,'alias'=>'in,notin,between,notbetween'),
|
||||
'empty' => array('attr'=>'name','level'=>3),
|
||||
'notempty' => array('attr'=>'name','level'=>3),
|
||||
'present' => array('attr'=>'name','level'=>3),
|
||||
'notpresent'=> array('attr'=>'name','level'=>3),
|
||||
'defined' => array('attr'=>'name','level'=>3),
|
||||
'notdefined'=> array('attr'=>'name','level'=>3),
|
||||
'import' => array('attr'=>'file,href,type,value,basepath','close'=>0,'alias'=>'load,css,js'),
|
||||
'assign' => array('attr'=>'name,value','close'=>0),
|
||||
'define' => array('attr'=>'name,value','close'=>0),
|
||||
'for' => array('attr'=>'start,end,name,comparison,step', 'level'=>3),
|
||||
);
|
||||
|
||||
/**
|
||||
* php标签解析
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string
|
||||
*/
|
||||
public function _php($tag,$content) {
|
||||
$parseStr = '<?php '.$content.' ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* volist标签解析 循环输出数据集
|
||||
* 格式:
|
||||
* <volist name="userList" id="user" empty="" >
|
||||
* {user.username}
|
||||
* {user.email}
|
||||
* </volist>
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string|void
|
||||
*/
|
||||
public function _volist($tag,$content) {
|
||||
$name = $tag['name'];
|
||||
$id = $tag['id'];
|
||||
$empty = isset($tag['empty'])?$tag['empty']:'';
|
||||
$key = !empty($tag['key'])?$tag['key']:'i';
|
||||
$mod = isset($tag['mod'])?$tag['mod']:'2';
|
||||
// 允许使用函数设定数据集 <volist name=":fun('arg')" id="vo">{$vo.name}</volist>
|
||||
$parseStr = '<?php ';
|
||||
if(0===strpos($name,':')) {
|
||||
$parseStr .= '$_result='.substr($name,1).';';
|
||||
$name = '$_result';
|
||||
}else{
|
||||
$name = $this->autoBuildVar($name);
|
||||
}
|
||||
$parseStr .= 'if(is_array('.$name.')): $'.$key.' = 0;';
|
||||
if(isset($tag['length']) && '' !=$tag['length'] ) {
|
||||
$parseStr .= ' $__LIST__ = array_slice('.$name.','.$tag['offset'].','.$tag['length'].',true);';
|
||||
}elseif(isset($tag['offset']) && '' !=$tag['offset']){
|
||||
$parseStr .= ' $__LIST__ = array_slice('.$name.','.$tag['offset'].',null,true);';
|
||||
}else{
|
||||
$parseStr .= ' $__LIST__ = '.$name.';';
|
||||
}
|
||||
$parseStr .= 'if( count($__LIST__)==0 ) : echo "'.$empty.'" ;';
|
||||
$parseStr .= 'else: ';
|
||||
$parseStr .= 'foreach($__LIST__ as $key=>$'.$id.'): ';
|
||||
$parseStr .= '$mod = ($'.$key.' % '.$mod.' );';
|
||||
$parseStr .= '++$'.$key.';?>';
|
||||
$parseStr .= $this->tpl->parse($content);
|
||||
$parseStr .= '<?php endforeach; endif; else: echo "'.$empty.'" ;endif; ?>';
|
||||
|
||||
if(!empty($parseStr)) {
|
||||
return $parseStr;
|
||||
}
|
||||
return ;
|
||||
}
|
||||
|
||||
/**
|
||||
* foreach标签解析 循环输出数据集
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string|void
|
||||
*/
|
||||
public function _foreach($tag,$content) {
|
||||
$name = $tag['name'];
|
||||
$item = $tag['item'];
|
||||
$key = !empty($tag['key'])?$tag['key']:'key';
|
||||
$name = $this->autoBuildVar($name);
|
||||
$parseStr = '<?php if(is_array('.$name.')): foreach('.$name.' as $'.$key.'=>$'.$item.'): ?>';
|
||||
$parseStr .= $this->tpl->parse($content);
|
||||
$parseStr .= '<?php endforeach; endif; ?>';
|
||||
|
||||
if(!empty($parseStr)) {
|
||||
return $parseStr;
|
||||
}
|
||||
return ;
|
||||
}
|
||||
|
||||
/**
|
||||
* if标签解析
|
||||
* 格式:
|
||||
* <if condition=" $a eq 1" >
|
||||
* <elseif condition="$a eq 2" />
|
||||
* <else />
|
||||
* </if>
|
||||
* 表达式支持 eq neq gt egt lt elt == > >= < <= or and || &&
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string
|
||||
*/
|
||||
public function _if($tag,$content) {
|
||||
$condition = $this->parseCondition($tag['condition']);
|
||||
$parseStr = '<?php if('.$condition.'): ?>'.$content.'<?php endif; ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* else标签解析
|
||||
* 格式:见if标签
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string
|
||||
*/
|
||||
public function _elseif($tag,$content) {
|
||||
$condition = $this->parseCondition($tag['condition']);
|
||||
$parseStr = '<?php elseif('.$condition.'): ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* else标签解析
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @return string
|
||||
*/
|
||||
public function _else($tag) {
|
||||
$parseStr = '<?php else: ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* switch标签解析
|
||||
* 格式:
|
||||
* <switch name="a.name" >
|
||||
* <case value="1" break="false">1</case>
|
||||
* <case value="2" >2</case>
|
||||
* <default />other
|
||||
* </switch>
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string
|
||||
*/
|
||||
public function _switch($tag,$content) {
|
||||
$name = $tag['name'];
|
||||
$varArray = explode('|',$name);
|
||||
$name = array_shift($varArray);
|
||||
$name = $this->autoBuildVar($name);
|
||||
if(count($varArray)>0)
|
||||
$name = $this->tpl->parseVarFunction($name,$varArray);
|
||||
$parseStr = '<?php switch('.$name.'): ?>'.$content.'<?php endswitch;?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* case标签解析 需要配合switch才有效
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string
|
||||
*/
|
||||
public function _case($tag,$content) {
|
||||
$value = $tag['value'];
|
||||
if('$' == substr($value,0,1)) {
|
||||
$varArray = explode('|',$value);
|
||||
$value = array_shift($varArray);
|
||||
$value = $this->autoBuildVar(substr($value,1));
|
||||
if(count($varArray)>0)
|
||||
$value = $this->tpl->parseVarFunction($value,$varArray);
|
||||
$value = 'case '.$value.': ';
|
||||
}elseif(strpos($value,'|')){
|
||||
$values = explode('|',$value);
|
||||
$value = '';
|
||||
foreach ($values as $val){
|
||||
$value .= 'case "'.addslashes($val).'": ';
|
||||
}
|
||||
}else{
|
||||
$value = 'case "'.$value.'": ';
|
||||
}
|
||||
$parseStr = '<?php '.$value.' ?>'.$content;
|
||||
$isBreak = isset($tag['break']) ? $tag['break'] : '';
|
||||
if('' ==$isBreak || $isBreak) {
|
||||
$parseStr .= '<?php break;?>';
|
||||
}
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* default标签解析 需要配合switch才有效
|
||||
* 使用: <default />ddfdf
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string
|
||||
*/
|
||||
public function _default($tag) {
|
||||
$parseStr = '<?php default: ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* compare标签解析
|
||||
* 用于值的比较 支持 eq neq gt lt egt elt heq nheq 默认是eq
|
||||
* 格式: <compare name="" type="eq" value="" >content</compare>
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string
|
||||
*/
|
||||
public function _compare($tag,$content,$type='eq') {
|
||||
$name = $tag['name'];
|
||||
$value = $tag['value'];
|
||||
$type = isset($tag['type'])?$tag['type']:$type;
|
||||
$type = $this->parseCondition(' '.$type.' ');
|
||||
$varArray = explode('|',$name);
|
||||
$name = array_shift($varArray);
|
||||
$name = $this->autoBuildVar($name);
|
||||
if(count($varArray)>0)
|
||||
$name = $this->tpl->parseVarFunction($name,$varArray);
|
||||
if('$' == substr($value,0,1)) {
|
||||
$value = $this->autoBuildVar(substr($value,1));
|
||||
}else {
|
||||
$value = '"'.$value.'"';
|
||||
}
|
||||
$parseStr = '<?php if(('.$name.') '.$type.' '.$value.'): ?>'.$content.'<?php endif; ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
public function _eq($tag,$content) {
|
||||
return $this->_compare($tag,$content,'eq');
|
||||
}
|
||||
|
||||
public function _equal($tag,$content) {
|
||||
return $this->_compare($tag,$content,'eq');
|
||||
}
|
||||
|
||||
public function _neq($tag,$content) {
|
||||
return $this->_compare($tag,$content,'neq');
|
||||
}
|
||||
|
||||
public function _notequal($tag,$content) {
|
||||
return $this->_compare($tag,$content,'neq');
|
||||
}
|
||||
|
||||
public function _gt($tag,$content) {
|
||||
return $this->_compare($tag,$content,'gt');
|
||||
}
|
||||
|
||||
public function _lt($tag,$content) {
|
||||
return $this->_compare($tag,$content,'lt');
|
||||
}
|
||||
|
||||
public function _egt($tag,$content) {
|
||||
return $this->_compare($tag,$content,'egt');
|
||||
}
|
||||
|
||||
public function _elt($tag,$content) {
|
||||
return $this->_compare($tag,$content,'elt');
|
||||
}
|
||||
|
||||
public function _heq($tag,$content) {
|
||||
return $this->_compare($tag,$content,'heq');
|
||||
}
|
||||
|
||||
public function _nheq($tag,$content) {
|
||||
return $this->_compare($tag,$content,'nheq');
|
||||
}
|
||||
|
||||
/**
|
||||
* range标签解析
|
||||
* 如果某个变量存在于某个范围 则输出内容 type= in 表示在范围内 否则表示在范围外
|
||||
* 格式: <range name="var|function" value="val" type='in|notin' >content</range>
|
||||
* example: <range name="a" value="1,2,3" type='in' >content</range>
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @param string $type 比较类型
|
||||
* @return string
|
||||
*/
|
||||
public function _range($tag,$content,$type='in') {
|
||||
$name = $tag['name'];
|
||||
$value = $tag['value'];
|
||||
$varArray = explode('|',$name);
|
||||
$name = array_shift($varArray);
|
||||
$name = $this->autoBuildVar($name);
|
||||
if(count($varArray)>0)
|
||||
$name = $this->tpl->parseVarFunction($name,$varArray);
|
||||
|
||||
$type = isset($tag['type'])?$tag['type']:$type;
|
||||
|
||||
if('$' == substr($value,0,1)) {
|
||||
$value = $this->autoBuildVar(substr($value,1));
|
||||
$str = 'is_array('.$value.')?'.$value.':explode(\',\','.$value.')';
|
||||
}else{
|
||||
$value = '"'.$value.'"';
|
||||
$str = 'explode(\',\','.$value.')';
|
||||
}
|
||||
if($type=='between') {
|
||||
$parseStr = '<?php $_RANGE_VAR_='.$str.';if('.$name.'>= $_RANGE_VAR_[0] && '.$name.'<= $_RANGE_VAR_[1]):?>'.$content.'<?php endif; ?>';
|
||||
}elseif($type=='notbetween'){
|
||||
$parseStr = '<?php $_RANGE_VAR_='.$str.';if('.$name.'<$_RANGE_VAR_[0] || '.$name.'>$_RANGE_VAR_[1]):?>'.$content.'<?php endif; ?>';
|
||||
}else{
|
||||
$fun = ($type == 'in')? 'in_array' : '!in_array';
|
||||
$parseStr = '<?php if('.$fun.'(('.$name.'), '.$str.')): ?>'.$content.'<?php endif; ?>';
|
||||
}
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
// range标签的别名 用于in判断
|
||||
public function _in($tag,$content) {
|
||||
return $this->_range($tag,$content,'in');
|
||||
}
|
||||
|
||||
// range标签的别名 用于notin判断
|
||||
public function _notin($tag,$content) {
|
||||
return $this->_range($tag,$content,'notin');
|
||||
}
|
||||
|
||||
public function _between($tag,$content){
|
||||
return $this->_range($tag,$content,'between');
|
||||
}
|
||||
|
||||
public function _notbetween($tag,$content){
|
||||
return $this->_range($tag,$content,'notbetween');
|
||||
}
|
||||
|
||||
/**
|
||||
* present标签解析
|
||||
* 如果某个变量已经设置 则输出内容
|
||||
* 格式: <present name="" >content</present>
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string
|
||||
*/
|
||||
public function _present($tag,$content) {
|
||||
$name = $tag['name'];
|
||||
$name = $this->autoBuildVar($name);
|
||||
$parseStr = '<?php if(isset('.$name.')): ?>'.$content.'<?php endif; ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* notpresent标签解析
|
||||
* 如果某个变量没有设置,则输出内容
|
||||
* 格式: <notpresent name="" >content</notpresent>
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string
|
||||
*/
|
||||
public function _notpresent($tag,$content) {
|
||||
$name = $tag['name'];
|
||||
$name = $this->autoBuildVar($name);
|
||||
$parseStr = '<?php if(!isset('.$name.')): ?>'.$content.'<?php endif; ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* empty标签解析
|
||||
* 如果某个变量为empty 则输出内容
|
||||
* 格式: <empty name="" >content</empty>
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string
|
||||
*/
|
||||
public function _empty($tag,$content) {
|
||||
$name = $tag['name'];
|
||||
$name = $this->autoBuildVar($name);
|
||||
$parseStr = '<?php if(empty('.$name.')): ?>'.$content.'<?php endif; ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
public function _notempty($tag,$content) {
|
||||
$name = $tag['name'];
|
||||
$name = $this->autoBuildVar($name);
|
||||
$parseStr = '<?php if(!empty('.$name.')): ?>'.$content.'<?php endif; ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否已经定义了该常量
|
||||
* <defined name='TXT'>已定义</defined>
|
||||
* @param <type> $attr
|
||||
* @param <type> $content
|
||||
* @return string
|
||||
*/
|
||||
public function _defined($tag,$content) {
|
||||
$name = $tag['name'];
|
||||
$parseStr = '<?php if(defined("'.$name.'")): ?>'.$content.'<?php endif; ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
public function _notdefined($tag,$content) {
|
||||
$name = $tag['name'];
|
||||
$parseStr = '<?php if(!defined("'.$name.'")): ?>'.$content.'<?php endif; ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* import 标签解析 <import file="Js.Base" />
|
||||
* <import file="Css.Base" type="css" />
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @param boolean $isFile 是否文件方式
|
||||
* @param string $type 类型
|
||||
* @return string
|
||||
*/
|
||||
public function _import($tag,$content,$isFile=false,$type='') {
|
||||
$file = isset($tag['file'])?$tag['file']:$tag['href'];
|
||||
$parseStr = '';
|
||||
$endStr = '';
|
||||
// 判断是否存在加载条件 允许使用函数判断(默认为isset)
|
||||
if (isset($tag['value'])) {
|
||||
$varArray = explode('|',$tag['value']);
|
||||
$name = array_shift($varArray);
|
||||
$name = $this->autoBuildVar($name);
|
||||
if (!empty($varArray))
|
||||
$name = $this->tpl->parseVarFunction($name,$varArray);
|
||||
else
|
||||
$name = 'isset('.$name.')';
|
||||
$parseStr .= '<?php if('.$name.'): ?>';
|
||||
$endStr = '<?php endif; ?>';
|
||||
}
|
||||
if($isFile) {
|
||||
// 根据文件名后缀自动识别
|
||||
$type = $type?$type:(!empty($tag['type'])?strtolower($tag['type']):null);
|
||||
// 文件方式导入
|
||||
$array = explode(',',$file);
|
||||
foreach ($array as $val){
|
||||
if (!$type || isset($reset)) {
|
||||
$type = $reset = strtolower(substr(strrchr($val, '.'),1));
|
||||
}
|
||||
switch($type) {
|
||||
case 'js':
|
||||
$parseStr .= '<script type="text/javascript" src="'.$val.'"></script>';
|
||||
break;
|
||||
case 'css':
|
||||
$parseStr .= '<link rel="stylesheet" type="text/css" href="'.$val.'" />';
|
||||
break;
|
||||
case 'php':
|
||||
$parseStr .= '<?php require_cache("'.$val.'"); ?>';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
// 命名空间导入模式 默认是js
|
||||
$type = $type?$type:(!empty($tag['type'])?strtolower($tag['type']):'js');
|
||||
$basepath = !empty($tag['basepath'])?$tag['basepath']:__ROOT__.'/Public';
|
||||
// 命名空间方式导入外部文件
|
||||
$array = explode(',',$file);
|
||||
foreach ($array as $val){
|
||||
if(strpos ($val, '?')) {
|
||||
list($val,$version) = explode('?',$val);
|
||||
} else {
|
||||
$version = '';
|
||||
}
|
||||
switch($type) {
|
||||
case 'js':
|
||||
$parseStr .= '<script type="text/javascript" src="'.$basepath.'/'.str_replace(array('.','#'), array('/','.'),$val).'.js'.($version?'?'.$version:'').'"></script>';
|
||||
break;
|
||||
case 'css':
|
||||
$parseStr .= '<link rel="stylesheet" type="text/css" href="'.$basepath.'/'.str_replace(array('.','#'), array('/','.'),$val).'.css'.($version?'?'.$version:'').'" />';
|
||||
break;
|
||||
case 'php':
|
||||
$parseStr .= '<?php import("'.$val.'"); ?>';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $parseStr.$endStr;
|
||||
}
|
||||
|
||||
// import别名 采用文件方式加载(要使用命名空间必须用import) 例如 <load file="__PUBLIC__/Js/Base.js" />
|
||||
public function _load($tag,$content) {
|
||||
return $this->_import($tag,$content,true);
|
||||
}
|
||||
|
||||
// import别名使用 导入css文件 <css file="__PUBLIC__/Css/Base.css" />
|
||||
public function _css($tag,$content) {
|
||||
return $this->_import($tag,$content,true,'css');
|
||||
}
|
||||
|
||||
// import别名使用 导入js文件 <js file="__PUBLIC__/Js/Base.js" />
|
||||
public function _js($tag,$content) {
|
||||
return $this->_import($tag,$content,true,'js');
|
||||
}
|
||||
|
||||
/**
|
||||
* assign标签解析
|
||||
* 在模板中给某个变量赋值 支持变量赋值
|
||||
* 格式: <assign name="" value="" />
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string
|
||||
*/
|
||||
public function _assign($tag,$content) {
|
||||
$name = $this->autoBuildVar($tag['name']);
|
||||
if('$'==substr($tag['value'],0,1)) {
|
||||
$value = $this->autoBuildVar(substr($tag['value'],1));
|
||||
}else{
|
||||
$value = '\''.$tag['value']. '\'';
|
||||
}
|
||||
$parseStr = '<?php '.$name.' = '.$value.'; ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* define标签解析
|
||||
* 在模板中定义常量 支持变量赋值
|
||||
* 格式: <define name="" value="" />
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string
|
||||
*/
|
||||
public function _define($tag,$content) {
|
||||
$name = '\''.$tag['name']. '\'';
|
||||
if('$'==substr($tag['value'],0,1)) {
|
||||
$value = $this->autoBuildVar(substr($tag['value'],1));
|
||||
}else{
|
||||
$value = '\''.$tag['value']. '\'';
|
||||
}
|
||||
$parseStr = '<?php define('.$name.', '.$value.'); ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* for标签解析
|
||||
* 格式: <for start="" end="" comparison="" step="" name="" />
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @param string $content 标签内容
|
||||
* @return string
|
||||
*/
|
||||
public function _for($tag, $content){
|
||||
//设置默认值
|
||||
$start = 0;
|
||||
$end = 0;
|
||||
$step = 1;
|
||||
$comparison = 'lt';
|
||||
$name = 'i';
|
||||
$rand = rand(); //添加随机数,防止嵌套变量冲突
|
||||
//获取属性
|
||||
foreach ($tag as $key => $value){
|
||||
$value = trim($value);
|
||||
if(':'==substr($value,0,1))
|
||||
$value = substr($value,1);
|
||||
elseif('$'==substr($value,0,1))
|
||||
$value = $this->autoBuildVar(substr($value,1));
|
||||
switch ($key){
|
||||
case 'start':
|
||||
$start = $value; break;
|
||||
case 'end' :
|
||||
$end = $value; break;
|
||||
case 'step':
|
||||
$step = $value; break;
|
||||
case 'comparison':
|
||||
$comparison = $value; break;
|
||||
case 'name':
|
||||
$name = $value; break;
|
||||
}
|
||||
}
|
||||
|
||||
$parseStr = '<?php $__FOR_START_'.$rand.'__='.$start.';$__FOR_END_'.$rand.'__='.$end.';';
|
||||
$parseStr .= 'for($'.$name.'=$__FOR_START_'.$rand.'__;'.$this->parseCondition('$'.$name.' '.$comparison.' $__FOR_END_'.$rand.'__').';$'.$name.'+='.$step.'){ ?>';
|
||||
$parseStr .= $content;
|
||||
$parseStr .= '<?php } ?>';
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
}
|
||||
523
ThinkPHP/Library/Think/Template/TagLib/Html.class.php
Normal file
523
ThinkPHP/Library/Think/Template/TagLib/Html.class.php
Normal file
@@ -0,0 +1,523 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
namespace Think\Template\TagLib;
|
||||
use Think\Template\TagLib;
|
||||
/**
|
||||
* Html标签库驱动
|
||||
*/
|
||||
class Html extends TagLib{
|
||||
// 标签定义
|
||||
protected $tags = array(
|
||||
// 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次
|
||||
'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';
|
||||
// $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 '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']:''; //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']; //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($'.$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 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']; //表格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 = !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 = "<!-- Think 系统列表组件开始 -->\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" >'; //支持鼠标移动单元行颜色变化 具体方法在js中定义
|
||||
|
||||
if(!empty($key)) {
|
||||
$parseStr .= '<td>{$i}</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);
|
||||
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<!-- Think 系统列表组件结束 -->\n";
|
||||
return $parseStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* list标签解析
|
||||
* 格式: <html:list datasource="" show="" />
|
||||
* @access public
|
||||
* @param array $tag 标签属性
|
||||
* @return string
|
||||
*/
|
||||
public function _list($tag) {
|
||||
$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']=='true'?true:false; //是否显示功能操作
|
||||
$key = !empty($tag['key'])?true:false;
|
||||
$sort = $tag['sort']=='false'?false:true;
|
||||
$checkbox = $tag['checkbox']; //是否显示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 = "<!-- Think 系统列表组件开始 -->\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)) {//如果指定需要显示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" '; //支持鼠标移动单元行颜色变化 具体方法在js中定义
|
||||
if(!empty($checkbox)) {
|
||||
// $parseStr .= 'onmouseover="over(event)" onmouseout="out(event)" onclick="change(event)" ';
|
||||
}
|
||||
$parseStr .= '>';
|
||||
if(!empty($checkbox)) {//如果需要显示checkbox 则在每行开头显示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])) {
|
||||
// 支持列表字段链接功能 具体方法由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);
|
||||
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<!-- Think 系统列表组件结束 -->\n";
|
||||
return $parseStr;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user