Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
starsw001
ShopXO
提交
4ccc0e6f
ShopXO
项目概览
starsw001
/
ShopXO
与 Fork 源项目一致
Fork自
纵之格 / ShopXO
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ShopXO
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4ccc0e6f
编写于
1月 05, 2021
作者:
D
Devil
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
后台插件管理新增排序功能、自定义显示顺序+插件调用顺序+细节优化
上级
f162579c
变更
21
展开全部
隐藏空白更改
内联
并排
Showing
21 changed file
with
1148 addition
and
431 deletion
+1148
-431
application/admin/controller/Pluginsadmin.php
application/admin/controller/Pluginsadmin.php
+29
-5
application/admin/view/default/navigation/index.html
application/admin/view/default/navigation/index.html
+1
-1
application/admin/view/default/pluginsadmin/first_step.html
application/admin/view/default/pluginsadmin/first_step.html
+1
-7
application/admin/view/default/pluginsadmin/index.html
application/admin/view/default/pluginsadmin/index.html
+69
-26
application/admin/view/default/pluginsadmin/save_info.html
application/admin/view/default/pluginsadmin/save_info.html
+1
-8
application/index/controller/Common.php
application/index/controller/Common.php
+1
-11
application/service/GoodsService.php
application/service/GoodsService.php
+4
-2
application/service/PluginsAdminService.php
application/service/PluginsAdminService.php
+146
-62
application/service/SearchService.php
application/service/SearchService.php
+23
-10
application/tags.php
application/tags.php
+101
-41
changelog.txt
changelog.txt
+1
-1
config/shopxo.sql
config/shopxo.sql
+607
-196
public/static/admin/default/css/pluginsadmin.css
public/static/admin/default/css/pluginsadmin.css
+19
-6
public/static/admin/default/js/appmini.index.js
public/static/admin/default/js/appmini.index.js
+11
-8
public/static/admin/default/js/email.js
public/static/admin/default/js/email.js
+13
-10
public/static/admin/default/js/pluginsadmin.js
public/static/admin/default/js/pluginsadmin.js
+71
-0
public/static/admin/default/js/site.js
public/static/admin/default/js/site.js
+8
-4
public/static/admin/default/js/theme.js
public/static/admin/default/js/theme.js
+13
-10
public/static/admin/default/js/warehousegoods.js
public/static/admin/default/js/warehousegoods.js
+13
-6
public/static/index/default/js/goods.js
public/static/index/default/js/goods.js
+9
-10
public/static/index/default/js/user.js
public/static/index/default/js/user.js
+7
-7
未找到文件。
application/admin/controller/Pluginsadmin.php
浏览文件 @
4ccc0e6f
...
...
@@ -65,8 +65,8 @@ class Pluginsadmin extends Common
// 页面类型
if
(
$this
->
view_type
==
'home'
)
{
$
data
=
PluginsAdminService
::
PluginsList
();
$this
->
assign
(
'data_list'
,
$
data
[
'data'
]);
$
ret
=
PluginsAdminService
::
PluginsList
();
$this
->
assign
(
'data_list'
,
$
ret
[
'data'
]);
return
$this
->
fetch
();
}
else
{
return
$this
->
fetch
(
'upload'
);
...
...
@@ -94,10 +94,14 @@ class Pluginsadmin extends Common
{
// 获取数据
$ret
=
PluginsAdminService
::
PluginsList
();
if
(
isset
(
$ret
[
'data'
][
$params
[
'id'
]
]))
if
(
!
empty
(
$ret
[
'data'
])
&&
is_array
(
$ret
[
'data'
]))
{
$data
=
$ret
[
'data'
][
$params
[
'id'
]];
$params
[
'plugins'
]
=
$params
[
'id'
];
$data
=
array_column
(
$ret
[
'data'
],
null
,
'plugins'
);
if
(
isset
(
$data
[
$params
[
'id'
]]))
{
$data
=
$data
[
$params
[
'id'
]];
$params
[
'plugins'
]
=
$params
[
'id'
];
}
}
}
$this
->
assign
(
'data'
,
$data
);
...
...
@@ -263,5 +267,25 @@ class Pluginsadmin extends Common
// 开始操作
return
PluginsAdminService
::
PluginsUninstall
(
$this
->
data_request
);
}
/**
* 排序保存
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-01-05
* @desc description
*/
public
function
SortSave
()
{
// 是否ajax请求
if
(
!
IS_AJAX
)
{
$this
->
error
(
'非法访问'
);
}
// 开始操作
return
PluginsAdminService
::
SortSave
(
$this
->
data_post
);
}
}
?>
\ No newline at end of file
application/admin/view/default/navigation/index.html
浏览文件 @
4ccc0e6f
...
...
@@ -10,7 +10,7 @@
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<div
class=
"am-dropdown am-margin-right-sm"
data-am-dropdown
>
<button
class=
"am-btn am-btn-secondary am-radius am-btn-xs am-dropdown-toggle"
data-am-dropdown-toggle
>
新增
<span
class=
"am-icon-caret-down"
></span></button>
<button
type=
"button"
class=
"am-btn am-btn-secondary am-radius am-btn-xs am-dropdown-toggle"
data-am-dropdown-toggle
>
新增
<span
class=
"am-icon-caret-down"
></span></button>
<ul
class=
"am-dropdown-content"
>
<li>
<button
type=
"button"
class=
"am-btn am-btn-link am-btn-xs am-btn-block am-text-left am-padding-horizontal-sm am-icon-plus submit-add"
data-am-modal=
"{target: '#nav-custom-save-win'}"
data-tag=
"nav-custom-save-win"
>
自定义
</button>
...
...
application/admin/view/default/pluginsadmin/first_step.html
浏览文件 @
4ccc0e6f
...
...
@@ -6,13 +6,7 @@
<!-- form start -->
<form
class=
"am-form form-validation view-save"
action=
"{{:MyUrl('admin/pluginsadmin/saveinfo')}}"
method=
"POST"
request-type=
"form"
enctype=
"multipart/form-data"
>
<legend>
<span
class=
"am-text-default"
>
{{if empty($data['id'])}}
应用添加
{{else /}}
应用编辑
{{/if}}
</span>
<span
class=
"am-text-default"
>
应用{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}
</span>
<a
href=
"{{:MyUrl('admin/pluginsadmin/index')}}"
class=
"am-fr am-text-sm am-margin-top-xs am-icon-mail-reply"
>
返回
</a>
</legend>
...
...
application/admin/view/default/pluginsadmin/index.html
浏览文件 @
4ccc0e6f
...
...
@@ -15,43 +15,86 @@
{{/if}}
<!-- operation end -->
<div
class=
"am-alert"
>
<p>
1 列表排序方式[ 自定义排序 -> 最早安装 ]
</p>
<p>
<span>
2. 可点击拖动图标按钮调整插件调用和展示顺序
</span>
<button
type=
"button"
class=
"am-btn am-btn-success am-radius am-btn-xs am-margin-left-xs am-icon-sort-numeric-asc submit-move-sort-open"
>
开启排序
</button>
<button
type=
"button"
class=
"am-btn am-btn-secondary am-radius am-btn-xs am-margin-left-xs am-icon-check submit-move-sort-save am-hide"
>
保存
</button>
<button
type=
"button"
class=
"am-btn am-btn-danger am-radius am-btn-xs am-margin-left-xs am-icon-close submit-move-sort-cancel am-hide"
>
取消
</button>
</p>
</div>
{{if !empty($data_list)}}
<ul
data-am-widget=
"gallery"
class=
"am-gallery am-avg-sm-1 am-avg-md-2 am-avg-lg-3 am-gallery-bordered"
data-am-gallery=
"{}"
>
<!-- 已安装 -->
<ul
data-am-widget=
"gallery"
class=
"am-gallery am-avg-sm-1 am-avg-md-2 am-avg-lg-3 am-gallery-bordered already-install"
data-am-gallery=
"{}"
data-sort-save-url=
"{{:MyUrl('admin/pluginsadmin/sortsave')}}"
>
{{foreach $data_list as $v}}
<li>
<div
id=
"data-list-{{$v.plugins}}"
class=
"am-gallery-item {{if $v['is_enable'] neq 1}}am-active{{/if}}"
>
<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"
>
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<a
href=
"{{:MyUrl('admin/pluginsadmin/saveinfo', array('id'=>$v['plugins']))}}"
class=
"am-btn am-btn-default am-btn-xs am-radius am-icon-edit"
title=
"编辑"
></a>
<a
href=
"{{:MyUrl('admin/pluginsadmin/download', array('id'=>$v['plugins']))}}"
class=
"am-btn am-btn-default am-btn-xs am-radius am-icon-download"
title=
"打包"
></a>
{{/if}}
{{if isset($v['is_install']) and $v['is_install'] eq 1}}
<li
data-id=
"{{$v.id}}"
data-plugins=
"{{$v.plugins}}"
>
<div
class=
"am-gallery-item {{if $v['is_enable'] eq 0}}am-active{{/if}}"
id=
"data-list-{{$v.plugins}}"
>
<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"
>
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<a
href=
"{{:MyUrl('admin/pluginsadmin/saveinfo', array('id'=>$v['plugins']))}}"
class=
"am-btn am-btn-default am-btn-xs am-radius am-icon-edit"
title=
"编辑"
></a>
<a
href=
"{{:MyUrl('admin/pluginsadmin/download', array('id'=>$v['plugins']))}}"
class=
"am-btn am-btn-default am-btn-xs am-radius am-icon-download"
title=
"打包"
></a>
{{/if}}
{{if isset($v['is_install']) and $v['is_install'] eq 1}}
<a
href=
"{{:PluginsAdminUrl($v['plugins'], 'admin', 'index')}}"
class=
"am-btn am-btn-default am-btn-xs am-radius am-icon-gear"
title=
"设置"
></a>
<button
class=
"am-btn am-btn-default am-btn-xs am-radius am-icon-circle-o submit-ajax"
data-url=
"{{:MyUrl('admin/pluginsadmin/uninstall')}}"
data-id=
"{{$v.plugins}}"
data-view=
"reload"
data-msg=
"卸载
将删除
基础数据不可恢复、确认操作吗?"
title=
"卸载"
></button>
<button
class=
"am-btn am-btn-default am-btn-xs am-radius am-icon-circle-o submit-ajax"
data-url=
"{{:MyUrl('admin/pluginsadmin/uninstall')}}"
data-id=
"{{$v.plugins}}"
data-view=
"reload"
data-msg=
"卸载
可能丢失插件
基础数据不可恢复、确认操作吗?"
title=
"卸载"
></button>
<a
href=
"javascript:;"
class=
"am-icon-btn am-icon-check submit-state {{if $v['is_enable'] eq 1}}am-success{{else /}}am-default{{/if}}"
data-url=
"{{:MyUrl('admin/pluginsadmin/statusupdate')}}"
data-id=
"{{$v.plugins}}"
data-state=
"{{$v['is_enable']}}"
data-is-update-status=
"1"
title=
"状态"
></a>
{{else /}}
{{if isset($v['is_home']) and $v['is_home'] eq true}}
<a
href=
"{{:PluginsHomeUrl($v['plugins'], 'index', 'index')}}"
class=
"am-btn am-btn-default am-btn-xs am-radius am-icon-home"
title=
"首页"
target=
"_blank"
></a>
{{/if}}
<button
type=
"button"
class=
"am-btn am-btn-secondary am-btn-xs am-radius am-icon-arrows submit-move am-hide"
title=
"排序"
></button>
</div>
</div>
</li>
{{/if}}
{{/foreach}}
</ul>
<!-- 未安装 -->
<div
class=
"am-text-center am-margin-top-lg am-margin-bottom-xs"
>
<strong
class=
"am-text-lg"
>
以下插件未安装
</strong>
</div>
<hr
data-am-widget=
"divider"
class=
"am-divider am-divider-dashed am-margin-top-0"
/>
<ul
data-am-widget=
"gallery"
class=
"am-gallery am-avg-sm-1 am-avg-md-2 am-avg-lg-3 am-gallery-bordered"
data-am-gallery=
"{}"
data-sort-save-url=
"{{:MyUrl('admin/pluginsadmin/sortsave')}}"
>
{{foreach $data_list as $v}}
{{if !isset($v['is_install']) or $v['is_install'] eq 0}}
<li
data-id=
"{{$v.id}}"
data-plugins=
"{{$v.plugins}}"
>
<div
class=
"am-gallery-item am-active"
id=
"data-list-{{$v.plugins}}"
>
<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"
>
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<a
href=
"{{:MyUrl('admin/pluginsadmin/saveinfo', array('id'=>$v['plugins']))}}"
class=
"am-btn am-btn-default am-btn-xs am-radius am-icon-edit"
title=
"编辑"
></a>
<a
href=
"{{:MyUrl('admin/pluginsadmin/download', array('id'=>$v['plugins']))}}"
class=
"am-btn am-btn-default am-btn-xs am-radius am-icon-download"
title=
"打包"
></a>
{{/if}}
<button
class=
"am-btn am-btn-default am-btn-xs am-radius am-icon-remove submit-delete-modal"
data-url=
"{{:MyUrl('admin/pluginsadmin/delete')}}"
data-id=
"{{$v.plugins}}"
title=
"删除"
></button>
<button
class=
"am-btn am-btn-default am-btn-xs am-radius am-icon-cubes submit-ajax"
data-url=
"{{:MyUrl('admin/pluginsadmin/install')}}"
data-id=
"{{$v.plugins}}"
data-view=
"reload"
data-msg=
"进行安装操作、确认继续吗?"
title=
"安装"
></button>
{{/if}}
{{if isset($v['is_home']) and $v['is_home'] eq true}}
<a
href=
"{{:PluginsHomeUrl($v['plugins'], 'index', 'index')}}"
class=
"am-btn am-btn-default am-btn-xs am-radius am-icon-home"
title=
"首页"
target=
"_blank"
></a>
{{/if}}
</div>
</div>
</
div
>
</li>
</
li
>
{{/if}}
{{/foreach}}
</ul>
...
...
application/admin/view/default/pluginsadmin/save_info.html
浏览文件 @
4ccc0e6f
...
...
@@ -6,13 +6,7 @@
<!-- form start -->
<form
class=
"am-form form-validation view-save"
action=
"{{:MyUrl('admin/pluginsadmin/save')}}"
method=
"POST"
request-type=
"ajax-url"
request-value=
"{{:MyUrl('admin/pluginsadmin/index')}}"
enctype=
"multipart/form-data"
>
<legend>
<span
class=
"am-text-default"
>
{{if empty($data['id'])}}
应用添加
{{else /}}
应用编辑
{{/if}}
</span>
<span
class=
"am-text-default"
>
应用{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}
</span>
<a
href=
"{{:MyUrl('admin/pluginsadmin/index')}}"
class=
"am-fr am-text-sm am-margin-top-xs am-icon-mail-reply"
>
返回
</a>
</legend>
...
...
@@ -81,7 +75,6 @@
</div>
<div
class=
"am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0"
>
<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 am-btn-block"
data-am-loading=
"{loadingText:'处理中...'}"
>
保存
</button>
</div>
</form>
...
...
application/index/controller/Common.php
浏览文件 @
4ccc0e6f
...
...
@@ -378,17 +378,7 @@ class Common extends Controller
$this
->
assign
(
'goods_category_list'
,
GoodsService
::
GoodsCategoryAll
());
// 搜索框下热门关键字
$home_search_keywords
=
[];
switch
(
intval
(
MyC
(
'home_search_keywords_type'
,
0
)))
{
case
1
:
$home_search_keywords
=
SearchService
::
SearchKeywordsList
();
break
;
case
2
:
$home_search_keywords
=
explode
(
','
,
MyC
(
'home_search_keywords'
));
break
;
}
$this
->
assign
(
'home_search_keywords'
,
$home_search_keywords
);
$this
->
assign
(
'home_search_keywords'
,
SearchService
::
SearchKeywordsList
());
// 友情链接
$link
=
LinkService
::
LinkList
([
'where'
=>
[
'is_enable'
=>
1
]]);
...
...
application/service/GoodsService.php
浏览文件 @
4ccc0e6f
...
...
@@ -2513,9 +2513,11 @@ class GoodsService
$add_time
=
strtotime
(
$add_time
);
}
// 自定义路径
和名称
// 自定义路径
$path
=
'static'
.
DS
.
'upload'
.
DS
.
'images'
.
DS
.
'goods_qrcode'
.
DS
.
APPLICATION_CLIENT_TYPE
.
DS
.
date
(
'Y'
,
$add_time
)
.
DS
.
date
(
'm'
,
$add_time
)
.
DS
.
date
(
'd'
,
$add_time
)
.
DS
;
$filename
=
$goods_id
.
'.png'
;
// 名称增加站点模式(站点模式不一样商品url地址也会不一样)
$filename
=
$goods_id
.
MyC
(
'common_site_type'
,
0
,
true
)
.
'.png'
;
// 二维码处理参数
$params
=
[
...
...
application/service/PluginsAdminService.php
浏览文件 @
4ccc0e6f
...
...
@@ -30,6 +30,9 @@ class PluginsAdminService
// 排除的文件后缀
private
static
$exclude_ext
=
[
'php'
];
// 读取插件排序方式(自定义排序 -> 最早安装)
private
static
$plugins_order_by
=
'sort asc,id asc'
;
/**
* 列表
* @author Devil
...
...
@@ -42,27 +45,33 @@ class PluginsAdminService
public
static
function
PluginsList
(
$params
=
[])
{
$data
=
[];
$db_data
=
[];
$dir_data
=
[];
$plugins_dir
=
APP_PATH
.
'plugins'
.
DS
;
if
(
is_dir
(
$plugins_dir
))
{
if
(
$dh
=
opendir
(
$plugins_dir
))
{
// 获取数据库已安装插件
$db_data
=
Db
::
name
(
'Plugins'
)
->
order
(
self
::
$plugins_order_by
)
->
column
(
'*'
,
'plugins'
);
// 获取目录所有插件
while
((
$temp_file
=
readdir
(
$dh
))
!==
false
)
{
if
(
!
in_array
(
$temp_file
,
[
'.'
,
'..'
,
'/'
,
'view'
,
'index.html'
])
&&
substr
(
$temp_file
,
0
,
1
)
!=
'.'
)
{
// 获取插件配置信息
$config
=
self
::
GetPluginsConfig
(
$temp_file
);
if
(
$config
!==
false
)
if
(
$config
!==
false
&&
!
empty
(
$config
[
'base'
])
)
{
// 获取数据库配置信息
$db_config
=
Db
::
name
(
'Plugins'
)
->
where
([
'plugins'
=>
$config
[
'base'
][
'plugins'
]])
->
find
();
$base
=
$config
[
'base'
];
$db_config
=
array_key_exists
(
$base
[
'plugins'
],
$db_data
)
?
$db_data
[
$base
[
'plugins'
]]
:
[];
// 数据组装
$base
=
$config
[
'base'
];
$data
[
$config
[
'base'
][
'plugins'
]]
=
[
'id'
=>
empty
(
$db_config
[
'id'
])
?
date
(
'YmdHis'
)
.
GetNumberCode
(
8
)
:
$db_config
[
'id'
],
'plugins'
=>
isset
(
$base
[
'plugins'
])
?
$base
[
'plugins'
]
:
''
,
$dir_data
[
$base
[
'plugins'
]]
=
[
'id'
=>
empty
(
$db_config
[
'id'
])
?
0
:
$db_config
[
'id'
],
'plugins'
=>
$base
[
'plugins'
],
'is_enable'
=>
isset
(
$db_config
[
'is_enable'
])
?
$db_config
[
'is_enable'
]
:
0
,
'is_install'
=>
empty
(
$db_config
)
?
0
:
1
,
'logo_old'
=>
$base
[
'logo'
],
...
...
@@ -85,6 +94,23 @@ class PluginsAdminService
}
}
// 存在插件和数据库插件数据则处理排序合并
if
(
!
empty
(
$dir_data
)
&&
!
empty
(
$db_data
))
{
$temp_data
=
[];
foreach
(
$db_data
as
$v
)
{
if
(
array_key_exists
(
$v
[
'plugins'
],
$dir_data
))
{
$temp_data
[]
=
$dir_data
[
$v
[
'plugins'
]];
unset
(
$dir_data
[
$v
[
'plugins'
]]);
}
}
$data
=
array_merge
(
$temp_data
,
array_values
(
$dir_data
));
}
else
{
$data
=
array_values
(
$dir_data
);
}
return
DataReturn
(
'处理成功'
,
0
,
$data
);
}
...
...
@@ -107,10 +133,11 @@ class PluginsAdminService
// 数据处理
$config
=
self
::
GetPluginsConfig
(
$params
[
'id'
]);;
if
(
$config
!==
false
)
if
(
$config
!==
false
&&
!
empty
(
$config
[
'base'
])
&&
!
empty
(
$config
[
'base'
][
'name'
])
)
{
$cache
=
PluginsService
::
PluginsCacheData
(
$params
[
'id'
]);
$data
=
[
'name'
=>
$config
[
'base'
][
'name'
],
'plugins'
=>
$params
[
'id'
],
'data'
=>
empty
(
$cache
)
?
''
:
json_encode
(
$cache
),
'is_enable'
=>
0
,
...
...
@@ -292,7 +319,7 @@ class PluginsAdminService
}
// 处理应用钩子
$data
=
Db
::
name
(
'Plugins'
)
->
where
([
'is_enable'
=>
1
])
->
column
(
'plugins'
);
$data
=
Db
::
name
(
'Plugins'
)
->
where
([
'is_enable'
=>
1
])
->
order
(
self
::
$plugins_order_by
)
->
column
(
'plugins'
);
if
(
!
empty
(
$data
))
{
foreach
(
$data
as
$plugins
)
...
...
@@ -518,7 +545,7 @@ class PluginsAdminService
// 应用目录不存在则创建
$app_dir
=
APP_PATH
.
'plugins'
.
DS
.
$plugins
;
if
(
\
base\FileUtil
::
CreateDir
(
$app_dir
)
!==
true
)
if
(
!
is_dir
(
$app_dir
)
&&
\
base\FileUtil
::
CreateDir
(
$app_dir
)
!==
true
)
{
return
DataReturn
(
'应用主目录创建失败'
,
-
10
);
}
...
...
@@ -537,7 +564,7 @@ class PluginsAdminService
return
$ret
;
}
return
DataReturn
(
empty
(
$params
[
'id'
])
?
'创建成功'
:
'更新
成功'
,
0
);
return
DataReturn
(
'操作
成功'
,
0
);
}
/**
...
...
@@ -729,60 +756,55 @@ h1 {
php;
// 静态文件目录
$app_static_css_dir
=
ROOT
.
'public'
.
DS
.
'static'
.
DS
.
'plugins'
.
DS
.
'css'
.
DS
.
trim
(
$params
[
'plugins'
]);
if
(
\
base\FileUtil
::
CreateDir
(
$app_static_css_dir
)
!==
true
)
if
(
!
is_dir
(
$app_static_css_dir
)
&&
\
base\FileUtil
::
CreateDir
(
$app_static_css_dir
)
!==
true
)
{
return
DataReturn
(
'应用静态目录创建失败[css]'
,
-
10
);
}
else
{
// 后端css目录创建
if
(
\
base\FileUtil
::
CreateDir
(
$app_static_css_dir
.
DS
.
'admin'
)
!==
true
)
if
(
!
is_dir
(
$app_static_css_dir
.
DS
.
'admin'
)
&&
\
base\FileUtil
::
CreateDir
(
$app_static_css_dir
.
DS
.
'admin'
)
!==
true
)
{
return
DataReturn
(
'应用静态目录创建失败[css/admin]'
,
-
10
);
}
}
//
编辑模式下不生成后端文件
if
(
empty
(
$params
[
'id'
])
)
//
后端admin目录创建
if
(
!
is_dir
(
$app_dir
.
DS
.
'admin'
)
&&
\
base\FileUtil
::
CreateDir
(
$app_dir
.
DS
.
'admin'
)
!==
true
)
{
// 后端admin目录创建
if
(
\
base\FileUtil
::
CreateDir
(
$app_dir
.
DS
.
'admin'
)
!==
true
)
{
return
DataReturn
(
'应用后端目录创建失败[admin]'
,
-
10
);
}
// 创建文件
if
(
@
file_put_contents
(
$app_dir
.
DS
.
'admin'
.
DS
.
'Admin.php'
,
$admin
)
===
false
)
{
return
DataReturn
(
'应用文件创建失败[Admin.php]'
,
-
11
);
}
if
(
@
file_put_contents
(
$app_dir
.
DS
.
'Hook.php'
,
$hook
)
===
false
)
{
return
DataReturn
(
'应用文件创建失败[Hook.php]'
,
-
11
);
}
return
DataReturn
(
'应用后端目录创建失败[admin]'
,
-
10
);
}
// 应用后台视图目录不存在则创建
$app_view_admin_dir
=
APP_PATH
.
'plugins'
.
DS
.
'view'
.
DS
.
trim
(
$params
[
'plugins'
])
.
DS
.
'admin'
.
DS
.
'admin'
;
if
(
\
base\FileUtil
::
CreateDir
(
$app_view_admin_dir
)
!==
true
)
{
return
DataReturn
(
'应用视图目录创建失败[admin]'
,
-
10
);
}
if
(
@
file_put_contents
(
$app_view_admin_dir
.
DS
.
'index.html'
,
$admin_view
)
===
false
)
{
return
DataReturn
(
'应用视图文件创建失败[admin-view]'
,
-
11
);
}
// 创建文件
if
(
!
file_exists
(
$app_dir
.
DS
.
'admin'
.
DS
.
'Admin.php'
)
&&
@
file_put_contents
(
$app_dir
.
DS
.
'admin'
.
DS
.
'Admin.php'
,
$admin
)
===
false
)
{
return
DataReturn
(
'应用文件创建失败[Admin.php]'
,
-
11
);
}
if
(
!
file_exists
(
$app_dir
.
DS
.
'Hook.php'
)
&&
@
file_put_contents
(
$app_dir
.
DS
.
'Hook.php'
,
$hook
)
===
false
)
{
return
DataReturn
(
'应用文件创建失败[Hook.php]'
,
-
11
);
}
// css创建
if
(
@
file_put_contents
(
$app_static_css_dir
.
DS
.
'admin'
.
DS
.
'admin.css'
,
$admin_css
)
===
false
)
{
return
DataReturn
(
'应用静态文件创建失败[admin-css]'
,
-
11
);
}
// 应用后台视图目录不存在则创建
$app_view_admin_dir
=
APP_PATH
.
'plugins'
.
DS
.
'view'
.
DS
.
trim
(
$params
[
'plugins'
])
.
DS
.
'admin'
.
DS
.
'admin'
;
if
(
!
is_dir
(
$app_view_admin_dir
)
&&
\
base\FileUtil
::
CreateDir
(
$app_view_admin_dir
)
!==
true
)
{
return
DataReturn
(
'应用视图目录创建失败[admin]'
,
-
10
);
}
if
(
!
file_exists
(
$app_view_admin_dir
.
DS
.
'index.html'
)
&&
@
file_put_contents
(
$app_view_admin_dir
.
DS
.
'index.html'
,
$admin_view
)
===
false
)
{
return
DataReturn
(
'应用视图文件创建失败[admin-view]'
,
-
11
);
}
// css创建
if
(
!
file_exists
(
$app_static_css_dir
.
DS
.
'admin'
.
DS
.
'admin.css'
)
&&
@
file_put_contents
(
$app_static_css_dir
.
DS
.
'admin'
.
DS
.
'admin.css'
,
$admin_css
)
===
false
)
{
return
DataReturn
(
'应用静态文件创建失败[admin-css]'
,
-
11
);
}
// 是否有前端页面
if
(
isset
(
$params
[
'is_home'
])
&&
$params
[
'is_home'
]
==
1
)
{
// 前端index目录创建
if
(
\
base\FileUtil
::
CreateDir
(
$app_dir
.
DS
.
'index'
)
!==
true
)
if
(
!
is_dir
(
$app_dir
.
DS
.
'index'
)
&&
\
base\FileUtil
::
CreateDir
(
$app_dir
.
DS
.
'index'
)
!==
true
)
{
return
DataReturn
(
'应用前端目录创建失败[index]'
,
-
10
);
}
...
...
@@ -815,15 +837,9 @@ php;
{
return
DataReturn
(
'应用静态文件创建失败[index-css]'
,
-
11
);
}
// 没有独立前端页面则删除文件
}
else
{
\
base\FileUtil
::
UnlinkFile
(
$app_dir
.
DS
.
'index'
.
DS
.
'Index.php'
);
\
base\FileUtil
::
UnlinkDir
(
APP_PATH
.
'plugins'
.
DS
.
'view'
.
DS
.
trim
(
$params
[
'plugins'
])
.
DS
.
'index'
);
\
base\FileUtil
::
UnlinkFile
(
$app_static_css_dir
.
DS
.
'index'
.
DS
.
'index.css'
);
}
return
DataReturn
(
'
创建
成功'
,
0
);
return
DataReturn
(
'
操作
成功'
,
0
);
}
/**
...
...
@@ -865,20 +881,24 @@ php;
'hook'
=>
(
object
)
$hook
,
];
// 文件
存在是否有权限
// 文件
是否存在、存在判断权限、则创建
$config_file
=
$app_dir
.
DS
.
'config.json'
;
if
(
file_exists
(
$config_file
)
&&
!
is_writable
(
$config_file
)
)
if
(
file_exists
(
$config_file
))
{
return
DataReturn
(
'应用配置文件没有操作权限'
.
'['
.
$config_file
.
']'
,
-
3
);
}
// 创建配置文件
if
(
@
file_put_contents
(
$config_file
,
JsonFormat
(
$data
))
===
false
)
{
return
DataReturn
(
'应用配置文件创建失败'
,
-
10
);
// 文件存在是否有权限
if
(
!
is_writable
(
$config_file
))
{
return
DataReturn
(
'应用配置文件没有操作权限'
.
'['
.
$config_file
.
']'
,
-
3
);
}
}
else
{
// 创建配置文件
if
(
@
file_put_contents
(
$config_file
,
JsonFormat
(
$data
))
===
false
)
{
return
DataReturn
(
'应用配置文件创建失败'
,
-
10
);
}
}
return
DataReturn
(
'
创建
成功'
,
0
);
return
DataReturn
(
'
操作
成功'
,
0
);
}
/**
...
...
@@ -1280,5 +1300,69 @@ php;
return
DataReturn
(
'下载失败'
,
-
100
);
}
}
/**
* 排序保存
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-01-05
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
SortSave
(
$params
=
[])
{
// 请求类型
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'data'
,
'error_msg'
=>
'没有可保存的插件数据'
,
]
];
$ret
=
ParamsChecked
(
$params
,
$p
);
if
(
$ret
!==
true
)
{
return
DataReturn
(
$ret
,
-
1
);
}
// 排序数据、非数组则当做json转换一次
$data
=
is_array
(
$params
[
'data'
])
?
$params
[
'data'
]
:
json_decode
(
$params
[
'data'
],
true
);
if
(
!
empty
(
$data
)
&&
is_array
(
$data
))
{
// 启动事务
Db
::
startTrans
();
// 捕获异常
try
{
foreach
(
$data
as
$k
=>
$v
)
{
$upd_data
=
[
'sort'
=>
intval
(
$k
),
'add_time'
=>
time
(),
];
if
(
Db
::
name
(
'Plugins'
)
->
where
([
'id'
=>
intval
(
$v
)])
->
update
(
$upd_data
)
===
false
)
{
throw
new
\
Exception
(
'操作失败'
);
}
}
// 钩子部署
$ret
=
self
::
PluginsHookDeployment
();
if
(
$ret
[
'code'
]
!=
0
)
{
throw
new
\
Exception
(
$ret
[
'msg'
]);
}
// 完成
Db
::
commit
();
return
DataReturn
(
'操作成功'
,
0
);
}
catch
(
\
Exception
$e
)
{
Db
::
rollback
();
return
DataReturn
(
$e
->
getMessage
(),
-
1
);
}
}
return
DataReturn
(
'插件排序数据有误'
,
-
1
);
}
}
?>
\ No newline at end of file
application/service/SearchService.php
浏览文件 @
4ccc0e6f
...
...
@@ -210,19 +210,32 @@ class SearchService
}
/**
* [SearchKeywordsList 获取热门关键字列表]
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2018-10-20T23:55:06+0800
* @param [array] $params [输入参数]
* 搜索关键字列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-01-03
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
SearchKeywordsList
(
$params
=
[])
{
$where
=
[
[
'keywords'
,
'<>'
,
''
],
];
return
Db
::
name
(
'SearchHistory'
)
->
where
(
$where
)
->
group
(
'keywords'
)
->
limit
(
10
)
->
column
(
'keywords'
);
// 搜索框下热门关键字
$data
=
[];
switch
(
intval
(
MyC
(
'home_search_keywords_type'
,
0
)))
{
case
1
:
$data
=
Db
::
name
(
'SearchHistory'
)
->
where
([[
'keywords'
,
'<>'
,
''
]])
->
group
(
'keywords'
)
->
limit
(
10
)
->
column
(
'keywords'
);
break
;
case
2
:
$keywords
=
MyC
(
'home_search_keywords'
,
''
,
true
);
if
(
!
empty
(
$keywords
))
{
$data
=
explode
(
','
,
$keywords
);
}
break
;
}
return
$data
;
}
}
?>
\ No newline at end of file
application/tags.php
浏览文件 @
4ccc0e6f
...
...
@@ -35,18 +35,22 @@ return array (
'plugins_css'
=>
array
(
0
=>
'app\\plugins\\share\\Hook'
,
1
=>
'app\\plugins\\points\\Hook'
,
2
=>
'app\\plugins\\limitedtimediscount\\Hook'
,
1
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
2
=>
'app\\plugins\\exchangerate\\Hook'
,
3
=>
'app\\plugins\\limitedtimediscount\\Hook'
,
4
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_js'
=>
array
(
0
=>
'app\\plugins\\share\\Hook'
,
1
=>
'app\\plugins\\
points
\\Hook'
,
1
=>
'app\\plugins\\
exchangerate
\\Hook'
,
2
=>
'app\\plugins\\limitedtimediscount\\Hook'
,
3
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_view_common_bottom'
=>
array
(
0
=>
'app\\plugins\\share\\Hook'
,
1
=>
'app\\plugins\\exchangerate\\Hook'
,
),
'plugins_common_page_bottom'
=>
array
(
...
...
@@ -58,80 +62,120 @@ return array (
),
'plugins_service_navigation_header_handle'
=>
array
(
0
=>
'app\\plugins\\
points
\\Hook'
,
0
=>
'app\\plugins\\
membershiplevelvip
\\Hook'
,
1
=>
'app\\plugins\\limitedtimediscount\\Hook'
,
2
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_service_
quick_navigation_pc
'
=>
'plugins_service_
goods_handle_end
'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
1
=>
'app\\plugins\\signin\\Hook'
,
0
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
1
=>
'app\\plugins\\exchangerate\\Hook'
,
2
=>
'app\\plugins\\limitedtimediscount\\Hook'
,
3
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_service_
quick_navigation_h5
'
=>
'plugins_service_
goods_spec_base
'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
1
=>
'app\\plugins\\signin\\Hook'
,
0
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
1
=>
'app\\plugins\\exchangerate\\Hook'
,
2
=>
'app\\plugins\\limitedtimediscount\\Hook'
,
),
'plugins_service_
quick_navigation_weixin
'
=>
'plugins_service_
buy_group_goods_handle
'
=>
array
(
0
=>
'app\\plugins\\
points
\\Hook'
,
1
=>
'app\\plugins\\
signin
\\Hook'
,
0
=>
'app\\plugins\\
membershiplevelvip
\\Hook'
,
1
=>
'app\\plugins\\
points
\\Hook'
,
),
'plugins_service_
quick_navigation_alipay
'
=>
'plugins_service_
user_login_success_record
'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
1
=>
'app\\plugins\\signin\\Hook'
,
0
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
),
'plugins_service_
quick_navigation_baidu
'
=>
'plugins_service_
goods_spec_extends_handle
'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
1
=>
'app\\plugins\\signin\\Hook'
,
0
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
),
'plugins_
service_quick_navigation_qq
'
=>
'plugins_
view_admin_user_save
'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
1
=>
'app\\plugins\\signin\\Hook'
,
0
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
),
'plugins_service_
quick_navigation_toutiao
'
=>
'plugins_service_
user_save_handle
'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
0
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
),
'plugins_service_goods_save_handle'
=>
array
(
0
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
),
'plugins_view_goods_detail_panel_price_top'
=>
array
(
0
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
),
'plugins_view_home_goods_inside_bottom'
=>
array
(
0
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
),
'plugins_view_search_goods_inside_bottom'
=>
array
(
0
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
),
'plugins_service_goods_spec_type'
=>
array
(
0
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
),
'plugins_service_users_center_left_menu_handle'
=>
array
(
0
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
1
=>
'app\\plugins\\signin\\Hook'
,
),
'plugins_service_
goods_handle_end
'
=>
'plugins_service_
header_navigation_top_right_handle
'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
1
=>
'app\\plugins\\limitedtimediscount\\Hook'
,
0
=>
'app\\plugins\\membershiplevelvip\\Hook'
,
1
=>
'app\\plugins\\signin\\Hook'
,
2
=>
'app\\plugins\\exchangerate\\Hook'
,
),
'plugins_
view_buy_form_inside
'
=>
'plugins_
service_quick_navigation_pc
'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
0
=>
'app\\plugins\\signin\\Hook'
,
1
=>
'app\\plugins\\exchangerate\\Hook'
,
2
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_
view_buy_base_confirm_top
'
=>
'plugins_
service_quick_navigation_h5
'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
0
=>
'app\\plugins\\signin\\Hook'
,
1
=>
'app\\plugins\\exchangerate\\Hook'
,
2
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_service_
buy_group_goods_handle
'
=>
'plugins_service_
quick_navigation_weixin
'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
0
=>
'app\\plugins\\signin\\Hook'
,
1
=>
'app\\plugins\\exchangerate\\Hook'
,
2
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_service_
buy_order_insert_end
'
=>
'plugins_service_
quick_navigation_alipay
'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
0
=>
'app\\plugins\\signin\\Hook'
,
1
=>
'app\\plugins\\exchangerate\\Hook'
,
2
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_service_
order_status_change_history_success_handle
'
=>
'plugins_service_
quick_navigation_baidu
'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
0
=>
'app\\plugins\\signin\\Hook'
,
1
=>
'app\\plugins\\exchangerate\\Hook'
,
2
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_service_
users_center_left_menu_handle
'
=>
'plugins_service_
quick_navigation_qq
'
=>
array
(
0
=>
'app\\plugins\\signin\\Hook'
,
1
=>
'app\\plugins\\exchangerate\\Hook'
,
2
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_service_
header_navigation_top_right_handle
'
=>
'plugins_service_
quick_navigation_toutiao
'
=>
array
(
0
=>
'app\\plugins\\signin\\Hook'
,
1
=>
'app\\plugins\\exchangerate\\Hook'
,
2
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_service_
goods_spec_base
'
=>
'plugins_service_
currency_data
'
=>
array
(
0
=>
'app\\plugins\\
limitedtimediscount
\\Hook'
,
0
=>
'app\\plugins\\
exchangerate
\\Hook'
,
),
'plugins_view_goods_detail_base_top'
=>
array
(
...
...
@@ -141,5 +185,21 @@ return array (
array
(
0
=>
'app\\plugins\\limitedtimediscount\\Hook'
,
),
'plugins_view_buy_form_inside'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_view_buy_base_confirm_top'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_service_buy_order_insert_end'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
),
'plugins_service_order_status_change_history_success_handle'
=>
array
(
0
=>
'app\\plugins\\points\\Hook'
,
),
);
?>
\ No newline at end of file
changelog.txt
浏览文件 @
4ccc0e6f
...
...
@@ -18,7 +18,7 @@ web端
4. 友情链接新增手机端显隐控制
5. 公共动态数据表单参数优化
6. 动态数据列表组件条件新增气泡式弹出层
7. 后台插件管理新增排序功能、自定义显示顺序+插件调用顺序
小程序
...
...
config/shopxo.sql
浏览文件 @
4ccc0e6f
此差异已折叠。
点击以展开。
public/static/admin/default/css/pluginsadmin.css
浏览文件 @
4ccc0e6f
...
...
@@ -6,22 +6,25 @@
width
:
calc
(
100%
+
10px
);
margin-left
:
-5px
;
}
.content
ul
.am-gallery-bordered
.icon
{
.content
ul
.am-gallery-bordered
li
.am-gallery-item
{
height
:
197px
;
}
.content
ul
.am-gallery-bordered
li
.icon
{
width
:
80px
;
height
:
80px
;
border-radius
:
10px
;
box-shadow
:
0px
3px
6px
0px
rgba
(
0
,
0
,
0
,
.4
);
}
.content
ul
.am-gallery-bordered
.am-gallery-bordered
.am-gallery-item
{
.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-bordered
.am-gallery-item.am-active
{
.content
ul
.am-gallery-bordered
.am-gallery-item.am-active
{
border
:
1px
solid
#ff8a8a
!important
;
background
:
#fff2f2
;
}
.content
ul
.am-gallery-bordered
.am-gallery-bordered
.am-gallery-item
:hover
{
.content
ul
.am-gallery-bordered
.am-gallery-item
:hover
{
border
:
1px
solid
#999
;
box-shadow
:
0px
12px
12px
-10px
rgba
(
0
,
0
,
0
,
.4
);
}
...
...
@@ -52,7 +55,7 @@
white-space
:
nowrap
;
overflow
:
hidden
;
}
.content
ul
.am-gallery-bordered
.am-gallery-bordered
.am-gallery-desc
{
.content
ul
.am-gallery-bordered
.am-gallery-desc
{
overflow
:
hidden
;
text-overflow
:
ellipsis
;
display
:
-webkit-box
;
...
...
@@ -78,8 +81,18 @@
.content
ul
.am-gallery-bordered
li
.submit-state.am-default
{
background-color
:
#e6e6e6
;
}
.content
ul
.am-gallery-bordered
li
.submit-move
{
cursor
:
move
!important
;
}
.content
ul
.already-install
.am-gallery-item.am-active
{
border
:
1px
solid
#f8815d
!important
;
background
:
#fffbf5
;
}
@media
only
screen
and
(
max-width
:
641px
)
{
.content
ul
.am-gallery-bordered
.icon
{
.content
ul
.am-gallery-bordered
li
.am-gallery-item
{
height
:
187px
;
}
.content
ul
.am-gallery-bordered
li
.icon
{
width
:
65px
;
height
:
65px
;
}
...
...
public/static/admin/default/js/appmini.index.js
浏览文件 @
4ccc0e6f
...
...
@@ -10,14 +10,16 @@ $(function()
if
(
theme
!=
undefined
)
{
// ajax请求
$
.
AMUI
.
progress
.
start
();
$
.
ajax
({
url
:
$
(
'
.data-list
'
).
data
(
'
select-url
'
),
type
:
'
POST
'
,
dataType
:
"
json
"
,
timeout
:
10000
,
data
:{
"
theme
"
:
theme
,
"
nav_type
"
:
$
(
'
.data-list
'
).
data
(
'
nav-type
'
)},
success
:
function
(
result
)
url
:
$
(
'
.data-list
'
).
data
(
'
select-url
'
),
type
:
'
POST
'
,
dataType
:
'
json
'
,
timeout
:
10000
,
data
:
{
"
theme
"
:
theme
,
"
nav_type
"
:
$
(
'
.data-list
'
).
data
(
'
nav-type
'
)},
success
:
function
(
result
)
{
$
.
AMUI
.
progress
.
done
();
if
(
result
.
code
==
0
)
{
$
(
'
.am-gallery-item
'
).
removeClass
(
'
theme-active
'
);
...
...
@@ -27,9 +29,10 @@ $(function()
Prompt
(
result
.
msg
);
}
},
error
:
function
(
)
error
:
function
(
xhr
,
type
)
{
Prompt
(
'
服务器错误
'
);
$
.
AMUI
.
progress
.
done
();
Prompt
(
HtmlToString
(
xhr
.
responseText
)
||
'
异常错误
'
,
null
,
30
);
}
});
}
...
...
public/static/admin/default/js/email.js
浏览文件 @
4ccc0e6f
...
...
@@ -4,14 +4,16 @@ $(function()
$
(
'
.test-email-submit
'
).
on
(
'
click
'
,
function
()
{
// ajax请求
$
.
AMUI
.
progress
.
start
();
$
.
ajax
({
url
:
$
(
this
).
data
(
'
url
'
),
type
:
'
POST
'
,
dataType
:
"
json
"
,
timeout
:
30000
,
data
:{
"
email
"
:
$
(
'
.test-email-value
'
).
val
()},
success
:
function
(
result
)
url
:
$
(
this
).
data
(
'
url
'
),
type
:
'
POST
'
,
dataType
:
'
json
'
,
timeout
:
30000
,
data
:
{
"
email
"
:
$
(
'
.test-email-value
'
).
val
()},
success
:
function
(
result
)
{
$
.
AMUI
.
progress
.
done
();
if
(
result
.
code
==
0
)
{
Prompt
(
result
.
msg
,
'
success
'
);
...
...
@@ -19,10 +21,11 @@ $(function()
Prompt
(
result
.
msg
);
}
},
error
:
function
()
{
Prompt
(
'
服务器错误
'
);
}
error
:
function
(
xhr
,
type
)
{
$
.
AMUI
.
progress
.
done
();
Prompt
(
HtmlToString
(
xhr
.
responseText
)
||
'
异常错误
'
,
null
,
30
);
}
});
});
...
...
public/static/admin/default/js/pluginsadmin.js
浏览文件 @
4ccc0e6f
$
(
function
()
{
// 删除提示
$
(
'
.submit-delete-modal
'
).
on
(
'
click
'
,
function
()
{
var
$modal
=
$
(
'
#plugins-delete-modal
'
);
$modal
.
find
(
'
button.submit-ajax
'
).
attr
(
'
data-id
'
,
$
(
this
).
data
(
'
id
'
));
$modal
.
modal
(
'
open
'
);
});
// 拖拽
$
(
'
.content ul.am-gallery-bordered
'
).
dragsort
({
dragSelector
:
'
button.submit-move
'
,
placeHolderTemplate
:
'
<li><div class="am-gallery-item drag-sort-dotted"></div></li>
'
});
// 排序开启/取消/保存
$
(
'
.submit-move-sort-open
'
).
on
(
'
click
'
,
function
()
{
$
(
'
.submit-move-sort-open
'
).
addClass
(
'
am-hide
'
);
$
(
'
.submit-move-sort-save
'
).
removeClass
(
'
am-hide
'
);
$
(
'
.submit-move-sort-cancel
'
).
removeClass
(
'
am-hide
'
);
$
(
'
.content ul.am-gallery-bordered li .submit-move
'
).
removeClass
(
'
am-hide
'
);
});
$
(
'
.submit-move-sort-cancel
'
).
on
(
'
click
'
,
function
()
{
$
(
'
.submit-move-sort-open
'
).
removeClass
(
'
am-hide
'
);
$
(
'
.submit-move-sort-save
'
).
addClass
(
'
am-hide
'
);
$
(
'
.submit-move-sort-cancel
'
).
addClass
(
'
am-hide
'
);
$
(
'
.content ul.am-gallery-bordered li .submit-move
'
).
addClass
(
'
am-hide
'
);
});
$
(
'
.submit-move-sort-save
'
).
on
(
'
click
'
,
function
()
{
var
json
=
{};
$
(
'
.content ul.am-gallery-bordered li
'
).
each
(
function
(
k
,
v
)
{
var
id
=
parseInt
(
$
(
this
).
data
(
'
id
'
))
||
0
;
if
(
id
>
0
)
{
json
[
k
]
=
id
;
}
});
var
len
=
0
;
for
(
var
i
in
json
)
{
len
++
;
}
if
(
len
<=
0
)
{
Prompt
(
'
没有可保存的插件数据
'
);
return
false
;
}
// ajax请求
$
.
AMUI
.
progress
.
start
();
$
.
ajax
({
url
:
$
(
'
.content ul.am-gallery-bordered
'
).
data
(
'
sort-save-url
'
),
type
:
'
POST
'
,
dataType
:
'
json
'
,
timeout
:
10000
,
data
:
{
"
data
"
:
json
},
success
:
function
(
result
)
{
$
.
AMUI
.
progress
.
done
();
if
(
result
.
code
==
0
)
{
$
(
'
.submit-move-sort-open
'
).
removeClass
(
'
am-hide
'
);
$
(
'
.submit-move-sort-save
'
).
addClass
(
'
am-hide
'
);
$
(
'
.submit-move-sort-cancel
'
).
addClass
(
'
am-hide
'
);
$
(
'
.content ul.am-gallery-bordered li .submit-move
'
).
addClass
(
'
am-hide
'
);
Prompt
(
result
.
msg
,
'
success
'
);
}
else
{
Prompt
(
result
.
msg
);
}
},
error
:
function
(
xhr
,
type
)
{
$
.
AMUI
.
progress
.
done
();
Prompt
(
HtmlToString
(
xhr
.
responseText
)
||
'
异常错误
'
,
null
,
30
);
}
});
});
});
\ No newline at end of file
public/static/admin/default/js/site.js
浏览文件 @
4ccc0e6f
...
...
@@ -205,6 +205,7 @@ $(function()
});
var
$this
=
$
(
this
);
$
.
AMUI
.
progress
.
start
();
$this
.
button
(
'
loading
'
);
$
(
'
.goods-list-container ul.am-gallery
'
).
html
(
'
<div class="table-no"><i class="am-icon-spinner am-icon-pulse"></i>
'
+
(
$
(
'
.goods-list-container
'
).
data
(
'
loading-msg
'
))
+
'
</div>
'
);
$
.
ajax
({
...
...
@@ -212,8 +213,9 @@ $(function()
type
:
'
post
'
,
data
:
{
"
page
"
:
page
,
"
category_id
"
:
category_id
,
"
keywords
"
:
keywords
,
"
goods_ids
"
:
goods_ids
},
dataType
:
'
json
'
,
success
:
function
(
res
)
success
:
function
(
res
)
{
$
.
AMUI
.
progress
.
done
();
$this
.
button
(
'
reset
'
);
if
(
res
.
code
==
0
)
{
...
...
@@ -225,11 +227,13 @@ $(function()
$
(
'
.goods-list-container ul.am-gallery
'
).
html
(
'
<div class="table-no"><i class="am-icon-warning"></i>
'
+
res
.
msg
+
'
</div>
'
);
}
},
error
:
function
(
res
)
error
:
function
(
xhr
,
type
)
{
$
.
AMUI
.
progress
.
done
();
$this
.
button
(
'
reset
'
);
Prompt
(
'
请求失败
'
);
$
(
'
.goods-list-container ul.am-gallery
'
).
html
(
'
<div class="table-no"><i class="am-icon-warning"></i> 请求失败</div>
'
);
var
msg
=
HtmlToString
(
xhr
.
responseText
)
||
'
异常错误
'
;
Prompt
(
msg
,
null
,
30
);
$
(
'
.goods-list-container ul.am-gallery
'
).
html
(
'
<div class="table-no"><i class="am-icon-warning"></i>
'
+
msg
+
'
</div>
'
);
}
});
});
...
...
public/static/admin/default/js/theme.js
浏览文件 @
4ccc0e6f
...
...
@@ -10,14 +10,16 @@ $(function()
if
(
theme
!=
undefined
)
{
// ajax请求
$
.
AMUI
.
progress
.
start
();
$
.
ajax
({
url
:
$
(
'
.data-list
'
).
data
(
'
select-url
'
),
type
:
'
POST
'
,
dataType
:
"
json
"
,
timeout
:
10000
,
data
:{
"
theme
"
:
theme
},
success
:
function
(
result
)
url
:
$
(
'
.data-list
'
).
data
(
'
select-url
'
),
type
:
'
POST
'
,
dataType
:
'
json
'
,
timeout
:
10000
,
data
:
{
"
theme
"
:
theme
},
success
:
function
(
result
)
{
$
.
AMUI
.
progress
.
done
();
if
(
result
.
code
==
0
)
{
$
(
'
.am-gallery-item
'
).
removeClass
(
'
theme-active
'
);
...
...
@@ -27,10 +29,11 @@ $(function()
Prompt
(
result
.
msg
);
}
},
error
:
function
()
{
Prompt
(
'
服务器错误
'
);
}
error
:
function
(
xhr
,
type
)
{
$
.
AMUI
.
progress
.
done
();
Prompt
(
HtmlToString
(
xhr
.
responseText
)
||
'
异常错误
'
,
null
,
30
);
}
});
}
}
...
...
public/static/admin/default/js/warehousegoods.js
浏览文件 @
4ccc0e6f
...
...
@@ -39,6 +39,7 @@ $(function()
}
var
$this
=
$
(
this
);
$
.
AMUI
.
progress
.
start
();
$this
.
button
(
'
loading
'
);
$
(
'
.goods-list-container ul.am-gallery
'
).
html
(
'
<div class="table-no"><i class="am-icon-spinner am-icon-pulse"></i>
'
+
(
$
(
'
.goods-list-container
'
).
data
(
'
loading-msg
'
))
+
'
</div>
'
);
$
.
ajax
({
...
...
@@ -48,6 +49,7 @@ $(function()
dataType
:
'
json
'
,
success
:
function
(
res
)
{
$
.
AMUI
.
progress
.
done
();
$this
.
button
(
'
reset
'
);
if
(
res
.
code
==
0
)
{
...
...
@@ -59,11 +61,13 @@ $(function()
$
(
'
.goods-list-container ul.am-gallery
'
).
html
(
'
<div class="table-no"><i class="am-icon-warning"></i>
'
+
res
.
msg
+
'
</div>
'
);
}
},
error
:
function
(
res
)
error
:
function
(
xhr
,
type
)
{
$
.
AMUI
.
progress
.
done
();
$this
.
button
(
'
reset
'
);
Prompt
(
'
请求失败
'
);
$
(
'
.goods-list-container ul.am-gallery
'
).
html
(
'
<div class="table-no"><i class="am-icon-warning"></i> 请求失败</div>
'
);
var
msg
=
HtmlToString
(
xhr
.
responseText
)
||
'
异常错误
'
;
Prompt
(
msg
,
null
,
30
);
$
(
'
.goods-list-container ul.am-gallery
'
).
html
(
'
<div class="table-no"><i class="am-icon-warning"></i>
'
+
msg
+
'
</div>
'
);
}
});
});
...
...
@@ -83,13 +87,15 @@ $(function()
return
false
;
}
$
.
AMUI
.
progress
.
start
();
$
.
ajax
({
url
:
url
,
type
:
'
post
'
,
data
:
{
"
warehouse_id
"
:
warehouse_id
,
"
goods_id
"
:
goods_id
},
dataType
:
'
json
'
,
success
:
function
(
res
)
success
:
function
(
res
)
{
$
.
AMUI
.
progress
.
done
();
if
(
res
.
code
==
0
)
{
$this
.
parent
().
html
(
icon_html
);
...
...
@@ -98,9 +104,10 @@ $(function()
Prompt
(
res
.
msg
);
}
},
error
:
function
(
res
)
error
:
function
(
xhr
,
type
)
{
Prompt
(
'
请求失败
'
);
$
.
AMUI
.
progress
.
done
();
Prompt
(
HtmlToString
(
xhr
.
responseText
)
||
'
异常错误
'
,
null
,
30
);
}
});
});
...
...
public/static/index/default/js/goods.js
浏览文件 @
4ccc0e6f
...
...
@@ -38,10 +38,10 @@ function GoodsCommentsHtml(page)
$
.
ajax
({
url
:
$
(
'
.goods-comment
'
).
data
(
'
url
'
),
type
:
'
POST
'
,
data
:{
"
goods_id
"
:
$
(
'
.goods-comment
'
).
data
(
'
goods-id
'
),
"
page
"
:
page
||
1
},
dataType
:
'
json
'
,
success
:
function
(
result
)
type
:
'
POST
'
,
data
:
{
"
goods_id
"
:
$
(
'
.goods-comment
'
).
data
(
'
goods-id
'
),
"
page
"
:
page
||
1
},
dataType
:
'
json
'
,
success
:
function
(
result
)
{
$
(
'
.goods-page-no-data
'
).
addClass
(
'
none
'
);
if
(
result
.
code
==
0
)
...
...
@@ -57,10 +57,10 @@ function GoodsCommentsHtml(page)
$
(
'
.goods-page-no-data span
'
).
text
(
'
没有评论数据
'
);
}
},
error
:
function
(
result
)
error
:
function
(
xhr
,
type
)
{
$
(
'
.goods-page-no-data
'
).
removeClass
(
'
none
'
);
$
(
'
.goods-page-no-data span
'
).
text
(
'
请求出现错误,请稍后再试!
'
);
$
(
'
.goods-page-no-data span
'
).
text
(
xhr
.
responseText
||
'
请求出现错误,请稍后再试!
'
);
}
});
}
...
...
@@ -516,10 +516,9 @@ $(function() {
if
(
__user_id__
!=
0
)
{
var
$this
=
$
(
this
);
// 开启进度条
$
.
AMUI
.
progress
.
start
();
// ajax请求
$
.
AMUI
.
progress
.
start
();
$
.
ajax
({
url
:
$
(
this
).
data
(
'
ajax-url
'
),
type
:
'
post
'
,
...
...
@@ -528,8 +527,8 @@ $(function() {
data
:
{
"
id
"
:
$
(
'
.goods-detail
'
).
data
(
'
id
'
)},
success
:
function
(
result
)
{
PoptitClose
();
$
.
AMUI
.
progress
.
done
();
PoptitClose
();
if
(
result
.
code
==
0
)
{
...
...
@@ -548,8 +547,8 @@ $(function() {
},
error
:
function
(
xhr
,
type
)
{
PoptitClose
();
$
.
AMUI
.
progress
.
done
();
PoptitClose
();
Prompt
(
HtmlToString
(
xhr
.
responseText
)
||
'
异常错误
'
,
null
,
30
);
}
});
...
...
public/static/index/default/js/user.js
浏览文件 @
4ccc0e6f
...
...
@@ -78,11 +78,11 @@ $(function()
// 发送验证码
$
.
ajax
({
url
:
$
(
'
.verify-submit
'
).
data
(
'
url
'
),
type
:
'
POST
'
,
data
:{
"
accounts
"
:
$accounts
.
val
(),
"
verify
"
:
verify
,
"
type
"
:
$form_tag
.
find
(
'
input[name="type"]
'
).
val
()},
dataType
:
'
json
'
,
success
:
function
(
result
)
url
:
$
(
'
.verify-submit
'
).
data
(
'
url
'
),
type
:
'
POST
'
,
data
:
{
"
accounts
"
:
$accounts
.
val
(),
"
verify
"
:
verify
,
"
type
"
:
$form_tag
.
find
(
'
input[name="type"]
'
).
val
()},
dataType
:
'
json
'
,
success
:
function
(
result
)
{
if
(
result
.
code
==
0
)
{
...
...
@@ -117,14 +117,14 @@ $(function()
Prompt
(
result
.
msg
);
}
},
error
:
function
(
)
error
:
function
(
xhr
,
type
)
{
$this
.
button
(
'
reset
'
);
if
(
is_win
==
1
)
{
$
(
'
.verify-submit-win
'
).
button
(
'
reset
'
);
}
Prompt
(
'
网络错误
'
);
Prompt
(
HtmlToString
(
xhr
.
responseText
)
||
'
异常错误
'
,
null
,
30
);
}
});
}
else
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录