提交 a22f25ae 编写于 作者: G gongfuxiang

1.3.0

上级 bfa77533
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2018 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\service\PluginsService;
/**
* 应用管理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class Plugins extends Common
{
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->Is_Login();
// 权限校验
$this->Is_Power();
}
/**
* [Index 配置列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
// 参数
$params = input();
// 分页
$number = 12;
// 条件
$where = PluginsService::PluginsListWhere($params);
// 获取总数
$total = PluginsService::PluginsTotal($where);
// 分页
$page_params = array(
'number' => $number,
'total' => $total,
'where' => $params,
'page' => isset($params['page']) ? intval($params['page']) : 1,
'url' => MyUrl('admin/plugins/index'),
);
$page = new \base\Page($page_params);
$this->assign('page_html', $page->GetPageHtml());
// 获取列表
$data_params = array(
'm' => $page->GetPageStarNumber(),
'n' => $number,
'where' => $where,
);
$data = PluginsService::PluginsList($data_params);
$this->assign('data_list', $data['data']);
return $this->fetch();
}
}
?>
\ No newline at end of file
......@@ -33,7 +33,6 @@
<div class="am-form-group">
<label>官网地址<span class="fs-12 fw-100 cr-999">(带http://或https://)</span></label>
<input type="url" placeholder="官网地址" name="website_url" data-validation-message="官网地址格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.website_url}}"{{/if}} />
</div>
<div class="am-form-group am-form-file">
......
......@@ -44,7 +44,7 @@
<textarea class="am-radius am-validate" name="content" rows="5" minlength="50" maxlength="105000" {{if !IsMobile()}}id="editor-tag" data-url="{{:MyUrl('admin/ueditor/index', ['path_type'=>'customview'])}}" placeholder="内容长度最少 50~105000 个字符" {{else /}} placeholder="内容长度最少 50~105000 个字符更多编辑功能请使用电脑访问" {{/if}} data-validation-message="内容长度最少 50~105000 个字符" required>{{if !empty($data)}}{{$data.content}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}}" />
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
......
......@@ -2,7 +2,7 @@
<div class="am-form-group">
<label>是否启用</label>
<div>
{{foreach $common_is_enable_list as $v}}
{{foreach :lang('common_is_enable_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="is_enable" value="{{$v.id}}" {{if isset($data['is_enable']) and $data['is_enable'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_enable']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
......
......@@ -9,11 +9,11 @@
<form class="am-form form-validation excel-form" action="{{$excel_import_form_url}}" method="POST" request-type="ajax-fun" request-value="ExcelImportCallback" enctype="multipart/form-data">
<input type="hidden" name="max_file_size" value="{{:MyC('home_max_limit_file', 51200000)}}" />
<div class="am-alert am-radius am-alert-tips m-t-0" data-am-alert>
<notempty name="excel_import_format_url">
<p class="m-b-)}}<a href="{{$excel_import_format_url}}" class="cr-blue">Excel格式下载</a><span class="m-r-5)}}</p>
{{if !empty($excel_import_format_url)}}
<p class="m-b-10"><a href="{{$excel_import_format_url}}" class="cr-blue">Excel格式下载</a><span class="m-r-5"></p>
{{/if}}
<notempty name="excel_import_tips">
<p class="m-t-1)}}{{$excel_import_tips}}</p>
{{if !empty($excel_import_tips)}}
<p class="m-t-10">{{$excel_import_tips}}</p>
{{/if}}
<p class="cr-red">PS:导入数据建议一次不要超过10万条。</p>
</div>
......@@ -30,7 +30,7 @@
<!-- import tips start -->
<div class="am-alert am-alert-success am-radius excel-import-success none">导入成功 <strong>0</strong></div>
<div class="am-panel am-panel-danger am-radius excel-import-error none">
<div class="am-panel-hd p-l-1)}}导入失败 <strong>0</strong> 条</div>
<div class="am-panel-hd p-l-10">导入失败 <strong>0</strong></div>
<table class="am-table"><tbody></tbody></table>
</div>
<!-- import tips end -->
......
......@@ -2,7 +2,7 @@
<div class="am-form-group">
<label>性别</label>
<div>
{{foreach $common_gender_list as $v}}
{{foreach :lang('common_gender_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="gender" value="{{$v.id}}" {{if isset($data['gender']) and $data['gender'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['gender']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
......
......@@ -2,7 +2,7 @@
<div class="am-form-group">
<label>是否含尾部</label>
<div>
{{foreach $common_is_footer_list as $v}}
{{foreach :lang('common_is_footer_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="is_footer" value="{{$v.id}}" {{if isset($data['is_footer']) and $data['is_footer'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_footer']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
......
......@@ -2,7 +2,7 @@
<div class="am-form-group">
<label>是否满屏</label>
<div>
{{foreach $common_is_full_screen_list as $v}}
{{foreach :lang('common_is_full_screen_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="is_full_screen" value="{{$v.id}}" {{if isset($data['is_full_screen']) and $data['is_full_screen'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_full_screen']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
......
......@@ -2,7 +2,7 @@
<div class="am-form-group">
<label>是否含头部</label>
<div>
{{foreach $common_is_header_list as $v}}
{{foreach :lang('common_is_header_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="is_header" value="{{$v.id}}" {{if isset($data['is_header']) and $data['is_header'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_header']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
......
......@@ -2,7 +2,7 @@
<div class="am-form-group">
<label>是否新窗口打开</label>
<div>
{{foreach $common_is_new_window_open_list as $v}}
{{foreach :lang('common_is_new_window_open_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="is_new_window_open" value="{{$v.id}}" {{if isset($data['is_new_window_open']) and $data['is_new_window_open'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_new_window_open']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
......
......@@ -2,7 +2,7 @@
<div class="am-form-group">
<label>是否显示</label>
<div>
{{foreach $common_is_show_list as $v}}
{{foreach :lang('common_is_show_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="is_show" value="{{$v.id}}" {{if isset($data['is_show']) and $data['is_show'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_show']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
......
......@@ -2,7 +2,7 @@
<div class="am-form-group">
<label>{{:lang('common_view_user_status_name')}}</label>
<select name="status" class="am-radius c-p" data-validation-message="{{:lang('common_user_status_format')}}" required>
{{foreach $common_user_status_list as $v}}
{{foreach :lang('common_user_status_list') as $v}}
<option value="{{$v.id}}" {{if isset($data['status']) and $data['status'] eq $v['id']}}selected{{else /}}{{if !isset($data['status']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
......
......@@ -89,7 +89,7 @@
{{if empty($v['add_time_time'])}}<span class="cr-ddd">未设置</span>{{else /}}{{$v.add_time_time}}{{/if}}
</td>
<td class="view-operation">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/message/Delete')}}" data-id="{{$v.id}}"> 删除</button>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/message/delete')}}" data-id="{{$v.id}}"> 删除</button>
</td>
</tr>
{{/foreach}}
......
......@@ -90,14 +90,14 @@
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-cubes submit-ajax" data-url="{{:MyUrl('admin/payment/install')}}" data-id="{{$v.payment}}" data-view="reload" data-msg="安装进行中、确认操作吗?"> 安装</button>
{{if !in_array($v['payment'], $cannot_deleted_list)}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/payment/Delete')}}" data-id="{{$v.payment}}"> 删除</button>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/payment/delete')}}" data-id="{{$v.payment}}"> 删除</button>
{{/if}}
{{else /}}
<a href="{{:MyUrl('admin/payment/saveinfo', array('id'=>$v['id']))}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit"> 编辑</button>
</a>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-genderless submit-ajax" data-url="{{:MyUrl('admin/payment/uninstall')}}" data-id="{{$v.payment}}" data-view="reload" data-msg="卸载后不可恢复、确认操作吗?"> 卸载</button>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-remove submit-ajax" data-url="{{:MyUrl('admin/payment/uninstall')}}" data-id="{{$v.payment}}" data-view="reload" data-msg="卸载后不可恢复、确认操作吗?"> 卸载</button>
{{/if}}
</td>
</tr>
......
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
{{if !empty($data_list)}}
<ul data-am-widget="gallery" class="am-gallery am-avg-sm-2 am-avg-md-3 am-avg-lg-4 am-gallery-bordered" data-am-gallery="{}">
{{foreach $data_list as $v}}
<li>
<div class="am-gallery-item">
<img src="{{$v.logo}}" class="icon" />
<div class="base">
<h3 class="name">{{$v.name}}</h3>
<p>作者:{{$v.author}}</p>
<p>主页:<a href="{{$v.author_url}}" target="_blank">{{$v.author_url}}</a></p>
<p>版本:{{$v.version}}</p>
</div>
<div class="am-gallery-desc">{{$v.desc}}</div>
<div class="operation">
<a href="{{:MyUrl('plugins/index/index', ['control'=>$v['plugins'], 'action'=>'index'])}}" class="am-btn am-btn-default am-btn-xs am-radius am-icon-gear"> 设置</a>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-remove submit-ajax" data-url="{{:MyUrl('admin/plugins/uninstall')}}" data-id="10" data-view="reload" data-msg="卸载后不可恢复、确认操作吗?"> 卸载</button>
</div>
</div>
</li>
{{/foreach}}
</ul>
{{else /}}
hello
{{/if}}
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
\ No newline at end of file
......@@ -68,7 +68,7 @@
<i class="am-icon-plus c-p m-r-5"></i>
<label class="c-p">
{{else /}}
<label class="c-p m-l-2)}}
<label class="c-p m-l-20">
{{/if}}
<span>{{if !empty($v['icon'])}}<span class="iconfont {{$v.icon}}"></span>{{/if}} {{$v.name}}</span>
</label>
......
<!-- delete html start -->
<div class="am-modal am-modal-confirm" tabindex="-1" id="common-confirm-delete">
<div class="am-modal-dialog am-radius">
<div class="am-modal-bd">删除后无法恢复,确定继续吗?</div>
<div class="am-modal-footer">
<span class="am-modal-btn" data-am-modal-cancel>取消</span>
<span class="am-modal-btn" data-am-modal-confirm>确认</span>
</div>
</div>
</div>
<!-- delete html end -->
<!-- delete html start -->
<div class="am-modal am-modal-confirm" tabindex="-1" id="common-confirm-cancel">
<div class="am-modal-dialog am-radius">
<div class="am-modal-bd">取消后无法恢复,确定继续吗?</div>
<div class="am-modal-footer">
<span class="am-modal-btn" data-am-modal-cancel>取消</span>
<span class="am-modal-btn" data-am-modal-confirm>确认</span>
</div>
</div>
</div>
<!-- delete html end -->
\ No newline at end of file
<!-- commom html -->
{{include file="public/common" /}}
<textarea id="upload-editor-view" data-url="{{:MyUrl('admin/ueditor/index', ['path_type'=>empty($editor_path_type) ? 'common' : $editor_path_type])}}" style="display: none;"></textarea>
</body>
</html>
......
......@@ -10,6 +10,7 @@
// +----------------------------------------------------------------------
namespace app\index\controller;
use think\facade\Hook;
use think\Controller;
use app\service\GoodsService;
use app\service\NavigationService;
......@@ -64,6 +65,24 @@ class Common extends Controller
// 视图初始化
$this->ViewInit();
// 公共钩子初始化
$this->CommonPluginsInit();
}
/**
* 公共钩子初始化
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-12-07
* @desc description
*/
private function CommonPluginsInit()
{
// 公共顶部钩子
$this->assign('plugins_common_top_data', Hook::listen('plugins_common_top'));
//$this->assign('plugins_common_nav_top_data', Hook::listen('plugins_common_nav_top'));
}
/**
......@@ -210,6 +229,9 @@ class Common extends Controller
// 友情链接
$link = LinkService::LinkList(['where'=>['is_enable'=>1]]);
$this->assign('link_list', $link['data']);
// 开发模式
$this->assign('shopxo_is_develop', config('shopxo.is_develop'));
}
/**
......
......@@ -10,6 +10,7 @@
// +----------------------------------------------------------------------
namespace app\index\controller;
use app\index\controller\Common;
use app\service\BannerService;
use app\service\GoodsService;
use app\service\ArticleService;
......@@ -65,6 +66,7 @@ class Index extends Common
// 用户订单状态
$user_order_status = OrderService::OrderStatusStepTotal(['user_type'=>'user', 'user'=>$this->user, 'is_comments'=>1]);
$this->assign('user_order_status', $user_order_status['data']);
return $this->fetch();
}
}
......
......@@ -39,6 +39,20 @@
</head>
<body>
<!-- 公共顶部钩子 -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<div class="plugins-tag">
<span>plugins_common_top</span>
</div>
{{/if}}
{{if !empty($plugins_common_top_data) and is_array($plugins_common_top_data)}}
{{foreach $plugins_common_top_data as $hook}}
{{if is_string($hook) or is_int($hook)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
{{/if}}
<!-- 商城公告 -->
{{if MyC('home_site_state') == 1 and (!isset($is_header) or $is_header eq 1)}}
{{if !empty($common_shop_notice)}}
......@@ -46,4 +60,18 @@
<div class="am-container">{{$common_shop_notice}}</div>
</div>
{{/if}}
{{/if}}
<!-- 公共顶部公告下钩子 -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<div class="plugins-tag">
<span>plugins_common_nav_top</span>
</div>
{{/if}}
{{if !empty($plugins_common_nav_top_data) and is_array($plugins_common_nav_top_data)}}
{{foreach $plugins_common_nav_top_data as $hook}}
{{if is_string($hook) or is_int($hook)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
{{/if}}
\ No newline at end of file
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2018 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\plugins\commontopmaxpicture;
use think\Controller;
use app\service\PluginsService;
/**
* 顶部广告插件
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class CommonTopMaxPicture extends Controller
{
public function run($params = [])
{
// 是否控制器
if(isset($params['is_control']) && $params['is_control'] === true)
{
return [];
// 默认返回视图
} else {
return $this->html();
}
}
/**
* 视图
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-06T16:16:34+0800
*/
public function html()
{
$ret = PluginsService::PluginsData('commontopmaxpicture');
$html = '<div style="text-align: center;';
$content = '';
if($ret['code'] == 0)
{
// 背景色
if(!empty($ret['data']['bg_color']))
{
$html .= 'background: '.$ret['data']['bg_color'].';';
}
$content .= '<a href="'.(empty($ret['data']['url']) ? 'javascript:;' : $ret['data']['url']).'" '.($ret['data']['is_new_window_open'] == 1 ? 'target="_blank"' : '').'>';
$content .= '<img src="'.$ret['data']['images'].'" />';
$content .= '</a>';
} else {
$content = $ret['msg'];
}
$html .= '">';
$html .= $content;
$html .= '</div>';
return $html;
}
/**
* 配置信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-06T16:16:34+0800
*/
public function config()
{
// 基础信息
$base = [
'author' => 'Devil',
'blog' => 'http://gong.gg',
'name' => '顶部广告',
'version' => '1.0.0',
'sales_amount' => 0,
];
// 后台配置
$admin = [
];
// 控制器钩子
$control_hook = [
'plugins_control_hook' => [
'plugins_common_top' => ['app\\plugins\\commontopmaxpicture\\CommonTopMaxPicture'],
],
];
return [
'base' => $base,
'admin' => $admin,
'control_hook' => $control_hook,
];
}
/**
* 首页
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-07T08:21:54+0800
* @param [array] $params [输入参数]
*/
public function index($params = [])
{
$ret = PluginsService::PluginsData('commontopmaxpicture');
if($ret['code'] == 0)
{
$this->assign('data', $ret['data']);
return $this->fetch('commontopmaxpicture/index');
} else {
$this->assign('msg', $ret['msg']);
return $this->fetch('public/error');
}
}
/**
* 编辑页面
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-07T08:21:54+0800
* @param [array] $params [输入参数]
*/
public function saveinfo($params = [])
{
$ret = PluginsService::PluginsData('commontopmaxpicture');
if($ret['code'] == 0)
{
$this->assign('data', $ret['data']);
return $this->fetch('commontopmaxpicture/saveinfo');
} else {
$this->assign('msg', $ret['msg']);
return $this->fetch('public/error');
}
}
/**
* 保存
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-07T08:21:54+0800
* @param [array] $params [输入参数]
*/
public function save($params = [])
{
unset($params['max_file_size']);
return PluginsService::PluginsDataSave(['plugins'=>'commontopmaxpicture', 'data'=>$params]);
}
}
?>
\ No newline at end of file
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2018 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
// +----------------------------------------------------------------------
// | 模板设置
// +----------------------------------------------------------------------
return [
// 模板引擎类型 支持 php think 支持扩展
'type' => 'Think',
// 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法
'auto_rule' => 1,
// 模板路径
'view_path' => APP_PATH.'plugins'.DS.'view'.DS,
// 模板后缀
'view_suffix' => 'html',
// 模板文件名分隔符
'view_depr' => DIRECTORY_SEPARATOR,
// 模板引擎普通标签开始标记
'tpl_begin' => '{{',
// 模板引擎普通标签结束标记
'tpl_end' => '}}',
// 标签库标签开始标记
'taglib_begin' => '{{',
// 标签库标签结束标记
'taglib_end' => '}}',
];
?>
\ No newline at end of file
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2018 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\plugins\controller;
use think\Controller;
/**
* 插件入口控制器
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class Index extends Controller
{
/**
* 入口
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function Index()
{
// 登录校验
$this->IsLogin();
// 参数
$params = input();
$control = strtolower($params['control']);
$action = strtolower($params['action']);
// 编辑器文件存放地址定义
$this->assign('editor_path_type', 'plugins_'.$control);
// 系统初始化
$this->SystemInit();
// 视图初始化
$this->ViewInit($control, $action);
// 调用插件
return controller(ucfirst($control), $control)->$action(input('post.'));
}
/**
* 登录校验
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:42:35+0800
*/
protected function IsLogin()
{
if(session('admin') === null)
{
if(IS_AJAX)
{
exit(json_encode(DataReturn('登录失效,请重新登录', -400)));
} else {
die('<script type="text/javascript">if(self.frameElement && self.frameElement.tagName == "IFRAME"){parent.location.reload();}else{window.location.href="'.MyUrl('admin/admin/logininfo').'";}</script>');
}
}
}
/**
* 系统初始化
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-12-07
* @desc description
*/
private function SystemInit()
{
// url模式,后端采用兼容模式
\think\facade\Url::root(__MY_ROOT_PUBLIC__.'index.php?s=');
}
/**
* 视图初始化
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-07T22:46:29+0800
* @param [string] $controller_name [控制器名称]
* @param [string] $action_name [方法]
*/
public function ViewInit($controller_name, $action_name)
{
// 当前操作名称
$module_name = strtolower(request()->module());
// 当前操作名称
$this->assign('module_name', $module_name);
$this->assign('controller_name', $controller_name);
$this->assign('action_name', $action_name);
// 控制器静态文件状态css,js
$module_css = $module_name.DS.'css'.DS.$controller_name;
$module_css .= file_exists(ROOT_PATH.'static'.DS.$module_css.'.'.$action_name.'.css') ? '.'.$action_name.'.css' : '.css';
$this->assign('module_css', file_exists(ROOT_PATH.'static'.DS.$module_css) ? $module_css : '');
$module_js = $module_name.DS.'js'.DS.$controller_name;
$module_js .= file_exists(ROOT_PATH.'static'.DS.$module_js.'.'.$action_name.'.js') ? '.'.$action_name.'.js' : '.js';
$this->assign('module_js', file_exists(ROOT_PATH.'static'.DS.$module_js) ? $module_js : '');
// 图片host地址
$this->assign('attachment_host', config('shopxo.attachment_host'));
}
}
?>
\ No newline at end of file
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<legend>
<span class="fs-16">顶部大图</span>
<a href="{{:MyUrl('admin/plugins/index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
</legend>
<div class="commontopmaxpicture-content">
<div class="items">
<label>图片</label>
<div class="immages-tag">
<img src="{{if !empty($data['images_old'])}}{{$data.images_old}}{{else /}}{{$attachment_host}}/static/plugins/images/default-images.png{{/if}}" />
</div>
</div>
<div class="items">
<label>背景色</label>
<div class="bg-color-tag" {{if !empty($data['bg_color'])}}style="background:{{$data.bg_color}}"{{/if}}></div>
</div>
<div class="items">
<label>链接地址</label>
<div>
{{if !empty($data['url'])}}
<a href="{{$data.url}}" target="_blank">{{$data.url}}</a>
{{else /}}
{{/if}}
</div>
</div>
<div class="items">
<label>是否新窗口打开</label>
<div>
{{if isset($data['is_new_window_open']) and $data['is_new_window_open'] eq 1}}
{{else /}}
{{/if}}
</div>
</div>
<a href="{{:MyUrl('plugins/index/index', ['control'=>'commontopmaxpicture', 'action'=>'saveinfo'])}}" class="am-btn am-btn-secondary am-radius btn-loading-example am-btn-sm am-btn-block">编辑</a>
</div>
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
\ No newline at end of file
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('plugins/index/index', ['control'=>'commontopmaxpicture', 'action'=>'save'])}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('plugins/index/index', ['control'=>'commontopmaxpicture', 'action'=>'index'])}}" enctype="multipart/form-data">
<input type="hidden" name="max_file_size" value="{{:MyC('home_max_limit_image', 2048000)}}" />
<legend>
<span class="fs-16">顶部大图</span>
<a href="{{:MyUrl('plugins/index/index', ['control'=>'commontopmaxpicture', 'action'=>'index'])}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
</legend>
<div class="am-form-group am-form-file">
<label class="block">图片<span class="fs-12 fw-100 cr-999">(建议1200像数X80像数)</span></label>
<ul class="plug-file-upload-view plugins-images-view" data-form-name="images" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="images" value="{{if !empty($data['images'])}}{{$data.images}}{{/if}}" data-validation-message="请上传图片" required />
<img src="{{if !empty($data['images_old'])}}{{$data.images_old}}{{else /}}{{$attachment_host}}/static/plugins/images/default-images.png{{/if}}" />
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.plugins-images-view">+上传图片</div>
</div>
<div class="am-form-group">
<label>背景色</label>
<input type="hidden" name="bg_color" value="{{if !empty($data['bg_color'])}}{{$data.bg_color}}{{/if}}" />
<button class="am-btn am-btn-default colorpicker-submit bg-color-tag am-btn-block bk-cr-white t-r" type="button" data-input-tag="button.bg-color-tag" data-color-tag="input[name='bg_color']" data-color-style="background-color" {{if !empty($data['bg_color'])}}style="background:{{$data.bg_color}}"{{/if}}>
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>
</div>
<div class="am-form-group">
<label>链接地址<span class="fs-12 fw-100 cr-999">(带http://或https://)</span></label>
<input type="url" placeholder="链接地址" name="url" data-validation-message="链接地址格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.url}}"{{/if}} />
</div>
{{include file="lib/is_new_window_open" /}}
<div class="am-form-group">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
<!-- form end -->
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
\ No newline at end of file
<!-- 是否启用 开始 -->
<div class="am-form-group">
<label>是否启用</label>
<div>
{{foreach :lang('common_is_enable_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="is_enable" value="{{$v.id}}" {{if isset($data['is_enable']) and $data['is_enable'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_enable']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
{{/foreach}}
</div>
</div>
<!-- 是否启用 结束 -->
\ No newline at end of file
<div class="am-popup am-radius" id="excel-import-win">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">导入Excel</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<!-- win form start -->
<form class="am-form form-validation excel-form" action="{{$excel_import_form_url}}" method="POST" request-type="ajax-fun" request-value="ExcelImportCallback" enctype="multipart/form-data">
<input type="hidden" name="max_file_size" value="{{:MyC('home_max_limit_file', 51200000)}}" />
<div class="am-alert am-radius am-alert-tips m-t-0" data-am-alert>
{{if !empty($excel_import_format_url)}}
<p class="m-b-10"><a href="{{$excel_import_format_url}}" class="cr-blue">Excel格式下载</a><span class="m-r-5"></p>
{{/if}}
{{if !empty($excel_import_tips)}}
<p class="m-t-10">{{$excel_import_tips}}</p>
{{/if}}
<p class="cr-red">PS:导入数据建议一次不要超过10万条。</p>
</div>
<div class="am-form-group am-form-file">
<button type="button" class="am-btn am-btn-default am-btn-sm am-radius"><i class="am-icon-cloud-upload"></i> 选择文件</button>
<input type="file" name="excel" multiple data-validation-message="请选择需要上传的文件" accept="application/vnd.ms-excel" required />
</div>
<div class="am-form-group">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">确认</button>
</div>
</form>
<!-- win form end -->
<!-- import tips start -->
<div class="am-alert am-alert-success am-radius excel-import-success none">导入成功 <strong>0</strong></div>
<div class="am-panel am-panel-danger am-radius excel-import-error none">
<div class="am-panel-hd p-l-10">导入失败 <strong>0</strong></div>
<table class="am-table"><tbody></tbody></table>
</div>
<!-- import tips end -->
</div>
</div>
</div>
\ No newline at end of file
<script>
/**
* [ExcelImportCallback excel导入回调(公共表单方法校验需要放在这里,不能校验其它文件的方法)]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-02-11T21:46:50+0800
* @param {[object]} data [回调数据]
*/
function ExcelImportCallback(data)
{
if(data.code == 0)
{
// 成功
if(data.data.success > 0)
{
$('.excel-import-success').removeClass('none');
$('.excel-import-success').find('strong').text(data.data.success);
} else {
$('.excel-import-success').addClass('none');
}
// 失败
if(data.data.error.length == 0)
{
$('.excel-import-error').addClass('none');
} else {
$('.excel-import-error').removeClass('none');
$('.excel-import-error').find('strong').text(data.data.error.length);
var html = '';
for(var i in data.data.error)
{
html += '<tr><td>'+data.data.error[i]+'</td></tr>';
}
$('.excel-import-error').find('table tbody').html(html);
}
} else {
Prompt(data.msg);
}
$.AMUI.progress.done();
$('.form-validation').find('button[type="submit"]').button('reset');
}
</script>
\ No newline at end of file
<!-- 性别 开始 -->
<div class="am-form-group">
<label>性别</label>
<div>
{{foreach :lang('common_gender_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="gender" value="{{$v.id}}" {{if isset($data['gender']) and $data['gender'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['gender']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
{{/foreach}}
</div>
</div>
<!-- 性别 结束 -->
\ No newline at end of file
<!-- 是否包含尾部 开始 -->
<div class="am-form-group">
<label>是否含尾部</label>
<div>
{{foreach :lang('common_is_footer_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="is_footer" value="{{$v.id}}" {{if isset($data['is_footer']) and $data['is_footer'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_footer']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
{{/foreach}}
</div>
</div>
<!-- 是否包含尾部 结束 -->
\ No newline at end of file
<!-- 是否满屏 开始 -->
<div class="am-form-group">
<label>是否满屏</label>
<div>
{{foreach :lang('common_is_full_screen_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="is_full_screen" value="{{$v.id}}" {{if isset($data['is_full_screen']) and $data['is_full_screen'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_full_screen']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
{{/foreach}}
</div>
</div>
<!-- 是否满屏 结束 -->
\ No newline at end of file
<!-- 是否包含头部 开始 -->
<div class="am-form-group">
<label>是否含头部</label>
<div>
{{foreach :lang('common_is_header_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="is_header" value="{{$v.id}}" {{if isset($data['is_header']) and $data['is_header'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_header']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
{{/foreach}}
</div>
</div>
<!-- 是否包含头部 结束 -->
\ No newline at end of file
<!-- 是否新窗口打开 开始 -->
<div class="am-form-group">
<label>是否新窗口打开</label>
<div>
{{foreach :lang('common_is_new_window_open_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="is_new_window_open" value="{{$v.id}}" {{if isset($data['is_new_window_open']) and $data['is_new_window_open'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_new_window_open']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
{{/foreach}}
</div>
</div>
<!-- 是否新窗口打开 结束 -->
\ No newline at end of file
<!-- 是否显示 开始 -->
<div class="am-form-group">
<label>是否显示</label>
<div>
{{foreach :lang('common_is_show_list') as $v}}
<label class="am-radio-inline m-r-10">
<input type="radio" name="is_show" value="{{$v.id}}" {{if isset($data['is_show']) and $data['is_show'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_show']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
{{/foreach}}
</div>
</div>
<!-- 是否显示 结束 -->
\ No newline at end of file
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<legend>
<span class="fs-16">顶部大图</span>
<a href="{{:MyUrl('admin/plugins/index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
</legend>
<div class="table-no">
<i class="am-icon-warning cr-999"></i>
{{if empty($msg)}}
没有相关数据
{{else /}}
{{$msg}}
{{/if}}
</div>
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
\ No newline at end of file
<!-- commom html -->
<textarea id="upload-editor-view" data-url="{{:MyUrl('admin/ueditor/index', ['path_type'=>empty($editor_path_type) ? 'common' : $editor_path_type])}}" style="display: none;"></textarea>
</body>
</html>
<!-- 类库 -->
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/jquery/jquery-2.1.0.js"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/assets/js/amazeui.min.js"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/echarts/echarts.min.js"></script>
<!-- ueditor 编辑器 -->
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/ueditor/ueditor.config.js"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/ueditor/ueditor.all.js"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/ueditor/lang/zh-cn/zh-cn.js"></script>
<!-- 颜色选择器 -->
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/colorpicker/jquery.colorpicker.js"></script>
<!-- 元素拖拽排序插件 -->
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/dragsort/jquery.dragsort-0.5.2.min.js"></script>
<!-- amazeui插件 -->
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-switch/amazeui.switch.min.js"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-chosen/amazeui.chosen.min.js"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-dialog/amazeui.dialog.min.js"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-tagsinput/amazeui.tagsinput.min.js"></script>
<!-- 日期组件 -->
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/My97DatePicker/WdatePicker.js"></script>
<!-- 隐藏编辑器初始化 -->
<script type="text/javascript">
var upload_editor = UE.getEditor("upload-editor-view", {
isShow: false,
focus: false,
enableAutoSave: false,
autoSyncData: false,
autoFloatEnabled:false,
wordCount: false,
sourceEditor: null,
scaleEnabled:true,
toolbars: [["insertimage", "insertvideo", "attachment"]]
});
</script>
<!-- 项目公共 -->
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/js/common.js"></script>
<!-- 控制器 -->
{{if !empty($module_js)}}
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/{{$module_js}}"></script>
{{/if}}
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="{{:config('shopxo.default_charset', 'utf-8')}}" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1, maximum-scale=1" />
<title>ShopXO后台管理系统</title>
<link rel="stylesheet" type="text/css" href="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/assets/css/amazeui.css" />
<link rel="stylesheet" type="text/css" href="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-switch/amazeui.switch.css" />
<link rel="stylesheet" type="text/css" href="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-chosen/amazeui.chosen.css" />
<link rel="stylesheet" type="text/css" href="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-tagsinput/amazeui.tagsinput.css" />
<link rel="stylesheet" type="text/css" href="{{$Think.__MY_ROOT_PUBLIC__}}static/common/css/common.css" />
<link rel="stylesheet" type="text/css" href="{{$Think.__MY_ROOT_PUBLIC__}}static/admin/default/css/common.css" />
<link rel="stylesheet" type="text/css" href="{{$Think.__MY_ROOT_PUBLIC__}}static/admin/default/css/iconfontmenu.css" />
{{if !empty($module_css)}}
<link rel="stylesheet" type="text/css" href="{{$Think.__MY_ROOT_PUBLIC__}}static/{{$module_css}}" />
{{/if}}
</head>
<script type="text/javascript">
var __attachment_host__ = '{{$attachment_host}}';
</script>
<body>
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.)}}
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>跳转提示</title>
<style type="text/css">
*{ padding: 0; margin: 0; }
body{ background: #fff; font-family: '微软雅黑'; color: #333; font-size: 16px; }
.system-message{ padding: 24px 48px; }
.system-message h1{ font-size: 100px; font-weight: normal; line-height: 120px; margin-bottom: 12px; }
.system-message .jump{ padding-top: 10px}
.system-message .jump a{ color: #333;}
.system-message .success,.system-message .error{ line-height: 1.8em; font-size: 36px }
.system-message .detail{ font-size: 12px; line-height: 20px; margin-top: 12px; display:none}
</style>
</head>
<body>
<div class="system-message">
<present name="message">
<h1>:)</h1>
<p class="success"><?php echo($message); ?></p>
<else/>
<h1>:(</h1>
<p class="error"><?php echo($error); ?></p>
{{/if}}
<p class="detail"></p>
<p class="jump">
页面自动 <a id="href" href="<?php echo($jumpUrl); ?>">跳转</a> 等待时间: <b id="wait"><?php echo($waitSecond); ?></b>
</p>
</div>
<script type="text/javascript">
(function(){
var wait = document.getElementById('wait'),href = document.getElementById('href').href;
var interval = setInterval(function(){
var time = --wait.innerHTML;
if(time <= 0) {
location.href = href;
clearInterval(interval);
};
}, 1000);
})();
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.)}}
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>跳转提示</title>
<style type="text/css">
*{ padding: 0; margin: 0; }
body{ background: #fff; font-family: '微软雅黑'; color: #333; font-size: 16px; }
.system-message{ padding: 24px 48px; }
.system-message h1{ font-size: 100px; font-weight: normal; line-height: 120px; margin-bottom: 12px; }
.system-message .jump{ padding-top: 10px}
.system-message .jump a{ color: #333;}
.system-message .success,.system-message .error{ line-height: 1.8em; font-size: 36px }
.system-message .detail{ font-size: 12px; line-height: 20px; margin-top: 12px; display:none}
</style>
</head>
<body>
<div class="system-message">
<present name="message">
<h1>:)</h1>
<p class="success"><?php echo($message); ?></p>
<else/>
<h1>:(</h1>
<p class="error"><?php echo($error); ?></p>
{{/if}}
<p class="detail"></p>
<p class="jump">
页面自动 <a id="href" href="<?php echo($jumpUrl); ?>">跳转</a> 等待时间: <b id="wait"><?php echo($waitSecond); ?></b>
</p>
</div>
<script type="text/javascript">
(function(){
var wait = document.getElementById('wait'),href = document.getElementById('href').href;
var interval = setInterval(function(){
var time = --wait.innerHTML;
if(time <= 0) {
location.href = href;
clearInterval(interval);
};
}, 1000);
})();
</script>
</body>
</html>
\ No newline at end of file
......@@ -34,6 +34,7 @@ class PayLogService
$data = Db::name('PayLog')->field('payment AS id, payment_name AS name')->group('payment')->select();
return DataReturn('处理成功', 0, $data);
}
/**
* 后台管理员列表
* @author Devil
......
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2018 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\service;
use think\Db;
use app\service\ResourcesService;
/**
* 应用服务层
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class PluginsService
{
/**
* 列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [array] $params [输入参数]
*/
public static function PluginsList($params = [])
{
$where = empty($params['where']) ? [] : $params['where'];
$m = isset($params['m']) ? intval($params['m']) : 0;
$n = isset($params['n']) ? intval($params['n']) : 10;
$order_by = empty($params['order_by']) ? 'id desc' : $params['order_by'];
// 获取数据列表
$data = Db::name('Plugins')->limit($m, $n)->order($order_by)->select();
return DataReturn('处理成功', 0, self::PluginsDataHandle($data));
}
/**
* 数据处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [array] $data [数据]
*/
private static function PluginsDataHandle($data)
{
if(!empty($data))
{
foreach($data as &$v)
{
// 基础数据
$v['logo_old'] = $v['logo'];
$v['logo'] = ResourcesService::AttachmentPathViewHandle($v['logo']);
$v['apply_terminal'] = empty($v['apply_terminal']) ? '' : json_decode($v['apply_terminal'], true);
// 时间
$v['add_time_time'] = date('Y-m-d H:i:s', $v['add_time']);
$v['add_time_date'] = date('Y-m-d', $v['add_time']);
}
}
return $data;
}
/**
* 总数
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [array] $where [条件]
*/
public static function PluginsTotal($where = [])
{
return (int) Db::name('Plugins')->where($where)->count();
}
/**
* 列表条件
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [array] $params [输入参数]
*/
public static function PluginsListWhere($params = [])
{
$where = [];
return $where;
}
/**
* 根据应用标记获取数据
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [string] $plugins [应用标记]
*/
public static function PluginsData($plugins)
{
// 获取数据
$data = Db::name('Plugins')->where(['plugins'=>$plugins])->value('data');
if(!empty($data))
{
$data = json_decode($data, true);
$data['images_old'] = $data['images'];
$data['images'] = ResourcesService::AttachmentPathViewHandle($data['images']);
}
return DataReturn('处理成功', 0, $data);
}
/**
* 应用数据保存
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [string] $plugins [应用标记]
*/
public static function PluginsDataSave($params = [])
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'plugins',
'error_msg' => '应用标记不能为空',
],
[
'checked_type' => 'isset',
'key_name' => 'data',
'error_msg' => '数据参数不能为空',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
// 数据更新
if(Db::name('Plugins')->where(['plugins'=>$params['plugins']])->update(['data'=>json_encode($params['data']), 'upd_time'=>time()]))
{
return DataReturn('操作成功');
}
return DataReturn('操作失败', -100);
}
/**
* 状态更新
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
* @param [array] $params [输入参数]
*/
public static function PluginsStatusUpdate($params = [])
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'id',
'error_msg' => '操作id有误',
],
[
'checked_type' => 'empty',
'key_name' => 'field',
'error_msg' => '未指定操作字段',
],
[
'checked_type' => 'in',
'key_name' => 'state',
'checked_data' => [0,1],
'error_msg' => '状态有误',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
// 数据更新
if(Db::name('Plugins')->where(['id'=>$params['id']])->update([$params['field']=>intval($params['state']), 'upd_time'=>time()]))
{
return DataReturn('操作成功');
}
return DataReturn('操作失败', -100);
}
/**
* 删除
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-12-18
* @desc description
* @param [array] $params [输入参数]
*/
public static function Delete($params = [])
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'id',
'error_msg' => '操作id有误',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
// tttttttttt
return DataReturn('删除失败或资源不存在', -100);
// 删除操作
if(Db::name('Plugins')->where(['id'=>$params['id']])->delete())
{
return DataReturn('删除成功');
}
return DataReturn('删除失败或资源不存在', -100);
}
}
?>
\ No newline at end of file
......@@ -25,5 +25,8 @@ return [
'log_write' => [],
// 应用结束
'app_end' => [],
// 钩子测试
'plugins_common_top' => ['app\\plugins\\commontopmaxpicture\\CommonTopMaxPicture'],
];
?>
\ No newline at end of file
......@@ -19,7 +19,7 @@ return [
// 应用地址
'app_host' => '',
// 应用调试模式
'app_debug' => false,
'app_debug' => true,
// 应用Trace
'app_trace' => false,
// 是否支持多模块
......
......@@ -14,6 +14,9 @@
// +----------------------------------------------------------------------
return [
// 开发模式
'is_develop' => false,
// 默认编码
'default_charset' => 'utf-8',
......
此差异已折叠。
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1542602271838'); /* IE9*/
src: url('iconfont.eot?t=1542602271838#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'),
url('iconfont.ttf?t=1542602271838') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('iconfont.svg?t=1542602271838#iconfont') format('svg'); /* iOS 4.1- */
src: url('iconfont.eot?t=1549507495957'); /* IE9 */
src: url('iconfont.eot?t=1549507495957#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'),
url('iconfont.woff?t=1549507495957') format('woff'),
url('iconfont.ttf?t=1549507495957') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('iconfont.svg?t=1549507495957#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family:"iconfont" !important;
font-size:16px;
font-style:normal;
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-peizhi:before { content: "\e68c"; }
.icon-peizhi:before {
content: "\e68c";
}
.icon-shangpin:before { content: "\e675"; }
.icon-shangpin:before {
content: "\e675";
}
.icon-shouji:before { content: "\e606"; }
.icon-shouji:before {
content: "\e606";
}
.icon-dingdan:before { content: "\e69b"; }
.icon-application:before {
content: "\e63c";
}
.icon-shouye:before { content: "\e60a"; }
.icon-dingdan:before {
content: "\e69b";
}
.icon-wenzhang:before { content: "\e6c5"; }
.icon-shouye:before {
content: "\e60a";
}
.icon-tools:before { content: "\e600"; }
.icon-wenzhang:before {
content: "\e6c5";
}
.icon-wangzhanguanli:before { content: "\e603"; }
.icon-tools:before {
content: "\e600";
}
.icon-wangzhanguanli:before {
content: "\e603";
}
.icon-ico-pinpaiguanli:before { content: "\e6d0"; }
.icon-ico-pinpaiguanli:before {
content: "\e6d0";
}
.icon-ziyuan:before { content: "\e65d"; }
.icon-ziyuan:before {
content: "\e65d";
}
.icon-quanxian:before { content: "\e67d"; }
.icon-quanxian:before {
content: "\e67d";
}
.icon-xiaochengxu-alipay:before { content: "\e755"; }
.icon-xiaochengxu-alipay:before {
content: "\e755";
}
.icon-zhandianpeizhi:before { content: "\e6ae"; }
.icon-zhandianpeizhi:before {
content: "\e6ae";
}
.icon-xiaochengxu-wechat:before { content: "\e624"; }
.icon-xiaochengxu-wechat:before {
content: "\e624";
}
.icon-wenda:before { content: "\e607"; }
.icon-wenda:before {
content: "\e607";
}
.icon-shuju:before { content: "\e6a9"; }
.icon-shuju:before {
content: "\e6a9";
}
.icon-yingxiao:before { content: "\e616"; }
.icon-yingxiao:before {
content: "\e616";
}
.icon-yonghuguanli:before { content: "\e791"; }
.icon-yonghuguanli:before {
content: "\e791";
}
.icon-zhifubao:before { content: "\e629"; }
.icon-zhifubao:before {
content: "\e629";
}
.content ul {
padding: 0px;
width: calc(100% + 10px);
margin-left: -5px;
}
.content ul .icon {
width: 80px;
height: 80px;
border-radius: 10px;
box-shadow: 0px 10px 10px -6px rgba(0,0,0,.4);
}
.content ul.am-gallery-bordered .am-gallery-item {
box-shadow: none;
border: 1px solid #d4d4d4;
border-radius: 2px;
}
.content ul.am-gallery-bordered .am-gallery-item:hover {
border: 1px solid #999;
box-shadow: 0px 12px 12px -10px rgba(0,0,0,.4);
}
.content ul li {
position: relative;
}
.content ul li .base {
position: absolute;
top: 10px;
left: 100px;
width: calc(100% - 112px);
}
.content ul li .base h3 {
font-weight: 700;
color: #333;
margin: 2px 0px 3px 0px;
}
.content ul li .base p {
line-height: 18px;
margin: 0;
font-size: 12px;
font-weight: 300;
color: #999;
}
.content ul li .base h3, .content ul li .base p {
word-wrap: normal;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.content ul.am-gallery-bordered .am-gallery-desc {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
margin-top: 10px;
min-height: 32px;
line-height: 16px;
font-weight: 300;
color: #b3b3b3;
}
.content ul li .operation {
border-top: 1px dashed #eee;
padding: 10px 0 5px 0;
}
@media only screen and (max-width: 641px) {
.content ul .icon {
width: 65px;
height: 65px;
}
.content ul li .base {
left: 85px;
width: calc(100% - 97px);
}
.content ul li .base h3 {
margin: 0px;
}
.content ul li .base p {
line-height: 16px;
}
}
\ No newline at end of file
......@@ -2,7 +2,7 @@
* 权限添加/编辑
*/
.tree-list li { list-style-type: none; padding-left: 5px !important; }
.tree-list li label { display: inline; margin-left: 10px; }
.tree-list li label { display: inline; }
.list-find { margin: 0px 0px 5px 35px; overflow: hidden; padding-top: 5px !important; }
.tree-list i { width: 10px; }
.list-find li { line-height: 26px; }
......
\ No newline at end of file
\ No newline at end of file
\ No newline at end of file
\ No newline at end of file
\ No newline at end of file
......@@ -757,4 +757,22 @@ button { outline: none !important; }
position: fixed;
right: 50px;
bottom: 100px;
}
/**
* 插件标记
*/
.plugins-tag {
text-align: center;
padding: 5px;
}
.plugins-tag span {
font-size: 16px;
font-weight: bold;
color: #e90000;
text-shadow: 1px 1px #bfbfbf;
background: #ffdfdf;
padding: 5px 8px;
border-radius: 3px;
border: 1px solid #ffd4d4;
}
\ No newline at end of file
\ No newline at end of file
\ No newline at end of file
\ No newline at end of file
/**
* 首页
*/
.commontopmaxpicture-content .items {
margin: 10px 0 20px 0;
border-bottom: 1px dashed #f1f1f1;
padding-bottom: 20px;
}
.commontopmaxpicture-content .items .immages-tag {
border: 1px solid #eee;
text-align: center;
}
.commontopmaxpicture-content .items .immages-tag img {
max-width: 100%;
}
.commontopmaxpicture-content .items .bg-color-tag {
width: 100%;
height: 50px;
border: 1px solid #eee;
}
/**
* 编辑页面
*/
ul.plugins-images-view li {
width: 100%;
height: auto;
}
\ No newline at end of file
\ No newline at end of file
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册