Files
swiftadmin/app/admin/view/system/plugin/index.html

229 lines
11 KiB
HTML
Raw Normal View History

2022-08-19 19:48:37 +08:00
<include file="/public/header"/>
<link rel="stylesheet" type="text/css" href="__STATICADMIN__css/plugin.css?v={:release()}">
<!-- // 展示数据 -->
<div class="layui-fluid" id="swiftadmin-plugin">
<div class="layui-card layui-elem">
<!-- // 默认操作按钮 -->
<div class="layui-card-header layadmin-card-header-auto ">
<blockquote class="layui-elem-quote pluginCenter"> 插件管理:
<span style="margin-left: 12px">在线安装、卸载、禁用、启用、配置、升级插件,插件升级前请做好备份并确保服务器读写权限正确</span>
<span class="fr"><i class="layui-icon fa-user" onclick="layui.plugin.clearLogin();"
title="退出登录"></i></span>
</blockquote>
<div class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label">插件分类:</label>
<div class="layui-input-block" name="type">
<span class="layui-plugin-select active first" data-value="">全部</span>
<span class="layui-plugin-select" data-value="1">完整应用</span>
<span class="layui-plugin-select" data-value="2">SEO优化</span>
<span class="layui-plugin-select" data-value="3">开发测试</span>
<span class="layui-plugin-select" data-value="4">小程序</span>
<span class="layui-plugin-select" data-value="5">管理增强</span>
<span class="layui-plugin-select" data-value="6">信息安全</span>
<span class="layui-plugin-select" data-value="7">接口整合</span>
<span class="layui-plugin-select" data-value="8">辅助增强</span>
<span class="layui-plugin-select" data-value="9">扩展程序</span>
<span class="layui-plugin-select" data-value="10">未归类</span>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">标签选项:</label>
<div class="layui-input-block" name="pay">
<span class="layui-plugin-select active first">全部</span>
<span class="layui-plugin-select" data-value="1">免费</span>
<span class="layui-plugin-select" data-value="2">收费</span>
<div class="layui-divider layui-divider-vertical"></div>
<span name="label">
<span class="layui-plugin-select layui-hot" data-value="hot">热门</span>
<span class="layui-plugin-select" data-value="official">官方</span>
</span>
<div class="layui-divider layui-divider-vertical"></div>
<span name="label">
<button type="button" class="layui-btn layui-btn-sm" id="pluginInstall">本地安装插件</button>
<button type="button" class="layui-btn layui-btn-danger layui-btn-sm" id="pluginCache">更新插件缓存</button>
</span>
<div class="layui-inline">
<div class="layui-input-inline">
<input name="title" class="layui-input layui-input-key" type="text"
placeholder="{:__('关键字搜索')}"/>
</div>
<div class="layui-input-inline">
<button class="layui-btn layui-btn-sm" lay-filter="formSearch" lay-submit>
<i class="layui-icon layui-icon-search"></i> {:__('搜索')}
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- // 创建数据表实例 -->
<table id="lay-tableList" lay-filter="lay-tableList"></table>
</div>
</div>
<!-- // 列表工具栏 -->
<script type="text/html" id="tableBar">
{{# let item = plugins[d.name]; }}
{{# if(typeof item !== 'undefined') { }}
{{# if(item.config) { }}
<a class="layui-table-text"
data-title="{:__('配置插件')}"
data-area="{{item.area}}"
data-maxmin="true"
data-url="{:url('/system/plugin/config')}?name={{d.name}}" lay-event="edit">{:__('配置')}</a>
<div class="layui-divider layui-divider-vertical"></div>
{{# } }}
{{# if(d.version > item.version) { }}
<span class="layui-upgrade-elem">
<a class="layui-table-text upgrade"
data-url="{:url('/system/plugin/config')}?name={{d.name}}">{:__('升级')} <span
class="layui-badge-dot"></span></a>
<div class="layui-divider layui-divider-vertical"></div>
</span>
{{# } }}
<a class="layui-table-text uninstall" style="color:red"
data-url="{:url('/system/plugin/uninstall')}?name={{d.name}}">{:__('卸载')}</a>
{{# } else { }}
<a class="layui-table-text install" data-url="{:url('/system/plugin/install')}?name={{d.name}}">{:__('安装')}</a>
{{# if(d.demourl) { }}
<div class="layui-divider layui-divider-vertical"></div>
<a class="layui-table-text" target="_blank" href="{{d.demourl}}">{:__('演示')}</a>
{{# } }}
{{# } }}
</script>
<include file="/public/footer"/>
<script>
layui.use(['admin', 'table', 'plugin', 'dropdown', 'jquery'], function () {
let plugin = layui.plugin;
let $ = layui.jquery;
let table = layui.table;
let dropdown = layui.dropdown;
window.plugins = {$plugin|raw};
/*
* 初始化表格
*/
let isTable = table.render({
elem: "#lay-tableList"
, url: plugin.apiUrl + "plugin/index"
, method: 'post'
, page: true
, limit: 15
, cols: [[
{type: 'checkbox', width: 50},
{
field: 'id', align: 'center', templet: function (d) {
let html = '', item = plugins[d.name];
if (typeof item !== 'undefined' && item.home) {
html = '<a href="' + item.home + '" target="_blank">';
html += '<i class="layui-icon fa-home" style="color:#1890ff;"></i></a>';
return html;
} else {
return '<i class="layui-icon fa-home" ></i>';
}
}, width: 80, title: '前台'
},
{
field: 'title', align: 'left', width: 200, templet: function (d) {
let html = '<a target="_blank" href="' + d.readurl + '">' + d.title + '</a>';
if (d.album) {
html += '<i class="layui-icon layui-icon-picture"></i>';
}
return html;
}, title: '{:__("名称")}'
},
{field: 'intro', align: 'left', title: '{:__("介绍")}'},
{field: 'author', align: 'center', width: 180, title: '{:__("作者")}'},
{
field: 'price', align: 'center', templet: function (d) {
if (d.price > 0) {
return '<span style="color: red">¥' + d.price + '</span>';
} else {
return '免费';
}
}, width: 180, title: '{:__("价格")}'
},
{
field: 'status', align: 'center', templet: function (d) {
let html = '', item = plugins[d.name], status = d.status;
if (typeof d.download !== 'undefined') {
if (typeof item !== 'undefined') {
status = item.status;
} else {
html += '<span>--</span>';
}
}
if (!html) {
html += '<input type="checkbox" lay-filter="pluginStatus"';
html += 'data-url="{:url(\'/system/plugin/status\')}" lay-skin="switch" value="' + d.name + '"';
if (status) {
html += 'checked';
}
html += '>';
}
return html;
}, width: 80, title: '{:__("状态")}'
},
{
field: 'download', align: 'center', width: 80, templet: function (d) {
return d.download || '--';
}, title: '{:__("下载")}'
},
{field: 'version', align: 'center', width: 180, title: '{:__("版本")}'},
{
align: 'center', toolbar: '#tableBar', width: 220, title: '{:__("操作")}'
}
]]
, done: function (res, curr, count) {
let data = res.data;
for (const dataKey in data) {
let dropArray = [];
let item = plugins[data[dataKey].name];
if (typeof item == 'undefined') {
continue;
}
let verInfo = data[dataKey].verInfo;
for (const verInfoKey in verInfo) {
let v1 = item.version.replaceAll('.', '');
let v2 = verInfo[verInfoKey].version.replaceAll('.', '');
if (v2 > v1) {
dropArray.push({
name: data[dataKey].name,
title: verInfo[verInfoKey].version,
v: verInfo[verInfoKey].version,
pluginName: data[dataKey].title,
});
}
}
if (dropArray.length >= 1) {
dropdown.render({
elem: $('tr[data-index="' + dataKey + '"]').find('.upgrade')
, trigger: 'hover'
, align: 'center'
, data: dropArray
, click: function (data) {
plugin.upgrade(data);
}
, className: 'upgrade-version'
});
}
}
}
})
});
</script>