mirror of https://gitee.com/karson/fastadmin.git
Merge remote-tracking branch 'karson/master'
commit
eed5a6fa13
|
|
@ -14,3 +14,4 @@ composer.lock
|
|||
!.gitkeep
|
||||
.env
|
||||
/.svn
|
||||
.vscode
|
||||
|
|
|
|||
|
|
@ -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, 把#换成@)
|
||||
|
||||
|
|
|
|||
|
|
@ -28,23 +28,6 @@
|
|||
<a href="__PUBLIC__" target="_blank"><i class="fa fa-home" style="font-size:14px;"></i></a>
|
||||
</li>
|
||||
|
||||
<li class="dropdown notifications-menu hidden-xs">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
<i class="fa fa-bell-o"></i>
|
||||
<span class="label label-warning"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="header">{:__('Latest news')}</li>
|
||||
<li>
|
||||
<!-- FastAdmin最新更新信息,你可以替换成你自己站点的信息,请注意修改public/assets/js/backend/index.js文件 -->
|
||||
<ul class="menu">
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
<li class="footer"><a href="#" target="_blank">{:__('View more')}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<!-- 账号信息下拉框 -->
|
||||
<li class="hidden-xs">
|
||||
<a href="javascript:;" data-toggle="checkupdate" title="{:__('Check for updates')}">
|
||||
|
|
|
|||
|
|
@ -335,6 +335,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!--如果需要删除最新新闻和最新发贴,删除HTML后还需要删除dashboard.js中的代码-->
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<div class="box box-danger">
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
</div>
|
||||
<div class="form-group">
|
||||
<label for="password" class="control-label">{:__('Password')}:</label>
|
||||
<input type="text" class="form-control" id="password" placeholder="{:__('Leave password blank if dont want to change')}" autocomplete="new-password" name="row[password]" value=""/>
|
||||
<input type="password" class="form-control" id="password" placeholder="{:__('Leave password blank if dont want to change')}" autocomplete="new-password" name="row[password]" value="" data-rule="password"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{:__('Submit')}</button>
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@
|
|||
<div class="input-group-addon"><span class="glyphicon glyphicon-option-horizontal" aria-hidden="true"></span></div>
|
||||
<input type="text" name="captcha" class="form-control" placeholder="{:__('Captcha')}" data-rule="{:__('Captcha')}:required;length(4)" />
|
||||
<span class="input-group-addon" style="padding:0;border:none;cursor:pointer;">
|
||||
<img src="{:rtrim('__PUBLIC__', '/')}/captcha" width="100" height="30" onclick="this.src = '{:rtrim('__PUBLIC__', '/')}/captcha?r=' + Math.random();"/>
|
||||
<img src="{:rtrim('__PUBLIC__', '/')}/index.php?s=/captcha" width="100" height="30" onclick="this.src = '{:rtrim('__PUBLIC__', '/')}/index.php?s=/captcha&r=' + Math.random();"/>
|
||||
</span>
|
||||
</div>
|
||||
{/if}
|
||||
|
|
|
|||
|
|
@ -320,7 +320,7 @@ class Backend extends Controller
|
|||
case 'NOT BETWEEN':
|
||||
$arr = array_slice(explode(',', $v), 0, 2);
|
||||
if (stripos($v, ',') === false || !array_filter($arr))
|
||||
continue;
|
||||
continue 2;
|
||||
//当出现一边为空时改变操作符
|
||||
if ($arr[0] === '') {
|
||||
$sym = $sym == 'BETWEEN' ? '<=' : '>';
|
||||
|
|
@ -336,7 +336,7 @@ class Backend extends Controller
|
|||
$v = str_replace(' - ', ',', $v);
|
||||
$arr = array_slice(explode(',', $v), 0, 2);
|
||||
if (stripos($v, ',') === false || !array_filter($arr))
|
||||
continue;
|
||||
continue 2;
|
||||
//当出现一边为空时改变操作符
|
||||
if ($arr[0] === '') {
|
||||
$sym = $sym == 'RANGE' ? '<=' : '>';
|
||||
|
|
|
|||
|
|
@ -272,7 +272,7 @@ return [
|
|||
//自动检测更新
|
||||
'checkupdate' => false,
|
||||
//版本号
|
||||
'version' => '1.0.0.20181127_beta',
|
||||
'version' => '1.0.0.20190111_beta',
|
||||
//API接口地址
|
||||
'api_url' => 'https://api.fastadmin.net',
|
||||
],
|
||||
|
|
|
|||
|
|
@ -4,47 +4,8 @@ return array (
|
|||
'autoload' => false,
|
||||
'hooks' =>
|
||||
array (
|
||||
'sms_send' =>
|
||||
array (
|
||||
0 => 'alisms',
|
||||
),
|
||||
'sms_notice' =>
|
||||
array (
|
||||
0 => 'alisms',
|
||||
),
|
||||
'sms_check' =>
|
||||
array (
|
||||
0 => 'alisms',
|
||||
),
|
||||
'addon_after_upgrade' =>
|
||||
array (
|
||||
0 => 'cms',
|
||||
),
|
||||
'app_init' =>
|
||||
array (
|
||||
0 => 'epay',
|
||||
),
|
||||
'login_init' =>
|
||||
array (
|
||||
0 => 'loginbg',
|
||||
),
|
||||
),
|
||||
'route' =>
|
||||
array (
|
||||
'/cms$' => 'cms/index/index',
|
||||
'/cms/c/[:diyname]' => 'cms/channel/index',
|
||||
'/cms/t/[:name]' => 'cms/tags/index',
|
||||
'/cms/a/[:diyname]' => 'cms/archives/index',
|
||||
'/cms/p/[:diyname]' => 'cms/page/index',
|
||||
'/cms/s' => 'cms/search/index',
|
||||
'/docs/api' => 'docs/index/api',
|
||||
'/docs/[:name]' => 'docs/index/index',
|
||||
'/example$' => 'example/index/index',
|
||||
'/example/d/[:name]' => 'example/demo/index',
|
||||
'/example/d1/[:name]' => 'example/demo/demo1',
|
||||
'/example/d2/[:name]' => 'example/demo/demo2',
|
||||
'/third$' => 'third/index/index',
|
||||
'/third/connect/[:platform]' => 'third/index/connect',
|
||||
'/third/callback/[:platform]' => 'third/index/callback',
|
||||
),
|
||||
);
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
"fastadmin",
|
||||
"thinkphp"
|
||||
],
|
||||
"homepage": "http://www.fastadmin.net/",
|
||||
"homepage": "https://www.fastadmin.net/",
|
||||
"license": "Apache-2.0",
|
||||
"authors": [
|
||||
{
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
],
|
||||
"require": {
|
||||
"php": ">=5.4.0",
|
||||
"topthink/framework": "~5.0.14",
|
||||
"topthink/framework": "~5.0.24",
|
||||
"overtrue/wechat": "~3.1",
|
||||
"endroid/qr-code": "^1.9",
|
||||
"topthink/think-captcha": "^1.0",
|
||||
|
|
|
|||
|
|
@ -863,7 +863,7 @@ table.table-nowrap thead > tr > th {
|
|||
}
|
||||
.layui-layer-fast .layui-layer-setwin .layui-layer-close2,
|
||||
.layui-layer-fast .layui-layer-setwin .layui-layer-close2:hover {
|
||||
background: url('../libs/layer/dist/theme/default/icon.png') no-repeat -149px -31px !important;
|
||||
background: url('../libs/fastadmin-layer/dist/theme/default/icon.png') no-repeat -149px -31px !important;
|
||||
top: -30px;
|
||||
right: -30px;
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,217 +1,3 @@
|
|||
define([], function () {
|
||||
require([], function () {
|
||||
//绑定data-toggle=addresspicker属性点击事件
|
||||
$(document).on('click', "[data-toggle='addresspicker']", function () {
|
||||
var that = this;
|
||||
var callback = $(that).data('callback');
|
||||
var input_id = $(that).data("input-id") ? $(that).data("input-id") : "";
|
||||
var lat_id = $(that).data("lat-id") ? $(that).data("lat-id") : "";
|
||||
var lng_id = $(that).data("lng-id") ? $(that).data("lng-id") : "";
|
||||
var lat = lat_id ? $("#" + lat_id).val() : '';
|
||||
var lng = lng_id ? $("#" + lng_id).val() : '';
|
||||
var url = "/addons/address/index/select";
|
||||
url += (lat && lng) ? '?lat=' + lat + '&lng=' + lng : '';
|
||||
Fast.api.open(url, '位置选择', {
|
||||
callback: function (res) {
|
||||
input_id && $("#" + input_id).val(res.address);
|
||||
lat_id && $("#" + lat_id).val(res.lat);
|
||||
lng_id && $("#" + lng_id).val(res.lng);
|
||||
try {
|
||||
//执行回调函数
|
||||
if (typeof callback === 'function') {
|
||||
callback.call(that, res);
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
require.config({
|
||||
paths: {
|
||||
'fullcalendar': '../libs/fullcalendar/dist/fullcalendar',
|
||||
'fullcalendar-lang': '../libs/fullcalendar/dist/locale/zh-cn',
|
||||
},
|
||||
// shim依赖配置
|
||||
shim: {
|
||||
'fullcalendar-lang': ['fullcalendar'],
|
||||
},
|
||||
});
|
||||
require.config({
|
||||
paths: {
|
||||
'async': '../addons/example/js/async',
|
||||
'BMap': ['//api.map.baidu.com/api?v=2.0&ak=mXijumfojHnAaN2VxpBGoqHM'],
|
||||
},
|
||||
shim: {
|
||||
'BMap': {
|
||||
deps: ['jquery'],
|
||||
exports: 'BMap'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//修改验证码为检验验证
|
||||
require.config({
|
||||
paths: {
|
||||
'geet': '../addons/geet/js/gt'
|
||||
}
|
||||
});
|
||||
require(['geet'], function (Geet) {
|
||||
var geetInit = false;
|
||||
$("input[name='captcha']").each(function () {
|
||||
var obj = $(this);
|
||||
var form = obj.closest('form');
|
||||
$("<input type='hidden' name='geeturl' value='" + (form.attr("action") ? form.attr("action") : location.pathname + location.search) + "' />").appendTo(form);
|
||||
$("<input type='hidden' name='geetmodule' value='" + Config.modulename + "' />").appendTo(form);
|
||||
$("<input type='hidden' name='geetmoduleurl' value='" + Config.moduleurl + "' />").appendTo(form);
|
||||
form.attr('action', Fast.api.fixurl('/addons/geet/index/check'));
|
||||
obj.parent().removeClass('input-group').addClass('form-group').html('<div id="embed-captcha"><input type="hidden" name="captcha" class="form-control" data-rule="请完成验证码,验证码:required;" /> </div> <p id="wait" class="show">正在加载验证码......</p>');
|
||||
var handlerEmbed = function (captchaObj) {
|
||||
// 将验证码加到id为captcha的元素里,同时会有三个input的值:geetest_challenge, geetest_validate, geetest_seccode
|
||||
geetInit = captchaObj;
|
||||
captchaObj.appendTo("#embed-captcha");
|
||||
captchaObj.onReady(function () {
|
||||
$("#wait")[0].className = "hide";
|
||||
});
|
||||
captchaObj.onSuccess(function () {
|
||||
var result = captchaObj.getValidate();
|
||||
if (result) {
|
||||
$('#embed-captcha input[name="captcha"]').val('ok');
|
||||
}
|
||||
});
|
||||
// 更多接口参考:http://www.geetest.com/install/sections/idx-client-sdk.html
|
||||
};
|
||||
Fast.api.ajax("/addons/geet/index/start", function (data) {
|
||||
// 更多配置参数请参见:http://www.geetest.com/install/sections/idx-client-sdk.html#config
|
||||
// 使用initGeetest接口
|
||||
// 参数1:配置参数
|
||||
// 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件
|
||||
initGeetest({
|
||||
gt: data.gt,
|
||||
challenge: data.challenge,
|
||||
new_captcha: data.new_captcha,
|
||||
product: "embed", // 产品形式,包括:float,embed,popup。注意只对PC版验证码有效
|
||||
width: '100%',
|
||||
offline: !data.success // 表示用户后台检测极验服务器是否宕机,一般不需要关注
|
||||
}, handlerEmbed);
|
||||
form.on("error.form", function (e, data) {
|
||||
geetInit.reset();
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
});
|
||||
window.UMEDITOR_HOME_URL = Config.__CDN__ + "/assets/addons/umeditor/";
|
||||
require.config({
|
||||
paths: {
|
||||
'umeditor': '../addons/umeditor/umeditor.min',
|
||||
'umeditor.config': '../addons/umeditor/umeditor.config',
|
||||
'umeditor.lang': '../addons/umeditor/lang/zh-cn/zh-cn',
|
||||
},
|
||||
shim: {
|
||||
'umeditor': {
|
||||
deps: [
|
||||
'umeditor.config',
|
||||
'css!../addons/umeditor/themes/default/css/umeditor.css'
|
||||
],
|
||||
exports: 'UM',
|
||||
},
|
||||
'umeditor.lang': ['umeditor']
|
||||
}
|
||||
});
|
||||
|
||||
//修改上传的接口调用
|
||||
require(['upload', 'umeditor', 'umeditor.lang'], function (Upload, UME, undefined) {
|
||||
//监听上传文本框的事件
|
||||
$(document).on("edui.file.change", ".edui-image-file", function (e, up, me, input, callback) {
|
||||
for (var i = 0; i < this.files.length; i++) {
|
||||
Upload.api.send(this.files[i], function (data) {
|
||||
var url = data.url;
|
||||
me.uploadComplete(JSON.stringify({url: url, state: "SUCCESS"}));
|
||||
});
|
||||
}
|
||||
up.updateInput(input);
|
||||
me.toggleMask("Loading....");
|
||||
callback && callback();
|
||||
});
|
||||
//重写编辑器加载
|
||||
UME.plugins['autoupload'] = function () {
|
||||
var me = this;
|
||||
me.setOpt('pasteImageEnabled', true);
|
||||
me.setOpt('dropFileEnabled', true);
|
||||
var sendAndInsertImage = function (file, editor) {
|
||||
try {
|
||||
Upload.api.send(file, function (data) {
|
||||
var url = data.url;
|
||||
editor.execCommand('insertimage', {
|
||||
src: url,
|
||||
_src: url
|
||||
});
|
||||
});
|
||||
} catch (er) {
|
||||
}
|
||||
};
|
||||
|
||||
function getPasteImage(e) {
|
||||
return e.clipboardData && e.clipboardData.items && e.clipboardData.items.length == 1 && /^image\//.test(e.clipboardData.items[0].type) ? e.clipboardData.items : null;
|
||||
}
|
||||
|
||||
function getDropImage(e) {
|
||||
return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files : null;
|
||||
}
|
||||
|
||||
me.addListener('ready', function () {
|
||||
if (window.FormData && window.FileReader) {
|
||||
var autoUploadHandler = function (e) {
|
||||
var hasImg = false,
|
||||
items;
|
||||
//获取粘贴板文件列表或者拖放文件列表
|
||||
items = e.type == 'paste' ? getPasteImage(e.originalEvent) : getDropImage(e.originalEvent);
|
||||
if (items) {
|
||||
var len = items.length,
|
||||
file;
|
||||
while (len--) {
|
||||
file = items[len];
|
||||
if (file.getAsFile)
|
||||
file = file.getAsFile();
|
||||
if (file && file.size > 0 && /image\/\w+/i.test(file.type)) {
|
||||
sendAndInsertImage(file, me);
|
||||
hasImg = true;
|
||||
}
|
||||
}
|
||||
if (hasImg)
|
||||
return false;
|
||||
}
|
||||
|
||||
};
|
||||
me.getOpt('pasteImageEnabled') && me.$body.on('paste', autoUploadHandler);
|
||||
me.getOpt('dropFileEnabled') && me.$body.on('drop', autoUploadHandler);
|
||||
|
||||
//取消拖放图片时出现的文字光标位置提示
|
||||
me.$body.on('dragover', function (e) {
|
||||
if (e.originalEvent.dataTransfer.types[0] == 'Files') {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
$(".editor").each(function () {
|
||||
var id = $(this).attr("id");
|
||||
$(this).removeClass('form-control');
|
||||
UME.list[id] = UME.getEditor(id, {
|
||||
serverUrl: Fast.api.fixurl('/addons/umeditor/api/'),
|
||||
initialFrameWidth: '100%',
|
||||
zIndex: 90,
|
||||
xssFilterRules: false,
|
||||
outputXssFilter: false,
|
||||
inputXssFilter: false,
|
||||
imageUrl: '',
|
||||
imagePath: Config.upload.cdnurl
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
|
@ -178,6 +178,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
|
|||
if (!userinfo) {
|
||||
Layer.open({
|
||||
content: Template("logintpl", {}),
|
||||
zIndex: 99,
|
||||
area: ['430px', '350px'],
|
||||
title: __('Login FastAdmin'),
|
||||
resize: false,
|
||||
|
|
@ -196,7 +197,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
|
|||
Layer.closeAll();
|
||||
Layer.alert(ret.msg);
|
||||
}, function (data, ret) {
|
||||
Layer.alert(ret.msg);
|
||||
});
|
||||
},
|
||||
btn2: function () {
|
||||
|
|
|
|||
|
|
@ -52,21 +52,6 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'adminlte', 'form'], functi
|
|||
Backend.api.addtabs($(this).data("url"));
|
||||
});
|
||||
|
||||
//读取FastAdmin的更新信息
|
||||
$.ajax({
|
||||
url: Config.fastadmin.api_url + '/news/index',
|
||||
type: 'post',
|
||||
dataType: 'jsonp',
|
||||
success: function (ret) {
|
||||
$(".notifications-menu > a span").text(ret.new > 0 ? ret.new : '');
|
||||
$(".notifications-menu .footer a").attr("href", ret.url);
|
||||
$.each(ret.newslist, function (i, j) {
|
||||
var item = '<li><a href="' + j.url + '" target="_blank"><i class="' + j.icon + '"></i> ' + j.title + '</a></li>';
|
||||
$(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;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -556,8 +556,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') {
|
||||
|
|
@ -578,6 +579,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';
|
||||
|
|
@ -591,9 +593,24 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table
|
|||
if (disable) {
|
||||
classname = classname + ' disabled';
|
||||
}
|
||||
html.push('<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-field-index="' + fieldIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>');
|
||||
link = '<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-field-index="' + fieldIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>';
|
||||
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('<div class="btn-group"><button type="button" class="btn btn-primary dropdown-toggle btn-xs" data-toggle="dropdown">' + i + '</button><button type="button" class="btn btn-primary dropdown-toggle btn-xs" data-toggle="dropdown"><span class="caret"></span></button><ul class="dropdown-menu pull-right"><li>' + j.join('</li><li>') + '</li></ul></div>');
|
||||
});
|
||||
html.unshift(dropdownHtml);
|
||||
}
|
||||
return html.join(' ');
|
||||
},
|
||||
//替换URL中的数据
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue