| Server IP : 156.238.232.47 / Your IP : 216.73.216.150 Web Server : nginx/1.25.3 System : Linux C202504152095410 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : www ( 1000) PHP Version : 8.3.25 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /www/data/wwwroot/2026_08_09_01/runtime/complile/ |
Upload File : |
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="renderer" content="webkit">
<title><?php echo CMSNAME;?>管理中心-V<?php echo APP_VERSION;?>-<?php echo RELEASE_TIME;?></title>
<link rel="shortcut icon" href="<?php echo SITE_DIR;?>/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="<?php echo APP_THEME_DIR;?>/layui/css/layui.css?v=v2.5.4">
<link rel="stylesheet" href="<?php echo APP_THEME_DIR;?>/font-awesome/css/font-awesome.min.css?v=v4.7.0" type="text/css">
<link rel="stylesheet" href="<?php echo APP_THEME_DIR;?>/css/comm.css?v=v3.0.6">
<link href="<?php echo APP_THEME_DIR;?>/css/jquery.treetable.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="<?php echo APP_THEME_DIR;?>/js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="<?php echo APP_THEME_DIR;?>/js/jquery.treetable.js"></script>
</head>
<body class="layui-layout-body">
<!--定义部分地址方便JS调用-->
<div style="display: none">
<span id="controller" data-controller="<?php echo C;?>"></span>
<span id="url" data-url="<?php echo URL;?>"></span>
<span id="preurl" data-preurl="<?php echo url('/admin',false);?>"></span>
<span id="sitedir" data-sitedir="<?php echo SITE_DIR;?>"></span>
<span id="mcode" data-mcode="<?php echo htmlspecialchars(get('mcode'), ENT_QUOTES, 'UTF-8');?>"></span>
</div>
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<div class="layui-logo">
<a href="<?php echo \core\basic\Url::get('/admin/Index/home');?>">
<img src="<?php echo APP_THEME_DIR;?>/images/logo.png" height="30">
<?php echo CMSNAME;?>
<?php if (LICENSE==3) {?>
<span class="layui-badge">SVIP</span>
<?php } else { ?>
<span class="layui-badge layui-bg-gray">V<?php echo APP_VERSION;?></span>
<?php } ?>
</a>
</div>
<ul class="menu">
<li class="menu-ico" title="显示或隐藏侧边栏"><i class="fa fa-bars" aria-hidden="true"></i></li>
</ul>
<?php if (!$this->getVar('one_area')) {?>
<form method="post" action="<?php echo \core\basic\Url::get('/admin/Index/area');?>" class="area-select">
<input type="hidden" name="formcheck" value="<?php echo $this->getVar('formcheck');?>" >
<div class="layui-col-xs8">
<select name="acode">
<?php echo $this->getVar('area_html');?>
</select>
</div>
<div class="layui-col-xs4">
<button type="submit" class="layui-btn layui-btn-sm">切换</button>
</div>
</form>
<?php } ?>
<ul class="layui-nav layui-layout-right">
<li class="layui-nav-item layui-hide-xs">
<a href="<?php echo SITE_DIR;?>/" target="_blank"><i class="fa fa-home" aria-hidden="true"></i> 网站主页</a>
</li>
<li class="layui-nav-item layui-hide-xs">
<a href="<?php echo \core\basic\Url::get('/admin/index/clearCache');?>"><i class="fa fa-trash-o" aria-hidden="true"></i> 清理缓存</a>
</li>
<li class="layui-nav-item layui-hide-xs">
<a href="javascript:;">
<i class="fa fa-user-circle-o" aria-hidden="true"></i> <?php echo session('realname');?>
</a>
<dl class="layui-nav-child">
<dd><a href="<?php echo \core\basic\Url::get('/admin/Index/ucenter');?>"><i class="fa fa-address-card-o" aria-hidden="true"></i> 密码修改</a></dd>
<dd><a href="<?php echo \core\basic\Url::get('/admin/Index/loginOut');?>"><i class="fa fa-sign-out" aria-hidden="true"></i> 退出登录</a></dd>
<?php if (session('ucode')==10001) {?>
<dd><a href="<?php echo \core\basic\Url::get('/admin/Upgrade/index');?>"><i class="fa fa-cloud-upload" aria-hidden="true"></i> 在线更新</a></dd>
<dd><a href="<?php echo \core\basic\Url::get('/admin/Index/clearSession');?>" class="ajaxlink"><i class="fa fa-trash-o" aria-hidden="true"></i> 清理会话</a></dd>
<?php } ?>
</dl>
</li>
</ul>
</div>
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域(可配合layui已有的垂直导航) -->
<ul class="layui-nav layui-nav-tree" id="nav" lay-shrink="all">
<?php $num = 0;foreach ($this->getVar('menu_tree') as $key => $value) { $num++;?>
<li class="layui-nav-item nav-item <?php if ($this->getVar('primary_menu_url')==$value->url) {?>layui-nav-itemed<?php } ?>">
<a class="" href="javascript:;"><i class="fa <?php echo $value->ico; ?>" aria-hidden="true"></i><?php echo $value->name; ?></a>
<dl class="layui-nav-child">
<?php if ($value->mcode=='M130') {?>
<?php $num3 = 0;foreach ($this->getVar('menu_models') as $key3 => $value3) { $num3++;?>
<?php if ($value3->type==1) {?>
<dd><a href="<?php echo \core\basic\Url::get('/admin/Single/index/mcode/'.$value3->mcode.'');?>"><i class="fa fa-file-text-o" aria-hidden="true"></i><?php echo $value3->name; ?>内容</a></dd>
<?php } ?>
<?php if ($value3->type==2) {?>
<dd><a href="<?php echo \core\basic\Url::get('/admin/Content/index/mcode/'.$value3->mcode.'');?>"><i class="fa fa-file-text-o" aria-hidden="true"></i><?php echo $value3->name; ?>内容</a></dd>
<?php } ?>
<?php } ?>
<?php } else { ?>
<?php $num2 = 0;foreach ($value->son as $key2 => $value2) { $num2++;?>
<?php if (!isset($value2->status)|| $value2->status==1) {?>
<dd><a href="<?php echo \core\basic\Url::get(''.$value2->url.'');?>"><i class="fa <?php echo $value2->ico; ?>" aria-hidden="true"></i><?php echo $value2->name; ?></a></dd>
<?php } ?>
<?php } ?>
<?php if ($value->mcode=='M101' && session('ucode')==10001) {?>
<dd><a href="<?php echo \core\basic\Url::get('/admin/Upgrade/index');?>"><i class="fa fa-cloud-upload" aria-hidden="true"></i>在线更新</a></dd>
<?php } ?>
<?php } ?>
</dl>
</li>
<?php } ?>
<li style="height:1px;background:#666" class="layui-hide-sm"></li>
<li class="layui-nav-item layui-hide-sm">
<a href="<?php echo SITE_DIR;?>/" target="_blank"><i class="fa fa-home" aria-hidden="true"></i> 网站主页</a>
</li>
<li class="layui-nav-item layui-hide-sm">
<a href="<?php echo \core\basic\Url::get('/admin/Index/ucenter');?>"><i class="fa fa-address-card-o" aria-hidden="true"></i> 资料修改</a>
</li>
<li class="layui-nav-item layui-hide-sm">
<a href="<?php echo \core\basic\Url::get('/admin/DeleCache/index');?>"><i class="fa fa-trash-o" aria-hidden="true"></i> 清理缓存</a>
</li>
<li class="layui-nav-item layui-hide-sm">
<a href="<?php echo \core\basic\Url::get('/admin/Index/loginOut');?>"><i class="fa fa-sign-out" aria-hidden="true"></i> 退出登录</a>
</li>
</ul>
</div>
</div>
<div class="layui-body">
<?php if ($this->getVar('list')) {?>
<div class="layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this" lay-id="t1"><?php echo $this->getVar('model_name');?>内容</li>
<li lay-id="t2"><?php echo $this->getVar('model_name');?>新增</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<form action="<?php echo \core\basic\Url::get('/admin/Content/index/mcode/'.get('mcode').'');?>" method="get" class="layui-form">
<div class="layui-form-item nospace">
<div class="layui-input-inline">
<?php echo $this->getVar('pathinfo');?>
<select name="scode">
<option value="">全部栏目</option>
<?php echo $this->getVar('search_select');?>
</select>
</div>
<div class="layui-input-inline">
<input type="text" name="keyword" value="<?php echo htmlspecialchars(get('keyword'), ENT_QUOTES, 'UTF-8');?>" placeholder="请输入搜索关键字" class="layui-input">
</div>
<div class="layui-input-inline">
<button class="layui-btn" lay-submit>搜索</button>
<a class="layui-btn layui-btn-primary" href="<?php echo \core\basic\Url::get('/admin/Content/index/mcode/'.get('mcode').'');?>">清除搜索</a>
</div>
</div>
</form>
<form action="<?php echo \core\basic\Url::get('/admin/Content/mod');?>" method="post" id="contentForm" name="contentForm" class="layui-form" onkeydown="if(event.keyCode==13) return false;">
<input type="hidden" name="formcheck" value="<?php echo $this->getVar('formcheck');?>" >
<table class="layui-table">
<thead>
<tr>
<th><input type="checkbox" class="checkbox" lay-ignore id="checkall" title="全选"></th>
<th>ID</th>
<th>栏目</th>
<th>标题</th>
<th>发布时间</th>
<th>排序</th>
<th>状态</th>
<th>置顶</th>
<th>推荐</th>
<th>访问量</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<?php $num = 0;foreach ($this->getVar('contents') as $key => $value) { $num++;?>
<tr>
<td>
<input type="checkbox" class="checkbox checkitem" lay-ignore name="list[]" <?php if ($value->outlink) {?>disabled<?php } ?> value="<?php echo $value->id; ?>">
<input type="hidden" name="listall[]" value="<?php echo $value->id; ?>">
</td>
<td><?php echo $value->id; ?></td>
<td title="<?php echo $value->scode; ?>"><?php echo $value->sortname; ?></td>
<td title="<?php echo $value->title; ?>">
<?php echo substr_both($value->title,0,15);?>
<?php if ($value->isheadline) {?>
<span class="layui-badge layui-bg-blue">头</span>
<?php } ?>
<?php if ($value->ico) {?>
<span class="layui-badge layui-bg-orange">缩</span>
<?php } ?>
<?php if ($value->pics) {?>
<span class="layui-badge">图</span>
<?php } ?>
<?php if ($value->outlink) {?>
<span class="layui-badge layui-bg-black">链</span>
<?php } ?>
</td>
<td><?php echo $value->date; ?></td>
<td class="table-input"><input type="text" lay-ignore class="layui-input" name="sorting[]" value="<?php echo $value->sorting; ?>"></td>
<td>
<?php if ($value->status) {?>
<a href="<?php echo \core\basic\Url::get('/admin/'.C.'/mod/id/'.$value->id.'/field/status/value/0');?>" class="switch"><i class='fa fa-toggle-on' title="点击关闭"></i></a>
<?php } else { ?>
<a href="<?php echo \core\basic\Url::get('/admin/'.C.'/mod/id/'.$value->id.'/field/status/value/1');?>" class="switch"><i class='fa fa-toggle-off' title="点击开启"></i></a>
<?php } ?>
</td>
<td>
<?php if ($value->istop) {?>
<a href="<?php echo \core\basic\Url::get('/admin/'.C.'/mod/id/'.$value->id.'/field/istop/value/0');?>" class="switch"><i class='fa fa-toggle-on' title="点击关闭"></i></a>
<?php } else { ?>
<a href="<?php echo \core\basic\Url::get('/admin/'.C.'/mod/id/'.$value->id.'/field/istop/value/1');?>" class="switch"><i class='fa fa-toggle-off' title="点击开启"></i></a>
<?php } ?>
</td>
<td>
<?php if ($value->isrecommend) {?>
<a href="<?php echo \core\basic\Url::get('/admin/'.C.'/mod/id/'.$value->id.'/field/isrecommend/value/0');?>" class="switch"><i class='fa fa-toggle-on' title="点击关闭"></i></a>
<?php } else { ?>
<a href="<?php echo \core\basic\Url::get('/admin/'.C.'/mod/id/'.$value->id.'/field/isrecommend/value/1');?>" class="switch"><i class='fa fa-toggle-off' title="点击开启"></i></a>
<?php } ?>
</td>
<td><?php echo $value->visits; ?></td>
<td>
<?php if (!$value->outlink) {?>
<?php
$Parser=new app\home\controller\ParserController();
$link=$Parser->parserLink(2,$value->urlname,'content',$value->scode,$value->sortfilename,$value->id,$value->filename);
?>
<input type="hidden" name="urls[<?php echo $value->id; ?>]" value="<?php echo $link?>">
<a href="<?php echo $link?>" class="layui-btn layui-btn-xs layui-btn-primary" target="_blank">查看</a>
<?php } ?>
<?php echo get_btn_del($value->id);?>
<?php if (check_level('mod')) {?>
<a href="<?php echo \core\basic\Url::get('/admin/Content/mod/mcode/'.get('mcode').'/id/'.$value->id.'');?><?php echo $this->getVar('btnqs');?>" class="layui-btn layui-btn-xs" >修改</a>
<?php } ?>
</td>
</tr>
<?php } ?>
</tbody>
</table>
<div class="layui-inline" style="float:right">
<select lay-filter="tourl" class="page-select" >
<option value="" selected="">每页显示数量</option>
<option value="<?php echo \core\basic\Url::get('/admin/Content/index/mcode/'.get('mcode').'/pagesize/20');?>" <?php if (get('pagesize')==20) {?>selected<?php } ?>>20条/页</option>
<option value="<?php echo \core\basic\Url::get('/admin/Content/index/mcode/'.get('mcode').'/pagesize/30');?>" <?php if (get('pagesize')==30) {?>selected<?php } ?>>30条/页</option>
<option value="<?php echo \core\basic\Url::get('/admin/Content/index/mcode/'.get('mcode').'/pagesize/50');?>" <?php if (get('pagesize')==50) {?>selected<?php } ?>>50条/页</option>
<option value="<?php echo \core\basic\Url::get('/admin/Content/index/mcode/'.get('mcode').'/pagesize/60');?>" <?php if (get('pagesize')==60) {?>selected<?php } ?>>60条/页</option>
<option value="<?php echo \core\basic\Url::get('/admin/Content/index/mcode/'.get('mcode').'/pagesize/100');?>" <?php if (get('pagesize')==100) {?>selected<?php } ?>>100条/页</option>
<option value="<?php echo \core\basic\Url::get('/admin/Content/index/mcode/'.get('mcode').'/pagesize/150');?>" <?php if (get('pagesize')==150) {?>selected<?php } ?>>150条/页</option>
<option value="<?php echo \core\basic\Url::get('/admin/Content/index/mcode/'.get('mcode').'/pagesize/200');?>" <?php if (get('pagesize')==200) {?>selected<?php } ?>>200条/页</option>
</select>
</div>
<div class="layui-input-inline">
<select name="scode">
<option value="">请选择移动/复制到栏目</option>
<?php echo $this->getVar('search_select');?>
</select>
</div>
<div class="layui-btn-group">
<?php if (check_level('mod')) {?>
<button type="submit" name="submit" value="copy" class="layui-btn layui-btn-sm">复制</button>
<button type="submit" name="submit" value="move" class="layui-btn layui-btn-sm">移动</button>
<?php } ?>
<?php if (check_level('del')) {?>
<button type="submit" name="submit" onclick="return setDelAction();" class="layui-btn layui-btn-sm">批量删除</button>
<?php } ?>
<?php if (check_level('mod')) {?>
<button type="submit" name="submit" value="sorting" class="layui-btn layui-btn-sm">保存排序</button>
<?php if ($this->getVar('baidu_zz_token')) {?>
<button type="submit" name="submit" value="baiduzz" class="layui-btn layui-btn-sm">百度普通推送</button>
<?php } ?>
<?php if ($this->getVar('baidu_ks_token')) {?>
<button type="submit" name="submit" value="baiduks" class="layui-btn layui-btn-sm">百度快速推送</button>
<?php } ?>
<?php } ?>
</div>
<script>
function setDelAction(){
document.contentForm.action = "<?php echo \core\basic\Url::get('/admin/Content/del');?>";
return confirm("您确定要删除选中的内容么?");
}
</script>
<div class="page">
<?php echo $this->getVar('pagebar');?>
</div>
</form>
</div>
<div class="layui-tab-item">
<form action="<?php echo \core\basic\Url::get('/admin/Content/add/mcode/'.get('mcode').'');?>" method="post" class="layui-form" lay-filter="content" id="edit">
<input type="hidden" name="formcheck" value="<?php echo $this->getVar('formcheck');?>" >
<div class="layui-tab">
<ul class="layui-tab-title">
<li class="layui-this">基本内容</li>
<li>高级内容</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<div class="layui-form-item">
<label class="layui-form-label">内容栏目 <span class="layui-text-red">*</span></label>
<div class="layui-input-block">
<select name="scode" lay-verify="required">
<option value="">请选择内容栏目</option>
<?php echo $this->getVar('sort_select');?>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容标题 <span class="layui-text-red">*</span></label>
<div class="layui-input-block">
<input type="text" name="title" required lay-verify="required" placeholder="请输入内容标题" class="layui-input">
</div>
</div>
<?php $num = 0;foreach ($this->getVar('extfield') as $key => $value) { $num++;?>
<?php if ($value->type==1) {?> <!-- 单行文本 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<input type="text" name="<?php echo $value->name; ?>" placeholder="请输入<?php echo $value->description; ?>" class="layui-input">
</div>
</div>
<?php } ?>
<?php if ($value->type==2) {?><!-- 多行文本 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<textarea name="<?php echo $value->name; ?>" class="layui-textarea" placeholder="请输入<?php echo $value->description; ?>"></textarea>
</div>
</div>
<?php } ?>
<?php if ($value->type==3) {?><!-- 单选 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<div>
<?php
$radios=explode(',',$value->value);
foreach ($radios as $value2) {
echo '<input type="radio" name="'.$value->name.'" value="'.$value2.'" title="'.$value2.'">';
}
?>
</div>
</div>
</div>
<?php } ?>
<?php if ($value->type==4) {?><!-- 多选 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<div>
<?php
$checkboxs=explode(',',$value->value);
foreach ($checkboxs as $value2) {
echo '<input type="checkbox" name="'.$value->name.'[]" value="'.$value2.'" title="'.$value2.'">';
}
?>
</div>
</div>
</div>
<?php } ?>
<?php if ($value->type==5) {?><!-- 图片 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-inline">
<input type="text" name="<?php echo $value->name; ?>" id="<?php echo $value->name; ?>" placeholder="请上传<?php echo $value->description; ?>" class="layui-input">
</div>
<button type="button" class="layui-btn upload watermark" data-des="<?php echo $value->name; ?>">
<i class="layui-icon"></i>上传图片
</button>
<div id="<?php echo $value->name; ?>_box" class="pic"></div>
</div>
<?php } ?>
<?php if ($value->type==10) {?><!-- 多图片 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-inline">
<input type="text" name="<?php echo $value->name; ?>" id="<?php echo $value->name; ?>" placeholder="请上传<?php echo $value->description; ?>" class="layui-input">
</div>
<button type="button" class="layui-btn uploads watermark" data-des="<?php echo $value->name; ?>">
<i class="layui-icon"></i>上传多图
</button>
<div id="<?php echo $value->name; ?>_box" class="pic addedit"><dl></dl> <!-- 规避空内容拖动bug --></div>
</div>
<?php } ?>
<?php if ($value->type==6) {?><!-- 文件 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-inline">
<input type="text" name="<?php echo $value->name; ?>" id="<?php echo $value->name; ?>" placeholder="请上传<?php echo $value->description; ?>" class="layui-input">
</div>
<button type="button" class="layui-btn file" data-des="<?php echo $value->name; ?>">
<i class="layui-icon"></i>上传文件
</button>
</div>
<?php } ?>
<?php if ($value->type==7) {?><!-- 日期 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<input type="text" name="<?php echo $value->name; ?>" readonly placeholder="请选择<?php echo $value->description; ?>" class="layui-input datetime">
</div>
</div>
<?php } ?>
<?php if ($value->type==8) {?><!-- 编辑器 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<script type="text/plain" id="editor_<?php echo $value->name; ?>" name="<?php echo $value->name; ?>" style="width:100%;height:240px;"></script>
<script>
//初始化编辑器
$(document).ready(function (e) {
var ue = UE.getEditor('editor_<?php echo $value->name; ?>',{
maximumWords:10000
});
})
</script>
</div>
</div>
<?php } ?>
<?php if ($value->type==9) {?><!-- 下拉 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<select name="<?php echo $value->name; ?>">
<?php
$selects=explode(',',$value->value);
foreach ($selects as $value2) {
echo '<option value="'.$value2.'">'.$value2.'</option>';
}
?>
</select>
</div>
</div>
<?php } ?>
<?php } ?>
<div class="layui-form-item">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<script type="text/plain" id="editor" name="content" style="width:100%;height:240px;"></script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">tags</label>
<div class="layui-input-block">
<input type="text" name="tags" placeholder="请输入文章tag,英文逗号隔开" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">作者</label>
<div class="layui-input-block">
<input type="text" name="author" placeholder="请输入作者" value="<?php echo session('realname');?>" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">来源</label>
<div class="layui-input-block">
<input type="text" name="source" placeholder="请输入来源" value="本站" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">缩略图</label>
<div class="layui-input-inline">
<input type="text" name="ico" id="ico" placeholder="请上传缩略图" class="layui-input">
</div>
<button type="button" class="layui-btn upload watermark" data-des="ico">
<i class="layui-icon"></i>上传图片
</button>
<div id="ico_box" class="pic addedit"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">轮播多图</label>
<div class="layui-input-inline">
<input type="text" name="pics" id="pics" placeholder="请上传轮播多图" class="layui-input">
</div>
<button type="button" class="layui-btn uploads watermark" data-des="pics">
<i class="layui-icon"></i>上传多图
</button>
<div id="pics_box" class="pic addedit"><dl></dl> <!-- 规避空内容拖动bug --></div>
</div>
</div>
<div class="layui-tab-item ">
<div class="layui-form-item">
<label class="layui-form-label">内容副栏目</label>
<div class="layui-input-block">
<select name="subscode">
<option value="">请选择内容副栏目</option>
<?php echo $this->getVar('subsort_select');?>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">标题颜色</label>
<div class="layui-input-inline">
<input type="text" name="titlecolor" placeholder="请选择标题颜色" value="#333333" class="layui-input jscolor {hash:true}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">副标题</label>
<div class="layui-input-block">
<input type="text" name="subtitle" placeholder="请输入副标题" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">URL名称</label>
<div class="layui-input-block">
<input type="text" name="filename" placeholder="请输入URL名称,如:test,test/a/b" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">跳转外链接</label>
<div class="layui-input-block">
<input type="text" name="outlink" placeholder="请输入跳转外链接" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">参数</label>
<div class="layui-input-block">
<input type="checkbox" name="istop" value="1" title="置顶">
<input type="checkbox" name="isrecommend" value="1" title="推荐">
<input type="checkbox" name="isheadline" value="1" title="头条">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">浏览权限</label>
<div class="layui-input-block">
<select name="gid">
<option value="">不限制</option>
<?php $num = 0;foreach ($this->getVar('groups') as $key => $value) { $num++;?>
<option value="<?php echo $value->id; ?>"><?php echo $value->gname; ?></option>
<?php } ?>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限类型</label>
<div class="layui-input-block">
<select name="gtype" id="gtype" >
<option value="1">小于</option>
<option value="2">小于等于</option>
<option value="3">等于</option>
<option value="4" selected>大于等于</option>
<option value="5">大于</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限不足提示</label>
<div class="layui-input-block">
<input type="text" name="gnote" placeholder="请输入权限不足时提示文本" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">发布时间</label>
<div class="layui-input-inline">
<input type="text" name="date" value="<?php echo date('Y-m-d H:i:s');?>" readonly placeholder="请选择发布时间" class="layui-input datetime">
</div>
<div class="layui-form-mid layui-word-aux">温馨提示:设置未来时间可定时发布!</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">附件</label>
<div class="layui-input-inline">
<input type="text" name="enclosure" id="enclosure" placeholder="请上传附件" class="layui-input">
</div>
<button type="button" class="layui-btn file" data-des="enclosure">
<i class="layui-icon"></i>上传附件
</button>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SEO关键字</label>
<div class="layui-input-block">
<input type="text" name="keywords" placeholder="请输入详情页SEO关键字" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SEO描述</label>
<div class="layui-input-block">
<textarea name="description" placeholder="请输入详情页SEO描述" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示" checked>
<input type="radio" name="status" value="0" title="隐藏">
</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit>立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
</div>
</div>
<?php } ?>
<?php if ($this->getVar('mod')) {?>
<div class="layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this"><?php echo $this->getVar('model_name');?>内容修改</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<form action="<?php echo \core\basic\Url::get('/admin/Content/mod/id/'.get('id').'');?><?php echo $this->getVar('backurl');?>" method="post" class="layui-form" id="edit">
<input type="hidden" name="formcheck" value="<?php echo $this->getVar('formcheck');?>" >
<div class="layui-tab">
<ul class="layui-tab-title">
<li class="layui-this">基本内容</li>
<li>高级内容</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<div class="layui-form-item">
<label class="layui-form-label">内容栏目 <span class="layui-text-red">*</span></label>
<div class="layui-input-block">
<select name="scode" lay-verify="required">
<option value="">请选择内容栏目</option>
<?php echo $this->getVar('sort_select');?>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容标题 <span class="layui-text-red">*</span></label>
<div class="layui-input-block">
<input type="text" name="title" required lay-verify="required" value="<?php echo @$this->getVar('content')->title;?>" placeholder="请输入内容标题" class="layui-input">
</div>
</div>
<?php $num = 0;foreach ($this->getVar('extfield') as $key => $value) { $num++;?>
<?php if ($value->type==1) {?> <!-- 单行文本 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<input type="text" name="<?php echo $value->name; ?>" value="<?php echo @$this->getVar('content')->{$value->name};?>" placeholder="请输入<?php echo $value->description; ?>" class="layui-input">
</div>
</div>
<?php } ?>
<?php if ($value->type==2) {?><!-- 多行文本 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<textarea name="<?php echo $value->name; ?>" class="layui-textarea" placeholder="请输入<?php echo $value->description; ?>"><?php $name=$value->name;echo str_replace('<br>', "\r\n",$this->vars['content']->$name);?></textarea>
</div>
</div>
<?php } ?>
<?php if ($value->type==3) {?><!-- 单选 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<div>
<?php
$radios=explode(',',$value->value);
$name=$value->name;
foreach ($radios as $value2) {
if($this->vars['content']->$name==$value2){
echo '<input type="radio" name="'.$value->name.'" value="'.$value2.'" title="'.$value2.'" checked>';
}else{
echo '<input type="radio" name="'.$value->name.'" value="'.$value2.'" title="'.$value2.'">';
}
}
?>
</div>
</div>
</div>
<?php } ?>
<?php if ($value->type==4) {?><!-- 多选 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<div>
<?php
$checkboxs=explode(',',$value->value);
$name=$value->name;
echo '<input name="'.$value->name.'" type="hidden">';//占位清空
$values=explode(',',$this->vars['content']->$name);
foreach ($checkboxs as $value2) {
if(in_array($value2,$values)){
echo '<input type="checkbox" name="'.$value->name.'[]" value="'.$value2.'" title="'.$value2.'" checked>';
}else{
echo '<input type="checkbox" name="'.$value->name.'[]" value="'.$value2.'" title="'.$value2.'">';
}
}
?>
</div>
</div>
</div>
<?php } ?>
<?php if ($value->type==5) {?><!-- 图片 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-inline">
<input type="text" name="<?php echo $value->name; ?>" id="<?php echo $value->name; ?>" value="<?php echo @$this->getVar('content')->{$value->name};?>" placeholder="请上传<?php echo $value->description; ?>" class="layui-input">
</div>
<button type="button" class="layui-btn upload watermark" data-des="<?php echo $value->name; ?>">
<i class="layui-icon"></i>上传图片
</button>
<?php $name=$value->name; ?>
<div id="<?php echo $value->name; ?>_box" class="pic"><dl><dt><?php if ($this->getVar('content')->$name) {?><img src='<?php echo SITE_DIR;?><?php echo @$this->getVar('content')->{$value->name};?>' data-url="<?php echo @$this->getVar('content')->{$value->name};?>"></dt><dd>删除</dd></dl><?php } ?></div>
</div>
<?php } ?>
<?php if ($value->type==10) {?><!-- 多图 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-inline">
<input type="text" name="<?php echo $value->name; ?>" id="<?php echo $value->name; ?>" value="<?php echo @$this->getVar('content')->{$value->name};?>" placeholder="请上传<?php echo $value->description; ?>" class="layui-input">
</div>
<button type="button" class="layui-btn uploads watermark" data-des="<?php echo $value->name; ?>">
<i class="layui-icon"></i>上传多图
</button>
<div id="<?php echo $value->name; ?>_box" class="pic addedit">
<dl></dl> <!-- 规避空内容拖动bug -->
<?php
$name=$value->name;
if($this->getVar('content')->$name){
$pics=explode(',',$this->getVar('content')->$name);
}else{
$pics = array();
}
foreach ($pics as $key=>$value) {
//需要留一个空,不然被解析为标签了
echo "<dl><dt><img src='".SITE_DIR.$value."' data-url='".$value."'></dt><dd>删除</dd></dl>";
}
?>
</div>
</div>
<?php } ?>
<?php if ($value->type==6) {?><!-- 文件 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-inline">
<input type="text" name="<?php echo $value->name; ?>" id="<?php echo $value->name; ?>" value="<?php echo @$this->getVar('content')->{$value->name};?>" placeholder="请上传<?php echo $value->description; ?>" class="layui-input">
</div>
<button type="button" class="layui-btn file" data-des="<?php echo $value->name; ?>">
<i class="layui-icon"></i>上传文件
</button>
</div>
<?php } ?>
<?php if ($value->type==7) {?><!-- 日期 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<input type="text" name="<?php echo $value->name; ?>" value="<?php echo @$this->getVar('content')->{$value->name};?>" readonly placeholder="请选择<?php echo $value->description; ?>" class="layui-input datetime">
</div>
</div>
<?php } ?>
<?php if ($value->type==8) {?><!-- 编辑器 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<?php
$name=@$value->name;
?>
<script type="text/plain" id="editor_<?php echo $value->name; ?>" name="<?php echo $value->name; ?>" style="width:100%;height:240px;"><?php echo decode_string($this->getVar('content')->$name);?></script>
<script>
//初始化编辑器
$(document).ready(function (e) {
var ue = UE.getEditor('editor_<?php echo $value->name; ?>',{
maximumWords:10000
});
})
</script>
</div>
</div>
<?php } ?>
<?php if ($value->type==9) {?><!-- 下拉 -->
<div class="layui-form-item">
<label class="layui-form-label"><?php echo $value->description; ?></label>
<div class="layui-input-block">
<select name="<?php echo $value->name; ?>">
<?php
$selects=explode(',',$value->value);
$name=$value->name;
foreach ($selects as $value2) {
if($this->vars['content']->$name==$value2){
echo '<option value="'.$value2.'" selected>'.$value2.'</option>';
}else{
echo '<option value="'.$value2.'">'.$value2.'</option>';
}
}
?>
</select>
</div>
</div>
<?php } ?>
<?php } ?>
<div class="layui-form-item">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<script type="text/plain" id="editor" name="content" style="width:100%;height:240px;"><?php echo decode_string($this->getVar('content')->content);?></script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">tags</label>
<div class="layui-input-block">
<input type="text" name="tags" placeholder="请输入文章tag,英文逗号隔开" value="<?php echo @$this->getVar('content')->tags;?>" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">作者</label>
<div class="layui-input-block">
<input type="text" name="author" placeholder="请输入作者" value="<?php echo @$this->getVar('content')->author;?>" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">来源</label>
<div class="layui-input-block">
<input type="text" name="source" placeholder="请输入来源" value="<?php echo @$this->getVar('content')->source;?>" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">缩略图</label>
<div class="layui-input-inline">
<input type="text" name="ico" id="ico" value="<?php echo @$this->getVar('content')->ico;?>" placeholder="请上传缩略图" class="layui-input">
</div>
<button type="button" class="layui-btn upload watermark" data-des="ico">
<i class="layui-icon"></i>上传图片
</button>
<div id="ico_box" class="pic addedit"><?php if ($this->getVar('content')->ico) {?><dl><dt><img src="<?php echo SITE_DIR;?><?php echo @$this->getVar('content')->ico;?>" data-url="<?php echo @$this->getVar('content')->ico;?>"></dt><dd>删除</dd></dl><?php } ?></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">轮播多图</label>
<div class="layui-input-inline">
<input type="text" name="pics" id="pics" value="<?php echo @$this->getVar('content')->pics;?>" placeholder="请上传轮播多图" class="layui-input">
</div>
<button type="button" class="layui-btn uploads watermark" data-des="pics">
<i class="layui-icon"></i>上传多图
</button>
<div id="pics_box" class="pic addedit">
<dl></dl> <!-- 规避空内容拖动bug -->
<?php
if($this->getVar('content')->pics){
$pics=explode(',',$this->getVar('content')->pics);
}else{
$pics = array();
}
if($this->getVar('content')->picstitle){
$picstitle=explode(',',$this->getVar('content')->picstitle);
}else{
$picstitle = array();
}
foreach ($pics as $key=>$value) {
//需要留一个空,不然被解析为标签了
echo "<dl><dt><img src='".SITE_DIR.$value."' data-url='".$value."'></dt><dd>删除</dd><dt><input type='text' value='".$picstitle[$key ]."' name='picstitle[]' style='width:95%' /></dt></dl>";
}
?>
</div>
</div>
</div>
<div class="layui-tab-item ">
<div class="layui-form-item">
<label class="layui-form-label">内容副栏目</label>
<div class="layui-input-block">
<select name="subscode">
<option value="">请选择内容副栏目</option>
<?php echo $this->getVar('subsort_select');?>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">标题颜色</label>
<div class="layui-input-inline">
<input type="text" name="titlecolor" value="<?php echo @$this->getVar('content')->titlecolor;?>" placeholder="请选择标题颜色" class="layui-input jscolor {hash:true}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">副标题</label>
<div class="layui-input-block">
<input type="text" name="subtitle" value="<?php echo @$this->getVar('content')->subtitle;?>" placeholder="请输入副标题" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">URL名称</label>
<div class="layui-input-block">
<input type="text" name="filename" value="<?php echo @$this->getVar('content')->filename;?>" placeholder="请输入URL名称,如:test,test/a/b" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">跳转外链接</label>
<div class="layui-input-block">
<input type="text" name="outlink" value="<?php echo @$this->getVar('content')->outlink;?>" placeholder="请输入跳转外链接" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="checkbox" name="istop" value="1" title="置顶" <?php if ($this->getVar('content')->istop==1) {?>checked<?php } ?>>
<input type="checkbox" name="isrecommend" value="1" title="推荐" <?php if ($this->getVar('content')->isrecommend==1) {?>checked<?php } ?>>
<input type="checkbox" name="isheadline" value="1" title="头条" <?php if ($this->getVar('content')->isheadline==1) {?>checked<?php } ?>>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">浏览权限</label>
<div class="layui-input-block">
<select name="gid">
<option value="">不限制</option>
<?php $num = 0;foreach ($this->getVar('groups') as $key => $value) { $num++;?>
<option value="<?php echo $value->id; ?>" <?php if ($this->getVar('content')->gid==$value->id) {?>selected="selected"<?php } ?>><?php echo $value->gname; ?></option>
<?php } ?>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限类型</label>
<div class="layui-input-block">
<select name="gtype" id="gtype" >
<option value="1" <?php if ($this->getVar('content')->gtype==1) {?>selected="selected"<?php } ?>>小于</option>
<option value="2" <?php if ($this->getVar('content')->gtype==2) {?>selected="selected"<?php } ?>>小于等于</option>
<option value="3" <?php if ($this->getVar('content')->gtype==3) {?>selected="selected"<?php } ?>>等于</option>
<option value="4" <?php if ($this->getVar('content')->gtype==4||(!$this->getVar('sort')->gtype)) {?>selected="selected"<?php } ?>>大于等于</option>
<option value="5" <?php if ($this->getVar('content')->gtype==5) {?>selected="selected"<?php } ?>>大于</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限不足提示</label>
<div class="layui-input-block">
<input type="text" name="gnote" value="<?php echo @$this->getVar('content')->gnote;?>" placeholder="请输入权限不足时提示文本" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">发布时间</label>
<div class="layui-input-inline">
<input type="text" name="date" value="<?php echo @$this->getVar('content')->date;?>" readonly placeholder="请选择发布时间" class="layui-input datetime">
</div>
<div class="layui-form-mid layui-word-aux">温馨提示:设置未来时间可定时发布!</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">附件</label>
<div class="layui-input-inline">
<input type="text" name="enclosure" id="enclosure" value="<?php echo @$this->getVar('content')->enclosure;?>" placeholder="请上传附件" class="layui-input">
</div>
<button type="button" class="layui-btn file" data-des="enclosure">
<i class="layui-icon"></i>上传附件
</button>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SEO关键字</label>
<div class="layui-input-block">
<input type="text" name="keywords" value="<?php echo @$this->getVar('content')->keywords;?>" placeholder="请输入详情页SEO关键字" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SEO描述</label>
<div class="layui-input-block">
<textarea name="description" placeholder="请输入详情页SEO描述" class="layui-textarea"><?php echo @$this->getVar('content')->description;?></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示" <?php if ($this->getVar('content')->status==1) {?> checked="checked"<?php } ?>>
<input type="radio" name="status" value="0" title="隐藏" <?php if ($this->getVar('content')->status==0) {?> checked="checked"<?php } ?>>
</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit>立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
<?php echo get_btn_back();?>
</div>
</div>
</form>
</div>
</div>
</div>
<?php } ?>
</div>
<style>.placeHolder {border:dashed 2px gray; }</style>
<script type="text/javascript" src="<?php echo APP_THEME_DIR;?>/js/jquery.dragsort-0.5.2.min.js"></script>
<script type="text/javascript">
$("#pics_box").dragsort({
dragSelector: "dl",
dragSelectorExclude: "input,textarea,dd",
dragBetween: false,
dragEnd: saveOrder,
placeHolderTemplate: "<dl class='placeHolder'><dt></dt></dl>"
});
function saveOrder() {
var data = $("#pics_box dl dt img").map(function() {
return $(this).data("url");
}).get();
$("input[name=pics]").val(data.join(","))
};
</script>
<script type="text/javascript" src="<?php echo APP_THEME_DIR;?>/js/jscolor.js"></script>
<!-- 引入编辑器文件 -->
<script type="text/javascript" charset="utf-8" src="<?php echo CORE_DIR;?>/extend/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="<?php echo CORE_DIR;?>/extend/ueditor/ueditor.all.min.js"> </script>
<script type="text/javascript" charset="utf-8" src="<?php echo CORE_DIR;?>/extend/ueditor/lang/zh-cn/zh-cn.js"></script>
<script>
//初始化编辑器
$(document).ready(function (e) {
var ue = UE.getEditor('editor', {
maximumWords: 30000,
pasteFilter: false,
autoFormat: false,
enableAutoFormat: false,
autoTransWord: false
});
})
</script>
<script type="text/javascript">
<!-- 解决源码模式无法保存 -->
function editor_init() {
$('#edit').submit(function () {
editor=UE.getEditor('editor');
if(editor.queryCommandState('source')==1) editor.execCommand('source');
})
}
<!-- 点击后添加到编辑器 -->
$(".addedit").on("click",'img',function(){
editor=UE.getEditor('editor');
$img = $(this).attr("src");
editor.execCommand('inserthtml',"<img src='"+$img+"'>");
});
</script>
<script type="text/javascript">editor_init();</script>
<?php if ($this->getVar('mod')||$this->getVar('list')) {?>
<!-- AI 写作助手浮动按钮 + 弹窗(配置启用且为编辑/新增页时输出) -->
<?php if ($this->getVar('ai_enabled')==1 && $this->getVar('ai_show_assistant')) {?>
<style>
.ai-fab{position:fixed;right:30px;bottom:30px;width:54px;height:54px;border-radius:50%;
background:linear-gradient(135deg,#1E9FFF 0%,#5FB878 100%);color:#fff;text-align:center;
line-height:54px;cursor:pointer;z-index:9999;box-shadow:0 4px 12px rgba(0,0,0,.2);
font-size:14px;font-weight:bold;user-select:none;transition:transform .2s;}
.ai-fab:hover{transform:scale(1.08);}
.ai-panel{padding:18px 20px;font-size:14px;}
.ai-panel .ai-tabs{display:flex;border-bottom:1px solid #e6e6e6;margin-bottom:14px;}
.ai-panel .ai-tabs span{padding:6px 14px;cursor:pointer;color:#666;border-bottom:2px solid transparent;}
.ai-panel .ai-tabs span.on{color:#1E9FFF;border-bottom-color:#1E9FFF;font-weight:bold;}
.ai-panel .ai-pane{display:none;}
.ai-panel .ai-pane.on{display:block;}
.ai-panel textarea,.ai-panel input[type=text]{width:100%;box-sizing:border-box;border:1px solid #e6e6e6;
border-radius:2px;padding:6px 10px;font-size:13px;line-height:1.6;}
.ai-panel textarea{min-height:120px;resize:vertical;}
.ai-panel .ai-row{margin-bottom:10px;}
.ai-panel .ai-row label{color:#888;display:block;margin-bottom:4px;}
.ai-panel .ai-actions{margin-top:10px;}
.ai-panel .ai-actions .layui-btn{margin-right:6px;}
.ai-panel .ai-result{background:#f7f7f7;padding:10px;border-radius:2px;max-height:180px;
overflow:auto;font-size:13px;line-height:1.7;color:#333;border:1px solid #eee;}
.ai-panel .ai-tip{color:#999;font-size:12px;margin-top:6px;}
.ai-panel .ai-loading{color:#1E9FFF;font-size:12px;display:none;margin-top:6px;}
</style>
<div class="ai-fab" id="aiFab" title="AI 写作助手" data-ai-mode="<?php echo $this->getVar('ai_show_assistant');?>">AI</div>
<script id="aiPanelTpl" type="text/html">
<div class="ai-panel">
<div class="ai-tabs">
<span class="on" data-pane="gen">生成全文</span>
<span data-pane="rw">续写/改写/缩写/润色</span>
<span data-pane="tdk">生成TDK</span>
</div>
<div class="ai-loading" id="aiLoading">AI 正在思考,请稍候...</div>
<div class="ai-pane on" data-pane="gen">
<div class="ai-row">
<label>文章标题(基于编辑器外标题输入框自动同步)</label>
<input type="text" id="aiGenTitle" placeholder="请输入文章标题">
</div>
<div class="ai-actions">
<button class="layui-btn layui-btn-sm" id="aiBtnGen">生成全文</button>
<button class="layui-btn layui-btn-sm layui-btn-primary" id="aiBtnInsertGen" disabled>插入到编辑器</button>
</div>
<div class="ai-tip">将以 HTML 段落形式插入到光标位置;如需替换原内容请先在编辑器中手动清空。</div>
<div class="ai-row" style="margin-top:10px;">
<label>生成结果预览</label>
<div class="ai-result" id="aiGenResult">(暂无内容)</div>
</div>
</div>
<div class="ai-pane" data-pane="rw">
<div class="ai-row">
<label>处理方式</label>
<select id="aiRwMode" class="layui-input" style="width:160px;display:inline-block;">
<option value="continue">续写</option>
<option value="rewrite">改写</option>
<option value="shorten">缩写</option>
<option value="polish">润色</option>
</select>
<button class="layui-btn layui-btn-sm layui-btn-normal" id="aiBtnLoadSel" style="margin-left:6px;">读取编辑器选中文本</button>
</div>
<div class="ai-row">
<label>待处理文本</label>
<textarea id="aiRwInput" placeholder="可手动粘贴,或点击上方按钮读取编辑器中的选中文本"></textarea>
</div>
<div class="ai-actions">
<button class="layui-btn layui-btn-sm" id="aiBtnRw">执行</button>
<button class="layui-btn layui-btn-sm layui-btn-primary" id="aiBtnInsertRw" disabled>插入到编辑器</button>
</div>
<div class="ai-tip" id="aiRwTip">续写将追加到选中内容之后,不会替换原文;改写/缩写/润色将替换当前选区。</div>
<div class="ai-row" style="margin-top:10px;">
<label>处理结果预览</label>
<div class="ai-result" id="aiRwResult">(暂无内容)</div>
</div>
</div>
<div class="ai-pane" data-pane="tdk">
<div class="ai-tip">将基于当前文章标题与编辑器正文一键生成 SEO 三要素,并自动填入下方字段。</div>
<div class="ai-actions" style="margin-top:8px;">
<button class="layui-btn layui-btn-sm" id="aiBtnTdk">一键生成TDK</button>
</div>
<div class="ai-row" style="margin-top:10px;">
<label>SEO Title(自动填入「标题」输入框)</label>
<input type="text" id="aiTdkTitle" readonly>
</div>
<div class="ai-row">
<label>SEO Description(自动填入「内容描述」)</label>
<textarea id="aiTdkDesc" readonly style="min-height:60px;"></textarea>
</div>
<div class="ai-row">
<label>SEO Keywords(自动填入「关键字」)</label>
<input type="text" id="aiTdkKw" readonly>
</div>
</div>
</div>
</script>
<script>
(function(){
var FORMCHECK = '<?php echo $this->getVar('formcheck');?>';
var URL_GEN = '<?php echo \core\basic\Url::get('/admin/Ai/generate');?>';
var URL_RW = '<?php echo \core\basic\Url::get('/admin/Ai/rewrite');?>';
var URL_TDK = '<?php echo \core\basic\Url::get('/admin/Ai/tdk');?>';
var URL_ALT = '<?php echo \core\basic\Url::get('/admin/Ai/alt');?>';
var lastGen = '', lastRw = '';
var lastRwMode = '';
var cachedUeSelection = '';
var cachedUeRange = null;
function ueRangeToPlainText(range, doc) {
if (!range || range.collapsed) return '';
try {
var frag = range.cloneContents();
var div = (doc || document).createElement('div');
div.appendChild(frag);
return (div.textContent || div.innerText || '').trim();
} catch (e) {
return '';
}
}
function ueGet(){ try{ return UE.getEditor('editor'); }catch(e){ return null; } }
function ueGetSelectionText() {
var ue = ueGet();
if (!ue) return '';
if (ue.queryCommandState('source')===1){
return -1;
}
// 有焦点时优先用官方 API
try {
var t = ue.selection.getText();
if (t) return t;
} catch (e) {}
// 失焦:getRange() 会使用 _bakRange
try {
var range = ue.selection.getRange();
var fromRange = ueRangeToPlainText(range, ue.document);
if (fromRange) return fromRange;
} catch (e) {}
// 再尝试编辑器实例上的备份(部分浏览器 blur 逻辑)
try {
if (ue._bakRange) {
var fromBak = ueRangeToPlainText(ue._bakRange, ue.document);
if (fromBak) return fromBak;
}
} catch (e) {}
return cachedUeSelection || '';
}
function ueInsertHtml(html){
var ue = ueGet();
if(!ue){ layer.msg('编辑器未就绪'); return; }
if (ue.queryCommandState('source') === 1) {
layer.msg('请先切回富文本框可视化模式!');
return;
}
ue.focus();
ue.execCommand('inserthtml', html, true);
}
/** 续写:将内容追加到选区末尾,保留原文 */
function ueInsertContinueHtml(html) {
var ue = ueGet();
if (!ue) { layer.msg('编辑器未就绪'); return; }
if (ue.queryCommandState('source') === 1) {
layer.msg('请先切回富文本框可视化模式!');
return;
}
ue.focus();
try {
var range = cachedUeRange || ue._bakRange;
if (range) {
if (typeof range.cloneRange === 'function') {
range = range.cloneRange();
}
range.select();
range.collapse(false);
range.select();
}
ue.execCommand('inserthtml', html, true);
} catch (e) {
ue.execCommand('inserthtml', html, true);
}
}
function syncRwModeUi($box) {
if (!$box || !$box.length) return;
var mode = $box.find('#aiRwMode').val();
var $tip = $box.find('#aiRwTip');
var $btn = $box.find('#aiBtnInsertRw');
if (mode === 'continue') {
$tip.text('续写将追加到选中内容之后,不会替换原文。建议先选中段落并点击「读取编辑器选中文本」。');
$btn.text('追加到选中内容后');
} else {
$tip.text('改写/缩写/润色将用生成结果替换当前选区;无选区时插入到光标位置。');
$btn.text('插入到编辑器');
}
}
/** 启用/禁用「插入到编辑器」按钮(Layui 需同步 layui-btn-disabled) */
function setInsertBtnState($btn, enabled){
if(!$btn || !$btn.length) return;
$btn.prop('disabled', !enabled);
if(enabled){
$btn.removeClass('layui-btn-disabled');
}else{
$btn.addClass('layui-btn-disabled');
}
}
function ueGetContentText(){
var ue = ueGet();
if(!ue) return '';
try{ return ue.getContentTxt() || ''; }catch(e){ return ''; }
}
function getPageTitle(){
var $t = $('input[name=title]');
return $t.length ? ($t.val() || '') : '';
}
function aiCall(url, payload, cb){
payload.formcheck = FORMCHECK;
$('#aiLoading').show();
$.ajax({
url: url, type:'POST', data: payload, dataType:'json',
timeout: 90000,
success: function(r){
$('#aiLoading').hide();
if(r && r.code === 1){ cb(r.data); }
else{ layer.msg((r && r.msg) ? r.msg : (r && r.data ? r.data : '请求失败')); }
},
error: function(xhr, st){
$('#aiLoading').hide();
layer.msg('请求失败:' + (st || '未知错误'));
}
});
}
function cacheUeSelection() {
cachedUeSelection = '';
var ue = ueGet();
if (!ue) return;
try {
var t = ue.selection.getText();
if (t) { cachedUeSelection = t; return; }
var range = ue.selection.getRange();
cachedUeSelection = ueRangeToPlainText(range, ue.document);
} catch (e) {}
}
function cacheUeRange() {
cachedUeRange = null;
var ue = ueGet();
if (!ue) return;
try {
var range = ue.selection.getRange();
if ((!range || range.collapsed) && ue._bakRange) {
range = ue._bakRange;
}
if (range && !range.collapsed) {
cachedUeRange = typeof range.cloneRange === 'function' ? range.cloneRange() : range;
}
} catch (e) {}
}
// 弹出 AI 面板
function openAiPanel(){
layer.open({
type: 1,
title: 'AI 写作助手',
area: ['680px','580px'],
shade: 0.3,
content: $('#aiPanelTpl').html(),
success: function(layero){
var $box = layero;
// 同步标题
$box.find('#aiGenTitle').val(getPageTitle());
// tab 切换
$box.find('.ai-tabs span').on('click', function(){
var pane = $(this).data('pane');
$box.find('.ai-tabs span').removeClass('on');
$(this).addClass('on');
$box.find('.ai-pane').removeClass('on');
$box.find('.ai-pane[data-pane='+pane+']').addClass('on');
});
// 生成全文
$box.find('#aiBtnGen').on('click', function(){
var t = $.trim($box.find('#aiGenTitle').val());
if(!t){ layer.msg('请输入标题'); return; }
var ue = ueGet();
if (!ue) return '';
if (ue.queryCommandState('source')===1){
layer.msg('请先切回富文本框可视化模式!');
return -1;
}
aiCall(URL_GEN, {title:t}, function(d){
lastGen = d.content || '';
$box.find('#aiGenResult').html(lastGen || '(无返回)');
setInsertBtnState($box.find('#aiBtnInsertGen'), !!lastGen);
});
});
$box.find('#aiBtnInsertGen').on('click', function(){
if(!lastGen || $(this).prop('disabled')){ return; }
ueInsertHtml(lastGen);
layer.msg('已插入');
setInsertBtnState($box.find('#aiBtnInsertGen'), false);
});
// 续写/改写/缩写/润色:读取选中文本
syncRwModeUi($box);
$box.find('#aiRwMode').on('change', function(){
cachedUeRange = null;
syncRwModeUi($box);
});
$box.find('#aiBtnLoadSel').on('click', function(){
var sel = ueGetSelectionText();
if(!sel){ layer.msg('编辑器中没有选中文本'); return; }
else if(sel<0){ layer.msg('请先切回富文本框可视化模式!'); return; }
cacheUeRange();
$box.find('#aiRwInput').val(sel);
});
$box.find('#aiBtnRw').on('click', function(){
var text = $.trim($box.find('#aiRwInput').val());
var mode = $box.find('#aiRwMode').val();
if(!text){ layer.msg('请先填写或读取文本'); return; }
lastRwMode = mode;
cacheUeRange();
aiCall(URL_RW, {text:text, mode:mode}, function(d){
lastRw = d.content || '';
lastRwMode = mode;
$box.find('#aiRwResult').html(lastRw || '(无返回)');
setInsertBtnState($box.find('#aiBtnInsertRw'), !!lastRw);
syncRwModeUi($box);
});
});
$box.find('#aiBtnInsertRw').on('click', function(){
if(!lastRw || $(this).prop('disabled')){ return; }
if (lastRwMode === 'continue') {
ueInsertContinueHtml(lastRw);
layer.msg('已追加到选中内容之后');
} else {
ueInsertHtml(lastRw);
layer.msg('已插入');
}
setInsertBtnState($box.find('#aiBtnInsertRw'), false);
});
// TDK
$box.find('#aiBtnTdk').on('click', function(){
var t = getPageTitle();
var c = ueGetContentText();
if(!t && !c){ layer.msg('请先填写标题或正文'); return; }
aiCall(URL_TDK, {title:t, content:c}, function(d){
$box.find('#aiTdkTitle').val(d.title || '');
$box.find('#aiTdkDesc').val(d.description || '');
$box.find('#aiTdkKw').val(d.keywords || '');
// 自动回填到主表单
if(d.title){ $('input[name=title]').val(d.title); }
if(d.description){ $('textarea[name=description], input[name=description]').val(d.description); }
if(d.keywords){ $('input[name=keywords], textarea[name=keywords]').val(d.keywords); }
layer.msg('已生成并填入对应字段');
});
});
}
});
}
$(document).on('click', '#aiFab', function () {
cacheUeSelection();
cacheUeRange();
openAiPanel();
});
// UEditor 本地上传会把 alt 填成原文件名,不能据此跳过 AI
function isFilenameLikeAlt(alt){
if(alt === undefined || alt === null) return true;
alt = String(alt).trim();
if(!alt) return true;
return /^[^\\\/:*?"<>|]+\.(jpe?g|png|gif|webp|bmp|svg|ico)$/i.test(alt);
}
// 图片 Alt 自动生成:插入后异步请求,避免阻塞编辑器
function normalizeImgSrc(src){
if(!src) return '';
return String(src).split('?')[0];
}
function updateImgAltInEditor(ue, src, alt){
if(!ue || !src || !alt) return;
var key = normalizeImgSrc(src);
var doc = ue.document;
if(!doc) return;
var imgs = doc.getElementsByTagName('img');
for(var i = 0; i < imgs.length; i++){
var node = imgs[i];
var s = node.getAttribute('src') || node.getAttribute('_src') || '';
if(normalizeImgSrc(s) !== key) continue;
if(!isFilenameLikeAlt(node.getAttribute('alt'))) continue;
node.setAttribute('alt', alt);
}
}
function requestAiAlt(src, cb){
var ctx = ueGetContentText();
if(ctx.length > 1500) ctx = ctx.substring(0, 1500);
$.ajax({
url: URL_ALT, type:'POST', async:true,
data:{
image_src: src,
title: getPageTitle(),
content: ctx,
formcheck: FORMCHECK
},
dataType:'json', timeout:90000,
success: function(r){
if(r && r.code===1 && r.data && r.data.alt){
cb(null, r.data.alt);
}else{
cb((r && r.msg) ? r.msg : 'Alt 生成失败');
}
},
error: function(xhr, st){
cb('请求失败:' + (st || '网络错误'));
}
});
}
function showAltMsg(msg){
if(typeof layer !== 'undefined' && layer.msg){
layer.msg(msg, {time: 3000});
}else{
console.warn('[AI] ' + msg);
}
}
var ueAltBound = false;
function bindUeAltListener(){
var ue = ueGet();
if(!ue || ueAltBound){ return !!ue; }
ue.ready(function(){
if(ueAltBound) return;
ueAltBound = true;
ue.addListener('afterinsertimage', function(t, args){
if(!args || !args.length) return;
args.forEach(function(img){
if(!isFilenameLikeAlt(img.alt)) return;
var src = img.src || img._src || '';
if(!src) return;
requestAiAlt(src, function(err, alt){
if(err){
showAltMsg(err);
return;
}
updateImgAltInEditor(ue, src, alt);
});
});
});
});
return true;
}
// 等待 UEditor 初始化完成
var tryNum = 0, timer = setInterval(function(){
tryNum++;
if(bindUeAltListener() || tryNum > 30){
clearInterval(timer);
}
}, 500);
})();
// 内容列表+新增同页(data-ai-mode=tabbed):随 Tab 列表 t1 / 新增 t2 显示或隐藏(layui 在 foot 才加载,须延后绑定)
(function(){
var fab = document.getElementById('aiFab');
if(!fab || fab.getAttribute('data-ai-mode') !== 'tabbed') return;
var ADD_TAB_ID = 't2';
var TAB_SEL = '.layui-body > .layui-tab[lay-filter="tab"]';
var eventsBound = false;
function isAddTabActive(){
var hash = (location.hash || '').replace(/^#tab=/, '');
if(hash === ADD_TAB_ID) return true;
var wrap = document.querySelector(TAB_SEL);
if(!wrap) return false;
var active = wrap.querySelector('.layui-tab-title li.layui-this');
return active && active.getAttribute('lay-id') === ADD_TAB_ID;
}
function syncFabVisibility(){
fab.style.display = isAddTabActive() ? '' : 'none';
}
function bindTabEvents(){
if(eventsBound) return;
eventsBound = true;
window.addEventListener('hashchange', syncFabVisibility);
document.addEventListener('pbootcms-tab-change', syncFabVisibility);
if(typeof jQuery !== 'undefined'){
jQuery(document).on('click', TAB_SEL + ' > .layui-tab-title li', function(){
setTimeout(syncFabVisibility, 0);
});
}
if(typeof layui !== 'undefined'){
layui.use('element', function(){
layui.element.on('tab(tab)', function(){
setTimeout(syncFabVisibility, 0);
});
syncFabVisibility();
});
}
}
function initAfterLayui(){
bindTabEvents();
syncFabVisibility();
setTimeout(syncFabVisibility, 50);
}
syncFabVisibility();
if(document.readyState === 'complete'){
initAfterLayui();
}else{
window.addEventListener('load', initAfterLayui);
}
})();
</script>
<?php } ?>
<?php } ?>
<input type="hidden" id="do_check" data-url="<?php echo \core\basic\Url::get('/admin/Upgrade/check');?>">
<input type="hidden" id="do_down" data-url="<?php echo \core\basic\Url::get('/admin/Upgrade/down');?>">
<input type="hidden" id="do_update" data-url="<?php echo \core\basic\Url::get('/admin/Upgrade/update');?>">
<input type="hidden" id="check_version" data-url="/index.php?p=upgrade/check&version=<?php echo APP_VERSION;?>.<?php echo RELEASE_TIME;?>.<?php echo $this->getVar('revise');?>&branch=<?php echo $this->getVar('branch');?>&snuser=<?php echo $this->getVar('snuser');?>&site=<?php echo $this->getVar('site');?>">
<input type="hidden" id="check_cache" data-url="<?php echo \core\basic\Url::get('/admin/Upgrade/checkCache');?>">
</div>
<script type="text/javascript" src="<?php echo APP_THEME_DIR;?>/layui/layui.all.js?v=v2.5.4"></script>
<script type="text/javascript" src="<?php echo APP_THEME_DIR;?>/js/comm.js?v=v3.1.1"></script>
<script type="text/javascript" src="<?php echo APP_THEME_DIR;?>/js/mylayui.js?v=v3.1.0"></script>
<!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</body>
</html>
<?php return array (
0 => '/www/data/wwwroot/2026_08_09_01/apps/admin/view/default/common/head.html',
1 => '/www/data/wwwroot/2026_08_09_01/apps/admin/view/default/common/ueditor.html',
2 => '/www/data/wwwroot/2026_08_09_01/apps/admin/view/default/common/ai_assistant.html',
3 => '/www/data/wwwroot/2026_08_09_01/apps/admin/view/default/common/foot.html',
); ?>