diff --git a/README.md b/README.md index 67fde65b..a3018d2d 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,8 @@ FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架。 * 共用同一账号体系的Web端会员中心权限验证和API接口会员权限验证 * 二级域名部署支持,同时域名支持绑定到插件 * 多语言支持,服务端及客户端支持 -* 强大的第三方模块支持([CMS](https://www.fastadmin.net/store/cms.html)、[博客](https://www.fastadmin.net/store/blog.html)、[文档生成](https://www.fastadmin.net/store/docs.html)、[个人免签支付](https://www.fastadmin.net/store/pay.html)) -* 整合第三方短信接口(阿里云、创蓝短信) +* 强大的第三方模块支持([CMS](https://www.fastadmin.net/store/cms.html)、[博客](https://www.fastadmin.net/store/blog.html)、[文档生成](https://www.fastadmin.net/store/docs.html)) +* 整合第三方短信接口(阿里云、腾讯云短信) * 无缝整合第三方云存储(七牛、阿里云OSS、又拍云)功能 * 第三方富文本编辑器支持(Summernote、Tinymce、百度编辑器) * 第三方登录(QQ、微信、微博)整合 @@ -53,7 +53,7 @@ https://demo.fastadmin.net 交流社区: https://forum.fastadmin.net -QQ群: [636393962](https://jq.qq.com/?_wv=1027&k=487PNBb)(交流群①) [708784003](https://jq.qq.com/?_wv=1027&k=5ObjtwM)(交流群②) [696992864](https://jq.qq.com/?_wv=1027&k=5R2AB00)(高级群,邀请加入) +QQ群: [636393962](https://jq.qq.com/?_wv=1027&k=487PNBb)(满) [708784003](https://jq.qq.com/?_wv=1027&k=5ObjtwM)(满) [964776039](https://jq.qq.com/?_wv=1027&k=59qjU2P)(3群) Email: (karsonzhang#163.com, 把#换成@) diff --git a/application/admin/view/common/header.html b/application/admin/view/common/header.html index 5e6f5037..43588d90 100755 --- a/application/admin/view/common/header.html +++ b/application/admin/view/common/header.html @@ -28,23 +28,6 @@ - -
  • ' + j.title + '
  • '; - $(item).appendTo($(".notifications-menu ul.menu")); - }); - } - }); - //读取首次登录推荐插件列表 if (localStorage.getItem("fastep") == "installed") { $.ajax({ @@ -203,7 +188,6 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'adminlte', 'form'], functi } }); - var multiplenav = Config.fastadmin.multiplenav; var firstnav = $("#firstnav .nav-addtabs"); var nav = multiplenav ? $("#secondnav .nav-addtabs") : firstnav; diff --git a/public/assets/js/require-backend.min.js b/public/assets/js/require-backend.min.js index bfb1ab34..dfc2c820 100644 --- a/public/assets/js/require-backend.min.js +++ b/public/assets/js/require-backend.min.js @@ -6021,6 +6021,7 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un container: $(this).parent().get(0), //取按钮的上级元素 flash_swf_url: '/assets/libs/plupload/js/Moxie.swf', silverlight_xap_url: '/assets/libs/plupload/js/Moxie.xap', + drop_element: [id, $(this).data("input-id")], filters: { max_file_size: maxsize, mime_types: mimetype, @@ -9930,8 +9931,9 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr type = typeof type === 'undefined' ? 'buttons' : type; var options = table ? table.bootstrapTable('getOptions') : {}; var html = []; - var hidden, visible, disable, url, classname, icon, text, title, refresh, confirm, extend, click; + var hidden, visible, disable, url, classname, icon, text, title, refresh, confirm, extend, click, dropdown, link; var fieldIndex = column.fieldIndex; + var dropdowns = {}; $.each(buttons, function (i, j) { if (type === 'operate') { @@ -9952,6 +9954,7 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr if (!visible) { return true; } + dropdown = j.dropdown ? j.dropdown : ''; url = j.url ? j.url : ''; url = typeof url === 'function' ? url.call(table, row, j) : (url ? Fast.api.fixurl(Table.api.replaceurl(url, row, table)) : 'javascript:;'); classname = j.classname ? j.classname : 'btn-primary btn-' + name + 'one'; @@ -9965,9 +9968,24 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr if (disable) { classname = classname + ' disabled'; } - html.push('' + (text ? ' ' + text : '') + ''); + link = '' + (text ? ' ' + text : '') + ''; + if (dropdown) { + if (typeof dropdowns[dropdown] == 'undefined') { + dropdowns[dropdown] = []; + } + dropdowns[dropdown].push(link); + } else { + html.push(link); + } } }); + if (!$.isEmptyObject(dropdowns)) { + var dropdownHtml = []; + $.each(dropdowns, function (i, j) { + dropdownHtml.push('
    '); + }); + html.unshift(dropdownHtml); + } return html.join(' '); }, //替换URL中的数据 diff --git a/public/assets/js/require-table.js b/public/assets/js/require-table.js index 93cd0c4c..c4630558 100644 --- a/public/assets/js/require-table.js +++ b/public/assets/js/require-table.js @@ -541,8 +541,9 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table type = typeof type === 'undefined' ? 'buttons' : type; var options = table ? table.bootstrapTable('getOptions') : {}; var html = []; - var hidden, visible, disable, url, classname, icon, text, title, refresh, confirm, extend, click; + var hidden, visible, disable, url, classname, icon, text, title, refresh, confirm, extend, click, dropdown, link; var fieldIndex = column.fieldIndex; + var dropdowns = {}; $.each(buttons, function (i, j) { if (type === 'operate') { @@ -563,6 +564,7 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table if (!visible) { return true; } + dropdown = j.dropdown ? j.dropdown : ''; url = j.url ? j.url : ''; url = typeof url === 'function' ? url.call(table, row, j) : (url ? Fast.api.fixurl(Table.api.replaceurl(url, row, table)) : 'javascript:;'); classname = j.classname ? j.classname : 'btn-primary btn-' + name + 'one'; @@ -576,9 +578,24 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table if (disable) { classname = classname + ' disabled'; } - html.push('' + (text ? ' ' + text : '') + ''); + link = '' + (text ? ' ' + text : '') + ''; + if (dropdown) { + if (typeof dropdowns[dropdown] == 'undefined') { + dropdowns[dropdown] = []; + } + dropdowns[dropdown].push(link); + } else { + html.push(link); + } } }); + if (!$.isEmptyObject(dropdowns)) { + var dropdownHtml = []; + $.each(dropdowns, function (i, j) { + dropdownHtml.push('
    '); + }); + html.unshift(dropdownHtml); + } return html.join(' '); }, //替换URL中的数据 diff --git a/public/assets/js/require-upload.js b/public/assets/js/require-upload.js index 2342771a..27b43280 100755 --- a/public/assets/js/require-upload.js +++ b/public/assets/js/require-upload.js @@ -199,6 +199,7 @@ define(['jquery', 'bootstrap', 'plupload', 'template'], function ($, undefined, container: $(this).parent().get(0), //取按钮的上级元素 flash_swf_url: '/assets/libs/plupload/js/Moxie.swf', silverlight_xap_url: '/assets/libs/plupload/js/Moxie.xap', + drop_element: [id, $(this).data("input-id")], filters: { max_file_size: maxsize, mime_types: mimetype, diff --git a/public/install.php b/public/install.php index fabf15c6..0fe40bf1 100644 --- a/public/install.php +++ b/public/install.php @@ -122,8 +122,8 @@ if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST') { } else if (strlen($adminUsername) < 3 || strlen($adminUsername) > 12) { echo "用户名请输入3~12位字符"; exit; - } else if (strlen($adminPassword) < 6 || strlen($adminPassword) > 16) { - echo "密码请输入6~16位字符"; + } else if (strlen($adminPassword) < 6 || strlen($adminPassword) > 16 || stripos($adminPassword, ' ') !== false) { + echo "密码请输入6~16位字符,不能包含空格"; exit; } try {