后端文件更新

This commit is contained in:
2019-07-09 20:39:01 +08:00
parent 3d9aa3e742
commit 79800d9fcc
18 changed files with 976 additions and 617 deletions

View File

@@ -23,9 +23,9 @@ class Client extends Admin{
'query' => $this->request->param()
));
$data = $res->toArray();
$data['list'] = $res;
$data['page'] = $res->render();
$this->data = $data;
$this->data['data'] = $data;
return $this->data;
}

View File

@@ -52,7 +52,16 @@ class Config extends Admin {
*/
public function group(ConfigModel $config) {
if ($this->request->isAjax()) {
$this->data['code'] = 1;
$data = $this->request->param();
$result = $config->updateConfig($data);
if (false !== $result) {
$this->data['code'] = 0;
$this->data['msg'] = "更新成功!";
}else{
$this->data['code'] = 1;
$this->data['msg'] = $config->error;
}
return $this->data;
} else {
$id = $this->request->param('id', 1);

View File

@@ -9,35 +9,35 @@
namespace app\model;
use think\Model;
use think\facade\Cache;
use think\Model;
/**
* 设置模型
*/
class Config extends Model{
* 设置模型
*/
class Config extends Model {
protected $type = array(
'id' => 'integer',
'id' => 'integer',
);
protected $auto = array('name', 'update_time', 'status'=>1);
protected $auto = array('name', 'update_time', 'status' => 1);
protected $insert = array('create_time');
protected function setNameAttr($value){
return strtolower($value);
}
protected function setNameAttr($value) {
return strtolower($value);
}
protected function getTypeTextAttr($value, $data){
$config = Cache::get('system_config');
$type = $config['config_type_list'];
$type_text = explode(',', $type[$data['type']]);
return $type_text[0];
}
protected function getTypeTextAttr($value, $data) {
$config = Cache::get('system_config');
$type = $config['config_type_list'];
$type_text = explode(',', $type[$data['type']]);
return $type_text[0];
}
public function lists(){
$map = array('status' => 1);
$res = $this->where($map)->field('type,name,value')->select();
public function lists() {
$map = array('status' => 1);
$res = $this->where($map)->field('type,name,value')->select();
$config = array();
foreach ($res->toArray() as $value) {
@@ -46,54 +46,66 @@ class Config extends Model{
return $config;
}
public function updateConfig($data) {
if (empty($data['config'])) {
$this->error = "无更新";
return false;
}
foreach ($data['config'] as $key => $value) {
self::update(['value' => $value], ['name' => $key], ['value']);
}
Cache::set('system_config', null);
return true;
}
/**
* 根据配置类型解析配置
* @param integer $type 配置类型
* @param string $value 配置值
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
private function parse($type, $value){
private function parse($type, $value) {
switch ($type) {
case 'textarea': //解析数组
case 'textarea': //解析数组
$array = preg_split('/[,;\r\n]+/', trim($value, ",;\r\n"));
if(strpos($value,':')){
$value = array();
if (strpos($value, ':')) {
$value = array();
foreach ($array as $val) {
$list = explode(':', $val);
if(isset($list[2])){
$value[$list[0]] = $list[1].','.$list[2];
}else{
$value[$list[0]] = $list[1];
if (isset($list[2])) {
$value[$list[0]] = $list[1] . ',' . $list[2];
} else {
$value[$list[0]] = $list[1];
}
}
}else{
$value = $array;
} else {
$value = $array;
}
break;
}
return $value;
}
public function getThemesList(){
$files = array();
$files['pc'] = $this->getList('pc');
public function getThemesList() {
$files = array();
$files['pc'] = $this->getList('pc');
$files['mobile'] = $this->getList('mobile');
return $files;
}
protected function getList($type){
protected function getList($type) {
$path = './template/';
$file = opendir($path);
$file = opendir($path);
while (false !== ($filename = readdir($file))) {
if (!in_array($filename, array('.', '..'))) {
$files = $path . $filename . '/info.php';
if (is_file($files)) {
$info = include($files);
$info = include $files;
if (isset($info['type']) && $info['type'] == $type) {
$info['id'] = $filename;
$info['img'] = '/template/' . $filename . '/' . $info['img'];
$list[] = $info;
}else{
$list[] = $info;
} else {
continue;
}
}

View File

@@ -3,7 +3,8 @@ namespace app\model;
use think\Model;
class Content extends Model
{
class Content extends Model {
// 定义默认的表后缀(默认查询中文数据)
protected $suffix = '';
}

View File

@@ -4,16 +4,17 @@
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"/>
<meta charset="utf-8">
<title>SentCMS后台管理系统-{$meta['title']|default="后台首页"}</title>
<title>SentCMS后台管理系统-{$meta_title|default="后台首页"}</title>
<link href="__static__/libs/bootstrap/css/bootstrap.min.css" rel="stylesheet"/>
<link href="__static__/libs/font-awesome/css/font-awesome.min.css" rel="stylesheet"/>
<link rel="stylesheet" href="__static__/libs/nanoscroller/nanoscroller.css" />
<link rel="stylesheet" href="__static__/libs/hopscotch/hopscotch.css" />
<link href="__css__/theme_styles.css" rel="stylesheet"/>
{block name="style"}{/block}
</meta>
</head>
<body>
<div id="theme-wrapper" class="vue-main">
<div id="theme-wrapper">
<header class="navbar" id="header-navbar">
<div class="container">
<div class="navbar-header">
@@ -23,38 +24,36 @@
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{:url('admin/index/index')}" id="logo">
<img alt="" class="normal-logo logo-white" src="__static__/images/logo.png"/>
<img alt="" class="normal-logo logo-black" src="__static__/images/logo.png"/>
<img alt="" class="small-logo hidden-xs hidden-sm hidden" src="__static__/images/logo.png"/>
<a href="{:url('/admin/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">admin</span> <b class="caret"></b>
<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="/admin/user/edit.html">
<a href="{:url('/admin/User/edit')}">
<i class="fa fa-user"></i>
修改资料
</a>
</li>
<li>
<a href="/admin/user/editpwd.html">
<a href="{:url('/admin/User/editpwd')}">
<i class="fa fa-cog"></i>
修改密码
</a>
</li>
<li>
<a href="/admin/logout.html">
<a href="{:url('/admin/index/logout')}">
<i class="fa fa-power-off"></i>
退出后台
</a>
</li>
<li>
<a href="http://www.tensent.cn" target="_blank">
<a href="{$config['web_site_url']|default='/'}" target="_blank">
<i class="fa fa-home"></i>
前台首页
</a>
@@ -74,9 +73,9 @@
<div class="collapse navbar-collapse" id="header-nav">
<ul class="nav navbar-nav">
{volist name="headerMenu" id="item"}
<li class="{if isset($item['active']) && $item['active']}active{/if}">
<a href="{:url($item['url'])}">
<i class="fa fa-{$item['icon']}"></i>
<li {if isset($item['active']) && $item['active']}class="active"{/if}>
<a href="{$item['url']|url}">
<i class="fa fa-{$item['icon']|default='file'}"></i>
<span>{$item['title']}</span>
</a>
</li>
@@ -85,30 +84,30 @@
<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">admin</span> <b class="caret"></b>
<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="/admin/user/edit.html">
<a href="{:url('admin/User/edit')}">
<i class="fa fa-user"></i>
修改资料
</a>
</li>
<li>
<a href="/admin/user/editpwd.html">
<a href="{:url('admin/User/editpwd')}">
<i class="fa fa-cog"></i>
修改密码
</a>
</li>
<li>
<a href="/admin/logout.html">
<a href="{:url('admin/index/logout')}">
<i class="fa fa-power-off"></i>
退出后台
</a>
</li>
<li>
<a href="http://www.tensent.cn" target="_blank">
<a href="{$config['web_site_url']|default='/'}" target="_blank">
<i class="fa fa-home"></i>
前台首页
</a>
@@ -125,6 +124,7 @@
</div>
</div>
</header>
<div id="page-wrapper" class="container nav-small">
<div class="row">
<div id="nav-col">
@@ -132,12 +132,50 @@
<div id="col-left-inner" class="col-left-nano-content">
<div id="sidebar-nav">
<ul class="nav nav-pills nav-stacked">
{volist name="asideMenu" id="menu"}
{volist name="asideMenu" id="nav"}
<li class="nav-header hidden-sm hidden-xs">{$key}</li>
{volist name="menu" id="item"}
<li {if $item['active']}class="active"{/if}><a href="{:url($item['url'])}"><i class="fa fa-{$item['icon']}"></i><span>{$item['title']}</span></a></li>
{volist name="nav" id="item"}
{if isset($item['_child'])}
<li {if isset($item['active']) && $item['active']}class="active"{/if}>
<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['active']}">
<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 {if isset($item['active']) && $item['active']}class="active"{/if}>
<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 {if isset($item['active']) && $item['active']}class="active"{/if}>
<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>
@@ -154,10 +192,14 @@
<div class="pull-left">
<ol class="breadcrumb">
<li>
<a href="/Admin/index/index.html">后台首页</a>
<a href="{:url('Admin/Index/index')}">后台首页</a>
</li>
<li class="active">
<span>后台首页</span>
{if isset($meta_title)}
<span>{$meta_title}</span>
{else/}
<span>{:lang(request()->controller().'_'.request()->action())}</span>
{/if}
</li>
</ol>
</div>
@@ -168,19 +210,7 @@
</div>
<div class="row">
<div class="col-lg-12">
{block name="body"}
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>{$meta|default='新功能'}</h2>
</div>
<div class="pull-right">
</div>
</header>
<div class="main-box-body clearfix">
</div>
</div>
{/block}
{block name="body"}{/block}
</div>
</div>
</div>
@@ -193,7 +223,11 @@
</div>
</div>
{include file="admin/setting"}
<script src="__js__/skin-changer.js"></script>
<script type="text/javascript" src="__static__/libs/jquery/jquery.min.js"></script>
<script type="text/javascript" src="__static__/libs/nanoscroller/jquery.nanoscroller.min.js"></script>
<script type="text/javascript" src="__static__/libs/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="__static__/libs/hopscotch/hopscotch.js"></script>
<script src="__js__/app.js"></script>
<script type="text/javascript" src="__static__/libs/requirejs/require.js" data-main="__js__/main.js?v={$system_version|default='4.0.0'}"></script>
{block name="script"}
<script type="text/javascript">

View File

@@ -47,14 +47,14 @@
<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;">
<select class="form-control" name="config[{$item['name']}]" id="config[{$item['name']}]" data-toggle='cxselect' 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;">
<select class="form-control" name="config[{$item['name']}]" id="config[{$item['name']}]" data-toggle='cxselect' 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}

View File

@@ -3,7 +3,7 @@
<div class="main-box clearfix">
<header class="main-box-header clearfix">
<div class="pull-left">
<h2>网站设置</h2>
<h2>{$meta_title|default="新功能"}</h2>
</div>
<div class="pull-right">
<a href="{:url('Config/group')}" class="btn btn-danger">

View File

@@ -1,7 +1,13 @@
{extend name="admin/base"/}
{block name="body"}
<Card style="width:350px">
<p slot="title">
<Icon type="ios-film-outline"></Icon>
Classic film
</p>
<Input v-model="value" placeholder="Enter something..." style="width: 300px" />
</Card>
{/block}
{block name="script"}
<script type="text/javascript">

View File

@@ -1,74 +1,51 @@
<div class="closed" id="config-tool">
<a id="config-tool-cog"><i class="fa fa-cog"></i></a>
<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 id="config-fixed-header" type="checkbox"/>
<label for="config-fixed-header">固定头部</label>
<input type="checkbox" id="config-boxed-layout"/>
<label for="config-boxed-layout">内嵌布局</label>
</div>
</li>
<li>
<div class="checkbox-nice">
<input id="config-fixed-sidebar" type="checkbox"/>
<label for="config-fixed-sidebar">固定左侧菜单</label>
<input type="checkbox" id="config-sidebar-samll"/>
<label for="config-sidebar-samll">菜单</label>
</div>
</li>
<li>
<div class="checkbox-nice">
<input id="config-fixed-footer" type="checkbox"/>
<label for="config-fixed-footer">固定底部</label>
</div>
</li>
<li>
<div class="checkbox-nice">
<input id="config-boxed-layout" type="checkbox"/>
<label for="config-boxed-layout">盒式布局</label>
</div>
</li>
<!-- <li>
<div class="checkbox-nice">
<input id="config-rtl-layout" type="checkbox"/>
<label for="config-rtl-layout">左右翻转</label>
</div>
</li> -->
</ul>
<br/>
<h4>主题颜色</h4>
<ul class="clearfix" id="skin-colors">
<h4>皮肤颜色</h4>
<ul id="skin-colors" class="clearfix">
<li>
<a class="skin-changer" data-skin="" data-toggle="tooltip" style="background-color: #34495e;" title="Default">
</a>
<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" style="background-color: #2ecc71;" title="White/Green">
</a>
<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="Gradient">
</a>
<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" style="background-color: #1abc9c;" title="Green Sea">
</a>
<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" style="background-color: #9b59b6;" title="Amethyst">
</a>
<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" style="background-color: #2980b9;" title="Blue">
</a>
<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" style="background-color: #e74c3c;" title="Red">
</a>
<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" style="background-color: #3498db;" title="White/Blue">
</a>
<a class="skin-changer" data-skin="theme-whbl" data-toggle="tooltip" title="白/蓝" style="background-color: #3498db;"></a>
</li>
</ul>
</div>
</div>
</div>
<script src="__js__/skin-changer.js"></script>