332 lines
8.1 KiB
JavaScript
332 lines
8.1 KiB
JavaScript
/* 扩展SentCMS对象 */
|
||
(function($) {
|
||
/**
|
||
* 获取SentCMS基础配置
|
||
* @type {object}
|
||
*/
|
||
var SentCMS = window.Sent;
|
||
|
||
/* 基础对象检测 */
|
||
SentCMS || $.error("SentCMS基础配置没有正确加载!");
|
||
|
||
/**
|
||
* 解析URL
|
||
* @param {string} url 被解析的URL
|
||
* @return {object} 解析后的数据
|
||
*/
|
||
SentCMS.parse_url = function(url) {
|
||
var parse = url.match(/^(?:([a-z]+):\/\/)?([\w-]+(?:\.[\w-]+)+)?(?::(\d+))?([\w-\/]+)?(?:\?((?:\w+=[^#&=\/]*)?(?:&\w+=[^#&=\/]*)*))?(?:#([\w-]+))?$/i);
|
||
parse || $.error("url格式不正确!");
|
||
return {
|
||
"scheme": parse[1],
|
||
"host": parse[2],
|
||
"port": parse[3],
|
||
"path": parse[4],
|
||
"query": parse[5],
|
||
"fragment": parse[6]
|
||
};
|
||
}
|
||
|
||
SentCMS.parse_str = function(str) {
|
||
var value = str.split("&"),
|
||
vars = {},
|
||
param;
|
||
for (val in value) {
|
||
param = value[val].split("=");
|
||
vars[param[0]] = param[1];
|
||
}
|
||
return vars;
|
||
}
|
||
|
||
SentCMS.parse_name = function(name, type) {
|
||
if (type) {
|
||
/* 下划线转驼峰 */
|
||
name.replace(/_([a-z])/g, function($0, $1) {
|
||
return $1.toUpperCase();
|
||
});
|
||
|
||
/* 首字母大写 */
|
||
name.replace(/[a-z]/, function($0) {
|
||
return $0.toUpperCase();
|
||
});
|
||
} else {
|
||
/* 大写字母转小写 */
|
||
name = name.replace(/[A-Z]/g, function($0) {
|
||
return "_" + $0.toLowerCase();
|
||
});
|
||
|
||
/* 去掉首字符的下划线 */
|
||
if (0 === name.indexOf("_")) {
|
||
name = name.substr(1);
|
||
}
|
||
}
|
||
return name;
|
||
}
|
||
|
||
//scheme://host:port/path?query#fragment
|
||
SentCMS.U = function(url, vars, suffix) {
|
||
var info = this.parse_url(url),
|
||
path = [],
|
||
param = {},
|
||
reg;
|
||
|
||
/* 验证info */
|
||
info.path || $.error("url格式错误!");
|
||
url = info.path;
|
||
|
||
/* 组装URL */
|
||
if (0 === url.indexOf("/")) { //路由模式
|
||
this.MODEL[0] == 0 && $.error("该URL模式不支持使用路由!(" + url + ")");
|
||
|
||
/* 去掉右侧分割符 */
|
||
if ("/" == url.substr(-1)) {
|
||
url = url.substr(0, url.length - 1)
|
||
}
|
||
url = ("/" == this.DEEP) ? url.substr(1) : url.substr(1).replace(/\//g, this.DEEP);
|
||
url = "/" + url;
|
||
} else { //非路由模式
|
||
/* 解析URL */
|
||
path = url.split("/");
|
||
path = [path.pop(), path.pop(), path.pop()].reverse();
|
||
path[1] || $.error("SentCMS.U(" + url + ")没有指定控制器");
|
||
|
||
if (path[0]) {
|
||
param[this.VAR[0]] = this.MODEL[1] ? path[0].toLowerCase() : path[0];
|
||
}
|
||
|
||
param[this.VAR[1]] = this.MODEL[1] ? this.parse_name(path[1]) : path[1];
|
||
param[this.VAR[2]] = path[2].toLowerCase();
|
||
|
||
url = "?" + $.param(param);
|
||
}
|
||
|
||
/* 解析参数 */
|
||
if (typeof vars === "string") {
|
||
vars = this.parse_str(vars);
|
||
} else if (!$.isPlainObject(vars)) {
|
||
vars = {};
|
||
}
|
||
|
||
/* 解析URL自带的参数 */
|
||
info.query && $.extend(vars, this.parse_str(info.query));
|
||
|
||
if (vars) {
|
||
url += "&" + $.param(vars);
|
||
}
|
||
|
||
if (0 != this.MODEL[0]) {
|
||
url = url.replace("?" + (path[0] ? this.VAR[0] : this.VAR[1]) + "=", "/")
|
||
.replace("&" + this.VAR[1] + "=", this.DEEP)
|
||
.replace("&" + this.VAR[2] + "=", this.DEEP)
|
||
.replace(/(\w+=&)|(&?\w+=$)/g, "")
|
||
.replace(/[&=]/g, this.DEEP);
|
||
if ("/" == url.substr(-1)) {
|
||
url = url.substr(0, url.length - 1)
|
||
}
|
||
|
||
/* 添加伪静态后缀 */
|
||
if (false !== suffix) {
|
||
suffix = suffix || this.MODEL[2].split("|")[0];
|
||
if (suffix) {
|
||
url += "." + suffix;
|
||
}
|
||
}
|
||
}
|
||
|
||
url = this.APP + url;
|
||
return url;
|
||
}
|
||
|
||
/* 设置表单的值 */
|
||
SentCMS.setValue = function(name, value) {
|
||
var first = name.substr(0, 1),
|
||
input, i = 0,
|
||
val;
|
||
if (value === "") return;
|
||
if ("#" === first || "." === first) {
|
||
input = $(name);
|
||
} else {
|
||
input = $("[name='" + name + "']");
|
||
}
|
||
|
||
if (input.eq(0).is(":radio")) { //单选按钮
|
||
input.filter("[value='" + value + "']").each(function() {
|
||
this.checked = true
|
||
});
|
||
} else if (input.eq(0).is(":checkbox")) { //复选框
|
||
if (!$.isArray(value)) {
|
||
val = new Array();
|
||
val[0] = value;
|
||
} else {
|
||
val = value;
|
||
}
|
||
for (i = 0, len = val.length; i < len; i++) {
|
||
input.filter("[value='" + val[i] + "']").each(function() {
|
||
this.checked = true
|
||
});
|
||
}
|
||
} else { //其他表单选项直接设置值
|
||
input.val(value);
|
||
}
|
||
}
|
||
|
||
})(jQuery);
|
||
|
||
//dom加载完成后执行的js
|
||
;
|
||
$(function() {
|
||
|
||
//全选的实现
|
||
$(".check-all").click(function() {
|
||
$(".ids").prop("checked", this.checked);
|
||
});
|
||
$(".ids").click(function() {
|
||
var option = $(".ids");
|
||
option.each(function(i) {
|
||
if (!this.checked) {
|
||
$(".check-all").prop("checked", false);
|
||
return false;
|
||
} else {
|
||
$(".check-all").prop("checked", true);
|
||
}
|
||
});
|
||
});
|
||
|
||
//ajax get请求
|
||
$('.ajax-get').click(function() {
|
||
var target;
|
||
var that = this;
|
||
if ($(this).hasClass('confirm')) {
|
||
if (!confirm('确认要执行该操作吗?')) {
|
||
return false;
|
||
}
|
||
}
|
||
if ((target = $(this).attr('href')) || (target = $(this).attr('url'))) {
|
||
$.get(target).success(function(data) {
|
||
//var data = JSON.parse(data);
|
||
if (data.code == 1) {
|
||
if (data.url) {
|
||
updateAlert(data.msg + ' 页面即将自动跳转~', 'success');
|
||
} else {
|
||
updateAlert(data.msg, 'success');
|
||
}
|
||
setTimeout(function() {
|
||
if (data.url) {
|
||
location.href = data.url;
|
||
} else if ($(that).hasClass('no-refresh')) {
|
||
$('#top-alert').find('button').click();
|
||
} else {
|
||
location.reload();
|
||
}
|
||
}, 1500);
|
||
} else {
|
||
updateAlert(data.msg);
|
||
setTimeout(function() {
|
||
if (data.url) {
|
||
location.href = data.url;
|
||
} else {
|
||
$('#top-alert').find('button').click();
|
||
}
|
||
}, 1500);
|
||
}
|
||
});
|
||
|
||
}
|
||
return false;
|
||
});
|
||
|
||
//ajax post submit请求
|
||
$('.ajax-post').click(function() {
|
||
var target, query, form;
|
||
var target_form = $(this).attr('target-form');
|
||
var that = this;
|
||
var nead_confirm = false;
|
||
if (($(this).attr('type') == 'submit') || (target = $(this).attr('href')) || (target = $(this).attr('url'))) {
|
||
form = $('.' + target_form);
|
||
|
||
if ($(this).attr('hide-data') === 'true') { //无数据时也可以使用的功能
|
||
form = $('.hide-data');
|
||
query = form.serialize();
|
||
} else if (form.get(0) == undefined) {
|
||
return false;
|
||
} else if (form.get(0).nodeName == 'FORM') {
|
||
if ($(this).hasClass('confirm')) {
|
||
if (!confirm('确认要执行该操作吗?')) {
|
||
return false;
|
||
}
|
||
}
|
||
if ($(this).attr('url') !== undefined) {
|
||
target = $(this).attr('url');
|
||
} else {
|
||
target = form.get(0).action;
|
||
}
|
||
query = form.serialize();
|
||
} else if (form.get(0).nodeName == 'INPUT' || form.get(0).nodeName == 'SELECT' || form.get(0).nodeName == 'TEXTAREA') {
|
||
form.each(function(k, v) {
|
||
if (v.type == 'checkbox' && v.checked == true) {
|
||
nead_confirm = true;
|
||
}
|
||
})
|
||
if (nead_confirm && $(this).hasClass('confirm')) {
|
||
if (!confirm('确认要执行该操作吗?')) {
|
||
return false;
|
||
}
|
||
}
|
||
query = form.serialize();
|
||
} else {
|
||
if ($(this).hasClass('confirm')) {
|
||
if (!confirm('确认要执行该操作吗?')) {
|
||
return false;
|
||
}
|
||
}
|
||
query = form.find('input,select,textarea').serialize();
|
||
}
|
||
$(that).addClass('disabled').attr('autocomplete', 'off').prop('disabled', true);
|
||
$.post(target, query).success(function(data) {
|
||
//var data = JSON.parse(data);
|
||
if (data.code == 1) {
|
||
if (data.url) {
|
||
updateAlert(data.msg + ' 页面即将自动跳转~', 'success');
|
||
} else {
|
||
updateAlert(data.msg, 'success');
|
||
}
|
||
setTimeout(function() {
|
||
$(that).removeClass('disabled').prop('disabled', false);
|
||
if (data.url) {
|
||
location.href = data.url;
|
||
} else if ($(that).hasClass('no-refresh')) {
|
||
$('#top-alert').find('button').click();
|
||
} else {
|
||
location.reload();
|
||
}
|
||
}, 1500);
|
||
} else {
|
||
updateAlert(data.msg, 'danger');
|
||
setTimeout(function() {
|
||
$(that).removeClass('disabled').prop('disabled', false);
|
||
if (data.url) {
|
||
location.href = data.url;
|
||
} else {
|
||
$('#top-alert').find('button').click();
|
||
}
|
||
}, 1500);
|
||
}
|
||
});
|
||
}
|
||
return false;
|
||
});
|
||
|
||
window.updateAlert = function(text, c) {
|
||
if (typeof c != 'undefined') {
|
||
var msg = $.messager.show(text, {
|
||
placement: 'bottom',
|
||
type: c
|
||
});
|
||
} else {
|
||
var msg = $.messager.show(text, {
|
||
placement: 'bottom'
|
||
})
|
||
}
|
||
msg.show();
|
||
};
|
||
}); |