thinkphp版本升级至6.0

This commit is contained in:
2019-05-01 21:51:03 +08:00
parent 6cef5d9116
commit 5c31e8e612
1000 changed files with 970 additions and 182026 deletions
+1
View File
@@ -0,0 +1 @@
APP_DEBUG = true
+5 -6
View File
@@ -1,7 +1,6 @@
.idea /.idea
composer.lock /.vscode
/vendor
*.log *.log
framework thinkphp
application/database.php .env
application/install.lock
application/upload.lock
+42
View File
@@ -0,0 +1,42 @@
sudo: false
language: php
branches:
only:
- stable
cache:
directories:
- $HOME/.composer/cache
before_install:
- composer self-update
install:
- composer install --no-dev --no-interaction --ignore-platform-reqs
- zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Core.zip .
- composer require --update-no-dev --no-interaction "topthink/think-image:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-migration:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-captcha:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-mongo:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-worker:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-helper:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-queue:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-angular:^1.0"
- composer require --dev --update-no-dev --no-interaction "topthink/think-testing:^1.0"
- zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Full.zip .
script:
- php think unit
deploy:
provider: releases
api_key:
secure: TSF6bnl2JYN72UQOORAJYL+CqIryP2gHVKt6grfveQ7d9rleAEoxlq6PWxbvTI4jZ5nrPpUcBUpWIJHNgVcs+bzLFtyh5THaLqm39uCgBbrW7M8rI26L8sBh/6nsdtGgdeQrO/cLu31QoTzbwuz1WfAVoCdCkOSZeXyT/CclH99qV6RYyQYqaD2wpRjrhA5O4fSsEkiPVuk0GaOogFlrQHx+C+lHnf6pa1KxEoN1A0UxxVfGX6K4y5g4WQDO5zT4bLeubkWOXK0G51XSvACDOZVIyLdjApaOFTwamPcD3S1tfvuxRWWvsCD5ljFvb2kSmx5BIBNwN80MzuBmrGIC27XLGOxyMerwKxB6DskNUO9PflKHDPI61DRq0FTy1fv70SFMSiAtUv9aJRT41NQh9iJJ0vC8dl+xcxrWIjU1GG6+l/ZcRqVx9V1VuGQsLKndGhja7SQ+X1slHl76fRq223sMOql7MFCd0vvvxVQ2V39CcFKao/LB1aPH3VhODDEyxwx6aXoTznvC/QPepgWsHOWQzKj9ftsgDbsNiyFlXL4cu8DWUty6rQy8zT2b4O8b1xjcwSUCsy+auEjBamzQkMJFNlZAIUrukL/NbUhQU37TAbwsFyz7X0E/u/VMle/nBCNAzgkMwAUjiHM6FqrKKBRWFbPrSIixjfjkCnrMEPw=
file:
- ThinkPHP_Core.zip
- ThinkPHP_Full.zip
skip_cleanup: true
on:
tags: true
+1 -1
View File
@@ -1,6 +1,6 @@
ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 ThinkPHP遵循Apache2开源协议发布,并提供免费使用。
版权所有Copyright © 2006-2017 by ThinkPHP (http://thinkphp.cn) 版权所有Copyright © 2006-2016 by ThinkPHP (http://thinkphp.cn)
All rights reserved。 All rights reserved。
ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
+25 -75
View File
@@ -1,84 +1,34 @@
## SentCMS介绍 ThinkPHP 6.0
> SentCMS网站管理系统是南昌腾速科技有限公司倾力打造的一款简单易用的网站管理系统,SentCMS网站管理系统(下文简称SentCMS)继承了thinkphp5.0的优秀品质,秉承“大道至简”的设计理念。SnetCMS为网站建设而生,为网站建设减少90%的代码编写,只需前端设计师就可以设计出完美的网站,而如此完美的系统还是完全开源的。 ===============
## 环境要求 > 运行环境要求PHP7.1+。
生产环境建议Linux+Nginx+php+mysql
建议PHP7+
## 安装 ## 安装
为了保证系统的安全性,系统根目录移至web目录下,把程序和逻辑代码放到根目录以外。在配置网站时,把网站根目录指向web目录下,然后通过composer把所需的扩展类库更新,包括thinkphp框架同样通过composer进行更新。
访问网址:http://网址/install
> 系统必须开启伪静态、
> 系统必须开启伪静态、
> 系统必须开启伪静态、
>(重要的事情说三篇)
## 交流讨论
> 点击链接加入群【SentCMS交流群】:http://jq.qq.com/?_wv=1027&k=2DXSKpe
## SentCMS特性包括:
* 全新的路由体系,完美的路由解决方案
* 全新的系统架构,采用thinkphp5.0内核框架
* 完善而健全的会员体系
* 健全的权限系统,权限细化到界面上的按钮和链接
* 漂亮的后台界面,后台界面采用世界领先的前端框架bootstrap,自适应的体验
* 简单易用的标签体系
* 便捷的文档系统,无需程序即可设计出完美的模型,做出完美的网站,传送门:http://www.kancloud.cn/tensent/sentcms3/169624
下载最新版框架后,解压缩到web目录下面,可以看到初始的目录结构如下:
## 目录结构
~~~ ~~~
├─addons 扩展插件目录 composer create-project topthink/think tp 6.0.*-dev
├─application 项目目录文件
│ ├─admin 网站后台模型
│ │ ├─controller
│ │ ├─static
│ │ ├─view
│ │ ├─config.php
│ ├─api API接口模型
│ │ ├─controller
│ │ ├─static
│ │ ├─view
│ │ ├─config.php
│ ├─common COMMON公共模型,不可访问
│ │ ├─controller 公共基类目录
│ │ ├─model 模型目录
│ │ ├─validate 验证配置
│ │ ├─view 公共模板目录
│ │ ├─widget 扩展组件目录
│ ├─index 前台模型
│ │ ├─controller
│ │ ├─config.php
│ ├─user 用户中心模型
│ │ ├─controller
│ │ ├─config.php
│ ├─common.php 公共函数库文件
│ ├─config.php 基础配置文件
│ ├─database.php 数据库配置文件
│ ├─route.php 路由配置文件
│ ├─tags.php 行为扩展配置文件
│ ├─ueditor.json 编辑配置文件
├─data 缓存以及备份目录
├─extend 自定义类库扩展目录
├─vendor 网站扩展类库目录,通过composer更新下载的类库扩展在此目录
├─web 网站根目录
│ ├─uploads 上传文件目录
│ ├─template 网站主题模板目录
│ ├─.htaccess Apache下伪静态文件
│ ├─favicon.ico ico图标
│ ├─index.php 入口文件
├─composer.json composer配置文件
├─README.md 系统介绍文件
~~~ ~~~
## 版本列表 如果需要更新框架使用
~~~
composer update topthink/framework
~~~
> 3.0.170127 https://git.oschina.net/sentcms/sentcms/repository/archive/3.0.170127 ## 参与开发
> 3.0.161201https://git.oschina.net/sentcms/sentcms/repository/archive/3.0.161201
> 3.0.1611https://git.oschina.net/sentcms/sentcms/repository/archive/3.0.1611 请参阅 [ThinkPHP 核心框架包](https://github.com/top-think/framework)。
> 3.0.1609https://git.oschina.net/sentcms/sentcms/repository/archive/3.0.1609
## 版权信息
ThinkPHP遵循Apache2开源协议发布,并提供免费使用。
本项目包含的第三方源码和二进制文件之版权信息另行标注。
版权所有Copyright © 2006-2019 by ThinkPHP (http://thinkphp.cn)
All rights reserved。
ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
更多细节参阅 [LICENSE.txt](LICENSE.txt)
-46
View File
@@ -1,46 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
namespace addons\devteam;
use app\common\controller\Addons;
/**
* 开发团队信息插件
* @author thinkphp
*/
class Devteam extends Addons{
public $info = array(
'name'=>'Devteam',
'title'=>'开发团队信息',
'description'=>'开发团队成员信息',
'status'=>1,
'author'=>'molong',
'version'=>'0.1'
);
public function install(){
return true;
}
public function uninstall(){
return true;
}
//实现的AdminIndex钩子方法
public function AdminIndex($param){
$config = $this->getConfig();
$this->assign('addons_config', $config);
if($config['display']){
echo $this->fetch('widget');
}
}
}
-36
View File
@@ -1,36 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
return array(
'title'=>array(//配置在表单中的键名 ,这个会是config[title]
'title'=>'显示标题:',//表单的文字
'type'=>'text', //表单的类型:text、textarea、checkbox、radio、select等
'value'=>'SentCMS开发团队', //表单的默认值
),
'width'=>array(
'title'=>'显示宽度:',
'type'=>'select',
'options'=>array(
'1'=>'1格',
'2'=>'2格',
'4'=>'4格',
'6'=>'6格'
),
'value'=>'6'
),
'display'=>array(
'title'=>'是否显示:',
'type'=>'radio',
'options'=>array(
'1'=>'显示',
'0'=>'不显示'
),
'value'=>'1'
)
);
-35
View File
@@ -1,35 +0,0 @@
<div class="col-lg-{$addons_config.width}">
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<h2>{$addons_config.title}</h2>
</header>
<div class="main-box-body clearfix">
<table class="table">
<tr>
<th>总策划</th>
<td>郭平平</td>
</tr>
<tr>
<th>产品设计及研发团队</th>
<td>郭平平</td>
</tr>
<tr>
<th>界面及用户体验团队</th>
<td>BootStrap 团队</td>
</tr>
<tr>
<th>官方网址</th>
<td><a href="http://www.tensent.cn" target="_blank">www.tensent.cn</a></td>
</tr>
<tr>
<th>官方QQ群</th>
<td><a target="_blank" href="http://jq.qq.com/?_wv=1027&k=WVW2se"><img border="0" src="http://pub.idqqimg.com/wpa/images/group.png" alt="SentCMS技术交流" title="SentCMS技术交流"></a></td>
</tr>
<tr>
<th>BUG反馈</th>
<td><a href="http://bbs.sentcms.com/" target="_blank">SentCMS讨论区</a></td>
</tr>
</table>
</div>
</div>
</div>
-54
View File
@@ -1,54 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: yangweijie <yangweijiester@gmail.com> <code-tech.diandian.com>
// +----------------------------------------------------------------------
namespace addons\sitestat;
use app\common\controller\Addons;
/**
* 系统环境信息插件
* @author thinkphp
*/
class Sitestat extends Addons{
public $info = array(
'name'=>'Sitestat',
'title'=>'站点统计信息',
'description'=>'统计站点的基础信息',
'status'=>1,
'author'=>'thinkphp',
'version'=>'0.2'
);
public function install(){
return true;
}
public function uninstall(){
return true;
}
//实现的AdminIndex钩子方法
public function AdminIndex($param){
$config = $this->getConfig();
$this->assign('addons_config', $config);
$map['status'] = array('egt',0);
$maps['is_read'] = array('eq',0);
if($config['display']){
$info['users'] = db('Member')->where($map)->count();
$info['userall'] = db('Member')->count();
$info['action'] = db('ActionLog')->where(array('create_time'=>array('gt',strtotime(date('Y-m-d')))))->count();
$info['category'] = db('Category')->count();
$info['model'] = db('Model')->count();
$this->assign('info',$info);
echo $this->fetch('index/info');
}
}
}
-35
View File
@@ -1,35 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: yangweijie <yangweijiester@gmail.com> <code-tech.diandian.com>
// +----------------------------------------------------------------------
return array(
'title'=>array(//配置在表单中的键名 ,这个会是config[title]
'title'=>'显示标题:',//表单的文字
'type'=>'text', //表单的类型:text、textarea、checkbox、radio、select等
'value'=>'系统信息', //表单的默认值
),
'width'=>array(
'title'=>'显示宽度:',
'type'=>'select',
'options'=>array(
'4'=>'4格',
'6'=>'6格',
'12'=>'12格',
),
'value'=>'2'
),
'display'=>array(
'title'=>'是否显示:',
'type'=>'radio',
'options'=>array(
'1'=>'显示',
'0'=>'不显示'
),
'value'=>'1'
)
);
-29
View File
@@ -1,29 +0,0 @@
<div class="col-lg-12">
<div class="row">
<div class="col-lg-3 col-sm-6 col-xs-12">
<div class="main-box infographic-box colored emerald-bg"> <i class="fa fa-envelope"></i>
<span class="headline">今日行为</span>
<span class="value">{$info['action']}</span>
</div>
</div>
<div class="col-lg-3 col-sm-6 col-xs-12">
<div class="main-box infographic-box colored green-bg"> <i class="fa fa-money"></i>
<span class="headline">栏目总数</span>
<span class="value">{$info['category']}</span>
</div>
</div>
<div class="col-lg-3 col-sm-6 col-xs-12">
<div class="main-box infographic-box colored red-bg"> <i class="fa fa-user"></i>
<span class="headline">用户总数</span>
<span class="value">{$info['users']}</span>
</div>
</div>
<div class="col-lg-3 col-sm-6 col-xs-12">
<div class="main-box infographic-box colored purple-bg">
<i class="fa fa-globe"></i>
<span class="headline">模型总数</span>
<span class="value">{$info['model']}</span>
</div>
</div>
</div>
</div>
-41
View File
@@ -1,41 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: yangweijie <yangweijiester@gmail.com> <code-tech.diandian.com>
// +----------------------------------------------------------------------
namespace addons\Syslogin;
use app\common\controller\Addons;
/**
* 系统环境信息插件
* @author thinkphp
*/
class Syslogin extends Addons{
public $info = array(
'name'=>'Syslogin',
'title'=>'第三方登录',
'description'=>'第三方登录',
'status'=>0,
'author'=>'molong',
'version'=>'0.1'
);
public function loginBottomAddon(){
}
public function install(){
return true;
}
public function uninstall(){
return true;
}
}
-19
View File
@@ -1,19 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace addons\syslogin\controller;
use app\common\controller\Addons;
class Admin extends Addons{
public function setting(){
$this->setMeta('第三方登录设置');
$this->template('admin/login');
}
}
-18
View File
@@ -1,18 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace addons\syslogin\controller;
use app\common\controller\Addons;
class Index extends Addons{
public function login(){
$this->template('index/login');
}
}
-3
View File
@@ -1,3 +0,0 @@
{extend name="admin@public:base"/}
{block name="body"}
{/block}
-1
View File
@@ -1 +0,0 @@
登录
-77
View File
@@ -1,77 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: yangweijie <yangweijiester@gmail.com> <code-tech.diandian.com>
// +----------------------------------------------------------------------
namespace addons\systeminfo;
use app\common\controller\Addons;
/**
* 系统环境信息插件
* @author thinkphp
*/
class Systeminfo extends Addons {
public $info = array(
'name' => 'Systeminfo',
'title' => '系统环境信息',
'description' => '用于显示一些服务器的信息',
'status' => 1,
'author' => 'molong',
'version' => '0.1',
);
public function install() {
return true;
}
public function uninstall() {
return true;
}
//实现的AdminIndex钩子方法
public function AdminIndex($param) {
$config = $this->getConfig();
if (false) {
//extension_loaded('curl')
$url = 'http://www.tensent.cn/index.php?m=home&c=version&a=check_version';
$params = array(
'version' => ONETHINK_VERSION,
'domain' => $_SERVER['HTTP_HOST'],
'auth' => sha1(config('DATA_AUTH_KEY')),
);
$vars = http_build_query($params);
$opts = array(
CURLOPT_TIMEOUT => 5,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $vars,
CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'],
);
/* 初始化并执行curl请求 */
$ch = curl_init();
curl_setopt_array($ch, $opts);
$data = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
}
if (!empty($data) && strlen($data) < 400) {
$config['new_version'] = $data;
}
$this->assign('addons_config', $config);
if ($config['display']) {
echo $this->fetch('widget');
}
}
}
-35
View File
@@ -1,35 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: yangweijie <yangweijiester@gmail.com> <code-tech.diandian.com>
// +----------------------------------------------------------------------
return array(
'title'=>array(//配置在表单中的键名 ,这个会是config[title]
'title'=>'显示标题:',//表单的文字
'type'=>'text', //表单的类型:text、textarea、checkbox、radio、select等
'value'=>'系统信息', //表单的默认值
),
'width'=>array(
'title'=>'显示宽度:',
'type'=>'select',
'options'=>array(
'3'=>'3格',
'4'=>'4格',
'6'=>'6格'
),
'value'=>'6'
),
'display'=>array(
'title'=>'是否显示:',
'type'=>'radio',
'options'=>array(
'1'=>'显示',
'0'=>'不显示'
),
'value'=>'1'
)
);
-38
View File
@@ -1,38 +0,0 @@
<div class="col-lg-{$addons_config.width}">
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<h2>{$addons_config.title}</h2>
</header>
<div class="main-box-body clearfix">
<table class="table">
<tr>
<th>核心版本</th>
<td>SentCMS v{$Think.SENTCMS_VERSION}</td>
</tr>
<tr>
<th>服务器操作系统</th>
<td>{$Think.const.PHP_OS}</td>
</tr>
<tr>
<th>运行环境</th>
<td>{$_SERVER['SERVER_SOFTWARE']}</td>
</tr>
<tr>
<th>MYSQL版本</th>
{php}$system_info_mysql = \think\Db::query("select version() as v;");{/php}
<td>{$system_info_mysql.0.v}</td>
</tr>
<tr>
<th>上传限制</th>
<td>{:ini_get('upload_max_filesize')}</td>
</tr>
<tr>
<th>系统版权所有</th>
<td>
<a href="http://www.tensent.cn/" target="_blank">南昌腾速科技有限公司</a>
</td>
</tr>
</table>
</div>
</div>
</div>
-48
View File
@@ -1,48 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: yangweijie <yangweijiester@gmail.com> <code-tech.diandian.com>
// +----------------------------------------------------------------------
namespace addons\test;
use app\common\controller\Addons;
/**
* 系统环境信息插件
* @author thinkphp
*/
class Test extends Addons {
public $info = array(
'name' => 'Test',
'title' => '测试',
'description' => '用于显示一些服务器的信息',
'status' => 1,
'author' => 'molong',
'version' => '0.1',
);
public function AdminIndex(){
}
public function test(){
}
public function headertest(){
}
public function install(){
return true;
}
public function uninstall(){
return true;
}
}
-1
View File
@@ -1 +0,0 @@
deny from all
-136
View File
@@ -1,136 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
/**
* select返回的数组进行整数映射转换
*
* @param array $map 映射关系二维数组 array(
* '字段名1'=>array(映射关系数组),
* '字段名2'=>array(映射关系数组),
* ......
* )
* @author 朱亚杰 <zhuyajie@topthink.net>
* @return array
*
* array(
* array('id'=>1,'title'=>'标题','status'=>'1','status_text'=>'正常')
* ....
* )
*
*/
function int_to_string(&$data, $map = array('status' => array(1 => '正常', -1 => '删除', 0 => '禁用', 2 => '未审核', 3 => '草稿'))) {
if ($data === false || $data === null) {
return $data;
}
$data = (array) $data;
foreach ($data as $key => $row) {
foreach ($map as $col => $pair) {
if (isset($row[$col]) && isset($pair[$row[$col]])) {
$data[$key][$col . '_text'] = $pair[$row[$col]];
}
}
}
return $data;
}
/**
* 获取对应状态的文字信息
* @param int $status
* @return string 状态文字 false 未获取到
* @author huajie <banhuajie@163.com>
*/
function get_status_title($status = null) {
if (!isset($status)) {
return false;
}
switch ($status) {
case -1:return '已删除';
break;
case 0:return '禁用';
break;
case 1:return '正常';
break;
case 2:return '待审核';
break;
default:return false;
break;
}
}
// 获取数据的状态操作
function show_status_op($status) {
switch ($status) {
case 0:return '启用';
break;
case 1:return '禁用';
break;
case 2:return '审核';
break;
default:return false;
break;
}
}
/**
* 获取行为类型
* @param intger $type 类型
* @param bool $all 是否返回全部类型
* @author huajie <banhuajie@163.com>
*/
function get_action_type($type, $all = false) {
$list = array(
1 => '系统',
2 => '用户',
);
if ($all) {
return $list;
}
return $list[$type];
}
/**
* 获取行为数据
* @param string $id 行为id
* @param string $field 需要获取的字段
* @author huajie <banhuajie@163.com>
*/
function get_action($id = null, $field = null) {
if (empty($id) && !is_numeric($id)) {
return false;
}
$list = cache('action_list');
if (empty($list[$id])) {
$map = array('status' => array('gt', -1), 'id' => $id);
$list[$id] = db('Action')->where($map)->field(true)->find();
}
return empty($field) ? $list[$id] : $list[$id][$field];
}
/**
* 根据条件字段获取数据
* @param mixed $value 条件,可用常量或者数组
* @param string $condition 条件字段
* @param string $field 需要返回的字段,不传则返回整个数据
* @author huajie <banhuajie@163.com>
*/
function get_document_field($value = null, $condition = 'id', $field = null) {
if (empty($value)) {
return false;
}
//拼接参数
$map[$condition] = $value;
$info = db('Model')->where($map);
if (empty($field)) {
$info = $info->field(true)->find();
} else {
$info = $info->value($field);
}
return $info;
}
-24
View File
@@ -1,24 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
return array(
'user_administrator' => 1,
//'url_common_param'=>true,
'template' => array(
),
'session' => array(
'prefix' => 'admin',
'type' => '',
'auto_start' => true,
)
);
-217
View File
@@ -1,217 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 行为管理
* @description 行为管理
*/
class Action extends Admin {
/**
* @title 用户行为列表
* @author huajie <banhuajie@163.com>
*/
public function index() {
$map = array('status' => array('gt', -1));
$order = "id desc";
//获取列表数据
$list = model('Action')->where($map)->order($order)->paginate(10, false, array(
'query' => $this->request->param()
));
// 记录当前列表页的cookie
Cookie('__forward__', $_SERVER['REQUEST_URI']);
$data = array(
'list' => $list,
'page' => $list->render(),
);
$this->assign($data);
$this->setMeta('用户行为');
return $this->fetch();
}
/**
* @title 新建用户行为
* @author colin <colin@tensent.cn>
*/
public function add() {
$model = model('Action');
if ($this->request->isPost()) {
$data = input('post.');
$result = $model->save($data);
if (false != $result) {
action_log('add_action', 'Action', $result, session('user_auth.uid'));
return $this->success('添加成功!', url('index'));
} else {
return $this->error($model->getError());
}
} else {
$data = array(
'keyList' => $model->fieldlist,
);
$this->assign($data);
$this->setMeta("添加行为");
return $this->fetch('public/edit');
}
}
/**
* @title 编辑用户行为
* @author colin <colin@tensent.cn>
*/
public function edit($id = null) {
$model = model('Action');
if ($this->request->isPost()) {
$data = input('post.');
$result = $model->save($data, array('id' => $data['id']));
if ($result !== false) {
action_log('edit_action', 'Action', $id, session('user_auth.uid'));
return $this->success('编辑成功!', url('index'));
} else {
return $this->error($model->getError());
}
} else {
$info = $model::where(array('id' => $id))->find();
if (!$info) {
return $this->error("非法操作!");
}
$data = array(
'info' => $info,
'keyList' => $model->fieldlist,
);
$this->assign($data);
$this->setMeta("编辑行为");
return $this->fetch('public/edit');
}
}
/**
* @title 删除用户行为
* @author colin <colin@tensent.cn>
*/
public function del() {
$id = $this->getArrayParam('id');
if (empty($id)) {
return $this->error("非法操作!", '');
}
$map['id'] = array('IN', $id);
$result = db('Action')->where($map)->delete();
if ($result) {
action_log('delete_action', 'Action', $id, session('user_auth.uid'));
return $this->success('删除成功!');
} else {
return $this->error('删除失败!');
}
}
/**
* @title 修改用户行为状态
* @author colin <colin@tensent.cn>
*/
public function setstatus() {
$id = $this->getArrayParam('id');
if (empty($id)) {
return $this->error("非法操作!", '');
}
$status = input('get.status', '', 'trim,intval');
$message = !$status ? '禁用' : '启用';
$map['id'] = array('IN', $id);
$result = db('Action')->where($map)->setField('status', $status);
if ($result !== false) {
action_log('setstatus_action', 'Action', $id, session('user_auth.uid'));
return $this->success('设置' . $message . '状态成功!');
} else {
return $this->error('设置' . $message . '状态失败!');
}
}
/**
* @title 行为日志列表
* @author huajie <banhuajie@163.com>
*/
public function log() {
//获取列表数据
$map['status'] = array('gt', -1);
$order = "id desc";
//获取列表数据
$list = model('ActionLog')->where($map)->order($order)->paginate(10);
$data = array(
'list' => $list,
'page' => $list->render(),
);
$this->assign($data);
$this->setMeta('行为日志');
return $this->fetch();
}
/**
* @title 查看行为日志
* @author huajie <banhuajie@163.com>
*/
public function detail($id = 0) {
$model = model('ActionLog');
if (empty($id)) {
return $this->error('参数错误!');
}
$info = $model::get($id);
$info['title'] = get_action($info['action_id'], 'title');
$info['user_id'] = get_username($info['user_id']);
$info['action_ip'] = long2ip($info['action_ip']);
$info['create_time'] = date('Y-m-d H:i:s', $info['create_time']);
$data = array(
'info' => $info,
'keyList' => $model->keyList,
);
$this->assign($data);
$this->setMeta('查看行为日志');
return $this->fetch();
}
/**
* @title 删除日志
* @param mixed $id
* @author huajie <banhuajie@163.com>
*/
public function dellog() {
$id = $this->getArrayParam('id');
if (empty($id)) {
return $this->error("非法操作!", '');
}
$map['id'] = array('IN', $id);
$res = db('ActionLog')->where($map)->delete();
if ($res !== false) {
action_log('delete_actionlog', 'ActionLog', $id, session('user_auth.uid'));
return $this->success('删除成功!');
} else {
return $this->error('删除失败!');
}
}
/**
* @title 清空日志
*/
public function clear($id = '') {
$res = db('ActionLog')->where('1=1')->delete();
if ($res !== false) {
//记录行为
action_log('clear_actionlog', 'ActionLog', $id, session('user_auth.uid'));
return $this->success('日志清空成功!');
} else {
return $this->error('日志清空失败!');
}
}
}
-202
View File
@@ -1,202 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 广告管理
* @description 广告管理
*/
class Ad extends Admin {
protected $ad;
protected $adplace;
public function _initialize() {
parent::_initialize();
$this->ad = db('Ad');
$this->adplace = db('AdPlace');
}
/**
* @title 广告位管理
*/
public function index() {
$map = array();
$order = "id desc";
$list = db('AdPlace')->where($map)->order($order)->paginate(10, false, array(
'query' => $this->request->param()
));
$data = array(
'list' => $list,
'page' => $list->render(),
);
$this->assign($data);
$this->setMeta("广告管理");
return $this->fetch();
}
/**
* @title 广告位添加
*/
public function add() {
$place = model('AdPlace');
if ($this->request->isPost()) {
$result = $place->change();
if (false !== false) {
return $this->success("添加成功!");
} else {
return $this->error($place->getError());
}
} else {
$data = array(
'keyList' => $place->keyList,
);
$this->assign($data);
$this->setMeta("添加广告位");
return $this->fetch('public/edit');
}
}
/**
* @title 广告位编辑
*/
public function edit($id = null) {
$place = model('AdPlace');
if ($this->request->isPost()) {
$result = $place->change();
if ($result) {
return $this->success("修改成功!", url('admin/ad/index'));
} else {
return $this->error($this->adplace->getError());
}
} else {
$info = db('AdPlace')->where(array('id' => $id))->find();
if (!$info) {
return $this->error("非法操作!");
}
$data = array(
'info' => $info,
'keyList' => $place->keyList,
);
$this->assign($data);
$this->setMeta("编辑广告位");
return $this->fetch('public/edit');
}
}
/**
* @title 广告位删除
*/
public function del() {
$id = $this->getArrayParam('id');
if (empty($id)) {
return $this->error("非法操作!");
}
$map['id'] = array('IN', $id);
$result = $this->adplace->where($map)->delete();
if ($result) {
return $this->success("删除成功!");
} else {
return $this->error("删除失败!");
}
}
/**
* @title 广告列表
*/
public function lists($id = null) {
$map['place_id'] = $id;
$order = "id desc";
$list = db('Ad')->where($map)->order($order)->paginate(10, false, array(
'query' => $this->request->param()
));
$data = array(
'id' => $id,
'list' => $list,
'page' => $list->render(),
);
$this->assign($data);
$this->setMeta("广告管理");
return $this->fetch();
}
/**
* @title 添加广告
*/
public function addad($id) {
$ad = model('ad');
if ($this->request->isPost()) {
$result = $ad->change();
if ($result) {
return $this->success("添加成功!", url('admin/ad/lists', array('id' => $this->request->param('place_id'))));
} else {
return $this->error($ad->getError());
}
} else {
$info['place_id'] = $id;
$data = array(
'info' => $info,
'keyList' => $ad->keyList,
);
$this->assign($data);
$this->setMeta("添加广告位");
return $this->fetch('public/edit');
}
}
/**
* @title 编辑广告
*/
public function editad($id = null) {
$ad = model('ad');
if ($this->request->isPost()) {
$result = $ad->change();
if ($result) {
return $this->success("修改成功!", url('admin/ad/lists', array('id' => $this->request->param('place_id'))));
} else {
return $this->error($ad->getError());
}
} else {
$info = db('ad')->where(array('id' => $id))->find();
if (!$info) {
return $this->error("非法操作!");
}
$data = array(
'info' => $info,
'keyList' => $ad->keyList,
);
$this->assign($data);
$this->setMeta("编辑广告位");
return $this->fetch('public/edit');
}
}
/**
* @title 删除广告
*/
public function delad() {
$id = $this->getArrayParam('id');
if (empty($id)) {
return $this->error("非法操作!");
}
$map['id'] = array('IN', $id);
$result = db('ad')->where($map)->delete();
if ($result) {
return $this->success("删除成功!");
} else {
return $this->error("删除失败!");
}
}
}
-330
View File
@@ -1,330 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 插件管理
* @description 插件管理
*/
class Addons extends Admin {
protected $addons;
public function _initialize() {
parent::_initialize();
//加入菜单
$this->getAddonsMenu();
$this->addons = model('Addons');
$this->hooks = db('Hooks');
}
/**
* @title 插件列表
*/
public function index($refresh = 0) {
if ($refresh) {
$this->addons->refresh();
}
$list = $this->addons->order('id desc')->paginate(25, false, array(
'query' => $this->request->param()
));
// 记录当前列表页的cookie
Cookie('__forward__', $_SERVER['REQUEST_URI']);
$data = array(
'list' => $list,
'page' => $list->render(),
);
$this->setMeta("插件管理");
$this->assign($data);
return $this->fetch();
}
/**
* @title 添加插件
*/
public function add() {
if ($this->request->isPost()) {
$data = $this->addons->create();
if ($data) {
if ($result) {
return $this->success("创建成功!", url('admin/addons/index'));
} else {
return $this->error("创建失败!");
}
} else {
return $this->error($this->addons->getError());
}
} else {
$hooks = db('Hooks')->field('name,description')->select();
$this->assign('Hooks', $hooks);
$hook = db('Hooks')->field(true)->select();
foreach ($hook as $key => $value) {
$addons_opt[$value['name']] = $value['name'];
}
$addons_opt = array(array('type' => 'select', 'opt' => $addons_opt));
if (!is_writable(SENT_ADDON_PATH)) {
return $this->error('您没有创建目录写入权限,无法使用此功能');
}
$this->setMeta("添加插件");
return $this->fetch();
}
}
/**
* @title 安装插件
*/
public function install() {
$addon_name = input('addon_name', '', 'trim,ucfirst');
$class = get_addon_class($addon_name);
if (class_exists($class)) {
$addons = new $class;
$info = $addons->info;
if (!$info || !$addons->checkInfo()) {
//检测信息的正确性
return $this->error('插件信息缺失');
}
session('addons_install_error', null);
$install_flag = $addons->install();
if (!$install_flag) {
return $this->error('执行插件预安装操作失败' . session('addons_install_error'));
}
$result = $this->addons->install($info);
if ($result) {
cache('hooks', null);
return $this->success('安装成功');
} else {
return $this->error($this->addons->getError());
}
} else {
return $this->error('插件不存在');
}
}
/**
* @title 卸载插件
*/
public function uninstall($id) {
$result = $this->addons->uninstall($id);
if ($result === false) {
return $this->error($this->addons->getError(), '');
} else {
return $this->success('卸载成功!');
}
}
/**
* @title 启用插件
*/
public function enable() {
$id = input('id');
cache('hooks', null);
$model = model('Addons');
$result = $model::where(array('id' => $id))->update(array('status' => 1));
if ($result) {
return $this->success('启用成功');
} else {
return $this->error("启用失败!");
}
}
/**
* @title 禁用插件
*/
public function disable() {
$id = input('id');
cache('hooks', null);
$model = model('Addons');
$result = $model::where(array('id' => $id))->update(array('status' => 0));
if ($result) {
return $this->success('禁用成功');
} else {
return $this->error("禁用失败!");
}
}
/**
* @title 设置插件页面
*/
public function config() {
if ($this->request->isPost()) {
# code...
} else {
$id = input('id', '', 'trim,intval');
if (!$id) {
return $this->error("非法操作!");
}
$info = $this->addons->find($id);
if (!empty($info)) {
$class = get_addon_class($info['name']);
$keyList = array();
$data = array(
'keyList' => $keyList,
);
$this->assign($data);
$this->setMeta($info['title'] . " - 设置");
return $this->fetch('public/edit');
} else {
return $this->error("未安装此插件!");
}
}
}
/**
* @title 检测插件
* 获取插件所需的钩子是否存在,没有则新增
* @param string $str 钩子名称
* @param string $addons 插件名称
* @param string $addons 插件简介
*/
public function existHook($str, $addons, $msg = '') {
$hook_mod = db('Hooks');
$where['name'] = $str;
$gethook = $hook_mod->where($where)->find();
if (!$gethook || empty($gethook) || !is_array($gethook)) {
$data['name'] = $str;
$data['description'] = $msg;
$data['type'] = 1;
$data['update_time'] = time();
$data['addons'] = $addons;
if (false !== $hook_mod->create($data)) {
$hook_mod->add();
}
}
}
/**
* @title 删除钩子
* @param string $hook 钩子名称
*/
public function deleteHook($hook) {
$model = db('hooks');
$condition = array(
'name' => $hook,
);
$model->where($condition)->delete();
S('hooks', null);
}
/**
* @title 钩子列表
*/
public function hooks() {
$map = array();
$order = "id desc";
$list = model('Hooks')->where($map)->order($order)->paginate(10, false, array(
'query' => $this->request->param()
));
// 记录当前列表页的cookie
Cookie('__forward__', $_SERVER['REQUEST_URI']);
$data = array(
'list' => $list,
'page' => $list->render(),
);
$this->setMeta("钩子管理");
$this->assign($data);
return $this->fetch();
}
/**
* @title 添加钩子
*/
public function addhook() {
$hooks = model('Hooks');
if ($this->request->isPost()) {
$result = $hooks->change();
if ($result !== false) {
return $this->success("修改成功");
} else {
return $this->error($hooks->getError());
}
} else {
$keylist = $hooks->getaddons();
$data = array(
'keyList' => $keylist,
);
$this->assign($data);
$this->setMeta('编辑钩子');
return $this->fetch('public/edit');
}
}
/**
* @title 编辑钩子
*/
public function edithook($id) {
$hooks = model('Hooks');
if ($this->request->isPost()) {
$result = $hooks->change();
if ($result !== false) {
return $this->success("修改成功");
} else {
return $this->error($hooks->getError());
}
} else {
$info = db('Hooks')->find($id);
$keylist = $hooks->getaddons($info['addons']);
$data = array(
'info' => $info,
'keyList' => $keylist,
);
$this->assign($data);
$this->setMeta('编辑钩子');
return $this->fetch('public/edit');
}
}
/**
* @title 删除钩子
*/
public function delhook() {
$id = $this->getArrayParam('id');
$map['id'] = array('IN', $id);
$result = $this->hooks->where($map)->delete();
if ($result !== false) {
return $this->success('删除成功');
} else {
return $this->error('删除失败');
}
}
/**
* @title 更新钩子
*/
public function updateHook() {
$hookModel = D('Hooks');
$data = $hookModel->create();
if ($data) {
if ($data['id']) {
$flag = $hookModel->save($data);
if ($flag !== false) {
S('hooks', null);
$this->success('更新成功', Cookie('__forward__'));
} else {
$this->error('更新失败');
}
} else {
$flag = $hookModel->add($data);
if ($flag) {
S('hooks', null);
$this->success('新增成功', Cookie('__forward__'));
} else {
$this->error('新增失败');
}
}
} else {
$this->error($hookModel->getError());
}
}
}
-165
View File
@@ -1,165 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 字段管理
* @description 字段管理
*/
class Attribute extends Admin {
//保存的Model句柄
protected $model;
protected $attr;
//初始化
public function _initialize() {
parent::_initialize();
$this->getContentMenu();
$this->model = model('Attribute');
//遍历属性列表
foreach (get_attribute_type() as $key => $value) {
$this->attr[$key] = $value[0];
}
$this->validate_rule = array(
0 => '请选择',
'regex' => '正则验证',
'function' => '函数验证',
'unique' => '唯一验证',
'length' => '长度验证',
'in' => '验证在范围内',
'notin' => '验证不在范围内',
'between' => '区间验证',
'notbetween' => '不在区间验证',
);
$this->auto_type = array(0 => '请选择', 'function' => '函数', 'field' => '字段', 'string' => '字符串');
$this->the_time = array(0 => '请选择', '3' => '始 终', '1' => '新 增', '2' => '编 辑');
$this->field = $this->getField();
}
/**
* @title 字段列表
* @author colin <colin@tensent.cn>
*/
public function index($model_id = null) {
if (!$model_id) {
return $this->error('非法操作!');
}
$list = model('Attribute')->where('model_id', $model_id)->order('id desc')->paginate(25, false, array(
'query' => $this->request->param()
));
$data = array(
'list' => $list,
'model_id' => $model_id,
'page' => $list->render(),
);
$this->assign($data);
$this->setMeta('字段管理');
return $this->fetch();
}
/**
* @title 创建字段
* @author colin <colin@tensent.cn>
*/
public function add($model_id = '') {
if ($this->request->isPost()) {
$result = $this->model->validate('attribute.add')->save($this->request->param());
if (false !== $result) {
return $this->success("创建成功!", url('Attribute/index', array('model_id' => $model_id)));
} else {
return $this->error($this->model->getError());
}
} else {
$data = array(
'info' => array('model_id' => $model_id),
'fieldGroup' => $this->field,
);
$this->assign($data);
$this->setMeta('添加字段');
return $this->fetch('public/edit');
}
}
/**
* @title 编辑字段
* @author colin <colin@tensent.cn>
*/
public function edit($id = '', $model_id = '') {
if ($this->request->isPost()) {
$result = $this->model->validate('attribute.edit')->save($this->request->param(), array('id'=>$id));
if ($result) {
return $this->success("修改成功!", url('Attribute/index', array('model_id' => $model_id)));
} else {
return $this->error($this->model->getError());
}
} else {
$info = db('Attribute')->find($id);
$data = array(
'info' => $info,
'fieldGroup' => $this->field,
);
$this->assign($data);
$this->setMeta('编辑字段');
return $this->fetch('public/edit');
}
}
/**
* @title 删除字段
* @var delattr 是否删除字段表里的字段
* @author colin <colin@tensent.cn>
*/
public function del(\think\Request $request) {
$id = $request->param('id');
$model_id = $request->param('model_id');
if (!$id) {
return $this->error("非法操作!");
}
$result = $this->model->del($id, $model_id);
if ($result) {
return $this->success("删除成功!");
} else {
return $this->error($this->model->getError());
}
}
//字段编辑所需字段
protected function getField() {
return array(
'基础' => array(
array('name' => 'id', 'title' => 'id', 'help' => '', 'type' => 'hidden'),
array('name' => 'model_id', 'title' => 'model_id', 'help' => '', 'type' => 'hidden'),
array('name' => 'name', 'title' => '字段名', 'help' => '英文字母开头,长度不超过30', 'type' => 'text'),
array('name' => 'title', 'title' => '字段标题', 'help' => '请输入字段标题,用于表单显示', 'type' => 'text'),
array('name' => 'type', 'title' => '字段类型', 'help' => '用于表单中的展示方式', 'type' => 'select', 'option' => $this->attr, 'help' => ''),
array('name' => 'length', 'title' => '字段长度', 'help' => '字段的长度值', 'type' => 'text'),
array('name' => 'extra', 'title' => '参数', 'help' => '布尔、枚举、多选字段类型的定义数据', 'type' => 'textarea'),
array('name' => 'value', 'title' => '默认值', 'help' => '字段的默认值', 'type' => 'text'),
array('name' => 'remark', 'title' => '字段备注', 'help' => '用于表单中的提示', 'type' => 'text'),
array('name' => 'is_show', 'title' => '是否显示', 'help' => '是否显示在表单中', 'type' => 'select', 'option' => array('1' => '始终显示', '2' => '新增显示', '3' => '编辑显示', '0' => '不显示'), 'value' => 1),
array('name' => 'is_must', 'title' => '是否必填', 'help' => '用于自动验证', 'type' => 'select', 'option' => array('0' => '否', '1' => '是')),
),
'高级' => array(
array('name' => 'validate_type', 'title' => '验证方式', 'type' => 'select', 'option' => $this->validate_rule, 'help' => ''),
array('name' => 'validate_rule', 'title' => '验证规则', 'help' => '根据验证方式定义相关验证规则', 'type' => 'text'),
array('name' => 'error_info', 'title' => '出错提示', 'type' => 'text', 'help' => ''),
array('name' => 'validate_time', 'title' => '验证时间', 'help' => '英文字母开头,长度不超过30', 'type' => 'select', 'option' => $this->the_time, 'help' => ''),
array('name' => 'auto_type', 'title' => '自动完成方式', 'help' => '英文字母开头,长度不超过30', 'type' => 'select', 'option' => $this->auto_type, 'help' => ''),
array('name' => 'auto_rule', 'title' => '自动完成规则', 'help' => '根据完成方式订阅相关规则', 'type' => 'text'),
array('name' => 'auto_time', 'title' => '自动完成时间', 'help' => '英文字母开头,长度不超过30', 'type' => 'select', 'option' => $this->the_time),
),
);
}
}
-313
View File
@@ -1,313 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 分类管理
* @description 分类管理
*/
class Category extends Admin {
public function _initialize() {
parent::_initialize();
$this->getContentMenu();
}
/**
* @title 分类列表
*/
public function index($model_id = '') {
$map = array('status' => array('gt', -1));
if ($model_id) {
$map['model_id'] = $model_id;
}
$list = db('Category')->where($map)->order('sort asc,id asc')->column('*', 'id');
if (!empty($list)) {
$tree = new \com\Tree();
$list = $tree->toFormatTree($list);
}
$subsql = db('Attribute')->where('name', 'category_id')->fetchSql(true)->column('model_id');
$model_list = model('Model')->where('id IN ('. $subsql.')')->select();
$this->assign('tree', $list);
$this->assign('model_list', $model_list);
$this->assign('model_id', $model_id);
$this->setMeta('栏目列表');
return $this->fetch();
}
/**
* @title 编辑字段
*/
public function editable($name = null, $value = null, $pk = null) {
if ($name && ($value != null || $value != '') && $pk) {
db('Category')->where(array('id' => $pk))->setField($name, $value);
}
}
/**
* @title 编辑分类
*/
public function edit($id = null, $pid = 0) {
if ($this->request->isPost()) {
$category = model('Category');
//提交表单
$result = $category->change();
if (false !== $result) {
//记录行为
action_log('update_category', 'category', $id, session('user_auth.uid'));
return $this->success('编辑成功!', url('index'));
} else {
$error = $category->getError();
return $this->error(empty($error) ? '未知错误!' : $error);
}
} else {
$cate = '';
if ($pid) {
/* 获取上级分类信息 */
$cate = db('Category')->find($pid);
if (!($cate && 1 == $cate['status'])) {
return $this->error('指定的上级分类不存在或被禁用!');
}
}
$subsql = db('Attribute')->where('name', 'category_id')->fetchSql(true)->column('model_id');
$model_list = model('Model')->where('id IN ('. $subsql.')')->select();
/* 获取分类信息 */
$info = $id ? db('Category')->find($id) : '';
$this->assign('info', $info);
$this->assign('model_list', $model_list);
$this->assign('category', $cate);
$this->setMeta('编辑分类');
return $this->fetch();
}
}
/**
* @title 添加分类
*/
public function add($pid = 0) {
$Category = model('Category');
if ($this->request->isPost()) {
//提交表单
$id = $Category->change();
if (false !== $id) {
action_log('update_category', 'category', $id, session('user_auth.uid'));
return $this->success('新增成功!', url('index'));
} else {
$error = $Category->getError();
return $this->error(empty($error) ? '未知错误!' : $error);
}
} else {
$cate = array();
if ($pid) {
/* 获取上级分类信息 */
$cate = $Category->info($pid, 'id,name,title,status');
if (!($cate && 1 == $cate['status'])) {
return $this->error('指定的上级分类不存在或被禁用!');
}
}
$subsql = db('Attribute')->where('name', 'category_id')->fetchSql(true)->column('model_id');
$model_list = model('Model')->where('id IN ('. $subsql.')')->select();
/* 获取分类信息 */
$this->assign('info', null);
$this->assign('model_list', $model_list);
$this->assign('category', $cate);
$this->setMeta('新增分类');
return $this->fetch('edit');
}
}
/**
* @title 删除分类
* @author huajie <banhuajie@163.com>
*/
public function remove($id) {
if (empty($id)) {
return $this->error('参数错误!');
}
//判断该分类下有没有子分类,有则不允许删除
$child = db('Category')->where(array('pid' => $id))->field('id')->select();
if (!empty($child)) {
return $this->error('请先删除该分类下的子分类');
}
//判断该分类下有没有内容
// $document_list = db('Document')->where(array('category_id' => $id))->field('id')->select();
// if (!empty($document_list)) {
// return $this->error('请先删除该分类下的文章(包含回收站)');
// }
//删除该分类信息
$res = db('Category')->where(array('id' => $id))->delete();
if ($res !== false) {
//记录行为
action_log('update_category', 'category', $id, session('user_auth.uid'));
return $this->success('删除分类成功!');
} else {
return $this->error('删除分类失败!');
}
}
/**
* 操作分类初始化
* @param string $type
* @author huajie <banhuajie@163.com>
*/
public function operate($type = 'move', $from = '') {
//检查操作参数
if ($type == 'move') {
$operate = '移动';
} elseif ($type == 'merge') {
$operate = '合并';
} else {
return $this->error('参数错误!');
}
if (empty($from)) {
return $this->error('参数错误!');
}
//获取分类
$map = array('status' => 1, 'id' => array('neq', $from));
$list = db('Category')->where($map)->field('id,pid,title')->select();
//移动分类时增加移至根分类
if ($type == 'move') {
//不允许移动至其子孙分类
$list = tree_to_list(list_to_tree($list));
$pid = db('Category')->getFieldById($from, 'pid');
$pid && array_unshift($list, array('id' => 0, 'title' => '根分类'));
}
$this->assign('type', $type);
$this->assign('operate', $operate);
$this->assign('from', $from);
$this->assign('list', $list);
$this->setMeta($operate . '分类');
return $this->fetch();
}
/**
* @title 移动分类
* @author huajie <banhuajie@163.com>
*/
public function move() {
$to = input('post.to');
$from = input('post.from');
$res = db('Category')->where(array('id' => $from))->setField('pid', $to);
if ($res !== false) {
return $this->success('分类移动成功!', url('index'));
} else {
return $this->error('分类移动失败!');
}
}
/**
* @title 合并分类
* @author huajie <banhuajie@163.com>
*/
public function merge() {
$to = input('post.to');
$from = input('post.from');
$Model = model('Category');
//检查分类绑定的模型
$from_models = explode(',', $Model->getFieldById($from, 'model'));
$to_models = explode(',', $Model->getFieldById($to, 'model'));
foreach ($from_models as $value) {
if (!in_array($value, $to_models)) {
return $this->error('请给目标分类绑定' . get_document_model($value, 'title') . '模型');
}
}
//检查分类选择的文档类型
$from_types = explode(',', $Model->getFieldById($from, 'type'));
$to_types = explode(',', $Model->getFieldById($to, 'type'));
foreach ($from_types as $value) {
if (!in_array($value, $to_types)) {
$types = config('document_model_type');
return $this->error('请给目标分类绑定文档类型:' . $types[$value]);
}
}
//合并文档
$res = db('Document')->where(array('category_id' => $from))->setField('category_id', $to);
if ($res !== false) {
//删除被合并的分类
$Model->delete($from);
return $this->success('合并分类成功!', url('index'));
} else {
return $this->error('合并分类失败!');
}
}
/**
* @title 修改状态
* @author huajie <banhuajie@163.com>
*/
public function status() {
$id = $this->getArrayParam('id');
$status = input('status', '0', 'trim,intval');
if (!$id) {
return $this->error("非法操作!");
}
$map['id'] = array('IN', $id);
$result = db('Category')->where($map)->setField('status', $status);
if ($result) {
return $this->success("设置成功!");
} else {
return $this->error("设置失败!");
}
}
/**
* @title 生成频道
* @author huajie <banhuajie@163.com>
*/
public function add_channel() {
if ($this->request->isPost()) {
$Channel = model('Channel');
$data = $this->request->param();
if ($data) {
$id = $Channel->save($data);
if ($id) {
$map['id'] = array('IN', $data['mid']);
$result = db('Category')->where($map)->setField('ismenu',$Channel->id);
return $this->success('生成成功',url('index'));
//记录行为
action_log('update_channel', 'channel', $id, session('user_auth.uid'));
} else {
return $this->error('生成失败');
}
} else {
$this->error($Channel->getError());
}
} else {
$data = $this->request->param();
$modelname = db('Model')->where( array('id' => $data['model_id']) )->field('id,name')->find();
$data['url'] = $modelname['name'].'/list/'.$data['mid'];
$pid = input('pid', 0);
//获取父导航
if (!empty($pid)) {
$parent = db('Channel')->where(array('id' => $pid))->field('title')->find();
$this->assign('parent', $parent);
}
$pnav = db('Channel')->where(array('pid' => '0'))->select();
$this->assign('pnav', $pnav);
$this->assign('pid', $pid);
$this->assign('info', $data);
$this->assign('data',null );
$this->setMeta('生成导航');
return $this->fetch('edit_channel');
}
}
}
-219
View File
@@ -1,219 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 频道管理
* @description 频道管理
*/
class Channel extends Admin {
public function _initialize() {
parent::_initialize();
}
/**
* @title 频道列表
*/
public function index($type = 0) {
/* 获取频道列表 */
//$map = array('status' => array('gt', -1), 'pid'=>$pid);
$map = array('status' => array('gt', -1));
if ($type) {
$map['type'] = $type;
}
$list = db('Channel')->where($map)->order('sort asc,id asc')->column('*', 'id');
if (!empty($list)) {
$tree = new \com\Tree();
$list = $tree->toFormatTree($list);
}
config('_sys_get_channel_tree_', true);
$data = array(
'tree' => $list,
'type' => $type
);
$this->assign($data);
$this->setMeta('导航管理');
return $this->fetch();
}
/**
* @title 单字段编辑
*/
public function editable($name = null, $value = null, $pk = null) {
if ($name && ($value != null || $value != '') && $pk) {
model('Channel')->where(array('id' => $pk))->setField($name, $value);
}
}
/**
* @title 添加频道
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function add() {
if ($this->request->isPost()) {
$Channel = model('Channel');
$data = $this->request->post();
if ($data) {
$id = $Channel->save($data);
if ($id) {
return $this->success('新增成功', url('index'));
//记录行为
action_log('update_channel', 'channel', $id, session('user_auth.uid'));
} else {
return $this->error('新增失败');
}
} else {
$this->error($Channel->getError());
}
} else {
$pid = input('pid', 0);
//获取父导航
if (!empty($pid)) {
$parent = db('Channel')->where(array('id' => $pid))->field('title')->find();
$this->assign('parent', $parent);
}
$pnav = db('Channel')->where(array('pid' => '0'))->select();
$this->assign('pnav', $pnav);
$this->assign('pid', $pid);
$this->assign('info', null);
$this->setMeta('新增导航');
return $this->fetch('edit');
}
}
/**
* @title 编辑频道
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function edit($id = 0) {
if ($this->request->isPost()) {
$Channel = model('Channel');
$data = $this->request->post();
if ($data) {
if (false !== $Channel->save($data, array('id' => $data['id']))) {
//记录行为
action_log('update_channel', 'channel', $data['id'], session('user_auth.uid'));
return $this->success('编辑成功', url('index'));
} else {
return $this->error('编辑失败');
}
} else {
return $this->error($Channel->getError());
}
} else {
$info = array();
/* 获取数据 */
$info = db('Channel')->find($id);
if (false === $info) {
return $this->error('获取配置信息错误');
}
$pid = input('pid', 0);
//获取父导航
if (!empty($pid)) {
$parent = db('Channel')->where(array('id' => $pid))->field('title')->find();
$this->assign('parent', $parent);
}
$pnav = db('Channel')->where(array('pid' => '0'))->select();
$this->assign('pnav', $pnav);
$this->assign('pid', $pid);
$this->assign('info', $info);
$this->setMeta('编辑导航');
return $this->fetch();
}
}
/**
* @title 删除频道
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function del() {
$id = $this->getArrayParam('id');
if (empty($id)) {
return $this->error('请选择要操作的数据!');
}
$map = array('id' => array('in', $id));
if (db('Channel')->where($map)->delete()) {
//删除category中的ismenu字段记录
$map = array('ismenu' => array('in', $id));
db('Category')->where($map)->setField('ismenu',0);
//记录行为
action_log('update_channel', 'channel', $id, session('user_auth.uid'));
return $this->success('删除成功');
} else {
return $this->error('删除失败!');
}
}
/**
* @title 导航排序
* @author huajie <banhuajie@163.com>
*/
public function sort() {
if ($this->request->isGet()) {
$ids = input('ids');
$pid = input('pid');
//获取排序的数据
$map = array('status' => array('gt', -1));
if (!empty($ids)) {
$map['id'] = array('in', $ids);
} else {
if ($pid !== '') {
$map['pid'] = $pid;
}
}
$list = db('Channel')->where($map)->field('id,title')->order('sort asc,id asc')->select();
$this->assign('list', $list);
$this->setMeta('导航排序');
return $this->fetch();
} elseif ($this->request->isPost()) {
$ids = input('post.ids');
$ids = explode(',', $ids);
foreach ($ids as $key => $value) {
$res = db('Channel')->where(array('id' => $value))->setField('sort', $key + 1);
}
if ($res !== false) {
return $this->success('排序成功!', url('admin/channel/index'));
} else {
return $this->error('排序失败!');
}
} else {
return $this->error('非法请求!');
}
}
/**
* @title 设置状态
*/
public function setStatus() {
$id = array_unique((array) input('ids', 0));
$status = input('status', '0', 'trim');
if (empty($id)) {
return $this->error('请选择要操作的数据!');
}
$map = array('id' => array('in', $id));
$result = db('Channel')->where($map)->update(array('status' => $status));
if ($result) {
return $this->success("操作成功!");
} else {
return $this->error("操作失败!");
}
}
}
-92
View File
@@ -1,92 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 客户端管理
*/
class Client extends Admin {
public function _initialize() {
parent::_initialize();
$this->model = model('Client');
}
/**
* @title 客户端列表
*/
public function index(){
$list = $this->model->paginate(25, false, array(
'query' => $this->request->param()
));
$data = array(
'list' => $list,
'page' => $list->render()
);
$this->assign($data);
$this->setMeta('客户端列表');
return $this->fetch();
}
/**
* @title 添加客户端
*/
public function add(\think\Request $request){
if ($this->request->isPost()) {
$data = $request->param();
$result = $this->model->validate(true)->save($data);
if (false !== $result) {
return $this->success('成功添加', url('client/index'));
}else{
return $this->error($this->model->getError());
}
}else{
$info['appid'] = rand_string(10, 1); //八位数字appid
$info['appsecret'] = rand_string(32); //32位数字加字母秘钥
$data = array(
'info' => $info
);
$this->assign($data);
$this->setMeta('添加客户端');
return $this->fetch('add');
}
}
/**
* @title 编辑客户端
*/
public function edit(\think\Request $request){
if ($this->request->isPost()) {
$data = $request->param();
$result = $this->model->validate(true)->save($data, array('id'=>$request->param('id')));
if (false !== $result) {
return $this->success('修改添加', url('client/index'));
}else{
return $this->error($this->model->getError());
}
}else{
$info = $this->model->where('id', $request->param('id'))->find();
$data = array(
'info' => $info
);
$this->assign($data);
$this->setMeta('编辑客户端');
return $this->fetch('add');
}
}
/**
* @title 删除客户端
*/
public function del(\think\Request $request){
}
}
-250
View File
@@ -1,250 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 配置管理
*/
class Config extends Admin {
public function _initialize() {
parent::_initialize();
$this->model = model('Config');
}
/**
* @title 配置管理
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function index() {
$group = input('group', 0, 'trim');
$name = input('name', '', 'trim');
/* 查询条件初始化 */
$map = array('status' => 1);
if ($group) {
$map['group'] = $group;
}
if ($name) {
$map['name'] = array('like', '%' . $name . '%');
}
$list = $this->model->where($map)->order('id desc')->paginate(25, false, array(
'query' => $this->request->param()
));
// 记录当前列表页的cookie
Cookie('__forward__', $_SERVER['REQUEST_URI']);
$data = array(
'group' => config('config_group_list'),
'config_type' => config('config_config_list'),
'page' => $list->render(),
'group_id' => $group,
'list' => $list,
);
$this->assign($data);
$this->setMeta('配置管理');
return $this->fetch();
}
/**
* @title 信息配置
*/
public function group($id = 1) {
if ($this->request->isPost()) {
$config = $this->request->post('config/a');
$model = model('Config');
foreach ($config as $key => $value) {
$model->where(array('name' => $key))->setField('value', $value);
}
//清除db_config_data缓存
cache('db_config_data', null);
return $this->success("更新成功!");
} else {
$type = config('config_group_list');
$list = db("Config")->where(array('status' => 1, 'group' => $id))->field('id,name,title,extra,value,remark,type')->order('sort')->select();
if ($list) {
$this->assign('list', $list);
}
$this->assign('id', $id);
$this->setMeta($type[$id] . '设置');
return $this->fetch();
}
}
/**
* @title 新增配置
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function add() {
if ($this->request->isPost()) {
$config = model('Config');
$data = $this->request->post();
if ($data) {
$id = $config->validate(true)->save($data);
if ($id) {
cache('db_config_data', null);
//记录行为
action_log('update_config', 'config', $id, session('user_auth.uid'));
return $this->success('新增成功', url('index'));
} else {
return $this->error('新增失败');
}
} else {
return $this->error($config->getError());
}
} else {
$this->setMeta('新增配置');
$this->assign('info', null);
return $this->fetch('edit');
}
}
/**
* @title 编辑配置
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function edit($id = 0) {
if ($this->request->isPost()) {
$config = model('Config');
$data = $this->request->post();
if ($data) {
$result = $config->validate('Config.edit')->save($data, array('id' => $data['id']));
if (false !== $result) {
cache('db_config_data', null);
//记录行为
action_log('update_config', 'config', $data['id'], session('user_auth.uid'));
return $this->success('更新成功', Cookie('__forward__'));
} else {
return $this->error($config->getError(), '');
}
} else {
return $this->error($config->getError());
}
} else {
$info = array();
/* 获取数据 */
$info = db('Config')->field(true)->find($id);
if (false === $info) {
return $this->error('获取配置信息错误');
}
$this->assign('info', $info);
$this->setMeta('编辑配置');
return $this->fetch();
}
}
/**
* @title 批量保存配置
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function save($config) {
if ($config && is_array($config)) {
$Config = db('Config');
foreach ($config as $name => $value) {
$map = array('name' => $name);
$Config->where($map)->setField('value', $value);
}
}
cache('db_config_data', null);
return $this->success('保存成功!');
}
/**
* @title 删除配置
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function del() {
$id = array_unique((array) input('id', 0));
if (empty($id)) {
return $this->error('请选择要操作的数据!');
}
$map = array('id' => array('in', $id));
if (db('Config')->where($map)->delete()) {
cache('DB_CONFIG_DATA', null);
//记录行为
action_log('update_config', 'config', $id, session('user_auth.uid'));
return $this->success('删除成功');
} else {
return $this->error('删除失败!');
}
}
/**
* @title 配置排序
* @author huajie <banhuajie@163.com>
*/
public function sort() {
if ($this->request->isGet()) {
$ids = input('ids');
//获取排序的数据
$map = array('status' => array('gt', -1));
if (!empty($ids)) {
$map['id'] = array('in', $ids);
} elseif (input('group')) {
$map['group'] = input('group');
}
$list = db('Config')->where($map)->field('id,title')->order('sort asc,id asc')->select();
$this->assign('list', $list);
$this->setMeta('配置排序');
return $this->fetch();
} elseif ($this->request->isPost()) {
$ids = input('post.ids');
$ids = explode(',', $ids);
foreach ($ids as $key => $value) {
$res = db('Config')->where(array('id' => $value))->setField('sort', $key + 1);
}
if ($res !== false) {
return $this->success('排序成功!', Cookie('__forward__'));
} else {
return $this->error('排序失败!');
}
} else {
return $this->error('非法请求!');
}
}
/**
* @title 主题选择
*/
public function themes() {
$list = $this->model->getThemesList();
$pc = config('pc_themes');
$mobile = config('mobile_themes');
$data = array(
'pc' => $pc,
'mobile' => $mobile,
'list' => $list,
);
$this->assign($data);
$this->setMeta('主题设置');
return $this->fetch();
}
/**
* @title 设置主题
* @return json
*/
public function setthemes($name, $id){
$result = db('Config')->where('name', $name . '_themes')->setField('value', $id);
if (false !== $result) {
\think\Cache::clear();
return $this->success('设置成功!');
}else{
return $this->error('设置失败!');
}
}
}
-278
View File
@@ -1,278 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 内容管理
*/
class Content extends Admin {
public function _initialize() {
parent::_initialize();
$this->getContentMenu();
$this->model_id = $model_id = $this->request->param('model_id');
$list = db('Model')->column('*', 'id');
if (empty($list[$model_id])) {
return $this->error("无此模型!");
} else {
$this->modelInfo = $list[$model_id];
$this->model = M($this->modelInfo['name']);
}
$this->assign('model_id', $model_id);
$this->assign('model_list', $list);
}
/**
* @title 内容列表
* @return [html] [页面内容]
* @author molong <ycgpp@126.com>
*/
public function index() {
if ($this->modelInfo['list_grid'] == '') {
return $this->error("列表定义不正确!", url('admin/model/edit', array('id' => $this->modelInfo['id'])));
}
$grid_list = get_grid_list($this->modelInfo['list_grid']);
$order = "id desc";
$map = $this->buildMap();
$field = array_filter($grid_list['fields']);
$list = $this->model->where($map)->order($order)->paginate($this->modelInfo['list_row'], false, array(
'query' => $this->request->param()
));
$data = array(
'grid' => $grid_list,
'list' => $list,
'page' => $list->render(),
);
if ($this->modelInfo['template_list']) {
$template = 'content/' . $this->modelInfo['template_list'];
} else {
$template = 'content/index';
}
$this->assign($data);
$this->setMeta($this->modelInfo['title'] . "列表");
return $this->fetch($template);
}
/**
* @title 内容添加
* @author molong <ycgpp@126.com>
*/
public function add() {
if ($this->request->isPost()) {
$result = $this->model->save($this->request->param());
if ($result) {
//记录行为
action_log('add_content', 'content', $result, session('auth_user.uid'));
return $this->success("添加成功!", url('admin/content/index', array('model_id' => $this->modelInfo['id'])));
} else {
return $this->error($this->model->getError(), url('admin/content/add', array('model_id' => $this->modelInfo['id'])));
}
} else {
$info = array(
'model_id' => $this->modelInfo['id'],
);
$data = array(
'info' => $info,
'fieldGroup' => $this->getField($this->modelInfo),
);
if ($this->modelInfo['template_add']) {
$template = 'content/' . $this->modelInfo['template_add'];
} else {
$template = 'public/edit';
}
$this->assign($data);
$this->setMeta("添加" . $this->modelInfo['title']);
return $this->fetch($template);
}
}
/**
* @title 内容修改
* @author molong <ycgpp@126.com>
*/
public function edit($id) {
if ($this->request->isPost()) {
$result = $this->model->save($this->request->param(), array('id'=> $id));
if ($result !== false) {
//记录行为
action_log('update_content', 'content', $result, session('auth_user.uid'));
return $this->success("更新成功!", url('admin/content/index', array('model_id' => $this->modelInfo['id'])));
} else {
return $this->error($this->model->getError(), url('admin/content/edit', array('model_id' => $this->modelInfo['id'], 'id' => $id)));
}
} else {
if (!$id) {
return $this->error("非法操作!");
}
$info = $this->model->find($id);
if (!$info) {
return $this->error($this->model->getError());
}
$info['model_id'] = $this->modelInfo['id'];
$data = array(
'info' => $info,
'fieldGroup' => $this->getField($this->modelInfo),
);
if ($this->modelInfo['template_edit']) {
$template = 'content/' . $this->modelInfo['template_edit'];
} else {
$template = 'public/edit';
}
$this->assign($data);
$this->setMeta("编辑" . $this->modelInfo['title']);
return $this->fetch($template);
}
}
/**
* @title 内容删除
* @author molong <ycgpp@126.com>
*/
public function del() {
$param = $this->request->param();
$id = $param['id'];
if (empty($id)) {
return $this->error("非法操作!");
}
$map['id'] = array('IN', $id);
$result = $this->model->where($map)->delete();
if (false !== $result) {
//记录行为
action_log('delete_content', 'content', $result, session('auth_user.uid'));
return $this->success("删除成功!");
} else {
return $this->error("删除失败!");
}
}
/**
* @title 设置状态
* @author molong <ycgpp@126.com>
*/
public function status($id, $status) {
$map['id'] = $id;
$result = $this->model->where($map)->setField('status', $status);
if (false !== $result) {
return $this->success("操作成功!");
} else {
return $this->error("操作失败!!");
}
}
/**
* @title 设置置顶
* @author molong <ycgpp@126.com>
*/
public function settop($id, $is_top) {
$map['id'] = $id;
$result = $this->model->where($map)->setField('is_top', $is_top);
if (false !== $result) {
return $this->success("操作成功!");
} else {
return $this->error("操作失败!!");
}
}
/**
* @title 获取字段信息
* @return array 字段数组
* @author molong <ycgpp@126.com>
*/
protected function getField() {
$field_group = parse_config_attr($this->modelInfo['attribute_group']);
$map['model_id'] = $this->modelInfo['id'];
if ($this->request->action() == 'add') {
$map['is_show'] = array('in', array('1', '2'));
} elseif ($this->request->action() == 'edit') {
$map['is_show'] = array('in', array('1', '3'));
}
//获得数组的第一条数组
$rows = model('Attribute')->getFieldlist($map, 'id');
if (!empty($rows)) {
foreach ($rows as $key => $value) {
$list[$value['group_id']][] = $value;
}
foreach ($field_group as $key => $value) {
$fields[$value] = isset($list[$key]) ? $list[$key] : array();
}
}else{
$fields = array();
}
return $fields;
}
/**
* @title 创建搜索
* @return [array] [查询条件]
*/
protected function buildMap() {
$map = array();
$data = $this->request->param();
foreach ($data as $key => $value) {
if ($value) {
if ($key == 'keyword') {
$map['title'] = array("LIKE", "%$value%");
} elseif ($key == 'category') {
$map['category_id'] = $value;
} elseif ($key == 'create_time') {
$map['create_time'] = array('BETWEEN', array(strtotime($value[0]), strtotime($value[1])));
} else {
$map[$key] = $value;
}
}
}
if (isset($map['page'])) {
unset($map['page']);
}
if (isset($map['model_id'])) {
unset($map['model_id']);
}
$this->assign($data);
return $map;
}
/**
* 检测需要动态判断的文档类目有关的权限
*
* @return boolean|null
* 返回true则表示当前访问有权限
* 返回false则表示当前访问无权限
* 返回null,则会进入checkRule根据节点授权判断权限
*
* @author 朱亚杰 <xcoolcc@gmail.com>
*/
protected function checkDynamic() {
$model_id = $this->request->param('model_id');
if (IS_ROOT) {
return true; //管理员允许访问任何页面
}
$models = model('AuthGroup')->getAuthModels(session('user_auth.uid'));
if (!$model_id) {
return false;
} elseif (in_array($model_id, $models)) {
//返回null继续判断操作权限
return null;
} else {
return false; //无权限
}
return false;
}
}
-287
View File
@@ -1,287 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 数据库管理
* @description 数据库管理
*/
class Database extends Admin {
/**
* 数据库备份/还原列表
* @param String $type import-还原,export-备份
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function index($type = null) {
switch ($type) {
/* 数据还原 */
case 'import':
//列出备份文件列表
$path = config('data_backup_path');
if (!is_dir($path)) {
mkdir($path, 0755, true);
}
$path = realpath($path);
$flag = \FilesystemIterator::KEY_AS_FILENAME;
$glob = new \FilesystemIterator($path, $flag);
$list = array();
foreach ($glob as $name => $file) {
if (preg_match('/^\d{8,8}-\d{6,6}-\d+\.sql(?:\.gz)?$/', $name)) {
$name = sscanf($name, '%4s%2s%2s-%2s%2s%2s-%d');
$date = "{$name[0]}-{$name[1]}-{$name[2]}";
$time = "{$name[3]}:{$name[4]}:{$name[5]}";
$part = $name[6];
if (isset($list["{$date} {$time}"])) {
$info = $list["{$date} {$time}"];
$info['part'] = max($info['part'], $part);
$info['size'] = $info['size'] + $file->getSize();
} else {
$info['part'] = $part;
$info['size'] = $file->getSize();
}
$extension = strtoupper(pathinfo($file->getFilename(), PATHINFO_EXTENSION));
$info['compress'] = ($extension === 'SQL') ? '-' : $extension;
$info['time'] = strtotime("{$date} {$time}");
$list["{$date} {$time}"] = $info;
}
}
$title = '数据还原';
break;
/* 数据备份 */
case 'export':
$Db = \think\Db::connect();
$list = $Db->query('SHOW TABLE STATUS');
$list = array_map('array_change_key_case', $list);
$title = '数据备份';
break;
default:
return $this->error('参数错误!');
}
//渲染模板
$this->setMeta($title);
$this->assign('list', $list);
return $this->fetch($type);
}
/**
* @title 优化表
* @param String $tables 表名
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function optimize($tables = null) {
if ($tables) {
$Db = \think\Db::connect();
if (is_array($tables)) {
$tables = implode('`,`', $tables);
$list = $Db->query("OPTIMIZE TABLE `{$tables}`");
if ($list) {
return $this->success("数据表优化完成!");
} else {
return $this->error("数据表优化出错请重试!");
}
} else {
$list = $Db->query("OPTIMIZE TABLE `{$tables}`");
if ($list) {
return $this->success("数据表'{$tables}'优化完成!");
} else {
return $this->error("数据表'{$tables}'优化出错请重试!");
}
}
} else {
return $this->error("请指定要优化的表!");
}
}
/**
* @title 修复表
* @param String $tables 表名
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function repair($tables = null) {
if ($tables) {
$Db = \think\Db::connect();
if (is_array($tables)) {
$tables = implode('`,`', $tables);
$list = $Db->query("REPAIR TABLE `{$tables}`");
if ($list) {
return $this->success("数据表修复完成!");
} else {
return $this->error("数据表修复出错请重试!");
}
} else {
$list = $Db->query("REPAIR TABLE `{$tables}`");
if ($list) {
return $this->success("数据表'{$tables}'修复完成!");
} else {
return $this->error("数据表'{$tables}'修复出错请重试!");
}
}
} else {
return $this->error("请指定要修复的表!");
}
}
/**
* @title 删除备份文件
* @param Integer $time 备份时间
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function del($time = 0) {
if ($time) {
$name = date('Ymd-His', $time) . '-*.sql*';
$path = realpath(config('DATA_BACKUP_PATH')) . DIRECTORY_SEPARATOR . $name;
array_map("unlink", glob($path));
if (count(glob($path))) {
return $this->error('备份文件删除失败,请检查权限!');
} else {
return $this->success('备份文件删除成功!');
}
} else {
return $this->error('参数错误!');
}
}
/**
* @title 备份数据库
* @param String $tables 表名
* @param Integer $id 表ID
* @param Integer $start 起始行数
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function export($tables = null, $id = null, $start = null) {
if ($this->request->isPost() && !empty($tables) && is_array($tables)) {
//初始化
$path = config('data_backup_path');
if (!is_dir($path)) {
mkdir($path, 0755, true);
}
//读取备份配置
$config = array('path' => realpath($path) . DIRECTORY_SEPARATOR, 'part' => config('data_backup_part_size'), 'compress' => config('data_backup_compress'), 'level' => config('data_backup_compress_level'));
//检查是否有正在执行的任务
$lock = "{$config['path']}backup.lock";
if (is_file($lock)) {
return $this->error('检测到有一个备份任务正在执行,请稍后再试!');
} else {
//创建锁文件
file_put_contents($lock, time());
}
//检查备份目录是否可写
if (!is_writeable($config['path'])) {
return $this->error('备份目录不存在或不可写,请检查后重试!');
}
session('backup_config', $config);
//生成备份文件信息
$file = array('name' => date('Ymd-His', time()), 'part' => 1);
session('backup_file', $file);
//缓存要备份的表
session('backup_tables', $tables);
//创建备份文件
$Database = new \com\Database($file, $config);
if (false !== $Database->create()) {
$tab = array('id' => 0, 'start' => 0);
return $this->success('初始化成功!', '', array('tables' => $tables, 'tab' => $tab));
} else {
return $this->error('初始化失败,备份文件创建失败!');
}
} elseif ($this->request->isGet() && is_numeric($id) && is_numeric($start)) {
//备份数据
$tables = session('backup_tables');
//备份指定表
$Database = new \com\Database(session('backup_file'), session('backup_config'));
$start = $Database->backup($tables[$id], $start);
if (false === $start) {
//出错
return $this->error('备份出错!');
} elseif (0 === $start) {
//下一表
if (isset($tables[++$id])) {
$tab = array('id' => $id, 'start' => 0);
return $this->success('备份完成!', '', array('tab' => $tab));
} else {
//备份完成,清空缓存
unlink(session('backup_config.path') . 'backup.lock');
session('backup_tables', null);
session('backup_file', null);
session('backup_config', null);
return $this->success('备份完成!');
}
} else {
$tab = array('id' => $id, 'start' => $start[0]);
$rate = floor(100 * ($start[0] / $start[1]));
return $this->success("正在备份...({$rate}%)", '', array('tab' => $tab));
}
} else {
//出错
return $this->error('参数错误!');
}
}
/**
* @title 还原数据库
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function import($time = 0, $part = null, $start = null) {
if (is_numeric($time) && is_null($part) && is_null($start)) {
//初始化
//获取备份文件信息
$name = date('Ymd-His', $time) . '-*.sql*';
$path = realpath(config('data_backup_path')) . DIRECTORY_SEPARATOR . $name;
$files = glob($path);
$list = array();
foreach ($files as $name) {
$basename = basename($name);
$match = sscanf($basename, '%4s%2s%2s-%2s%2s%2s-%d');
$gz = preg_match('/^\d{8,8}-\d{6,6}-\d+\.sql.gz$/', $basename);
$list[$match[6]] = array($match[6], $name, $gz);
}
ksort($list);
//检测文件正确性
$last = end($list);
if (count($list) === $last[0]) {
session('backup_list', $list); //缓存备份列表
return $this->success('初始化完成!', '', array('part' => 1, 'start' => 0));
} else {
return $this->error('备份文件可能已经损坏,请检查!');
}
} elseif (is_numeric($part) && is_numeric($start)) {
$list = session('backup_list');
$db = new \com\Database($list[$part], array('path' => realpath(config('data_backup_path')) . DIRECTORY_SEPARATOR, 'compress' => $list[$part][2]));
$start = $db->import($start);
if (false === $start) {
return $this->error('还原数据出错!');
} elseif (0 === $start) {
//下一卷
if (isset($list[++$part])) {
$data = array('part' => $part, 'start' => 0);
return $this->success("正在还原...#{$part}", '', $data);
} else {
session('backup_list', null);
return $this->success('还原完成!');
}
} else {
$data = array('part' => $part, 'start' => $start[0]);
if ($start[1]) {
$rate = floor(100 * ($start[0] / $start[1]));
return $this->success("正在还原...#{$part} ({$rate}%)", '', $data);
} else {
$data['gz'] = 1;
return $this->success("正在还原...#{$part}", '', $data);
}
}
} else {
return $this->error('参数错误!');
}
}
}
-276
View File
@@ -1,276 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 自定义表单
* @description 自定义表单
*/
class Form extends Admin {
public function _initialize() {
parent::_initialize();
$this->model = model('Form');
$this->Fattr = model('FormAttr');
//遍历属性列表
foreach (get_attribute_type() as $key => $value) {
$this->attr[$key] = $value[0];
}
$this->field = $this->getField();
}
/**
* @title 表单列表
*/
public function index() {
$map = array();
$order = "id desc";
$list = $this->model->where($map)->order($order)->paginate(25, false, array(
'query' => $this->request->param()
));
$data = array(
'list' => $list,
'page' => $list->render(),
);
$this->setMeta('自定义表单');
$this->assign($data);
return $this->fetch();
}
/**
* @title 添加表单
*/
public function add(\think\Request $request) {
if ($this->request->isPost()) {
$result = $this->model->validate('Form')->save($request->post());
if (false !== $result) {
return $this->success('添加成功!', url('admin/form/index'));
} else {
return $this->error($this->model->getError());
}
} else {
$data = array(
'keyList' => $this->model->addField,
);
$this->assign($data);
$this->setMeta('添加表单');
return $this->fetch('public/edit');
}
}
/**
* @title 编辑表单
*/
public function edit(\think\Request $request) {
if ($this->request->isPost()) {
$result = $this->model->validate('Form')->save($request->post(), array('id' => $request->post('id')));
if (false !== $result) {
return $this->success('修改成功!', url('admin/form/index'));
} else {
return $this->error($this->model->getError());
}
} else {
$info = $this->model->where('id', $request->param('id'))->find();
$data = array(
'info' => $info,
'keyList' => $this->model->editField,
);
$this->assign($data);
$this->setMeta('编辑表单');
return $this->fetch('public/edit');
}
}
/**
* @title 删除表单
*/
public function del() {
$id = $this->getArrayParam('id');
$result = false;
if (false !== $result) {
return $this->success('删除成功!');
} else {
return $this->error('删除失败!');
}
}
/**
* @title 表单数据
* @description 表单数据
* @Author molong
* @DateTime 2017-06-30
* @return html 页面
*/
public function lists($form_id = '') {
$form = $this->model->where('id', $form_id)->find();
$list = M($form['name'], 'form')->order('id desc')->paginate(25);
$data = array(
'form_id' => $form_id,
'list' => $list,
'page' => $list->render()
);
$this->assign($data);
$this->setMeta('数据列表');
return $this->fetch('list_'.$form['name']);
}
/**
* @title 数据详情
*/
public function detail($form_id = '', $id = ''){
$form = $this->model->where('id', $form_id)->find();
$info = M($form['name'], 'form')->where('id', $id)->find();
$data = array(
'info' => $info
);
$this->assign($data);
$this->setMeta('数据详情');
return $this->fetch('detail_'.$form['name']);
}
/**
* @title 数据导出
*/
public function outxls($form_id = '') {
$form = $this->model->where('id', $form_id)->find();
$attr = $this->Fattr->where('form_id', $form_id)->where('is_show', 1)->select();
foreach ($attr as $key => $value) {
$title[$value['name']] = $value['title'];
}
$data[] = $title;
$res = M($form['name'], 'form')->order('id desc')->select();
foreach ($res as $key => $value) {
$data[] = $value;
}
$out = new \com\Outxls($data, date('Y-m-d'));
$out->out();
}
/**
* @title 表单字段
*/
public function attr($form_id = '') {
$map = array();
$order = "id desc";
$list = $this->Fattr->where($map)->order($order)->paginate(25);
$data = array(
'list' => $list,
'form_id' => $form_id,
'page' => $list->render(),
);
$this->setMeta('表单字段');
$this->assign($data);
return $this->fetch();
}
/**
* @title 添加表单字段
*/
public function addattr(){
$form_id = $this->request->param('form_id', '');
if (!$form_id) {
return $this->error('非法操作!');
}
if ($this->request->isPost()) {
$data = $this->request->post();
$result = $this->Fattr->save($data);
if (false !== $result) {
return $this->success('添加成功!', url('admin/form/attr?form_id='.$form_id));
}else{
return $this->error($this->Fattr->getError());
}
}else{
$info = array(
'form_id' => $form_id
);
$data = array(
'info' => $info,
'keyList' => $this->field
);
$this->assign($data);
$this->setMeta('添加字段');
return $this->fetch('public/edit');
}
}
/**
* @title 编辑表单字段
*/
public function editattr(\think\Request $request){
$param = $this->request->param();
$form_id = isset($param['form_id']) ? $param['form_id'] : '';
$id = isset($param['id']) ? $param['id'] : '';
if (!$form_id || !$id) {
return $this->error('非法操作!');
}
if ($this->request->isPost()) {
$data = $request->post();
$result = $this->Fattr->save($data, array('id'=>$data['id']));
if (false !== $result) {
return $this->success('修改成功!', url('admin/form/attr?form_id='.$form_id));
}else{
return $this->error($this->Fattr->getError());
}
}else{
$info = $this->Fattr->where('id', $id)->find();
$data = array(
'info' => $info,
'keyList' => $this->field
);
$this->assign($data);
$this->setMeta('添加字段');
return $this->fetch('public/edit');
}
}
/**
* @title 删除表单字段
*/
public function delattr(\think\Request $request){
$id = $request->param('id', 0);
if (!$id) {
return $this->error('非法操作!');
}
$result = $this->Fattr->where('id', $id)->delete();
if (false !== $result) {
return $this->success('添加成功!');
}else{
return $this->error($this->Fattr->getError());
}
}
protected function getField(){
return array(
array('name' => 'id', 'title' => 'id', 'help' => '', 'type' => 'hidden'),
array('name' => 'form_id', 'title' => 'model_id', 'help' => '', 'type' => 'hidden'),
array('name' => 'name', 'title' => '字段名', 'help' => '英文字母开头,长度不超过30', 'type' => 'text'),
array('name' => 'title', 'title' => '字段标题', 'help' => '请输入字段标题,用于表单显示', 'type' => 'text'),
array('name' => 'type', 'title' => '字段类型', 'help' => '用于表单中的展示方式', 'type' => 'select', 'option' => $this->attr, 'help' => ''),
array('name' => 'length', 'title' => '字段长度', 'help' => '字段的长度值', 'type' => 'text'),
array('name' => 'extra', 'title' => '参数', 'help' => '布尔、枚举、多选字段类型的定义数据', 'type' => 'textarea'),
array('name' => 'value', 'title' => '默认值', 'help' => '字段的默认值', 'type' => 'text'),
array('name' => 'remark', 'title' => '字段备注', 'help' => '用于表单中的提示', 'type' => 'text'),
array('name' => 'is_show', 'title' => '是否显示', 'help' => '是否显示在表单中', 'type' => 'select', 'option' => array('1' => '始终显示', '2' => '新增显示', '3' => '编辑显示', '0' => '不显示'), 'value' => 1),
array('name' => 'is_must', 'title' => '是否必填', 'help' => '用于自动验证', 'type' => 'select', 'option' => array('0' => '否', '1' => '是')),
);
}
}
-283
View File
@@ -1,283 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 用户组管理
* @description 用户组管理
*/
class Group extends Admin {
protected $model;
protected $rule;
public function _initialize() {
parent::_initialize();
$this->group = model('AuthGroup');
$this->rule = model('AuthRule');
}
/**
* @title 用户组列表
*/
public function index($type = 'admin') {
$map['module'] = $type;
$list = db('AuthGroup')->where($map)->order('id desc')->paginate(10, false, array(
'query' => $this->request->param()
));
$data = array(
'list' => $list,
'page' => $list->render(),
'type' => $type,
);
$this->assign($data);
$this->setMeta('用户组管理');
return $this->fetch();
}
/**
* @title 添加用户组
*/
public function add($type = 'admin') {
if ($this->request->isPost()) {
$result = $this->group->change();
if ($result) {
return $this->success("添加成功!", url('admin/group/index'));
} else {
return $this->error("添加失败!");
}
} else {
$data = array(
'info' => array('module' => $type, 'status' => 1),
'keyList' => $this->group->keyList,
);
$this->assign($data);
$this->setMeta('添加用户组');
return $this->fetch('public/edit');
}
}
/**
* @title 编辑用户组
*/
public function edit($id) {
if (!$id) {
return $this->error("非法操作!");
}
if ($this->request->isPost()) {
$result = $this->group->change();
if ($result) {
return $this->success("编辑成功!", url('admin/group/index'));
} else {
return $this->error("编辑失败!");
}
} else {
$info = $this->group->where(array('id' => $id))->find();
$data = array(
'info' => $info,
'keyList' => $this->group->keyList,
);
$this->assign($data);
$this->setMeta('编辑用户组');
return $this->fetch('public/edit');
}
}
/**
* @title 编辑用户组单字段
*/
public function editable() {
$pk = input('pk', '', 'trim,intval');
$name = input('name', '', 'trim');
$value = input('value', '', 'trim');
$result = $this->group->where(array('id' => $pk))->setField($name, $value);
if ($result) {
return $this->success("删除成功!");
} else {
return $this->error("删除失败!");
}
}
/**
* @title 删除用户组
*/
public function del() {
$id = $this->getArrayParam('id');
if (empty($id)) {
return $this->error("非法操作!");
}
$result = $this->group->where(array('id' => array('IN', $id)))->delete();
if ($result) {
return $this->success("删除成功!");
} else {
return $this->error("删除失败!");
}
}
/**
* @title 权限节点
*/
public function access($type = 'admin') {
$map['module'] = $type;
$list = db('AuthRule')->where($map)->order('id desc')->paginate(15, false, array(
'query' => $this->request->param()
));
$data = array(
'list' => $list,
'page' => $list->render(),
'type' => $type,
);
$this->assign($data);
$this->setMeta('权限节点');
return $this->fetch();
}
/**
* @title 更新权限
*/
public function upnode($type) {
//$rule = model('Menu')->getAuthNodes($type);
$reuslt = $this->rule->uprule($type);
return $this->success("更新成功!");
}
/**
* @title 用户组授权
*/
public function auth($id) {
if (!$id) {
return $this->error("非法操作!");
}
if ($this->request->isPost()) {
$rule = $this->request->post('rule/a', array());
$extend_rule = $this->request->post('extend_rule/a', array());
$extend_result = $rule_result = false;
//扩展权限
$extend_data = array();
foreach ($extend_rule as $key => $value) {
foreach ($value as $item) {
$extend_data[] = array('group_id' => $id, 'extend_id' => $item, 'type' => $key);
}
}
if (!empty($extend_data)) {
db('AuthExtend')->where(array('group_id' => $id))->delete();
$extend_result = db('AuthExtend')->insertAll($extend_data);
}
if ($rule) {
$rules = implode(',', $rule);
$rule_result = $this->group->where(array('id' => $id))->setField('rules', $rules);
}
if ($rule_result !== false || $extend_result !== false) {
return $this->success("授权成功!", url('admin/group/index'));
} else {
return $this->error("授权失败!");
}
} else {
$group = $this->group->where(array('id' => $id))->find();
$map['module'] = $group['module'];
$row = db('AuthRule')->where($map)->order('id desc')->select();
$list = array();
foreach ($row as $key => $value) {
$list[$value['group']][] = $value;
}
//模块
$model = db('model')->field('id,title,name')
->where(array('status' => array('gt', 0)))
->select();
//扩展权限
$extend_auth = db('AuthExtend')->where(array('group_id' => $id, 'type' => 2))->column('extend_id');
$data = array(
'list' => $list,
'model' => $model,
'extend_auth' => $extend_auth,
'auth_list' => explode(',', $group['rules']),
'id' => $id,
);
$this->assign($data);
$this->setMeta('授权');
return $this->fetch();
}
}
/**
* @title 添加节点
*/
public function addnode($type = 'admin') {
if ($this->request->isPost()) {
$result = $this->rule->change();
if ($result) {
return $this->success("创建成功!", url('admin/group/access'));
} else {
return $this->error($this->rule->getError());
}
} else {
$data = array(
'info' => array('module' => $type, 'status' => 1),
'keyList' => $this->rule->keyList,
);
$this->assign($data);
$this->setMeta('添加节点');
return $this->fetch('public/edit');
}
}
/**
* @title 编辑节点
*/
public function editnode($id) {
if ($this->request->isPost()) {
$result = $this->rule->change();
if (false !== $result) {
return $this->success("更新成功!", url('admin/group/access'));
} else {
return $this->error("更新失败!");
}
} else {
if (!$id) {
return $this->error("非法操作!");
}
$info = $this->rule->find($id);
$data = array(
'info' => $info,
'keyList' => $this->rule->keyList,
);
$this->assign($data);
$this->setMeta('编辑节点');
return $this->fetch('public/edit');
}
}
/**
* @title 删除节点
*/
public function delnode($id) {
if (!$id) {
return $this->error("非法操作!");
}
$result = $this->rule->where(array('id' => $id))->delete();
if ($result) {
return $this->success("删除成功!");
} else {
return $this->error("删除失败!");
}
}
}
-106
View File
@@ -1,106 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 首页
* @description 后台首页
*/
class Index extends Admin {
/**
* @title 后台首页
* @return html
*/
public function index() {
$this->setMeta('后台首页');
return $this->fetch();
}
/**
* @title 用户登录
* @return html
*/
public function login($username = '', $password = '', $verify = '') {
if ($this->request->isPost()) {
if (!$username || !$password) {
return $this->error('用户名或者密码不能为空!', '');
}
//验证码验证
if(!captcha_check($verify)){
return $this->error('验证码错误!', '');
}
$user = model('Member');
$uid = $user->login($username, $password);
if ($uid > 0) {
return $this->success('登录成功!', url('admin/index/index'));
} else {
switch ($uid) {
case -1:$error = '用户不存在或被禁用!';
break; //系统级别禁用
case -2:$error = '密码错误!';
break;
default:$error = '未知错误!';
break; // 0-接口参数错误(调试阶段使用)
}
return $this->error($error, '');
}
} else {
return $this->fetch();
}
}
/**
* @title 后台退出
* @return html
*/
public function logout() {
$user = model('Member');
$user->logout();
$this->redirect('admin/index/login');
}
/**
* @title 清除缓存
* @return html
*/
public function clear() {
if ($this->request->isPost()) {
$clear = input('post.clear/a', array());
foreach ($clear as $key => $value) {
if ($value == 'cache') {
\think\Cache::clear(); // 清空缓存数据
} elseif ($value == 'log') {
\think\Log::clear();
}
}
return $this->success("更新成功!", url('admin/index/index'));
} else {
$keylist = array(
array('name' => 'clear', 'title' => '更新缓存', 'type' => 'checkbox', 'help' => '', 'option' => array(
'cache' => '缓存数据',
'log' => '日志数据',
),
),
);
$data = array(
'keyList' => $keylist,
);
$this->assign($data);
$this->setMeta("更新缓存");
return $this->fetch('public/edit');
}
}
}
-118
View File
@@ -1,118 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 友情链接
* @description 友情链接
*/
class Link extends Admin {
/**
* @title 链接列表
*/
public function index() {
$map = array();
$order = "id desc";
$list = db('Link')->where($map)->order($order)->paginate(10, false, array(
'query' => $this->request->param()
));
$data = array(
'list' => $list,
'page' => $list->render(),
);
$this->assign($data);
$this->setMeta("友情链接");
return $this->fetch();
}
/**
* @title 添加链接
*/
public function add() {
$link = model('Link');
if ($this->request->isPost()) {
$data = input('post.');
if ($data) {
unset($data['id']);
$result = $link->save($data);
if ($result) {
return $this->success("添加成功!", url('Link/index'));
} else {
return $this->error($link->getError());
}
} else {
return $this->error($link->getError());
}
} else {
$data = array(
'keyList' => $link->keyList,
);
$this->assign($data);
$this->setMeta("添加友链");
return $this->fetch('public/edit');
}
}
/**
* @title 修改链接
*/
public function edit() {
$link = model('Link');
$id = input('id', '', 'trim,intval');
if ($this->request->isPost()) {
$data = input('post.');
if ($data) {
$result = $link->save($data, array('id' => $data['id']));
if ($result) {
return $this->success("修改成功!", url('Link/index'));
} else {
return $this->error("修改失败!");
}
} else {
return $this->error($link->getError());
}
} else {
$map = array('id' => $id);
$info = db('Link')->where($map)->find();
$data = array(
'keyList' => $link->keyList,
'info' => $info,
);
$this->assign($data);
$this->setMeta("编辑友链");
return $this->fetch('public/edit');
}
}
/**
* @title 删除链接
*/
public function delete() {
$id = $this->getArrayParam('id');
if (empty($id)) {
return $this->error('非法操作!');
}
$link = db('Link');
$map = array('id' => array('IN', $id));
$result = $link->where($map)->delete();
if ($result) {
return $this->success("删除成功!");
} else {
return $this->error("删除失败!");
}
}
}
-263
View File
@@ -1,263 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 菜单管理
*/
class Menu extends Admin {
public function _initialize() {
parent::_initialize();
}
/**
* @title 菜单列表
*/
public function index() {
$map = array();
$title = trim(input('get.title'));
$list = db("Menu")->where($map)->field(true)->order('sort asc,id asc')->column('*', 'id');
int_to_string($list, array('hide' => array(1 => '是', 0 => '否'), 'is_dev' => array(1 => '是', 0 => '否')));
if (!empty($list)) {
$tree = new \com\Tree();
$list = $tree->toFormatTree($list);
}
// 记录当前列表页的cookie
Cookie('__forward__', $_SERVER['REQUEST_URI']);
$this->setMeta('菜单列表');
$this->assign('list', $list);
return $this->fetch();
}
/**
* @title 编辑菜单字段
*/
public function editable($name = null, $value = null, $pk = null) {
if ($name && ($value != null || $value != '') && $pk) {
db('Menu')->where(array('id' => $pk))->setField($name, $value);
}
}
/**
* @title 新增菜单
* @author yangweijie <yangweijiester@gmail.com>
*/
public function add() {
if ($this->request->isPost()) {
$Menu = model('Menu');
$data = input('post.');
$id = $Menu->save($data);
if ($id) {
session('admin_menu_list', null);
//记录行为
action_log('update_menu', 'Menu', $id, session('user_auth.uid'));
return $this->success('新增成功', Cookie('__forward__'));
} else {
return $this->error('新增失败');
}
} else {
$this->assign('info', array('pid' => input('pid')));
$menus = db('Menu')->select();
$tree = new \com\Tree();
$menus = $tree->toFormatTree($menus);
if (!empty($menus)) {
$menus = array_merge(array(0 => array('id' => 0, 'title_show' => '顶级菜单')), $menus);
} else {
$menus = array(0 => array('id' => 0, 'title_show' => '顶级菜单'));
}
$this->assign('Menus', $menus);
$this->setMeta('新增菜单');
return $this->fetch('edit');
}
}
/**
* @title 编辑配置
* @author yangweijie <yangweijiester@gmail.com>
*/
public function edit($id = 0) {
if ($this->request->isPost()) {
$Menu = model('Menu');
$data = input('post.');
if ($Menu->save($data, array('id' => $data['id'])) !== false) {
session('admin_menu_list', null);
//记录行为
action_log('update_menu', 'Menu', $data['id'], session('user_auth.uid'));
return $this->success('更新成功', Cookie('__forward__'));
} else {
return $this->error('更新失败');
}
} else {
$info = array();
/* 获取数据 */
$info = db('Menu')->field(true)->find($id);
$menus = db('Menu')->field(true)->select();
$tree = new \com\Tree();
$menus = $tree->toFormatTree($menus);
$menus = array_merge(array(0 => array('id' => 0, 'title_show' => '顶级菜单')), $menus);
$this->assign('Menus', $menus);
if (false === $info) {
return $this->error('获取后台菜单信息错误');
}
$this->assign('info', $info);
$this->setMeta('编辑后台菜单');
return $this->fetch();
}
}
/**
* @title 删除菜单
* @author yangweijie <yangweijiester@gmail.com>
*/
public function del() {
$id = $this->getArrayParam('id');
if (empty($id)) {
return $this->error('请选择要操作的数据!');
}
$map = array('id' => array('in', $id));
if (db('Menu')->where($map)->delete()) {
session('admin_menu_list', null);
//记录行为
action_log('update_menu', 'Menu', $id, session('user_auth.uid'));
return $this->success('删除成功');
} else {
return $this->error('删除失败!');
}
}
public function toogleHide($id, $value = 1) {
session('admin_menu_list', null);
$result = db('Menu')->where(array('id' => $id))->setField(array('hide' => $value));
if ($result !== false) {
return $this->success('操作成功!');
} else {
return $this->error('操作失败!');
}
}
public function toogleDev($id, $value = 1) {
session('admin_menu_list', null);
$result = db('Menu')->where(array('id' => $id))->setField(array('is_dev' => $value));
if ($result !== false) {
return $this->success('操作成功!');
} else {
return $this->error('操作失败!');
}
}
public function importFile($tree = null, $pid = 0) {
if ($tree == null) {
$file = APP_PATH . "Admin/Conf/Menu.php";
$tree = require_once $file;
}
$menuModel = D('Menu');
foreach ($tree as $value) {
$add_pid = $menuModel->add(
array(
'title' => $value['title'],
'url' => $value['url'],
'pid' => $pid,
'hide' => isset($value['hide']) ? (int) $value['hide'] : 0,
'tip' => isset($value['tip']) ? $value['tip'] : '',
'group' => $value['group'],
)
);
if ($value['operator']) {
$this->import($value['operator'], $add_pid);
}
}
}
public function import() {
if ($this->request->isPost()) {
$tree = input('post.tree');
$lists = explode(PHP_EOL, $tree);
$menuModel = db('Menu');
if ($lists == array()) {
return $this->error('请按格式填写批量导入的菜单,至少一个菜单');
} else {
$pid = input('post.pid');
foreach ($lists as $key => $value) {
$record = explode('|', $value);
if (count($record) == 4) {
$menuModel->add(array(
'title' => $record[0],
'url' => $record[1],
'pid' => $record[2],
'sort' => 0,
'hide' => 0,
'tip' => '',
'is_dev' => 0,
'group' => $record[3],
));
}
}
session('admin_menu_list', null);
return $this->success('导入成功', url('index?pid=' . $pid));
}
} else {
$this->setMeta('批量导入后台菜单');
$pid = (int) input('get.pid');
$this->assign('pid', $pid);
$data = db('Menu')->where("id={$pid}")->field(true)->find();
$this->assign('data', $data);
return $this->fetch();
}
}
/**
* @title 菜单排序
* @author huajie <banhuajie@163.com>
*/
public function sort() {
if ($this->request->isGet()) {
$ids = input('ids');
$pid = input('pid');
//获取排序的数据
$map = array('status' => array('gt', -1));
if (!empty($ids)) {
$map['id'] = array('in', $ids);
} else {
if ($pid !== '') {
$map['pid'] = $pid;
}
}
$list = db('Menu')->where($map)->field('id,title')->order('sort asc,id asc')->select();
$this->assign('list', $list);
$this->setMeta('菜单排序');
return $this->fetch();
} elseif ($this->request->isPost()) {
$ids = input('post.ids');
$ids = explode(',', $ids);
foreach ($ids as $key => $value) {
$res = db('Menu')->where(array('id' => $value))->setField('sort', $key + 1);
}
if ($res !== false) {
session('admin_menu_list', null);
return $this->success('排序成功!');
} else {
return $this->error('排序失败!');
}
} else {
return $this->error('非法请求!');
}
}
}
-157
View File
@@ -1,157 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 模型管理
*/
class Model extends Admin {
public function _initialize() {
parent::_initialize();
$this->getContentMenu();
$this->model = model('Model');
}
/**
* @title 模型列表
* @author huajie <banhuajie@163.com>
*/
public function index() {
$map = array('status' => array('gt', -1));
$order = "id desc";
$list = $this->model->where($map)->order($order)->paginate(10, false, array(
'query' => $this->request->param()
));
$data = array(
'list' => $list,
'page' => $list->render(),
);
// 记录当前列表页的cookie
Cookie('__forward__', $_SERVER['REQUEST_URI']);
$this->assign($data);
$this->setMeta('模型管理');
return $this->fetch();
}
/**
* @title 新增模型
* @author huajie <banhuajie@163.com>
*/
public function add(\think\Request $request) {
if ($this->request->isPost()) {
$result = $this->model->validate('Model.add')->save($request->post());
if (false !== $result) {
//记录行为
action_log('add_model', 'model', $result, session('auth_user.uid'));
$this->success('创建成功!', url('admin/model/index'));
} else {
return $this->error($this->model->getError() ? $this->model->getError() : '模型标识为保留名称!');
}
} else {
$this->setMeta('新增模型');
return $this->fetch();
}
}
/**
* @title 编辑模型
* @author molong <molong@tensent.cn>
*/
public function edit(\think\Request $request) {
if ($this->request->isPost()) {
$result = $this->model->validate('Model.edit')->save($request->post(), array('id' => $request->post('id')));
if (false !== $result) {
//记录行为
action_log('update_model', 'model', $request->post('id'), session('auth_user.uid'));
$this->success('更新成功!', url('admin/model/index'));
} else {
return $this->error($this->model->getError());
}
} else {
$info = $this->model->where('id', $request->param('id'))->find();
$field_group = parse_config_attr($info['attribute_group']);
//获取字段列表
$rows = db('Attribute')->where('model_id', $request->param('id'))->where('is_show', 1)->order('group_id asc, sort asc')->select();
if ($rows) {
// 梳理属性的可见性
foreach ($rows as $key => $field) {
$list[$field['group_id']][] = $field;
}
foreach ($field_group as $key => $value) {
$fields[$key] = isset($list[$key]) ? $list[$key] : array();
}
} else {
$fields = array();
}
$data = array(
'info' => $info,
'field_group' => $field_group,
'fields' => $fields,
);
$this->assign($data);
$this->setMeta('编辑模型');
return $this->fetch();
}
}
/**
* @title 删除模型
* @author huajie <banhuajie@163.com>
*/
public function del() {
$result = $this->model->del();
if ($result) {
return $this->success('删除模型成功!');
} else {
return $this->error($this->mdoel->getError());
}
}
public function update() {
$res = \think\Loader::model('Model')->change();
if ($res['status']) {
return $this->success($res['info'], url('index'));
} else {
return $this->error($res['info']);
}
}
/**
* @title 更新数据
* @author colin <colin@tensent.cn>
*/
public function status(\think\Request $request) {
$map['id'] = $request->param('id');
$data['status'] = $request->param('status');
if (null == $map['id'] || null == $data['status']) {
return $this->error('参数不正确!');
}
$model = $this->model->where($map)->find();
if ($model['list_grid'] == '' && $data['status'] == 1) {
return $this->error('模型列表未定义');
}
$result = $this->model->where($map)->update($data);
if (false !== $result) {
return $this->success('状态设置成功!');
} else {
return $this->error($this->model->getError());
}
}
}
-185
View File
@@ -1,185 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title SEO管理
*/
class Seo extends Admin {
protected $seo;
protected $rewrite;
public function _initialize() {
parent::_initialize();
$this->seo = model('SeoRule');
$this->rewrite = model('Rewrite');
}
/**
* @title SEO列表
*/
public function index($page = 1, $r = 20) {
//读取规则列表
$map = array('status' => array('EGT', 0));
$list = $this->seo->where($map)->order('sort asc')->paginate(10, false, array(
'query' => $this->request->param()
));
$data = array(
'list' => $list,
'page' => $list->render(),
);
$this->assign($data);
$this->setMeta("规则列表");
return $this->fetch();
}
/**
* @title 添加SEO
*/
public function add() {
if ($this->request->isPost()) {
$data = $this->request->post();
$result = $this->seo->save($data);
if ($result) {
return $this->success("添加成功!");
} else {
return $this->error("添加失败!");
}
} else {
$data = array(
'keyList' => $this->seo->keyList,
);
$this->assign($data);
$this->setMeta("添加规则");
return $this->fetch('public/edit');
}
}
/**
* @title 编辑SEO
*/
public function edit($id = null) {
if ($this->request->isPost()) {
$data = $this->request->post();
$result = $this->seo->save($data, array('id' => $data['id']));
if (false !== $result) {
return $this->success("修改成功!");
} else {
return $this->error("修改失败!");
}
} else {
$id = input('id', '', 'trim,intval');
$info = $this->seo->where(array('id' => $id))->find();
$data = array(
'info' => $info,
'keyList' => $this->seo->keyList,
);
$this->assign($data);
$this->setMeta("编辑规则");
return $this->fetch('public/edit');
}
}
/**
* @title 删除SEO
*/
public function del() {
$id = $this->getArrayParam('id');
if (empty($id)) {
return $this->error("非法操作!");
}
$result = $this->seo->where(array('id' => array('IN', $id)))->delete();
if ($result) {
return $this->success("删除成功!");
} else {
return $this->error("删除失败!");
}
}
/**
* @title 伪静态列表
*/
public function rewrite() {
$list = db('Rewrite')->paginate(10);
$data = array(
'list' => $list,
'page' => $list->render(),
);
$this->assign($data);
$this->setMeta("路由规则");
return $this->fetch();
}
/**
* @title 添加静态规则
*/
public function addrewrite() {
if ($this->request->isPost()) {
$result = model('Rewrite')->change();
if (false != $result) {
return $this->success("添加成功!", url('admin/seo/rewrite'));
} else {
return $this->error(model('Rewrite')->getError());
}
} else {
$data = array(
'keyList' => $this->rewrite->keyList,
);
$this->assign($data);
$this->setMeta("添加路由规则");
return $this->fetch('public/edit');
}
}
/**
* @title 编辑静态规则
*/
public function editrewrite() {
if ($this->request->isPost()) {
$result = model('Rewrite')->change();
if (false != $result) {
return $this->success("更新成功!", url('admin/seo/rewrite'));
} else {
return $this->error(model('Rewrite')->getError());
}
} else {
$id = input('id', '', 'trim,intval');
$info = db('Rewrite')->where(array('id' => $id))->find();
$data = array(
'info' => $info,
'keyList' => $this->rewrite->keyList,
);
$this->assign($data);
$this->setMeta("编辑路由规则");
return $this->fetch('public/edit');
}
}
/**
* @title 删除静态规则
*/
public function delrewrite() {
$id = $this->getArrayParam('id');
if (empty($id)) {
return $this->error("非法操作!");
}
$result = db('Rewrite')->where(array('id' => array('IN', $id)))->delete();
if ($result) {
return $this->success("删除成功!");
} else {
return $this->error("删除失败!");
}
}
}
-20
View File
@@ -1,20 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
class Upload extends Admin {
public function _empty() {
$controller = controller('common/Upload');
$action = $this->request->action();
return $controller->$action();
}
}
-278
View File
@@ -1,278 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\common\controller\Admin;
/**
* @title 用户管理
*/
class User extends Admin {
/**
* @title 用户列表
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
public function index() {
$param = $this->request->param();
$map['status'] = array('egt', 0);
if (isset($param['nickname']) && $param['nickname']) {
$map['nickname'] = array('like', '%' . $param['nickname'] . '%');
}
if (isset($param['username']) && $param['username']) {
$map['username'] = array('like', '%' . (string) $param['nickname'] . '%');
}
$order = "uid desc";
$list = model('Member')->where($map)->order($order)
->paginate(15, false, array(
'param' => $param
));
$data = array(
'list' => $list,
'page' => $list->render(),
'param' => $param
);
$this->assign($data);
$this->setMeta('用户信息');
return $this->fetch();
}
/**
* @title 添加用户
* @author colin <molong@tensent.cn>
*/
public function add() {
$model = \think\Loader::model('Member');
if ($this->request->isPost()) {
$data = $this->request->param();
//创建注册用户
$result = $model->register($data['username'], $data['password'], $data['repassword'], $data['email'], false);
if ($result) {
return $this->success('用户添加成功!', url('admin/user/index'));
} else {
return $this->error($model->getError());
}
} else {
$data = array(
'keyList' => $model->addfield,
);
$this->assign($data);
$this->setMeta("添加用户");
return $this->fetch('public/edit');
}
}
/**
* @title 修改用户
* @author huajie <banhuajie@163.com>
*/
public function edit() {
$model = model('Member');
if ($this->request->isPost()) {
$data = $this->request->post();
$reuslt = $model->editUser($data, true);
if (false !== $reuslt) {
return $this->success('修改成功!', url('admin/user/index'));
} else {
return $this->error($model->getError(), '');
}
} else {
$info = $this->getUserinfo();
$data = array(
'info' => $info,
'keyList' => $model->editfield,
);
$this->assign($data);
$this->setMeta("编辑用户");
return $this->fetch('public/edit');
}
}
/**
* @title 删除用户
* @author colin <colin@tensent.cn>
*/
public function del($id) {
$uid = array('IN', is_array($id) ? implode(',', $id) : $id);
//获取用户信息
$find = $this->getUserinfo($uid);
model('Member')->where(array('uid' => $uid))->delete();
return $this->success('删除用户成功!');
}
/**
* @title 用户授权
* @author colin <colin@tensent.cn>
*/
public function auth() {
$access = model('AuthGroupAccess');
$group = model('AuthGroup');
if ($this->request->isPost()) {
$uid = input('uid', '', 'trim,intval');
$access->where(array('uid' => $uid))->delete();
$group_type = config('user_group_type');
foreach ($group_type as $key => $value) {
$group_id = input($key, '', 'trim,intval');
if ($group_id) {
$add = array(
'uid' => $uid,
'group_id' => $group_id,
);
$access->save($add);
}
}
return $this->success("设置成功!");
} else {
$uid = input('id', '', 'trim,intval');
$row = $group::select();
$auth = $access::where(array('uid' => $uid))->select();
$auth_list = array();
foreach ($auth as $key => $value) {
$auth_list[] = $value['group_id'];
}
foreach ($row as $key => $value) {
$list[$value['module']][] = $value;
}
$data = array(
'uid' => $uid,
'auth_list' => $auth_list,
'list' => $list,
);
$this->assign($data);
$this->setMeta("用户分组");
return $this->fetch();
}
}
/**
* @title 获取某个用户的信息
* @var uid 针对状态和删除启用
* @var pass 是查询password
* @var errormasg 错误提示
* @author colin <colin@tensent.cn>
*/
private function getUserinfo($uid = null, $pass = null, $errormsg = null) {
$user = model('Member');
$uid = $uid ? $uid : input('id');
//如果无UID则修改当前用户
$uid = $uid ? $uid : session('user_auth.uid');
$map['uid'] = $uid;
if ($pass != null) {
unset($map);
$map['password'] = $pass;
}
$list = $user::where($map)->field('uid,username,nickname,sex,email,qq,score,signature,status,salt')->find();
if (!$list) {
return $this->error($errormsg ? $errormsg : '不存在此用户!');
}
return $list;
}
/**
* @title 修改昵称
* @author huajie <banhuajie@163.com>
*/
public function submitNickname() {
//获取参数
$nickname = input('post.nickname');
$password = input('post.password');
if (empty($nickname)) {
return $this->error('请输入昵称');
}
if (empty($password)) {
return $this->error('请输入密码');
}
//密码验证
$User = new UserApi();
$uid = $User->login(UID, $password, 4);
if ($uid == -2) {
return $this->error('密码不正确');
}
$Member = model('Member');
$data = $Member->create(array('nickname' => $nickname));
if (!$data) {
return $this->error($Member->getError());
}
$res = $Member->where(array('uid' => $uid))->save($data);
if ($res) {
$user = session('user_auth');
$user['username'] = $data['nickname'];
session('user_auth', $user);
session('user_auth_sign', data_auth_sign($user));
return $this->success('修改昵称成功!');
} else {
return $this->error('修改昵称失败!');
}
}
/**
* @title 修改密码初始化
* @author huajie <banhuajie@163.com>
*/
public function editpwd() {
if ($this->request->isPost()) {
$user = model('Member');
$data = $this->request->post();
$res = $user->editpw($data);
if ($res) {
return $this->success('修改密码成功!');
} else {
return $this->error($user->getError());
}
} else {
$this->setMeta('修改密码');
return $this->fetch();
}
}
/**
* @title 会员状态修改
* @author 朱亚杰 <zhuyajie@topthink.net>
*/
public function changeStatus($method = null) {
$id = array_unique((array) input('id', 0));
if (in_array(config('user_administrator'), $id)) {
return $this->error("不允许对超级管理员执行该操作!");
}
$id = is_array($id) ? implode(',', $id) : $id;
if (empty($id)) {
return $this->error('请选择要操作的数据!');
}
$map['uid'] = array('in', $id);
switch (strtolower($method)) {
case 'forbiduser':
$this->forbid('Member', $map);
break;
case 'resumeuser':
$this->resume('Member', $map);
break;
case 'deleteuser':
$this->delete('Member', $map);
break;
default:
return $this->error('参数非法');
}
}
}
-14
View File
@@ -1,14 +0,0 @@
<?php
return array(
'title'=> array('name' => 'title', 'title' => '标题', 'type' => 'text', 'length' => 200, 'extra' => '', 'remark' => '标题', 'is_show' => 1, 'is_must' => 1, 'value'=>''),
'category_id' => array('name' => 'category_id', 'title' => '栏目', 'type' => 'bind', 'length' => 10, 'extra' => 'category', 'remark' => '栏目', 'is_show' => 1, 'is_must' => 1, 'value'=>'0'),
'uid' => array('name' => 'uid', 'title' => '用户UID', 'type' => 'num', 'length' => 11, 'extra' => '', 'remark' => '用户UID', 'is_show' => 0, 'is_must' => 1, 'value'=>'0'),
'cover_id' => array('name' => 'cover_id', 'title' => '内容封面', 'type' => 'image', 'length' => 10, 'extra' => '', 'remark' => '内容封面', 'is_show' => 1, 'is_must' => 0, 'value'=>''),
'description' => array('name' => 'description', 'title' => '内容描述', 'type' => 'textarea', 'length' => '', 'extra' => '', 'remark' => '内容描述', 'is_show' => 1, 'is_must' => 0, 'value'=>''),
'content' => array('name' => 'content', 'title' => '内容', 'type' => 'editor', 'length' => '', 'extra' => '', 'remark' => '内容', 'is_show' => 1, 'is_must' => 0, 'value'=>''),
'status' => array('name' => 'status', 'title' => '数据状态', 'type' => 'select', 'length' => 2, 'extra' => "-1:删除\r\n0:禁用\r\n1:正常\r\n2:待审核\r\n3:草稿", 'remark' => '数据状态', 'is_show' => 1, 'is_must' => 1, 'value'=>'1'),
'is_top' => array('name' => 'is_top', 'title' => '是否置顶', 'type' => 'bool', 'length' => 2, 'extra' => '', 'remark' => '是否置顶', 'is_show' => 0, 'is_must' => 1, 'value'=>'0'),
'view' => array('name' => 'view', 'title' => '浏览数量', 'type' => 'num', 'length' => 11, 'extra' => '', 'remark' => '浏览数量', 'is_show' => 0, 'is_must' => 1, 'value'=>'0'),
'update_time' => array('name' => 'update_time', 'title' => '更新时间', 'type' => 'datetime', 'length' => 11, 'extra' => '', 'remark' => '更新时间', 'is_show' => 0, 'is_must' => 1, 'value'=>'0'),
'create_time' => array('name' => 'create_time', 'title' => '添加时间', 'type' => 'datetime', 'length' => 11, 'extra' => '', 'remark' => '添加时间', 'is_show' => 0, 'is_must' => 1, 'value'=>'0'),
);
-32
View File
@@ -1,32 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box no-header clearfix">
<header class="main-box-header clearfix">
<!-- 标题栏 -->
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
</div>
</header>
<div class="main-box-body clearfix">
<table class="table table-striped">
<thead>
<tr>
<th align="right">名称</th>
<th>信息</th>
</tr>
</thead>
<tbody>
{volist name="info" id="item"}
<tr>
<td align="right">{$key}</td>
<td>{$item}</td>
</tr>
{/volist}
</tbody>
</table>
</div>
</div>
{/block}
-67
View File
@@ -1,67 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box no-header clearfix">
<header class="main-box-header clearfix">
<!-- 标题栏 -->
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" id="action_add" href="{:url('add')}">新 增</a>
<button class="btn btn-success ajax-post" target-form="ids" url="{:url('setstatus?status=1')}" >启 用</button>
<button class="btn btn-default ajax-post" target-form="ids" url="{:url('setstatus?status=0')}">禁 用</button>
<button class="btn btn-danger ajax-post confirm" target-form="ids" url="{:url('del')}">删 除</button>
</div>
</header>
<div class="main-box-body clearfix">
<!-- 数据列表 -->
<table class="table table-striped">
<thead>
<tr>
<th class="row-selected row-selected">
<input class="check-all" type="checkbox"/>
</th>
<th class="">编号</th>
<th class="">标识</th>
<th class="">名称</th>
<th class="">类型</th>
<th class="">规则</th>
<th class="">状态</th>
<th class="">操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td>
<input class="ids" type="checkbox" name="id[]" value="{$vo['id']}" />
</td>
<td>{$vo.id}</td>
<td>{$vo.name}</td>
<td>
<a href="{:url('edit?id='.$vo['id'])}">{$vo.title}</a>
</td>
<td>
<span>{:get_action_type($vo['type'])}</span>
</td>
<td>{$vo.remark}</td>
<td>{$vo.status_text}</td>
<td>
<a href="{:url('edit?id='.$vo['id'])}">编辑</a>
{if $vo['status']}
<a href="{:url('setstatus',array('id'=> $vo['id'],'status'=>0))}" class="ajax-get">禁用</a>
{else/}
<a href="{:url('setstatus',array('id'=> $vo['id'],'status'=>1))}" class="ajax-get">启用</a>
{/if}
<a href="{:url('del' , array('id' => $vo['id']))}" class="confirm ajax-get">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
<!-- 分页 -->
{$page}
<!-- /分页 -->
</div>
</div>
{/block}
-49
View File
@@ -1,49 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box no-header clearfix">
<header class="main-box-header clearfix">
<!-- 标题栏 -->
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-warning ajax-get confirm" href="{:url('clear')}">清 空</a>
<button class="btn btn-danger ajax-post confirm" target-form="ids" url="{:url('dellog')}">删 除</button>
</div>
</header>
<div class="main-box-body clearfix">
<!-- 数据列表 -->
<table class="table table-striped">
<thead>
<tr>
<th class="row-selected row-selected"><input class="check-all" type="checkbox"/></th>
<th class="">编号</th>
<th class="">行为名称</th>
<th class="">执行者</th>
<th class="">执行时间</th>
<th class="">操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input class="ids" type="checkbox" name="id[]" value="{$vo['id']}" /></td>
<td>{$vo['id']} </td>
<td>{:get_action($vo['action_id'],'title')}</td>
<td>{:get_nickname($vo['user_id'])}</td>
<td><span>{$vo.create_time|time_format}</span></td>
<td><a href="{:url('detail?id='.$vo['id'])}">详细</a>
<a class="confirm ajax-get" href="{:url('dellog?id='.$vo['id'])}">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
<!-- 分页 -->
{$page}
<!-- /分页 -->
</div>
</div>
{/block}
-80
View File
@@ -1,80 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/libs/bootstrap-editable.css">
{/block}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{:url('add')}">新 增</a>
<button class="btn btn-danger ajax-post confirm" url="{:url('del')}" target-form="ids">删 除</button>
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th width="30"><input class="checkbox check-all" type="checkbox"></th>
<th width="60">ID</th>
<th width="180">名称</th>
<th width="140">标识</th>
<th width="180">创建时间</th>
<th width="180">更新时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$item['id']}"></td>
<td>{$item['id']}</td>
<td>{$item['title']}</td>
<td>{$item['name']}</td>
<td>{$item['create_time']|date='Y-m-d H:i',###}</td>
<td>{$item['update_time']|date='Y-m-d H:i',###}</td>
<td>
<a title="广告列表" href="{:url('lists?id='.$item['id'])}">广告列表</a>
<a title="移动" href="{:url('edit?id='.$item['id'])}">编辑</a>
<a title="删除" href="{:url('del?id='.$item['id'])}" class="confirm ajax-get">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
{$page}
</div>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript" src="__PUBLIC__/js/bootstrap-editable.min.js"></script>
<script type="text/javascript">
$(function() {
//点击排序
$('.item_sort').click(function(){
var url = $(this).attr('url');
var ids = $('.ids:checked');
var param = '';
if(ids.length > 0){
var str = new Array();
ids.each(function(){
str.push($(this).val());
});
param = str.join(',');
}
if(url != undefined && url != ''){
window.location.href = url + '/ids/' + param;
}
});
$.fn.editable.defaults.mode = 'popup';
$.fn.editableform.buttons = '<button type="submit" class="btn btn-success editable-submit btn-mini"><i class="fa fa-check-square-o fa-white"></i></button>' +
'<button type="button" class="btn editable-cancel btn-mini"><i class="fa fa-times"></i></button>';
$('.editable').editable();
});
</script>
{/block}
-50
View File
@@ -1,50 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/libs/bootstrap-editable.css">
{/block}
{block name="body"}
<div class="main-box no-header clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-success" href="{:url('addad?id='.$id)}"><i class="fa fa-plus-circle fa-lg"></i> 新 增</a>
<a class="btn btn-primary" href="{:url('index')}"><i class="fa fa-list fa-lg"></i> 广告位</a>
</div>
</header>
<div class="main-box-body clearfix">
<!-- 表格列表 -->
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th width="30"><input class="checkbox check-all" type="checkbox"></th>
<th width="60">ID</th>
<th width="280">标题</th>
<th width="280">创建时间</th>
<th width="280">更新时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$item.id}"></td>
<td>{$item['id']}</td>
<td>{$item['title']}</td>
<td>{$item['create_time']|date='Y-m-d H:i',###}</td>
<td>{$item['update_time']|date='Y-m-d H:i',###}</td>
<td>
<a href="{:url('editad?id='.$item['id'])}">编辑</a>
<a href="{:url('delad?id='.$item['id'])}" class="confirm ajax-get">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
</div>
<!-- /表格列表 -->
</div>
</div>
{/block}
-78
View File
@@ -1,78 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/libs/bootstrap-editable.css">
{/block}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
</div>
</header>
<div class="main-box-body clearfix">
<form method="post" class="form form-horizontal">
<div class="form-group">
<label class="col-lg-2 control-label">插件名</label>
<div class="col-lg-8 col-sm-10">
{:widget('common/Form/show',array(array('name'=>'title','title'=>'插件名','type'=>'text'),''))}
<div class="help-block">请输入插件名</div>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">插件标识名</label>
<div class="col-lg-8 col-sm-10">
{:widget('common/Form/show',array(array('name'=>'name','title'=>'插件标识名','type'=>'text'),''))}
<div class="help-block">请输入插件标识</div>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">插件版本</label>
<div class="col-lg-8 col-sm-10">
{:widget('common/Form/show',array(array('name'=>'version','title'=>'插件版本','type'=>'text'),''))}
<div class="help-block">请输入插件版本</div>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">插件作者</label>
<div class="col-lg-8 col-sm-10">
{:widget('common/Form/show',array(array('name'=>'author','title'=>'插件作者','type'=>'text'),''))}
<div class="help-block">请输入插件作者</div>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">插件描述</label>
<div class="col-lg-8 col-sm-10">
{:widget('common/Form/show',array(array('name'=>'description','title'=>'插件描述','type'=>'textarea'),''))}
<div class="help-block">请输入插件描述</div>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">是否启用</label>
<div class="col-lg-8 col-sm-10">
{:widget('common/Form/show',array(array('name'=>'is_open','title'=>'是否启用','type'=>'radio','option'=>array('1'=>'启用','0'=>'禁用')),''))}
<div class="help-block">请输入插件描述</div>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">是否需要配置</label>
<div class="col-lg-8 col-sm-10">
{:widget('common/Form/show',array(array('name'=>'has_config','title'=>'是否需要配置','type'=>'radio','option'=>array('1'=>'启用','0'=>'禁用')),''))}
<div class="help-block">请输入插件描述</div>
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="hidden" name="id" value="{$info['id']|default=''}">
<button class="btn btn-success submit-btn ajax-post" type="submit" target-form="form-horizontal">确 定</button>
<button class="btn btn-primary submit-btn" type="button">预 览</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
{block name="script"}
{/block}
-38
View File
@@ -1,38 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace addons\[name];
use common\controller\Addon;
/**
* [title]插件
* @author [author]
*/
class [name] extends Addon{
public $info = array(
'name'=>'[name]',
'title'=>'[title]',
'description'=>'[description]',
'status'=>[status],
'author'=>'[author]',
'version'=>'[version]'
);
//
public function install(){
return true;
}
public function uninstall(){
return true;
}
[hook]
}
-77
View File
@@ -1,77 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/libs/bootstrap-editable.css">
{/block}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{:url('addhook')}">新 增</a>
<button class="btn btn-danger ajax-post confirm" url="{:url('delhook')}" target-form="ids">删 除</button>
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th><input class="checkbox check-all" type="checkbox"></th>
<th>ID</th>
<th>名称</th>
<th>描述</th>
<th>类型</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="ids[]" value="{$item['id']}"></td>
<td>{$item['id']|default=0}</td>
<td>{$item['name']}</td>
<td>{$item['description']}</td>
<td>{$item['type_text']}</td>
<td>
<a href="{:url('edithook?id='.$item['id'])}">编辑</a>
<a href="{:url('delhook?id='.$item['id'])}" class="confirm ajax-get">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
{$page}
</div>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript" src="__PUBLIC__/js/bootstrap-editable.min.js"></script>
<script type="text/javascript">
$(function() {
//点击排序
$('.item_sort').click(function(){
var url = $(this).attr('url');
var ids = $('.ids:checked');
var param = '';
if(ids.length > 0){
var str = new Array();
ids.each(function(){
str.push($(this).val());
});
param = str.join(',');
}
if(url != undefined && url != ''){
window.location.href = url + '/ids/' + param;
}
});
$.fn.editable.defaults.mode = 'popup';
$.fn.editableform.buttons = '<button type="submit" class="btn btn-success editable-submit btn-mini"><i class="fa fa-check-square-o fa-white"></i></button>' +
'<button type="button" class="btn editable-cancel btn-mini"><i class="fa fa-times"></i></button>';
$('.editable').editable();
});
</script>
{/block}
-93
View File
@@ -1,93 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/libs/bootstrap-editable.css">
{/block}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-info" href="{:url('index?refresh=1')}">更 新</a>
<a class="btn btn-primary" href="{:url('add')}">新 增</a>
<button class="btn btn-danger ajax-post confirm" url="{:url('del')}" target-form="ids">删 除</button>
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th><input class="checkbox check-all" type="checkbox"></th>
<th>ID</th>
<th>名称</th>
<th>标识</th>
<th>描述</th>
<th>状态</th>
<th>作者</th>
<th>版本</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$item['id']}"></td>
<td>{$item['id']|default=0}</td>
<td>{$item['title']}</td>
<td>{$item['name']}</td>
<td>{$item['description']}</td>
<td>{$item['status_text']}</td>
<td>{$item['author']}</td>
<td>{$item['version']}</td>
<td>
{if !$item['isinstall']}
<a href="{:url('install?addon_name='.$item['name'])}" class="ajax-get">安装</a>
{else/}
<a href="{:url('uninstall?id='.$item['id'])}" class="confirm ajax-get">卸载</a>
{if $item['status']}
<a href="{:url('disable?id='.$item['id'])}" class="confirm ajax-get">禁用</a>
{else/}
<a href="{:url('enable?id='.$item['id'])}" class="confirm ajax-get">启用</a>
{/if}
<a href="{:url('config?id='.$item['id'])}">设置</a>
{/if}
</td>
</tr>
{/volist}
</tbody>
</table>
{$page}
</div>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript" src="__PUBLIC__/js/bootstrap-editable.min.js"></script>
<script type="text/javascript">
$(function() {
//点击排序
$('.item_sort').click(function(){
var url = $(this).attr('url');
var ids = $('.ids:checked');
var param = '';
if(ids.length > 0){
var str = new Array();
ids.each(function(){
str.push($(this).val());
});
param = str.join(',');
}
if(url != undefined && url != ''){
window.location.href = url + '/ids/' + param;
}
});
$.fn.editable.defaults.mode = 'popup';
$.fn.editableform.buttons = '<button type="submit" class="btn btn-success editable-submit btn-mini"><i class="fa fa-check-square-o fa-white"></i></button>' +
'<button type="button" class="btn editable-cancel btn-mini"><i class="fa fa-times"></i></button>';
$('.editable').editable();
});
</script>
{/block}
@@ -1,64 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-danger" href="{:url('add',array('model_id'=>$model_id))}"><i class="fa fa-plus"></i> 新 增</a>
<!-- <button class="btn btn-danger ajax-post confirm" url="{:url('del')}" target-form="ids"><i class="fa fa-remove"></i> 删 除</button> -->
<a class="btn btn-warning" href="{:url('Model/index')}"><i class="fa fa-reply"></i> 返回</a>
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th><input class="checkbox check-all" type="checkbox"></th>
<th>表单标题</th>
<th>字段名</th>
<th>字段类型</th>
<th>字段长度</th>
<th>默认值</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$item['id']}"></td>
<td>{$item['title']}</td>
<td>{$item['name']}</td>
<td>{$item['type_text']}</td>
<td>{$item['length']}</td>
<td>{$item['value']}</td>
<td>
<a href="{:url('edit',array('id'=>$item['id'], 'model_id'=>$model_id))}">编辑</a>
<a href="{:url('del',array('id'=>$item['id'], 'model_id'=>$model_id))}" class="confirm ajax-get">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
{$page}
</div>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript" src="__PUBLIC__/plugs/layer/layer.js"></script>
<script type="text/javascript">
$(function(){
$('.openDilog').click(function(){
layer.open({
type: 2,
title: false,
area: ['900px', '560px'],
content: $('.openDilog').attr('url')
});
});
})
</script>
{/block}
-192
View File
@@ -1,192 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{:isset($info['id'])?'编辑':'新增'}分类</h2>
</div>
</header>
<div class="main-box-body clearfix">
<form action="{:url()}" method="post" class="form form-horizontal">
<div class="tabs-wrapper">
<ul class="nav nav-tabs">
<li class="active">
<a href="#tab-base" data-toggle="tab">基 础</a>
</li>
<li><a href="#tab-better" data-toggle="tab">高 级</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane fade in active" id="tab-base">
<div class="form-group">
<label class="col-lg-2 control-label">上级分类</label>
<div class="col-lg-8">
<input type="hidden" name="pid" value="{$category['id']|default=0}">
<input type="text" class="form-control" disabled="disabled" value="{$category['title']|default='无'}"/>
<span class="help-block"></span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">分类名称</label>
<div class="col-lg-8">
<input type="text" name="title" class="form-control" value="{$info.title|default=''}">
<span class="help-block">(名称不能为空)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">分类标识</label>
<div class="col-lg-8">
<input type="text" name="name" class="form-control" value="{$info.name|default=''}">
<span class="help-block">(英文字母)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">分组定义</label>
<div class="col-lg-8">
<textarea name="groups" class="form-control">{$info.groups|default=''}</textarea>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">绑定模型</label>
<div class="col-lg-8">
<select name="model_id" class="form-control" style="width: auto;">
<option value="">--请选择--</option>
{volist name="model_list" id="item"}
<option value="{$item['id']}" {if isset($info['model_id']) && $info['model_id'] == $item['id']}selected{/if}>{$item['title']}</option>
{/volist}
</select>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">发布内容</label>
<div class="col-lg-8">
<label class="am-radio-inline"><input type="radio" name="allow_publish" value="0">不允许</label>
<label class="am-radio-inline"><input type="radio" name="allow_publish" value="1" checked>仅允许后台</label>
<label class="am-radio-inline"><input type="radio" name="allow_publish" value="2" >允许前后台</label>
<span class="help-block">(是否允许发布内容)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">
是否审核
</label>
<div class="col-lg-8">
<label class="am-radio-inline"><input type="radio" name="check" value="0" checked>不需要</label>
<label class="am-radio-inline"><input type="radio" name="check" value="1">需要</label>
<span class="help-block">(在该分类下发布的内容是否需要审核)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">分类图标</label>
<div class="col-lg-8">
{:widget('common/Form/show',array(array('name'=>'icon','type'=>'image'),$info))}
</div>
</div>
</div>
<div class="tab-pane fade" id="tab-better">
<div class="form-group">
<label class="col-lg-2 control-label">可见性</label>
<div class="col-lg-3">
<select name="display" class="form-control">
<option value="1">所有人可见</option>
<option value="0">不可见</option>
<option value="2">管理员可见</option>
</select>
<span class="help-block">(是否对用户可见,针对前台)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">排序</label>
<div class="col-lg-2">
<input type="text" name="sort" class="form-control" value="{$info.sort|default=0}">
<span class="help-block">(仅对当前层级分类有效)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">列表行数</label>
<div class="col-lg-5">
<input type="text" name="list_row" class="form-control" value="{$info.list_row|default=10}">
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">网页标题</label>
<div class="col-lg-8">
<input type="text" name="meta_title" class="form-control" value="{$info.meta_title|default=''}">
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">关键字</label>
<div class="col-lg-8">
<textarea class="form-control" name="keywords">{$info.keywords|default=''}</textarea>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">描述</label>
<div class="col-lg-8">
<textarea class="form-control" name="description">{$info.description|default=''}</textarea>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">频道模板</label>
<div class="col-lg-8">
<input type="text" name="template_index" class="form-control" value="{$info.template_index|default=''}">
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">列表模板</label>
<div class="col-lg-8">
<input type="text" name="template_lists" class="form-control" value="{$info.template_lists|default=''}">
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">详情模板</label>
<div class="col-lg-8">
<input type="text" name="template_detail" class="form-control" value="{$info.template_detail|default=''}">
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">编辑模板</label>
<div class="col-lg-8">
<input type="text" name="template_edit" class="form-control" value="{$info.template_edit|default=''}">
</div>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="hidden" name="id" value="{$info['id']|default=''}">
<button type="submit" class="btn btn-success submit-btn ajax-post" target-form="form">确认提交</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
{block name="script"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/plugs/webuploader/webuploader.css">
<script type="text/javascript" src="__PUBLIC__/plugs/webuploader/webuploader.min.js"></script>
<script type="text/javascript" src="__PUBLIC__/plugs/webuploader/webuploader.custom.js"></script>
<script type="text/javascript">
{present name="info['id']"}
Sent.setValue("allow_publish", {$info.allow_publish|default=1});
Sent.setValue("check", {$info.check|default=0});
Sent.setValue("model[]", {$info.model|json_encode} || [1]);
Sent.setValue("model_sub[]", {$info.model_sub|json_encode} || [1]);
Sent.setValue("type[]", {$info.type|json_encode} || [2]);
Sent.setValue("display", {$info.display|default=1});
Sent.setValue("reply", {$info.reply|default=0});
Sent.setValue("reply_model[]", {$info.reply_model|json_encode} || [1]);
{/present}
$(function(){
$("input[name=reply]").change(function(){
var $reply = $(".form-group.reply");
parseInt(this.value) ? $reply.show() : $reply.hide();
}).filter(":checked").change();
});
</script>
{/block}
@@ -1,114 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<!-- datepicker end -->
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>
生成到导航
</h2>
</div>
</header>
<div class="main-box-body clearfix">
<form method="post" class="form form-horizontal">
<div class="form-group">
<label class="col-lg-2 control-label">导航标题</label>
<div class="col-lg-6">
<input type="text" class="form-control" name="title" value="{$info.title|default=''}">
<span class="help-block">(用于显示的文字)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">当前标识</label>
<div class="col-lg-6">
<input type="text" class="form-control" name="active" value="{$info.active|default=''}">
<span class="help-block">(当前标识)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">导航连接</label>
<div class="col-lg-8">
<input type="text" class="form-control" name="url" value="{$info.url|default=''}">
<span class="help-block">(用于调转的URL,支持带http://的URL或U函数参数格式)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">导航类型</label>
<div class="col-lg-8">
<select name="type" id="type" class="form-control" style="width:auto;">
{volist name=":config('nav_type_list')" id="item"}
<option value="{$key}" {if isset($info['type']) && $info['type'] == $key}selected{/if}>{$item}</option>
{/volist}
</select>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">父导航</label>
<div class="col-lg-5">
<select name="pid" class="form-control" style="width:auto;">
<option value="0">--一级导航--</option>
{volist name=":parse_field_bind('Channel',$data['pid'],'')" id="item"}
{if condition="$item['id'] neq $data['id']"}
<option value="{$item['id']}" {if condition="$pid eq $item['id']"}selected{/if}>{$item['title_show']}</option>
{/if}
{/volist}
</select>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">新窗口打开</label>
<div class="col-lg-2">
<select name="target" class="form-control" style="width:auto;">
<option value="0" ></option>
<option value="1" {eq name="data.target" value="1"}selected{/eq}></option>
</select>
<span class="help-block">(是否新窗口打开链接)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">图标</label>
<div class="col-lg-2">
<input type="text" class="form-control" name="icon" value="{$info.icon|default=''}">
<span class="help-block">输入图标英文</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">优先级</label>
<div class="col-lg-2">
<input type="text" class="form-control" name="sort" value="{$info.sort|default='1'}">
<span class="help-block">(导航显示顺序)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">文字颜色</label>
<div class="col-lg-2">
<input type="text" class="form-control" name="color" value="{$info['color']|default=''}">
<span class="help-block">(右上角的标志点颜色,支持各类css表示方式)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">标志点颜色</label>
<div class="col-lg-2">
<input type="text" class="form-control" name="band_color" value="{$info['band_color']|default=''}">
<span class="help-block">(右上角的标志点颜色,支持各类css表示方式)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">标志点文字</label>
<div class="col-lg-3">
<input type="text" class="form-control" name="band_text" value="{$info['band_text']|default=''}">
<span class="help-block">(右上角的标志点文字,不要太长,没有自动隐藏)</span>
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="hidden" name="id" value="{$data.id|default=''}">
<button class="btn btn-success submit-btn ajax-post" type="submit" target-form="form-horizontal">确 定</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
-103
View File
@@ -1,103 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/libs/bootstrap-editable.css">
{/block}
{block name="body"}
<div class="main-box no-header clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{:url('add')}"><i class="fa fa-plus-circle fa-lg"></i> 新 增</a>
</div>
</header>
<div class="main-box-body clearfix">
<!-- 表格列表 -->
<div class="table-responsive clearfix">
<div class="tabs-wrapper">
<ul class="nav nav-tabs">
<li {if $model_id == ''}class="active"{/if}><a href="{:url('admin/category/index')}">全部</a></li>
{volist name="model_list" id="item"}
<li {if $item['id'] == $model_id}class="active"{/if}>
<a href="{:url('admin/category/index',array('model_id'=>$item['id']))}">{$item['title']}</a>
</li>
{/volist}
</ul>
<div class="tab-content">
<div class="tab-pane fade in active" id="tab-home">
<table class="table table-hover">
<thead>
<tr>
<th width="30"><input class="checkbox check-all" type="checkbox"></th>
<th width="60">ID</th>
<th>名称</th>
<th width="120">排序</th>
<th width="120">发布</th>
<th width="120">状态</th>
<th width="120">生成导航</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="tree" id="list"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$list.id}"></td>
<td>{$list['id']}</td>
<td>
{$list['level_show']}
<a href="#" class="editable editable-click" data-id="{$list['id']}" data-name="title" data-type="text" data-pk="{$list['id']}" data-url="{:url('editable')}">{$list['title']}</a>
<a class="add-sub-cate" title="添加子分类" href="{:url('add?pid='.$list['id'])}">
<i class="fa fa-plus-square"></i>
</a>
</td>
<td><a href="#" class="editable editable-click" data-id="{$list['id']}" data-name="sort" data-type="text" data-pk="{$list['id']}" data-url="{:url('editable')}">{$list['sort']}</a></td>
<td>{$list['allow_publish']?'是':'否'}</td>
<td>
{if $list['status']}
<span class="label label-primary">启用</span>
{else/}
<span class="label label-danger">禁用</span>
{/if}
</td>
<td>
{if $list['ismenu']}
<a href="{:url('admin/channel/del?id='.$list['ismenu'])}" class="ajax-get"><span class="label label-primary">已生成</span></a>
{else/}
<a href="{:url('add_channel?title='.$list['title'].'&model_id='.$list['model_id'].'&active='.$list['name'].'&mid='.$list['id'])}" ><span class="label label-danger">未生成</span></a>
{/if}
</td>
<td>
<a title="编辑" href="{:url('edit?id='.$list['id'].'&pid='.$list['pid'])}">编辑</a>
{if $list['status']}
<a href="{:url('status?id='.$list['id'].'&status=0')}" class="ajax-get">禁用</a>
{else/}
<a href="{:url('status?id='.$list['id'].'&status=1')}" class="ajax-get">启用</a>
{/if}
<a title="删除" href="{:url('remove?id='.$list['id'])}" class="confirm ajax-get">删除</a>
<a title="移动" href="{:url('operate?type=move&from='.$list['id'])}">移动</a>
<a title="合并" href="{:url('operate?type=merge&from='.$list['id'])}">合并</a>
</td>
</tr>
{/volist}
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- /表格列表 -->
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript" src="__PUBLIC__/js/bootstrap-editable.min.js"></script>
<script type="text/javascript">
$(function(){
$.fn.editable.defaults.mode = 'popup';
$.fn.editableform.buttons = '<button type="submit" class="btn btn-success editable-submit btn-mini"><i class="fa fa-check-square-o fa-white"></i></button>' +
'<button type="button" class="btn editable-cancel btn-mini"><i class="fa fa-times"></i></button>';
$('.editable').editable();
})
</script>
{/block}
@@ -1,37 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$operate}分类</h2>
</div>
</header>
<div class="main-box-body clearfix">
<form action="{:url($type)}" method="post" class="form form-horizontal">
<div id="tab1" class="tab-pane in tab1">
<div class="form-group">
<label class="col-lg-2 control-label">目标分类</label>
<div class="col-lg-5">
<select name="to" class="form-control">
{volist name="list" id="vo"}
<option value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
<span class="help-block">(将{$operate}至的分类)</span>
</div>
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="hidden" name="from" value="{$from}">
<button type="submit" class="btn btn-success submit-btn ajax-post" target-form="form">确认提交</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
-114
View File
@@ -1,114 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>
{$info['id']?'编辑':'新增'}导航
</h2>
</div>
</header>
<div class="main-box-body clearfix">
<form method="post" class="form form-horizontal">
<div class="form-group">
<label class="col-lg-2 control-label">导航标题</label>
<div class="col-lg-6">
<input type="text" class="form-control" name="title" value="{$info.title|default=''}">
<span class="help-block">(用于显示的文字)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">当前标识</label>
<div class="col-lg-6">
<input type="text" class="form-control" name="active" value="{$info.active|default=''}">
<span class="help-block">(当前标识)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">导航连接</label>
<div class="col-lg-8">
<input type="text" class="form-control" name="url" value="{$info.url|default=''}">
<span class="help-block">(用于调转的URL,支持带http://的URL或U函数参数格式)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">导航类型</label>
<div class="col-lg-8">
<select name="type" id="type" class="form-control" style="width:auto;">
{volist name=":config('nav_type_list')" id="item"}
<option value="{$key}" {if isset($info['type']) && $info['type'] == $key}selected{/if}>{$item}</option>
{/volist}
</select>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">父导航</label>
<div class="col-lg-5">
<select name="pid" class="form-control" style="width:auto;">
<option value="0">--一级导航--</option>
{volist name=":parse_field_bind('Channel',$info['pid'], 0)" id="item"}
{if condition="$item['id'] neq $info['id']"}
<option value="{$item['id']}" {if condition="$pid eq $item['id']"}selected{/if}>{$item['title_show']}</option>
{/if}
{/volist}
</select>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">新窗口打开</label>
<div class="col-lg-2">
<select name="target" class="form-control" style="width:auto;">
<option value="0" ></option>
<option value="1" {eq name="info.target" value="1"}selected{/eq}>
</option>
</select>
<span class="help-block">(是否新窗口打开链接)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">图标</label>
<div class="col-lg-2">
<input type="text" class="form-control" name="icon" value="{$info.icon|default=''}">
<span class="help-block">输入图标英文</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">优先级</label>
<div class="col-lg-2">
<input type="text" class="form-control" name="sort" value="{$info.sort|default='1'}">
<span class="help-block">(导航显示顺序)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">文字颜色</label>
<div class="col-lg-2">
<input type="text" class="form-control" name="color" value="{$info['color']|default=''}">
<span class="help-block">(右上角的标志点颜色,支持各类css表示方式)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">标志点颜色</label>
<div class="col-lg-2">
<input type="text" class="form-control" name="band_color" value="{$info['band_color']|default=''}">
<span class="help-block">(右上角的标志点颜色,支持各类css表示方式)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">标志点文字</label>
<div class="col-lg-3">
<input type="text" class="form-control" name="band_text" value="{$info['band_text']|default=''}">
<span class="help-block">(右上角的标志点文字,不要太长,没有自动隐藏)</span>
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="hidden" name="id" value="{$info.id|default=''}">
<button class="btn btn-success submit-btn ajax-post" type="submit" target-form="form-horizontal">确 定</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
-106
View File
@@ -1,106 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/libs/bootstrap-editable.css">
{/block}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{:url('add')}">新 增</a>
<button class="btn btn-danger ajax-post confirm" url="{:url('del')}" target-form="ids">删 除</button>
<button class="btn btn-success list_sort" url="{:url('sort')}">排序</button>
</div>
</header>
<div class="main-box-body clearfix">
<div class="tabs-wrapper">
<ul class="nav nav-tabs">
<li {if 0 eq $type}class="active"{/if}><a href="{:url('admin/channel/index',array('type'=>0))}">全部</a></li>
{volist name=":config('nav_type_list')" id="item"}
<li {if $key eq $type}class="active"{/if}>
<a href="{:url('admin/channel/index',array('type'=>$key))}">{$item}</a>
</li>
{/volist}
</ul>
<div class="tab-content">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th width="30"><input class="checkbox check-all" type="checkbox"></th>
<th width="60">ID</th>
<th>名称</th>
<th>URL</th>
<th width="120">排序</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="tree" id="list"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$list.id}"></td>
<td>{$list['id']}</td>
<td>
{$list['level_show']}
<a href="#" class="editable editable-click" data-id="{$list['id']}" data-name="title" data-type="text" data-pk="{$list['id']}" data-url="{:url('editable')}">{$list['title']} </a>
<a class="add-sub-cate" title="添加子分类" href="{:url('add?pid='.$list['id'])}">
<i class="fa fa-plus-square"></i>
</a>
</td>
<td>{$list['url']}</td>
<td><a href="#" class="editable editable-click" data-id="{$list['id']}" data-name="sort" data-type="text" data-pk="{$list['id']}" data-url="{:url('editable')}">{$list['sort']}</a></td>
<td>
{if $list['status']}
<span class="label label-primary">{$list.status|get_status_title}</span>
{else/}
<span class="label label-danger">{$list.status|get_status_title}</span>
{/if}
</td>
<td>
<a title="编辑" href="{:url('edit?id='.$list['id'].'&pid='.$list['pid'])}">编辑</a>
<a title="{$list.status|show_status_op}" href="{:url('setStatus?ids='.$list['id'].'&status='.abs(1-$list['status']))}" class="ajax-get">{$list.status|show_status_op}</a>
<a title="删除" href="{:url('del?id='.$list['id'])}" class="confirm ajax-get">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript" src="__PUBLIC__/js/bootstrap-editable.min.js"></script>
<script type="text/javascript">
$(function() {
//点击排序
$('.list_sort').click(function(){
var url = $(this).attr('url');
var ids = $('.ids:checked');
var param = '';
if(ids.length > 0){
var str = new Array();
ids.each(function(){
str.push($(this).val());
});
param = str.join(',');
}
if(url != undefined && url != ''){
window.location.href = url + '/ids/' + param;
}
});
$.fn.editable.defaults.mode = 'popup';
$.fn.editableform.buttons = '<button type="submit" class="btn btn-success editable-submit btn-mini"><i class="fa fa-check-square-o fa-white"></i></button>' +
'<button type="button" class="btn editable-cancel btn-mini"><i class="fa fa-times"></i></button>';
$('.editable').editable();
});
</script>
{/block}
-112
View File
@@ -1,112 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>菜单排序 [ <a href="{:url('index',array('pid'=>input('pid')))}">返回列表</a> ]</h2>
</div>
</header>
<div class="main-box-body clearfix">
<form action="{:url('sort')}" method="post" class="form form-horizontal">
<div class="form-group">
<div class="col-lg-2">
<select value="" size="8" class="form-control">
{volist name="list" id="vo"}
<option class="ids" title="{$vo.title}" value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
</div>
<div class="col-lg-2">
<button class="top btn btn-primary btn-block" type="button"><i class="fa fa-arrow-up"></i> 第 一</button>
<button class="up btn btn-primary btn-block" type="button"><i class="fa fa-chevron-up"></i> 上 移</button>
<button class="down btn btn-primary btn-block" type="button"><i class="fa fa-chevron-down"></i> 下 移</button>
<button class="bottom btn btn-primary btn-block" type="button"><i class="fa fa-arrow-down"></i> 最 后</button>
</div>
</div>
<div class="sort_bottom form-group">
<div class="col-lg-12">
<input type="hidden" name="ids">
<button class="sort_confirm btn btn-primary submit-btn" type="button">确 定</button>&nbsp;
<button class="sort_cancel btn btn-dafault btn-return" type="button" url="{$Think.cookie.__forward__}">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript">
$(function(){
sort();
$(".top").click(function(){
rest();
$("option:selected").prependTo("select");
sort();
})
$(".bottom").click(function(){
rest();
$("option:selected").appendTo("select");
sort();
})
$(".up").click(function(){
rest();
$("option:selected").after($("option:selected").prev());
sort();
})
$(".down").click(function(){
rest();
$("option:selected").before($("option:selected").next());
sort();
})
$(".search").click(function(){
var v = $("input").val();
$("option:contains("+v+")").attr('selected','selected');
})
function sort(){
$('option').text(function(){return ($(this).index()+1)+'.'+$(this).text()});
}
//重置所有option文字。
function rest(){
$('option').text(function(){
return $(this).text().split('.')[1]
});
}
//获取排序并提交
$('.sort_confirm').click(function(){
var arr = new Array();
$('.ids').each(function(){
arr.push($(this).val());
});
$('input[name=ids]').val(arr.join(','));
$.post(
$('form').attr('action'),
{
'ids' : arr.join(',')
},
function(data){
if (data.code) {
updateAlert(data.msg + ' 页面即将自动跳转~','alert-success');
}else{
updateAlert(data.msg,'alert-success');
}
setTimeout(function(){
if (data.code) {
$('.sort_cancel').click();
}
},1500);
},
'json'
);
});
//点击取消按钮
$('.sort_cancel').click(function(){
window.location.href = $(this).attr('url');
});
})
</script>
{/block}
-44
View File
@@ -1,44 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
</div>
</header>
<div class="main-box-body clearfix">
<form method="post" class="form form-horizontal">
<div class="form-group">
<label class="col-md-2 control-label">客户端名称</label>
<div class="col-md-10">
<input type="text" class="form-control" style="width:400px;" name="title" value="{$info['title']|default=''}">
<span class="help-block"></span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">APPID</label>
<div class="col-md-10">
<input type="text" class="form-control" style="width:400px;" name="appid" value="{$info['appid']|default=''}">
<span class="help-block"></span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">APPSECRET</label>
<div class="col-md-10">
<input type="text" class="form-control" style="width:400px;" name="appsecret" value="{$info['appsecret']|default=''}">
<span class="help-block"></span>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="hidden" name="id" value="{$info['id']|default=''}">
<button class="btn btn-success submit-btn ajax-post" type="submit" target-form="form-horizontal">确 定</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
-48
View File
@@ -1,48 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{:url('add')}">新 增</a>
<button class="btn btn-danger ajax-post confirm" url="{:url('del')}" target-form="ids">删 除</button>
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th>ID</th>
<th>名称</th>
<th>APPID</th>
<th>APPSECRET</th>
<th>创建时间</th>
<th>更新时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<td>{$item['id']}</td>
<td>{$item['title']}</td>
<td>{$item['appid']}</td>
<td>{$item['appsecret']}</td>
<td>{$item['create_time']}</td>
<td>{$item['update_time']}</td>
<td>
<a href="{:url('client/edit?id='.$item['id'])}">编辑</a>
<a href="{:url('client/del?id='.$item['id'])}" class="ajax-post confirm">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
{$page}
</div>
</div>
</div>
{/block}
-88
View File
@@ -1,88 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>配置管理</h2>
</div>
</header>
<div class="main-box-body clearfix">
<form method="post" class="form form-horizontal">
<div class="form-group">
<label class="col-lg-2 control-label">配置标识</label>
<div class="col-lg-10">
<input type="text" class="form-control" style="width: 400px" name="name" value="{$info.name|default=''}">
<span class="help-block">(用于config函数调用,只能使用英文且不能重复)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">配置标题</label>
<div class="col-lg-10">
<input type="text" class="form-control" style="width:400px;" name="title" value="{$info.title|default=''}">
<span class="help-block">(用于后台显示的配置标题)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">排序</label>
<div class="col-lg-10">
<input type="text" class="form-control" style="width: 400px" name="sort" value="{$info.sort|default=0}">
<span class="help-block">(用于分组显示的顺序)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">配置类型</label>
<div class="col-lg-10">
<select name="type" class="form-control" style="width:auto;">
{volist name=":config('config_type_list')" id="type"}
<option value="{$key}" {eq name="key" value="$info['type']"}selected{/eq}>{$type}</option>
{/volist}
</select>
<span class="help-block">(系统会根据不同类型解析配置值)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">配置分组</label>
<div class="col-lg-10">
<select name="group" class="form-control" style="width: auto">
<option value="0">不分组</option>
{volist name=":config('config_group_list')" id="group"}
<option value="{$key}" {eq name="key" value="$info['group']"}selected{/eq}>{$group}</option>
{/volist}
</select>
<span class="help-block">(配置分组 用于批量设置 不分组则不会显示在系统设置中)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">配置值</label>
<div class="col-lg-10">
<textarea name="value" class="form-control" style="width: 80%;height: 120px">{$info.value|default=''}</textarea>
<span class="help-block">(配置值)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">配置项</label>
<div class="col-lg-10">
<textarea name="extra" class="form-control" style="width: 80%;height: 120px">{$info.extra|default=''}</textarea>
<span class="help-block">(如果是枚举型 需要配置该项)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">说明</label>
<div class="col-lg-10">
<textarea name="remark" class="form-control" style="width: 80%;height: 120px">{$info.remark|default=''}</textarea>
<span class="help-block">(配置详细说明)</span>
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="hidden" name="id" value="{$info.id|default=''}">
<button class="btn btn-success submit-btn ajax-post" type="submit" target-form="form-horizontal">确 定</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
-86
View File
@@ -1,86 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>配置管理</h2>
</div>
<div class="pull-right">
<a href="{:url('Config/index')}" class="btn btn-primary">
<i class="fa fa-list"></i>
配置列表
</a>
<a href="{:url('Config/add')}" class="btn btn-danger">
<i class="fa fa-list"></i>
添加配置
</a>
</div>
</header>
<div class="main-box-body clearfix">
<div class="tabs-wrapper">
<ul class="nav nav-tabs">
{volist name=":config('config_group_list')" id="item"}
<li {if condition="$key eq $id"}class="active"{/if}>
<a href="{:url('Config/group',array('id'=>$key))}">{$item}</a>
</li>
{/volist}
</ul>
<div class="tab-content">
<div class="tab-pane fade in active" id="tab-home">
<form method="post" class="form form-horizontal" role="form">
{volist name="list" id="item"}
<div class="form-group">
<label for="inputEmail1" class="col-lg-2 control-label">{$item['title']}</label>
<div class="col-lg-10">
{switch name="item['type']"}
{case value="text"}
<input type="text" class="form-control" name="config[{$item['name']}]" id="config[{$item['name']}]" value="{$item['value']}" placeholder="{$item['title']}" style="width:50%;">
{/case}
{case value="num"}
<input type="text" class="form-control" name="config[{$item['name']}]" id="config[{$item['name']}]" value="{$item['value']}" placeholder="{$item['title']}" style="width:30%;">
{/case}
{case value="string"}
<input type="text" class="form-control" name="config[{$item['name']}]" id="config[{$item['name']}]" value="{$item['value']}" placeholder="{$item['title']}" style="width:80%;">
{/case}
{case value="textarea"}
<textarea class="form-control" name="config[{$item['name']}]" id="config[{$item['name']}]" style="width:80%; height:120px;">{$item['value']}</textarea>
{/case}
{case value="select"}
<select class="form-control" name="config[{$item['name']}]" id="config[{$item['name']}]" style="width:auto;">
{volist name=":parse_config_attr($item['extra'])" id="vo"}
<option value="{$key}" {eq name="item['value']" value="$key"}selected{/eq}>{$vo}</option>
{/volist}
</select>
{/case}
{case value="bool"}
<select class="form-control" name="config[{$item['name']}]" id="config[{$item['name']}]" style="width:auto;">
{volist name=":parse_config_attr($item['extra'])" id="vo"}
<option value="{$key}" {eq name="item['value']" value="$key"}selected{/eq}>{$vo}</option>
{/volist}
</select>
{/case}
{case value="image"}
{:widget('common/Form/showConfig',array($item,$item))}
{/case}
{/switch}
{if condition="$item['remark']"}
<span class="help-block">{$item['remark']}</span>
{/if}
</div>
</div>
{/volist}
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<button type="submit" class="btn btn-success submit-btn ajax-post" target-form="form">确认提交</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
{/block}
-118
View File
@@ -1,118 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>网站设置</h2>
</div>
<div class="pull-right">
<a href="{:url('Config/group')}" class="btn btn-danger">
<i class="fa fa-list"></i>
配置管理
</a>
<a href="{:url('Config/add')}" class="btn btn-danger">
<i class="fa fa-plus"></i>
添加配置
</a>
</div>
</header>
<div class="main-box-body clearfix">
<div class="tabs-wrapper">
<ul class="nav nav-tabs">
<li {if condition="!$group_id"}class="active"{/if}><a href="{:url('index')}">全部</a></li>
{volist name="group" id="item"}
<li {if condition="$group_id eq $key"}class="active"{/if}>
<a href="{:url('index?group='.$key)}">{$item}</a>
</li>
{/volist}
</ul>
<div class="tab-content">
<div class="tab-pane fade in active">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th class="row-selected">
<input class="checkbox check-all" type="checkbox">
</th>
<th>ID</th>
<th>名称</th>
<th>标题</th>
<th>分组</th>
<th>类型</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{notempty name="list"}
{volist name="list" id="config"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$config.id}"></td>
<td>{$config.id}</td>
<td><a href="{:url('edit?id='.$config['id'])}">{$config.name}</a></td>
<td>{$config.title}</td>
<td>{$group[$config['group']]|default=''}</td>
<td>{$config['type_text']}</td>
<td>
<a title="编辑" href="{:url('edit?id='.$config['id'])}">编辑</a>
<a class="confirm ajax-get" title="删除" href="{:url('del?id='.$config['id'])}">删除</a>
</td>
</tr>
{/volist}
{else/}
<td colspan="7" class="text-center"> aOh! 暂时还没有内容!</td>
{/notempty}
</tbody>
</table>
</div>
{$page}
</div>
</div>
</div>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript">
$(function () {
//搜索功能
$("#search").click(function () {
var url = $(this).attr('url');
var query = $('.search-form').find('input').serialize();
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g, '');
query = query.replace(/^&/g, '');
if (url.indexOf('?') > 0) {
url += '&' + query;
} else {
url += '?' + query;
}
window.location.href = url;
});
//回车搜索
$(".search-input").keyup(function (e) {
if (e.keyCode === 13) {
$("#search").click();
return false;
}
});
//点击排序
$('.list_sort').click(function () {
var url = $(this).attr('url');
var ids = $('.ids:checked');
var param = '';
if (ids.length > 0) {
var str = new Array();
ids.each(function () {
str.push($(this).val());
});
param = str.join(',');
}
if (url != undefined && url != '') {
window.location.href = url + '/ids/' + param;
}
});
});
</script>
{/block}
-67
View File
@@ -1,67 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
</div>
</header>
<div class="main-box-body clearfix">
<form method="post" class="form form-horizontal" action="edit">
<div class="tabs-wrapper">
<ul class="nav nav-tabs">
<li class="active"><a href="#pc" data-toggle="tab">PC端模板</a></li>
<li><a href="#mobile" data-toggle="tab">移动端模板</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane fade in active" id="pc">
<div class="row">
{volist name="list['pc']" id="item"}
<div class="col-sm-4 col-md-3">
<div class="thumbnail">
<img src="{$item['img']}" alt="{$item['name']}" class="img-rounded">
<div class="caption">
<h4>{$item['name']}</h4>
<p class="text-right">
{if $pc == $item['id']}
<button class="btn btn-danger btn-block" disabled>已启用</button>
{else/}
<a href="{:url('admin/config/setthemes?name=pc&id='.$item['id'])}" class="btn btn-primary btn-block ajax-get">启用</a>
{/if}
</p>
</div>
</div>
</div>
{/volist}
</div>
</div>
<div class="tab-pane fade" id="mobile">
<div class="row">
{volist name="list['mobile']" id="item"}
<div class="col-sm-4 col-md-3">
<div class="thumbnail">
<img src="{$item['img']}" alt="{$item['name']}" class="img-rounded">
<div class="caption">
<h4>{$item['name']}</h4>
<p class="text-right">
{if $mobile == $item['id']}
<button class="btn btn-danger btn-block" disabled>已启用</button>
{else/}
<a href="{:url('admin/config/setthemes?name=mobile&id='.$item['id'])}" class="btn btn-primary btn-block ajax-get">启用</a>
{/if}
</p>
</div>
</div>
</div>
{/volist}
</div>
</div>
</div>
</div>
</form>
</div>
</div>
{/block}
-94
View File
@@ -1,94 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{:url('admin/content/add?model_id='.$model_id)}">新 增</a>
<button class="btn btn-danger ajax-post confirm" url="{:url('admin/content/del?model_id='.$model_id)}" target-form="ids">删 除</button>
</div>
</header>
<div class="main-box-body clearfix">
<div class="row">
<form method="get">
<div class="col-sm-12 col-md-4 col-lg-3">
<input type="text" class="form-control" name="keyword" value="{$keyword|default=''}" placeholder="请输入关键字">
</div>
{if isset($cate_list)}
<div class="col-sm-12 col-md-4 col-lg-3">
<select name="category" id="category" class="form-control">
<option value="">请选择栏目</option>
{volist name="cate_list" id="item"}
<option value="{$item['id']}" {if isset($category) && $item['id'] == $category}selected{/if}>{$item['title_show']}</option>
{/volist}
</select>
</div>
{/if}
<div class="col-sm-12 col-md-4">
<button class="btn btn-primary" type="submit">搜索</button>
</div>
</form>
</div>
<div class="table-responsive clearfix">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th width="30"><input class="checkbox check-all" type="checkbox"></th>
{volist name="grid['grids']" id="item"}
<th>{$item['title']}</th>
{/volist}
<th>操作</th>
</tr>
</thead>
<tbody>
{if condition="empty($list)"}
{php}
$cow = count($grid['grids'])+2;
{/php}
<tr>
<td colspan="{$cow}" align="center">暂无数据!</td>
</tr>
{else/}
{volist name="list" id="item"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$item['id']}"></td>
{volist name="grid['grids']" id="vo"}
{if isset($vo['format'])}
<td>{$item[$vo['field'][0]]|$vo['format']}</td>
{else/}
<td>{$item[$vo['field'][0]]}</td>
{/if}
{/volist}
<td>
{if isset($item['is_top'])}
{if $item['is_top']}
<a href="{:url('admin/content/settop?model_id='.$model_id,array('id'=>$item['id'],'is_top'=>'0'))}" class="ajax-get">取消置顶</a>
{else/}
<a href="{:url('admin/content/settop?model_id='.$model_id,array('id'=>$item['id'],'is_top'=>'1'))}" class="ajax-get">置顶</a>
{/if}
{/if}
{if isset($item['status'])}
{if $item['status']}
<a href="{:url('admin/content/status?model_id='.$model_id,array('id'=>$item['id'],'status'=>'0'))}" class="ajax-get">取消审核</a>
{else/}
<a href="{:url('admin/content/status?model_id='.$model_id,array('id'=>$item['id'],'status'=>'1'))}" class="ajax-get">审核</a>
{/if}
{/if}
<a href="{:url('admin/content/edit?model_id='.$model_id,array('id'=>$item['id']))}" >编辑</a>
<a href="{:url('admin/content/del?model_id='.$model_id,array('id'=>$item['id']))}" class="ajax-get confirm">删除</a>
</td>
</tr>
{/volist}
{/if}
</tbody>
</table>
</div>
{$page}
</div>
</div>
</div>
{/block}
-136
View File
@@ -1,136 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<!-- 标题栏 -->
<div class="pull-left">
<h2>数据备份</h2>
</div>
<div class="pull-right">
<a id="export" class="btn btn-primary" href="javascript:;" autocomplete="off">立即备份</a>
<a id="optimize" class="btn btn-success" href="{:url('optimize')}">优化表</a>
<a id="repair" class="btn btn-warning" href="{:url('repair')}">修复表</a>
</div>
</header>
<div class="main-box-body clearfix">
<form id="export-form" method="post" action="{:url('export')}">
<div class="table-responsive clearfix">
<table class="table table-striped">
<thead>
<tr>
<th width="48">
<input class="check-all" checked="chedked" type="checkbox" value=""></th>
<th>表名</th>
<th width="120">数据量</th>
<th width="120">数据大小</th>
<th width="180">创建时间</th>
<th width="160">备份状态</th>
<th width="120">操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="table"}
<tr>
<td class="num">
<input class="ids" checked="chedked" type="checkbox" name="tables[]" value="{$table.name}"></td>
<td>{$table.name}</td>
<td>{$table.rows}</td>
<td>{$table.data_length|format_bytes}</td>
<td>{$table.create_time}</td>
<td class="info">未备份</td>
<td class="action">
<a class="ajax-get no-refresh" href="{:url('optimize?tables='.$table['name'])}">优化表</a>
&nbsp;
<a class="ajax-get no-refresh" href="{:url('repair?tables='.$table['name'])}">修复表</a>
</td>
</tr>
{/volist}
</tbody>
</table>
</div>
</form>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript">
(function($){
var $form = $("#export-form"), $export = $("#export"), tables
$optimize = $("#optimize"), $repair = $("#repair");
$optimize.add($repair).click(function(){
$.post(this.href, $form.serialize(), function(data){
if(data.code){
updateAlert(data.msg,'alert-success');
} else {
updateAlert(data.msg,'alert-error');
}
setTimeout(function(){
$('#top-alert').find('button').click();
$(that).removeClass('disabled').prop('disabled',false);
},1500);
}, "json");
return false;
});
$export.click(function(){
$export.parent().children().addClass("disabled");
$export.html("正在发送备份请求...");
$.post(
$form.attr("action"),
$form.serialize(),
function(data){
if(data.code){
tables = data.data.tables;
$export.html(data.msg + "开始备份,请不要关闭本页面!");
backup(data.data.tab);
window.onbeforeunload = function(){ return "正在备份数据库,请不要关闭!" }
} else {
updateAlert(data.msg,'alert-error');
$export.parent().children().removeClass("disabled");
$export.html("立即备份");
setTimeout(function(){
$('#top-alert').find('button').click();
$(that).removeClass('disabled').prop('disabled',false);
},1500);
}
},
"json"
);
return false;
});
function backup(tab, status){
status && showmsg(tab.id, "开始备份...(0%)");
$.get($form.attr("action"), tab, function(data){
if(data.code){
var info = data.data;
showmsg(tab.id, data.msg);
if(!$.isPlainObject(info.tab)){
$export.parent().children().removeClass("disabled");
$export.html("备份完成,点击重新备份");
window.onbeforeunload = function(){ return null }
return;
}
backup(info.tab, tab.id != info.tab.id);
} else {
updateAlert(data.msg,'alert-error');
$export.parent().children().removeClass("disabled");
$export.html("立即备份");
setTimeout(function(){
$('#top-alert').find('button').click();
$(that).removeClass('disabled').prop('disabled',false);
},1500);
}
}, "json");
}
function showmsg(id, msg){
$form.find("input[value=" + tables[id] + "]").closest("tr").find(".info").html(msg);
}
})(jQuery);
</script>
{/block}
@@ -1,87 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<!-- 标题栏 -->
<div class="pull-left">
<h2>数据恢复</h2>
</div>
<div class="pull-right">
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<!-- 应用列表 -->
<table class="table table-striped">
<thead>
<tr>
<th width="200">备份名称</th>
<th width="80">卷数</th>
<th width="80">压缩</th>
<th width="80">数据大小</th>
<th width="200">备份时间</th>
<th>状态</th>
<th width="120">操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="data"}
<tr>
<td>{$data.time|date='Ymd-His',###}</td>
<td>{$data.part}</td>
<td>{$data.compress}</td>
<td>{$data.size|format_bytes}</td>
<td>{$key}</td>
<td>-</td>
<td class="action">
<a class="db-import" href="{:url('import?time='.$data['time'])}">还原</a>
&nbsp;
<a class="ajax-get confirm" href="{:url('del?time='.$data['time'])}">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
</div>
</div>
<!-- /应用列表 -->
</div>
{/block}
{block name="script"}
<script type="text/javascript">
$(".db-import").click(function(){
var self = this, status = ".";
$.get(self.href, success, "json");
window.onbeforeunload = function(){ return "正在还原数据库,请不要关闭!" }
return false;
function success(data){
if(data.code){
if(data.data.gz){
data.msg += status;
if(status.length === 5){
status = ".";
} else {
status += ".";
}
}
$(self).parent().prev().text(data.msg);
if(data.data.part){
$.get(self.href,
{"part" : data.data.part, "start" : data.data.start},
success,
"json"
);
} else {
window.onbeforeunload = function(){ return null; }
}
} else {
updateAlert(data.msg,'alert-error');
}
}
});
</script>
{/block}
-64
View File
@@ -1,64 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-danger" href="{:url('addattr',array('form_id'=>$form_id))}"><i class="fa fa-plus"></i> 新 增</a>
<!-- <button class="btn btn-danger ajax-post confirm" url="{:url('del')}" target-form="ids"><i class="fa fa-remove"></i> 删 除</button> -->
<a class="btn btn-warning" href="{:url('Form/index')}"><i class="fa fa-reply"></i> 返回</a>
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th><input class="checkbox check-all" type="checkbox"></th>
<th>表单标题</th>
<th>字段名</th>
<th>字段类型</th>
<th>字段长度</th>
<th>默认值</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$item['id']}"></td>
<td>{$item['title']}</td>
<td>{$item['name']}</td>
<td>{$item['type_text']}</td>
<td>{$item['length']}</td>
<td>{$item['value']}</td>
<td>
<a href="{:url('editattr',array('id'=>$item['id'], 'form_id'=>$form_id))}">编辑</a>
<a href="{:url('delattr',array('id'=>$item['id'], 'form_id'=>$form_id))}" class="confirm ajax-get">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
{$page}
</div>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript" src="__PUBLIC__/plugs/layer/layer.js"></script>
<script type="text/javascript">
$(function(){
$('.openDilog').click(function(){
layer.open({
type: 2,
title: false,
area: ['900px', '560px'],
content: $('.openDilog').attr('url')
});
});
})
</script>
{/block}
@@ -1,62 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<table class="table table-hover table-bordered">
<tr>
<th width="120" style="text-align: right;">姓名</th>
<td>{$info['name']}</td>
<th width="120" style="text-align: right;">性别</th>
<td>{if $info['sex'] == 0}保密{elseif $info['sex'] == 1}男{elseif $info['sex'] == 2}女{/if}</td>
<th width="120" style="text-align: right;">出生年月</th>
<td>{$info['birthday']|date='Y-m-d',###}</td>
</tr>
<tr>
<th width="120" style="text-align: right;">从事行业</th>
<td>{$info['industry']}</td>
<th width="120" style="text-align: right;">所在单位</th>
<td colspan="3">{$info['company']}</td>
</tr>
<tr>
<th width="120" style="text-align: right;">单位职务</th>
<td>{$info['duties']}</td>
<th width="120" style="text-align: right;">入学年份</th>
<td>{$info['en_year']}</td>
<th width="120" style="text-align: right;">所学专业</th>
<td>{$info['major']}</td>
</tr>
<tr>
<th width="120" style="text-align: right;">联系电话</th>
<td>{$info['mobile']}</td>
<th width="120" style="text-align: right;">QQ</th>
<td>{$info['qq']}</td>
<th width="120" style="text-align: right;">微信</th>
<td>{$info['wechat']}</td>
</tr>
<tr>
<th width="120" style="text-align: right;">个人简历</th>
<td colspan="5">
{$info['profile']}
</td>
</tr>
<tr>
<td colspan="6">
说明:个人简历中,您可以添加任何您愿意提供的信息,例如您可以为校友提供何种帮助,有何特长,获得的主要荣誉,是否参加其他社团组织等等。
</td>
</tr>
</table>
</div>
</div>
</div>
{/block}
{block name="script"}
{/block}
-69
View File
@@ -1,69 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/libs/bootstrap-editable.css">
{/block}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{:url('add')}">新 增</a>
<button class="btn btn-danger ajax-post confirm" url="{:url('del')}" target-form="ids">删 除</button>
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th width="30"><input class="checkbox check-all" type="checkbox"></th>
<th width="60">ID</th>
<th>名称</th>
<th>排序</th>
<th>时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{notempty name="list"}
{volist name="list" id="item"}
<tr>
<td>
<input class="ids" type="checkbox" name="ids[]" value="{$item['id']}" />
</td>
<td>{$item['id']}</td>
<td>{$item['name']}</td>
<td>
<a data-id="{$item.id}" href="{:url('form/edit?id='.$item['id'])}">{$item['title']}</a>
</td>
<td>
<span>{$item.create_time|time_format}</span>
</td>
<td>
{if $item['status']}
<span class="label label-primary">{$item['status_text']}</span>
{else/}
<span class="label label-danger">{$item['status_text']}</span>
{/if}
</td>
<td>
<a href="{:url('admin/form/attr?form_id='.$item['id'])}">字段</a>
<a href="{:url('admin/form/status?id='.$item['id'].'&status='.abs(1-$item['status']))}" class="ajax-get">{$item['status']|show_status_op}</a>
<a href="{:url('admin/form/edit?id='.$item['id'])}">编辑</a>
<a href="{:url('admin/form/del?id='.$item['id'])}" class="confirm ajax-get">删除</a>
<a href="{:url('admin/form/lists?form_id='.$item['id'])}">数据</a>
</td>
</tr>
{/volist}
{else/}
<td colspan="7" class="text-center">aOh! 暂时还没有创建模型!</td>
{/notempty}
</tbody>
</table>
{$page}
</div>
</div>
</div>
{/block}
@@ -1,62 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{:url('admin/form/outxls?form_id='.$form_id)}" target="_blank">导出</a>
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th><input class="checkbox check-all" type="checkbox"></th>
<th>姓名</th>
<th>性别</th>
<th>生日</th>
<th>从事行业</th>
<th>所在单位</th>
<th>职务</th>
<th>入学年份</th>
<th>所学专业</th>
<th>电话</th>
<th>QQ</th>
<th>微信</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$item['id']}"></td>
<td>{$item['name']}</td>
<td>{if $item['sex'] == 0}保密{elseif $item['sex'] == 1}男{elseif $item['sex'] == 2}女{/if}</td>
<td>{$item['birthday']|date='Y-m-d',###}</td>
<td>{$item['industry']}</td>
<td>{$item['company']}</td>
<td>{$item['duties']}</td>
<td>{$item['en_year']}</td>
<td>{$item['major']}</td>
<td>{$item['mobile']}</td>
<td>{$item['qq']}</td>
<td>{$item['wechat']}</td>
<td>
<a href="{:url('detail',array('id'=>$item['id'], 'form_id'=>$form_id))}">详情</a>
<a href="{:url('deldata',array('id'=>$item['id'], 'form_id'=>$form_id))}" class="confirm ajax-get">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
{$page}
</div>
</div>
</div>
{/block}
{block name="script"}
{/block}
-77
View File
@@ -1,77 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a href="{:url('Group/addnode',array('type'=>$type))}" class="btn btn-danger">
<i class="fa fa-plus"></i>
添加节点
</a>
<a href="{:url('Group/upnode',array('type'=>$type))}" class="btn btn-danger ajax-get">
<i class="fa fa-plus"></i>
更新节点
</a>
</div>
</header>
<div class="main-box-body clearfix">
<div class="tabs-wrapper">
<ul class="nav nav-tabs">
{volist name=":config('user_group_type')" id="item"}
<li {if condition="$key eq $type"}class="active"{/if}>
<a href="{:url('Group/access',array('type'=>$key))}">{$item}</a>
</li>
{/volist}
</ul>
<div class="tab-content">
<div class="tab-pane fade in active" id="tab-home">
{if condition="empty($list)"}
<p>暂无数据!</p>
{else/}
<div class="table-responsive clearfix">
<table class="table table-striped table-hover">
<thead>
<tr>
<th width="30"><input class="checkbox check-all" type="checkbox"></th>
<th width="60">ID</th>
<th>组名</th>
<th>标识</th>
<th>分组</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<th width="30"><input class="ids row-selected" type="checkbox" name="id[]" value="{$item['id']}"></th>
<td>{$item['id']}</td>
<td>{$item['title']}</td>
<td>{$item['name']}</td>
<td>{$item['group']}</td>
<td>
{if condition="$item['status'] eq '0'"}
<span class="label label-danger">禁用</span>
{elseif condition="$item['status'] eq '1'"/}
<span class="label label-primary">启用</span>
{/if}
</td>
<td>
<a href="{:url('Group/editnode',array('id'=>$item['id']))}">编辑</a>
<a href="{:url('Group/delnode',array('id'=>$item['id']))}" class="confirm ajax-get">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
{$page}
</div>
{/if}
</div>
</div>
</div>
</div>
</div>
{/block}
-63
View File
@@ -1,63 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a href="{:url('Group/index')}" class="btn btn-danger">
<i class="glyphicon glyphicon-menu-left"></i>
返回
</a>
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<form action="" class="form" method="post">
<table class="table table-striped">
<thead>
<tr>
<th class="col-lg-2 text-right">分组</th>
<th>权限</th>
</tr>
</thead>
<tbody>
{volist name="list" id="node"}
<tr>
<td class="info col-lg-2 text-right">{$key}</td>
<td class="col-lg-10 text-left">
{volist name="node" id="item"}
<div class="checkbox-nice checkbox-inline">
<input type="checkbox" name="rule[]" value="{$item['id']}" id="{$item['name']}" {if in_array($item['id'],$auth_list)}checked{/if} />
<label for="{$item['name']}">{$item['title']}</label>
</div>
{/volist}
</td>
</tr>
{/volist}
<tr>
<td class="info col-lg-2 text-right">模块</td>
<td class="col-lg-10 text-left">
{volist name="model" id="item"}
<div class="checkbox-nice checkbox-inline">
<input type="checkbox" name="extend_rule[2][]" value="{$item['id']}" id="{$item['name']}" {if in_array($item['id'],$extend_auth)}checked{/if} />
<label for="{$item['name']}">{$item['title']}</label>
</div>
{/volist}
</td>
</tr>
</tbody>
</table>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="hidden" name="id" value="{$id}">
<button type="submit" class="btn btn-success submit-btn ajax-post" target-form="form">确认提交</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
</div>
{/block}
-83
View File
@@ -1,83 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/libs/bootstrap-editable.css">
{/block}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a href="{:url('Group/add',array('type'=>$type))}" class="btn btn-danger"><i class="fa fa-plus"></i> 添加用户组</a>
</div>
</header>
<div class="main-box-body clearfix">
<div class="tabs-wrapper">
<ul class="nav nav-tabs">
{volist name=":config('USER_GROUP_TYPE')" id="item"}
<li {if condition="$key eq $type"}class="active"{/if}>
<a href="{:url('Group/index',array('type'=>$key))}">{$item}</a>
</li>
{/volist}
</ul>
<div class="tab-content">
<div class="tab-pane fade in active" id="tab-home">
{if condition="empty($list)"}
<p>暂无数据!</p>
{else/}
<div class="table-responsive clearfix">
<table class="table table-striped table-hover">
<thead>
<tr>
<th width="30"><input class="checkbox check-all" type="checkbox"></th>
<th width="60">ID</th>
<th>组名</th>
<th>描述</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="ids[]" value="{$item['id']}"></td>
<td>{$item['id']}</td>
<td><a href="#" class="editable editable-click" data-id="{$item['id']}" data-name="title" data-type="text" data-pk="{$item['id']}" data-url="{:url('editable')}">{$item['title']}</a></td>
<td>{$item['description']}</td>
<td>
{if condition="$item['status'] eq '0'"}
<span class="label label-danger">禁用</span>
{elseif condition="$item['status'] eq '1'"/}
<span class="label label-primary">启用</span>
{/if}
</td>
<td>
<a href="{:url('Group/edit',array('id'=>$item['id']))}">编辑</a>
<a href="{:url('Group/auth',array('id'=>$item['id']))}">授权</a>
<a href="{:url('Group/del',array('id'=>$item['id']))}" class="confirm ajax-get">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
{$page}
</div>
{/if}
</div>
</div>
</div>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript" src="__PUBLIC__/js/bootstrap-editable.min.js"></script>
<script type="text/javascript">
$(function(){
$.fn.editable.defaults.mode = 'popup';
$.fn.editableform.buttons = '<button type="submit" class="btn btn-success editable-submit btn-mini"><i class="fa fa-check-square-o fa-white"></i></button>' +
'<button type="button" class="btn editable-cancel btn-mini"><i class="fa fa-times"></i></button>';
$('.editable').editable();
})
</script>
{/block}
-6
View File
@@ -1,6 +0,0 @@
{extend name="public/base" /}
{block name="body"}
<div class="row">
{:hook('AdminIndex')}
</div>
{/block}
-132
View File
@@ -1,132 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<META content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
<title>欢迎您登录SentCMS管理平台</title>
<link rel="stylesheet" type="text/css" href="__STATIC__/plugs/bootstrap/css/bootstrap.min.css"/>
<link rel="stylesheet" type="text/css" href="__STATIC__/css/libs/font-awesome.css"/>
<link rel="stylesheet" type="text/css" href="__STATIC__/css/libs/animate.min.css"/>
<link rel="stylesheet" type="text/css" href="__STATIC__/plugs/layui/css/layui.css"/>
<link rel="stylesheet" type="text/css" href="__STATIC__/css/admin/login.css"/>
<script type="text/javascript" src="__STATIC__/plugs/jquery/jquery.min.js"></script>
<script type="text/javascript" src="__STATIC__/plugs/layui/layui.all.js"></script>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="__STATIC__/js/html5shiv.min.js"></script>
<script src="__STATIC__/js/ie8polyfill.min.js"></script>
<![endif]-->
</head>
<body id="login-page-full">
<div class="login-container">
<!-- 动态云层动画 开始 -->
<div class="clouds-container">
<div class="clouds clouds-footer"></div>
<div class="clouds"></div>
<div class="clouds clouds-fast"></div>
</div>
<!-- 动态云层动画 结束 -->
<!-- 顶部导航条 开始 -->
<div class="header notselect">
<span class="title notselect">SentCMS <sup>v{$Think.SENTCMS_VERSION}</sup></span>
<ul>
<li><a href="javascript:void(0)" target="_blank">帮助</a></li>
<li>
<a href="http://sw.bos.baidu.com/sw-search-sp/software/9e6bc213b9d0b/ChromeStandalone_63.0.3239.132_Setup.exe">推荐使用谷歌浏览器</a>
</li>
</ul>
</div>
<!-- 顶部导航条 结束 -->
<!-- 页面表单主体 开始 -->
<div class="container">
<form onsubmit="return false;" method="post" class="content layui-form animated fadeInDown">
<div class="people">
<div class="tou"></div>
<div id="left-hander" class="initial_left_hand transition"></div>
<div id="right-hander" class="initial_right_hand transition"></div>
</div>
<ul>
<li class="username">
<i class="fa fa-user"></i>
<input required pattern="^\S{4,}$" name="username" value="" type="text" autofocus="autofocus" autocomplete="off" title="请输入4位及以上的字符" placeholder="请输入用户名/手机号码">
</li>
<li class="password">
<i class="fa fa-shield"></i>
<input required pattern="^\S{4,}$" name="password" value="" type="password" autocomplete="off" title="请输入4位及以上的字符" placeholder="请输入密码">
</li>
<li class="verify">
<i class="fa fa-qrcode"></i>
<input required pattern="^\S{3,}$" name="verify" value="" type="text" autocomplete="off" title="请输入3位及以上的字符" placeholder="请输入验证码">
<span class="reloadverify"><img src="{:captcha_src()}" alt="验证码" height="38" class="verifyimg"></span>
</li>
<li class="text-center">
<button type="submit" class="btn btn-primary btn-block">登录</button>
</li>
</ul>
</form>
</div>
<!-- 页面表单主体 结束 -->
<!-- 底部版权信息 开始 -->
<div class="footer notselect">
腾速科技 &copy; TenSent.Icn
</div>
<!-- 底部版本信息 结束 -->
</div>
<script>
$(function () {
$('[name="password"]').on('focus', function () {
$('#left-hander').removeClass('initial_left_hand').addClass('left_hand');
$('#right-hander').removeClass('initial_right_hand').addClass('right_hand')
}).on('blur', function () {
$('#left-hander').addClass('initial_left_hand').removeClass('left_hand');
$('#right-hander').addClass('initial_right_hand').removeClass('right_hand')
});
//表单提交
$(document).ajaxStart(function(){
$("button:submit").addClass("log-in").attr("disabled", true);
}).ajaxStop(function(){
$("button:submit").removeClass("log-in").attr("disabled", false);
});
$("form").submit(function(){
var self = $(this);
$.post(self.attr("action"), self.serialize(), success, "json");
return false;
function success(data){
if(data.code){
layer.msg(data.msg, {time:3000, end:function(){
window.location.href = data.url;
}});
} else {
layer.msg(data.msg, {time:3000, end:function(){
//刷新验证码
$(".reloadverify").click();
}});
}
}
});
//初始化选中用户名输入框
$("#itemBox").find("input[name=username]").focus();
//刷新验证码
var verifyimg = $(".verifyimg").attr("src");
$(".reloadverify").click(function(){
if( verifyimg.indexOf('?')>0){
$(".verifyimg").attr("src", verifyimg+'&random='+Math.random());
}else{
$(".verifyimg").attr("src", verifyimg.replace(/\?.*$/,'')+'?'+Math.random());
}
});
});
</script>
</body>
</html>
-49
View File
@@ -1,49 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/libs/bootstrap-editable.css">
{/block}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{:url('add')}">新 增</a>
<button class="btn btn-danger ajax-post confirm" url="{:url('delete')}" target-form="ids">删 除</button>
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th width="30"><input class="checkbox check-all" type="checkbox"></th>
<th width="60">ID</th>
<th>名称</th>
<th>排序</th>
<th>时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$item['id']}"></td>
<td>{$item['id']}</td>
<td>{$item['title']}</td>
<td>{$item['sort']}</td>
<td>{$item['update_time']|date='Y-m-d',###}</td>
<td>
<a href="{:url('edit?id='.$item['id'])}">编辑</a>
<a href="{:url('delete?id='.$item['id'])}" class="confirm ajax-get">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
{$page}
</div>
</div>
</div>
{/block}
-96
View File
@@ -1,96 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{:isset($info['id'])?'编辑':'新增'}后台菜单</h2>
</div>
<div class="pull-right"></div>
</header>
<div class="main-box-body clearfix">
<form method="post" class="form form-horizontal">
<div class="form-group">
<label class="col-lg-2 control-label">标题</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="title" value="{$info.title|default=''}" style="width: 80%">
<span class="help-block">(用于后台显示的配置标题)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">小图标</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="icon" value="{$info.icon|default=''}" style="width: 80%">
<span class="help-block">(用于显示在菜单左侧,不填则不显示)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">排序</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="sort" value="{$info.sort|default=0}" style="width: 60%">
<span class="help-block">(用于分组显示的顺序)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">链接</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="url" value="{$info['url']|default=''}" style="width: 80%">
<span class="help-block">U函数解析的URL或者外链)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">上级菜单</label>
<div class="col-lg-10">
<select name="pid" class="form-control" style="width: 50%">
{volist name="Menus" id="menu"}
<option value="{$menu['id']}" {if $info['pid'] == $menu['id']}selected{/if}>{$menu.title_show}</option>
{/volist}
</select>
<span class="help-block">(所属的上级菜单)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">分组</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="group" value="{$info['group']|default=''}" style="width: 50%">
<span class="help-block">(用于左侧分组二级菜单)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">是否隐藏</label>
<div class="col-lg-1">
<select name="hide" class="form-control">
<option value="0" ></option>
<option value="1" {if isset($info['hide']) && $info['hide']==1}selected{/if}>
</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">仅开发者模式可见</label>
<div class="col-lg-1">
<select name="is_dev" class="form-control">
<option value="0" ></option>
<option value="1" {if isset($info['is_dev']) && $info['is_dev']==1}selected{/if}>
</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">说明</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="tip" value="{$info.tip|default=''}" style="width: 60%;">
<span class="help-block">(菜单详细说明)</span>
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="hidden" name="id" value="{$info['id']|default=''}">
<button class="btn btn-success submit-btn ajax-post" type="submit" target-form="form-horizontal">确 定</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
-29
View File
@@ -1,29 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>批量导入 [{$data['title']|default='顶级菜单'}]</h2>
</div>
</header>
<div class="main-box-body clearfix">
<form id="form" action="{:url('import')}" method="post" class="form form-horizontal">
<!-- 基础文档模型 -->
<div class="form-group">
<label class="col-lg-2 control-label">导入的内容</label>
<div class="col-lg-10">
<textarea name="tree" class="form-control" style="width:80%; height:160px;"></textarea>
<span class="help-block"><b>导入格式:</b><br/>首页|Index/index|0|分组名称<br/>更新缓存|Index/clear|0|分组名称<br/>(请按照导入格式输入)</span>
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="hidden" name="id" value="{$info.id|default=''}">
<button class="btn btn-success submit-btn ajax-post" type="submit" target-form="form-horizontal">确 定</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
-120
View File
@@ -1,120 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/libs/bootstrap-editable.css">
{/block}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{present name="data"}[ {$data['title']} ] 子{/present}菜单管理</h2>
</div>
<div class="pull-right">
<!-- <div class="search-form pull-left">
<div class="form-group">
<input type="text" name="title" class="form-control" value="{:input('title')}"
placeholder="请输入菜单名称">
<span class="input-group-btn"><a class="btn btn-default" href="javascript:;" id="search" url="__SELF__"><i class="icon-search"></i></a></span>
</div>
</div> -->
<a class="btn btn-primary" href="{:url('add',array('pid'=>input('get.pid',0)))}">新 增</a>
<button class="btn btn-danger ajax-post confirm" url="{:url('del')}" target-form="ids">删 除</button>
<a class="btn btn-success" href="{:url('import',array('pid'=>input('get.pid',0)))}">导 入</a>
</div>
</header>
<div class="main-box-body clearfix">
<form class="ids">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th class="row-selected">
<input class="checkbox check-all" type="checkbox">
</th>
<th>ID</th>
<th>名称</th>
<th>上级菜单</th>
<th>分组</th>
<th>URL</th>
<th>排序</th>
<th>仅开发者模式显示</th>
<th>隐藏</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{notempty name="list"}
{volist name="list" id="menu"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$menu.id}"></td>
<td>{$menu.id}</td>
<td>
{$menu['level_show']}
<a href="#" class="editable editable-click" data-id="{$menu['id']}" data-name="title" data-type="text" data-pk="{$menu['id']}" data-url="{:url('editable')}">{$menu['title']}</a>
<a class="add-sub-cate" title="添加子分类" href="{:url('add?pid='.$menu['id'])}">
<i class="fa fa-plus-square"></i>
</a>
</td>
<td>{$menu.up_title|default='无'}</td>
<td>{$menu.group}</td>
<td>{$menu.url}</td>
<td><a href="#" class="editable editable-click" data-id="{$menu['id']}" data-name="sort" data-type="text" data-pk="{$menu['id']}" data-url="{:url('editable')}">{$menu['sort']}</a></td>
<td>
<a href="{:url('toogleDev',array('id'=>$menu['id'],'value'=>abs($menu['is_dev']-1)))}"
class="ajax-get">
{$menu.is_dev_text}
</a>
</td>
<td>
<a href="{:url('toogleHide',array('id'=>$menu['id'],'value'=>abs($menu['hide']-1)))}"
class="ajax-get">
{$menu.hide_text}
</a>
</td>
<td>
<a title="编辑" href="{:url('edit?id='.$menu['id'])}">编辑</a>
<a class="confirm ajax-get" title="删除" href="{:url('del?id='.$menu['id'])}">删除</a>
</td>
</tr>
{/volist}
{else/}
<td colspan="10" class="text-center"> aOh! 暂时还没有内容!</td>
{/notempty}
</tbody>
</table>
</div>
</form>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript" src="__PUBLIC__/js/bootstrap-editable.min.js"></script>
<script type="text/javascript">
$(function () {
$.fn.editable.defaults.mode = 'popup';
$.fn.editableform.buttons = '<button type="submit" class="btn btn-success editable-submit btn-mini"><i class="fa fa-check-square-o fa-white"></i></button>' +
'<button type="button" class="btn editable-cancel btn-mini"><i class="fa fa-times"></i></button>';
$('.editable').editable();
//搜索功能
$("#search").click(function () {
var url = $(this).attr('url');
var query = $('.search-form').find('input').serialize();
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g, '');
query = query.replace(/^&/g, '');
if (url.indexOf('?') > 0) {
url += '&' + query;
} else {
url += '?' + query;
}
window.location.href = url;
});
//回车搜索
$(".search-input").keyup(function (e) {
if (e.keyCode === 13) {
$("#search").click();
return false;
}
});
});
</script>
{/block}
-111
View File
@@ -1,111 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>菜单排序 [ <a href="{:url('index',array('pid'=>I('pid')))}">返回列表</a> ]</h2>
</div>
</header>
<div class="main-box-body clearfix">
<form action="{:url('sort')}" method="post" class="form form-horizontal">
<div class="form-group">
<div class="col-lg-2">
<select value="" size="8" class="form-control">
{volist name="list" id="vo"}
<option class="ids" title="{$vo.title}" value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
</div>
<div class="col-lg-2">
<button class="top btn btn-primary btn-block" type="button"><i class="fa fa-arrow-up"></i> 第 一</button>
<button class="up btn btn-primary btn-block" type="button"><i class="fa fa-chevron-up"></i> 上 移</button>
<button class="down btn btn-primary btn-block" type="button"><i class="fa fa-chevron-down"></i> 下 移</button>
<button class="bottom btn btn-primary btn-block" type="button"><i class="fa fa-arrow-down"></i> 最 后</button>
</div>
</div>
<div class="sort_bottom form-group">
<div class="col-lg-12">
<input type="hidden" name="ids">
<button class="sort_confirm btn btn-primary submit-btn" type="button">确 定</button>&nbsp;
<button class="sort_cancel btn btn-dafault btn-return" type="button" url="{$Think.cookie.__forward__}">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript">
$(function(){
sort();
$(".top").click(function(){
rest();
$("option:selected").prependTo("select");
sort();
})
$(".bottom").click(function(){
rest();
$("option:selected").appendTo("select");
sort();
})
$(".up").click(function(){
rest();
$("option:selected").after($("option:selected").prev());
sort();
})
$(".down").click(function(){
rest();
$("option:selected").before($("option:selected").next());
sort();
})
$(".search").click(function(){
var v = $("input").val();
$("option:contains("+v+")").attr('selected','selected');
})
function sort(){
$('option').text(function(){return ($(this).index()+1)+'.'+$(this).text()});
}
//重置所有option文字。
function rest(){
$('option').text(function(){
return $(this).text().split('.')[1]
});
}
//获取排序并提交
$('.sort_confirm').click(function(){
var arr = new Array();
$('.ids').each(function(){
arr.push($(this).val());
});
$('input[name=ids]').val(arr.join(','));
$.post(
$('form').attr('action'),
{
'ids' : arr.join(',')
},
function(data){
if (data.status) {
updateAlert(data.info + ' 页面即将自动跳转~','alert-success');
}else{
updateAlert(data.info,'alert-success');
}
setTimeout(function(){
if (data.status) {
$('.sort_cancel').click();
}
},1500);
},
'json'
);
});
//点击取消按钮
$('.sort_cancel').click(function(){
window.location.href = $(this).attr('url');
});
})
</script>
{/block}
-62
View File
@@ -1,62 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>新增模型</h2>
</div>
<div class="pull-right">
</div>
</header>
<div class="main-box-body clearfix">
<!-- 表单 -->
<form id="form" method="post" class="form-horizontal form">
<!-- 基础 -->
<div id="tab1" class="tab-pane in tab1">
<div class="form-group">
<label class="col-lg-2 control-label">模型标识</label>
<div class="col-lg-6 col-sm-10">
<input type="text" class="form-control " name="name" value="">
<span class="help-block">(请输入文档模型标识)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">模型名称</label>
<div class="col-lg-6 col-sm-10">
<input type="text" class="form-control " name="title" value="">
<span class="help-block">(请输入模型的名称)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">文档模型</label>
<div class="col-lg-6 col-sm-10">
<select class="form-control" name="is_doc">
<option value="1"></option>
<option value="0"></option>
</select>
<span class="help-block">(文档模型默认导入部分必要字段)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">模型图标</label>
<div class="col-lg-6 col-sm-10">
<input type="text" class="form-control " name="icon" value="">
<span class="help-block">(模型图标)</span>
</div>
</div>
</div>
<!-- 按钮 -->
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<button class="btn btn-success submit-btn ajax-post" type="submit" target-form="form-horizontal">确 定</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
-156
View File
@@ -1,156 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/plugs/board/board.min.css">
{/block}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>编辑模型</h2>
</div>
<div class="pull-right">
</div>
</header>
<div class="main-box-body clearfix">
<form id="form" method="post" class="form form-horizontal">
<div class="tabs-wrapper">
<ul class="nav nav-tabs">
<li class="active"><a href="#tab1" data-toggle="tab">基 础</a></li>
<li><a href="#tab2" data-toggle="tab">设 计</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane fade in active" id="tab1">
<!-- 基础 -->
<div class="form-group">
<label class="col-lg-2 control-label">模型标识</label>
<div class="col-lg-6 col-sm-10">
<input type="text" class="form-control disabled" name="name" value="{$info['name']}" disabled>
<span class="help-block">(请输入文档模型标识)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">模型名称</label>
<div class="col-lg-6 col-sm-10">
<input type="text" class="form-control " name="title" value="{$info['title']}">
<span class="help-block">(请输入模型的名称)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">模型图标</label>
<div class="col-lg-6 col-sm-10">
<input type="text" class="form-control " name="icon" value="{$info['icon']}">
<span class="help-block">(模型图标)</span>
</div>
</div>
</div>
<div class="tab-pane fade" id="tab2">
<div class="form-group">
<label class="col-lg-2 control-label">表单显示分组</label>
<div class="col-lg-6 col-sm-10">
<input type="text" class="form-control" name="attribute_group" value="{$info['attribute_group']}">
<span class="help-block">(用于表单显示的分组,以及设置该模型表单排序的显示)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">表单显示排序</label>
<div class="col-lg-10 boards" id="attribute_group_sort">
{volist name="fields" id="field"}
<div class="board panel panel-info">
<div class="panel-heading">{$field_group[$key]}</div>
<div class="panel-body">
<div class="board-list" data-group="{$key}">
{foreach name="field" item="item" key="k"}
<div class="board-item">
<span data="{$item['id']}">{$item['title']} [{$item['name']}]</span>
<input type="hidden" name="attribute_sort[{$key}][]" value="{$item['id']}"/>
</div>
{/foreach}
</div>
</div>
</div>
{/volist}
<span class="help-block">(直接拖动进行排序)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">列表定义</label>
<div class="col-lg-6 col-sm-10">
<textarea name="list_grid" class="form-control">{$info['list_grid']}</textarea>
<span class="help-block">(默认列表模板的展示规则)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">默认搜索字段</label>
<div class="col-lg-6 col-sm-10">
<input type="text" class="form-control" name="search_key" value="{$info['search_key']}">
<span class="help-block">(默认列表模板的默认搜索项)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">高级搜索字段</label>
<div class="col-lg-6 col-sm-10">
<input type="text" class="form-control" name="search_list" value="{$info['search_list']}">
<span class="help-block">(默认列表模板的高级搜索项)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">列表模板</label>
<div class="col-lg-6 col-sm-10">
<input type="text" class="form-control" name="template_list" value="{$info['template_list']|default=''}">
<span class="help-block">(自定义的列表模板,放在application\admin\view\content下,不写则使用默认模板)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">新增模板</label>
<div class="col-lg-6 col-sm-10">
<input type="text" class="form-control" name="template_add" value="{$info['template_add']|default=''}">
<span class="help-block">(自定义的新增模板,放在application\admin\view\content下,不写则使用默认模板)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">编辑模板</label>
<div class="col-lg-6 col-sm-10">
<input type="text" class="form-control" name="template_edit" value="{$info['template_edit']|default=''}">
<span class="help-block">(自定义的编辑模板,放在application\admin\view\content下,不写则使用默认模板)</span>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">列表数据大小</label>
<div class="col-lg-6 col-sm-10">
<input type="text" class="form-control" name="list_row" value="{$info['list_row']|default=''}">
<span class="help-block">(默认列表模板的分页属性)</span>
</div>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="hidden" name="id" value="{$info['id']}">
<button type="submit" class="btn btn-success submit-btn ajax-post" target-form="form">确认提交</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript" src="__PUBLIC__/js/droppable.js"></script>
<script type="text/javascript" src="__PUBLIC__/plugs/board/board.min.js"></script>
<script type="text/javascript">
$(function(){
$('.form-group #attribute_sort').boards();
$('.form-group #attribute_group_sort').boards({
drop: function(e){
var group = e.target.closest('.board').find('.board-list').attr('data-group');
e.element.find('input').attr('name','attribute_sort[' + group + '][]')
}
})
})
</script>
{/block}
-89
View File
@@ -1,89 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-success" href="{:url('Model/add')}">新 增</a>
<button class="btn ajax-post" target-form="ids" url="{:url('Model/status',array('status'=>0))}">禁 用</button>
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<table class="table table-striped">
<thead>
<tr>
<th class="row-selected row-selected">
<input class="check-all" type="checkbox"/>
</th>
<th class="">编号</th>
<th class="">标识</th>
<th class="">名称</th>
<th class="">创建时间</th>
<th class="">状态</th>
<th class="">操作</th>
</tr>
</thead>
<tbody>
{notempty name="list"}
{volist name="list" id="item"}
<tr>
<td>
<input class="ids" type="checkbox" name="ids[]" value="{$item['id']}" />
</td>
<td>{$item['id']}</td>
<td><i class="fa fa-{$item['icon']}"></i> {$item['name']}</td>
<td>
<a data-id="{$item.id}" href="{:url('model/edit?id='.$item['id'])}">{$item.title}</a>
</td>
<td>
<span>{$item.create_time|time_format}</span>
</td>
<td>
{if $item['status']}
<span class="label label-primary">{$item['status_text']}</span>
{else/}
<span class="label label-danger">{$item['status_text']}</span>
{/if}
</td>
<td>
<a href="{:url('admin/attribute/index?model_id='.$item['id'])}">字段</a>
<a href="{:url('model/status?id='.$item['id'].'&status='.abs(1-$item['status']))}" class="ajax-get">{$item['status']|show_status_op}</a>
<a href="{:url('model/edit?id='.$item['id'])}">编辑</a>
<a href="{:url('model/del?id='.$item['id'])}" class="confirm ajax-get">删除</a>
<a href="{:url('admin/content/index?model_id='.$item['id'])}">数据</a>
</td>
</tr>
{/volist}
{else/}
<td colspan="7" class="text-center">aOh! 暂时还没有创建模型!</td>
{/notempty}
</tbody>
</table>
</div>
{$page}
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript">
$(function(){
$("#search").click(function(){
var url = $(this).attr('url');
var status = $('select[name=status]').val();
var search = $('input[name=search]').val();
if(status != ''){
url += '/status/' + status;
}
if(search != ''){
url += '/search/' + search;
}
window.location.href = url;
});
})
</script>
{/block}
-213
View File
@@ -1,213 +0,0 @@
{include file="admin@public/header" /}
{block name="style"}{/block}
<div id="theme-wrapper">
<header class="navbar" id="header-navbar">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#header-nav">
<span class="sr-only">菜单</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="{:url('Index/index')}" id="logo" class="navbar-brand">
<img src="__STATIC__/images/logo.png" alt="" class="normal-logo logo-white"/>
</a>
<ul class="nav navbar-nav pull-right visible-xs">
<li class="dropdown profile-dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<img src="__STATIC__/images/samples/scarlet-159.png" alt=""/>
<span class="hidden-xs">{:session('user_auth.username')}</span> <b class="caret"></b>
</a>
<ul class="dropdown-menu dropdown-menu-right">
<li>
<a href="{:url('admin/User/edit')}">
<i class="fa fa-user"></i>
修改资料
</a>
</li>
<li>
<a href="{:url('admin/User/editpwd')}">
<i class="fa fa-cog"></i>
修改密码
</a>
</li>
<li>
<a href="{:url('admin/index/logout')}">
<i class="fa fa-power-off"></i>
退出后台
</a>
</li>
<li>
<a href="{:config('WEB_SITE_URL')}" target="_blank">
<i class="fa fa-home"></i>
前台首页
</a>
</li>
</ul>
</li>
</ul>
</div>
<div class="nav-no-collapse navbar-left pull-left hidden-sm hidden-xs">
<ul class="nav navbar-nav pull-left">
<li>
<a class="btn" id="make-small-nav"> <i class="fa fa-bars"></i>
</a>
</li>
</ul>
</div>
<div class="collapse navbar-collapse" id="header-nav">
<ul class="nav navbar-nav">
{volist name="__menu__['main']" id="item"}
<li class="{$item['style']}">
<a href="{$item['url']|url}">
<i class="fa fa-{$item['icon']|default='file'}"></i>
<span>{$item['title']}</span>
</a>
</li>
{/volist}
</ul>
<ul class="nav navbar-nav pull-right">
<li class="dropdown profile-dropdown hidden-sm hidden-xs">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<img src="__STATIC__/images/samples/scarlet-159.png" alt=""/>
<span class="hidden-xs">{:session('user_auth.username')}</span> <b class="caret"></b>
</a>
<ul class="dropdown-menu dropdown-menu-right">
<li>
<a href="{:url('admin/User/edit')}">
<i class="fa fa-user"></i>
修改资料
</a>
</li>
<li>
<a href="{:url('admin/User/editpwd')}">
<i class="fa fa-cog"></i>
修改密码
</a>
</li>
<li>
<a href="{:url('admin/index/logout')}">
<i class="fa fa-power-off"></i>
退出后台
</a>
</li>
<li>
<a href="{:config('WEB_SITE_URL')}" target="_blank">
<i class="fa fa-home"></i>
前台首页
</a>
</li>
</ul>
</li>
<li class="visible-lg">
<a href="#" class="btn" onclick="helpIntro();">
<i class="fa fa-question-circle"></i>
操作指南
</a>
</li>
</ul>
</div>
</div>
</header>
<div id="page-wrapper" class="container nav-small">
<div class="row">
<div id="nav-col">
<section id="col-left" class="col-left-nano">
<div id="col-left-inner" class="col-left-nano-content">
<div id="sidebar-nav">
<ul class="nav nav-pills nav-stacked">
{volist name="__menu__['child']" id="nav"}
<li class="nav-header hidden-sm hidden-xs">{$key}</li>
{volist name="nav" id="item"}
{if isset($item['_child'])}
<li class="{$item['style']}">
<a href="#" class="dropdown-toggle">
<i class="fa fa-{$item['icon']|default='file'}"></i>
<span>{$item['title']}</span>
<i class="fa fa-angle-right drop-icon"></i>
</a>
<ul class="submenu">
{volist name="item['_child']" id="vo" key="k"}
<li class="{$vo['style']}">
<a href="{$vo['url']|url}">
<i class="fa fa-{$vo['icon']|default='file'}"></i>
<span>{$vo['title']}</span>
</a>
</li>
{/volist}
</ul>
</li>
{else/}
<li class="{$item['style']}">
<a href="{$item['url']|url}">
<i class="fa fa-{$item['icon']|default='file'}"></i>
<span>{$item['title']}</span>
</a>
</li>
{/if}
{/volist}
{/volist}
{if isset($extend_menu)}
{volist name="extend_menu" id="sub"}
{if is_string($key)}<li class="nav-header hidden-sm hidden-xs">{$key}</li>{/if}
{volist name="sub" id="item"}
<li class="{$item['style']}">
<a href="{$item['url']|url}">
<i class="fa fa-{$item['icon']|default='file'}"></i>
<span>{$item['title']}</span>
</a>
</li>
{/volist}
{/volist}
{/if}
</ul>
</div>
</div>
</section>
<div id="nav-col-submenu"></div>
</div>
<div id="content-wrapper">
<div class="row">
<div class="col-lg-12">
<div class="row">
<div class="col-lg-12">
<div id="content-header" class="clearfix">
<div class="pull-left">
<ol class="breadcrumb">
<li>
<a href="{:url('Admin/Index/index')}">后台首页</a>
</li>
<li class="active">
{if $meta_title}
<span>{$meta_title}</span>
{else/}
<span>{:lang(request()->controller().'_'.request()->action())}</span>
{/if}
</li>
</ol>
</div>
<div class="pull-right hidden-xs">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
{block name="body"}{/block}
</div>
</div>
</div>
</div>
<footer id="footer-bar" class="row">
<p id="footer-copyright" class="col-xs-12">Powered by <a href="http://www.tensent.cn" target="_blank">TenSent,Inc.</a></p>
</footer>
</div>
</div>
</div>
</div>
{include file="admin@public/tool" /}
{include file="admin@public/footer" /}
{block name="script"}{/block}
-88
View File
@@ -1,88 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" href="__PUBLIC__/plugs/tagsinput/bootstrap-tagsinput.css">
<script src="__PUBLIC__/plugs/tagsinput/bootstrap-tagsinput.js"></script>
<link rel="stylesheet" type="text/css" href="__PUBLIC__/plugs/webuploader/webuploader.css">
<!-- 配置文件 -->
<script type="text/javascript" src="__PUBLIC__/plugs/ueditor/ueditor.config.js"></script>
<!-- 编辑器源码文件 -->
<script type="text/javascript" src="__PUBLIC__/plugs/ueditor/ueditor.all.min.js"></script>
<!-- datepicker statr -->
<link href="__PUBLIC__/plugs/datepicker/css/foundation-datepicker.min.css" rel="stylesheet" type="text/css">
<script src="__PUBLIC__/plugs/datepicker/js/foundation-datepicker.js"></script>
<script src="__PUBLIC__/plugs/datepicker/js/foundation-datepicker.zh-CN.js"></script>
<link rel="stylesheet" type="text/css" href="__PUBLIC__/plugs/board/board.min.css">
<!-- datepicker end -->
{/block}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
</header>
<div class="main-box-body clearfix">
<form method="post" class="form form-horizontal">
{if !isset($info)}
{assign name="info" value="" /}
{/if}
{if !empty($fieldGroup)}
<div class="tabs-wrapper">
<ul class="nav nav-tabs">
{volist name="fieldGroup" id="vGroup"}
<li {if $i eq 1}class="active"{/if}><a href="#tab{$key}" data-toggle="tab">{$key}</a></li>
{/volist}
</ul>
<div class="tab-content">
{volist name="fieldGroup" id="vGroup"}
<div class="tab-pane fade {if condition="$i eq 1"}in active{/if}" id="tab{$key}">
{volist name="vGroup" id="field"}
{if $field['type'] eq 'hidden'}
<input type="hidden" name="{$field['name']}" value="{$info[$field['name']]|default=''}"/>
{else/}
<div class="form-group">
<label class="col-lg-2 control-label">{$field['title']|htmlspecialchars}</label>
<div class="col-lg-10 col-sm-10">
{:widget('common/Form/show',array($field,$info))}
<div class="help-block">{$field['help']|default=''}</div>
</div>
</div>
{/if}
{/volist}
</div>
{/volist}
</div>
</div>
{elseif isset($keyList) /}
{volist name="keyList" id="field"}
{if $field['type'] eq 'hidden'}
<input type="hidden" name="{$field['name']}" value="{$info[$field['name']]|default=''}"/>
{else/}
<div class="form-group">
<label class="col-lg-2 control-label">{$field['title']|htmlspecialchars}</label>
<div class="col-lg-10 col-sm-10">
{:widget('common/Form/show',array($field,$info))}
<div class="help-block">{$field['help']|default=''}</div>
</div>
</div>
{/if}
{/volist}
{/if}
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="hidden" name="id" value="{$info['id']|default=''}">
<button class="btn btn-success submit-btn ajax-post" type="submit" target-form="form-horizontal">确 定</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript" src="__PUBLIC__/plugs/webuploader/webuploader.min.js"></script>
<script type="text/javascript" src="__PUBLIC__/plugs/webuploader/webuploader.custom.js"></script>
<script type="text/javascript" src="__PUBLIC__/js/droppable.js"></script>
<script type="text/javascript" src="__PUBLIC__/plugs/board/board.min.js"></script>
{/block}
-25
View File
@@ -1,25 +0,0 @@
<link rel="stylesheet" type="text/css" href="__STATIC__/plugs/nanoscroller/nanoscroller.css">
<script src="__STATIC__/plugs/nanoscroller/jquery.nanoscroller.min.js"></script>
<script src="__STATIC__/js/bootstrap.js"></script>
<script src="__STATIC__/plugs/jquery/pace.min.js"></script>
<script src="__STATIC__/js/hopscotch.js"></script>
<link rel="stylesheet" type="text/css" href="__STATIC__/css/libs/hopscotch.css">
<script src="__STATIC__/js/messager.js"></script>
<script src="__STATIC__/js/admin/app.js"></script>
<script type="text/javascript">
(function(){
var SentCMS = window.Sent = {
"ROOT" : "__ROOT__", //当前网站地址
"APP" : "__APP__", //当前项目地址
"PUBLIC" : "__STATIC__", //项目公共目录地址
"DEEP" : "{:config('URL_PATHINFO_DEPR')}", //PATHINFO分割符
"MODEL" : ["{:config('URL_MODEL')}", "{:config('URL_CASE_INSENSITIVE')}", "{:config('URL_HTML_SUFFIX')}"],
"VAR" : ["{:config('VAR_MODULE')}", "{:config('VAR_CONTROLLER')}", "{:config('VAR_ACTION')}"]
}
})();
</script>
<script src="__STATIC__/js/core.js"></script>
</body>
</html>
-29
View File
@@ -1,29 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<title>SentCMS网站管理系统后台</title>
<link rel="stylesheet" type="text/css" href="__STATIC__/plugs/bootstrap/css/bootstrap.min.css"/>
<link rel="stylesheet" type="text/css" href="__STATIC__/css/libs/font-awesome.css"/>
<link rel="stylesheet" type="text/css" href="__STATIC__/css/common.css"/>
<!-- <link href='//fonts.googleapis.com/css?family=Open+Sans:400,600,700,300|Titillium+Web:200,300,400' rel='stylesheet' type='text/css'> -->
<link rel="stylesheet" type="text/css" href="__STATIC__/css/admin/style.css"/>
<script type="text/javascript" src="__STATIC__/plugs/jquery/jquery.min.js"></script>
<script type="text/javascript" src="__STATIC__/plugs/layui/layui.all.js"></script>
<script type="text/javascript">
var BASE_URL = "{:config('base_url')}"; //根目录地址
$(function(){
var height = $(window).height();
if ($('#content-wrapper').height() < height) {
$('#content-wrapper').height($(window).height()-100);
}
})
</script>
<!--[if lt IE 9]>
<script src="__STATIC__/js/html5shiv.js"></script>
<script src="__STATIC__/js/respond.min.js"></script>
<![endif]-->
</head>
<body>
-51
View File
@@ -1,51 +0,0 @@
<div id="config-tool" class="closed hidden-sm">
<a id="config-tool-cog">
<i class="fa fa-cog"></i>
</a>
<div id="config-tool-options">
<h4>布局选项</h4>
<ul>
<li>
<div class="checkbox-nice">
<input type="checkbox" id="config-boxed-layout"/>
<label for="config-boxed-layout">内嵌布局</label>
</div>
</li>
<li>
<div class="checkbox-nice">
<input type="checkbox" id="config-sidebar-samll"/>
<label for="config-sidebar-samll">小菜单</label>
</div>
</li>
</ul>
<br/>
<h4>皮肤颜色</h4>
<ul id="skin-colors" class="clearfix">
<li>
<a class="skin-changer" data-skin="" data-toggle="tooltip" title="默认" style="background-color: #34495e;"></a>
</li>
<li>
<a class="skin-changer" data-skin="theme-white" data-toggle="tooltip" title="白/绿" style="background-color: #2ecc71;"></a>
</li>
<li>
<a class="skin-changer blue-gradient" data-skin="theme-blue-gradient" data-toggle="tooltip" title="渐变"></a>
</li>
<li>
<a class="skin-changer" data-skin="theme-turquoise" data-toggle="tooltip" title="绿色海洋" style="background-color: #1abc9c;"></a>
</li>
<li>
<a class="skin-changer" data-skin="theme-amethyst" data-toggle="tooltip" title="紫水晶" style="background-color: #9b59b6;"></a>
</li>
<li>
<a class="skin-changer" data-skin="theme-blue" data-toggle="tooltip" title="蓝色" style="background-color: #2980b9;"></a>
</li>
<li>
<a class="skin-changer" data-skin="theme-red" data-toggle="tooltip" title="红色" style="background-color: #e74c3c;"></a>
</li>
<li>
<a class="skin-changer" data-skin="theme-whbl" data-toggle="tooltip" title="白/蓝" style="background-color: #3498db;"></a>
</li>
</ul>
</div>
</div>
<script src="__STATIC__/js/admin/skin-changer.js"></script>
-80
View File
@@ -1,80 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/libs/bootstrap-editable.css">
{/block}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{:url('add')}">新 增</a>
<button class="btn btn-danger ajax-post confirm" url="{:url('del')}" target-form="ids">删 除</button>
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th width="30"><input class="checkbox check-all" type="checkbox"></th>
<th width="60">ID</th>
<th>名称</th>
<th>规则</th>
<th>排序</th>
<th>SEO标题</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$item['id']}"></td>
<td>{$item['id']}</td>
<td>{$item['title']}</td>
<td>{$item['rule_name']}</td>
<td>{$item['sort']}</td>
<td>{$item['seo_title']}</td>
<td>
<a href="{:url('edit?id='.$item['id'])}">编辑</a>
<a href="{:url('del?id='.$item['id'])}" class="confirm ajax-get">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
{$page}
</div>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript" src="__PUBLIC__/js/bootstrap-editable.min.js"></script>
<script type="text/javascript">
$(function() {
//点击排序
$('.list_sort').click(function(){
var url = $(this).attr('url');
var ids = $('.ids:checked');
var param = '';
if(ids.length > 0){
var str = new Array();
ids.each(function(){
str.push($(this).val());
});
param = str.join(',');
}
if(url != undefined && url != ''){
window.location.href = url + '/ids/' + param;
}
});
$.fn.editable.defaults.mode = 'popup';
$.fn.editableform.buttons = '<button type="submit" class="btn btn-success editable-submit btn-mini"><i class="fa fa-check-square-o fa-white"></i></button>' +
'<button type="button" class="btn editable-cancel btn-mini"><i class="fa fa-times"></i></button>';
$('.editable').editable();
});
</script>
{/block}
-49
View File
@@ -1,49 +0,0 @@
{extend name="public/base"/}
{block name="style"}
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/libs/bootstrap-editable.css">
{/block}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{:url('addrewrite')}">新 增</a>
<button class="btn btn-danger ajax-post confirm" url="{:url('delrewrite')}" target-form="ids">删 除</button>
</div>
</header>
<div class="main-box-body clearfix">
<div class="table-responsive clearfix">
<table class="table table-hover">
<thead>
<tr>
<th width="30"><input class="checkbox check-all" type="checkbox"></th>
<th width="60">ID</th>
<th>规则</th>
<th>地址</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<td><input class="ids row-selected" type="checkbox" name="id[]" value="{$item['id']}"></td>
<td>{$item['id']}</td>
<td>{$item['rule']}</td>
<td>{$item['url']}</td>
<td>
<a href="{:url('editrewrite?id='.$item['id'])}">编辑</a>
<a href="{:url('delrewrite?id='.$item['id'])}" class="confirm ajax-get">删除</a>
</td>
</tr>
{/volist}
</tbody>
</table>
</div>
</div>
</div>
{/block}
{block name="script"}
{/block}
-47
View File
@@ -1,47 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
</div>
</header>
<div class="main-box-body clearfix">
<form method="post" class="form form-horizontal">
<table class="table table-striped">
<thead>
<tr>
<th class="col-lg-2 text-right">模块</th>
<th>分组</th>
</tr>
</thead>
<tbody>
{volist name="list" id="group"}
<tr>
<td class="info col-lg-2 text-right">{:config('USER_GROUP_TYPE')[$key]}</td>
<td class="col-lg-10 text-left">
{volist name="group" id="item"}
<div class="radio radio-nice radio-inline">
<input type="radio" name="{$item['module']}" value="{$item['id']}" id="{$item['module']}-{$item['id']}" {if condition="in_array($item['id'],$auth_list)"}checked{/if} />
<label for="{$item['module']}-{$item['id']}">{$item['title']}</label>
</div>
{/volist}
</td>
</tr>
{/volist}
</tbody>
</table>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="hidden" name="uid" value="{$uid}">
<button type="submit" class="btn btn-success submit-btn ajax-post" target-form="form">确认提交</button>
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
-44
View File
@@ -1,44 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box no-header clearfix">
<!-- 标题栏 -->
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>修改昵称</h2>
</div>
<div class="pull-right">
</div>
</header>
<div class="main-box-body clearfix">
<!-- 修改密码表单 -->
<form method="post" class="form-horizontal">
<div class="form-group">
<label class="col-lg-2 control-label">原密码:</label>
<div class="col-lg-6 col-sm-10">
<input type="password" name="oldpassword" class="form-control " autocomplete="off" />
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">新密码:</label>
<div class="col-lg-6 col-sm-10">
<input type="password" name="password" class="form-control " autocomplete="off" />
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label">确认密码:</label>
<div class="col-lg-6 col-sm-10">
<input type="password" name="repassword" class="form-control " autocomplete="off" />
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<button type="submit" class="btn btn-primary submit-btn ajax-post" target-form="form-horizontal">确 认</button>
<button class="btn btn-default btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
</div>
</div>
</form>
</div>
</div>
{/block}
-101
View File
@@ -1,101 +0,0 @@
{extend name="public/base"/}
{block name="body"}
<div class="main-box no-header clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta_title}</h2>
</div>
<div class="pull-right">
<a href="{:url('add')}" class="btn btn-primary pull-right"> <i class="fa fa-plus-circle fa-lg"></i> 新增用户</a>
</div>
</header>
<div class="main-box-body clearfix">
<div class="navbar navbar-default">
<form action="" class="navbar-form form-inline" method="get">
<div class="form-group">
<label class="control-label" for="input-order-id">用户名</label>
<div class="input-group">
<input type="text" name="username" value="{$param['username']|default=''}" placeholder="用户名" class="form-control">
</div>
</div>
<div class="form-group">
<label class="control-label" for="input-order-id">昵称</label>
<div class="input-group">
<input type="text" name="nickname" value="{$param['nickname']|default=''}" placeholder="昵称" class="form-control">
</div>
</div>
<button class="btn btn-primary" type="submit"><i class="fa fa-search"></i> 筛选</button>
</form>
</div>
<div class="table-responsive">
<table class="table user-list table-hover">
<thead>
<tr>
<th>
<span>用户</span>
</th>
<th>
<span>Email</span>
</th>
<th>
<span>手机号码</span>
</th>
<th>
<span>授权分组</span>
</th>
<th>
<span>创建时间</span>
</th>
<th class="text-center">
<span>状态</span>
</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="item"}
<tr>
<td>
{if isset($item['avatar_url']) && $item['avatar_url']}
<img src="{$item['avatar_url']}" alt="{$item['nickname']}"/>
{else/}
<img src="{:avatar($item['uid'])}" alt="{$item['nickname']}"/>
{/if}
<a href="#" class="user-link">{$item['nickname']}</a>
<span class="user-subhead">{$item['username']}</span>
</td>
<td>
<span >{$item['email']}</span>
</td>
<td>
<span >{$item['mobile']}</span>
</td>
<td>{$item['group_list']|implode=',',###}</td>
<td>{$item['reg_time']|date='Y-m-d',###}</td>
<td class="text-center">
{if condition="$item['status']"}
<span class="label label-primary">启用</span>
{else/}
<span class="label label-danger">禁用</span>
{/if}
</td>
<td>
<a href="{:url('User/edit',array('id'=>$item['uid']))}" class="table-link" title="">
编辑
</a>
<a href="{:url('User/auth',array('id'=>$item['uid']))}" class="table-link">
授权
</a>
<a href="{:url('User/del',array('id'=>$item['uid']))}" class="table-link confirm ajax-get">
删除
</a>
</td>
</tr>
{/volist}
</tbody>
</table>
{$page}
</div>
</div>
</div>
{/block}
-1
View File
@@ -1 +0,0 @@
<?php
-7
View File
@@ -1,7 +0,0 @@
<?php
//配置文件
return [
// 默认输出类型
'default_return_type' => 'json',
];
-37
View File
@@ -1,37 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\api\controller;
class Ad extends \app\common\controller\Api{
public function lists($name = '', $is_cover = 1){
if ($name) {
$place_id = db('AdPlace')->where('name', $name)->value('id');
$map['place_id'] = $place_id;
if ($is_cover) {
$map['cover_id'] = array('GT', 0);
}
$res = db('Ad')->where($map)->select();
$list = array();
foreach ($res as $key => $value) {
$value['cover'] = $this->serverurl . get_cover($value['cover_id'], 'path');
$list[] = $value;
}
$this->data['data'] = $list;
return $this->data;
}else{
$this->data['code'] = 1;
return $this->data;
}
}
}
-58
View File
@@ -1,58 +0,0 @@
<?php
namespace app\api\controller;
class Content extends \app\common\controller\Api{
public function category(){
$model_id = $this->request->param('model_id', 0);
$map = array();
if ($model_id) {
$map['model_id'] = $model_id;
}
$list = db('Category')->where($map)->order('sort asc')->select();
$this->data['data'] = $list;
return $this->data;
}
public function lists(){
$pagesize = $this->request->param('pagesize', 25);
$category_id = $this->request->param('category_id', 0);
$model = $this->request->param('model', 'Article');
$map = array();
if ($category_id) {
$map['category_id'] = $category_id;
}
$res = db($model)->where($map)->order('id desc')->paginate($pagesize);
$data = $res->toArray();
$list = array();
foreach($data['data'] as $key => $value){
$value['create_time'] = date('Y-m-d H:i:s', $value['create_time']);
$value['cover'] = $this->serverurl . get_cover($value['cover_id'], 'path');
$list[] = $value;
}
$data['data'] = $list;
$this->data['data'] = $data;
return $this->data;
}
public function detail($id = 0, $model = 'Article'){
$info = db($model)->where('id', $id)->find();
$info['create_time'] = date('Y-m-d H:i:s', $info['create_time']);
$info['content'] = str_replace('/uploads/', $this->serverurl . '/uploads/', $info['content']);
$info['cover'] = $this->serverurl . get_cover($info['cover_id'], 'path');
$info['download'] = get_file($info['download_file']);
if (isset($info['download']['url'])) {
$info['download']['url'] = $this->serverurl . $info['download']['url'];
}
$this->data['info'] = $info;
return $this->data;
}
}

Some files were not shown because too many files have changed in this diff Show More