/**
|
* jQuery EasyUI 1.3.6
|
* Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.
|
*
|
* Licensed under the GPL or commercial licenses
|
* To use it on other terms please contact author: info@jeasyui.com
|
* http://www.gnu.org/licenses/gpl.txt
|
* http://www.jeasyui.com/license_commercial.php
|
*
|
* jQuery EasyUI theme Extensions 1.0 beta
|
* jQuery EasyUI theme 组件扩展
|
* jeasyui.extensions.theme.js
|
* 二次开发 流云
|
* 最近更新:2014-04-09
|
*
|
* 依赖项:
|
* 1、jquery.jdirk.js v1.0 beta late
|
* 2、jeasyui.extensions.js v1.0 beta late
|
*
|
* Copyright (c) 2013-2014 ChenJianwei personal All rights reserved.
|
* http://www.chenjianwei.org
|
*/
|
(function ($) {
|
|
$.util.namespace("$.easyui");
|
|
// 获取或设置当前页面的 jQuery EasyUI 主题皮肤包;该函数定义如下参数:
|
// isTop: 可选参数;表示是否从当前窗口的顶级页面逐级向下依次设置所有页面包括iframe在内的皮肤包名称;
|
// themeName: 可选参数;表示被设置的皮肤包名称;
|
// callback: 可选参数;表示在设置完皮肤包名称后要执行的回调函数;该回调函数执行时依次定义如下参数:
|
// newTheme: 表示更改后的主题皮肤;
|
// oldTheme: 表示更改前的主题皮肤;
|
// 上面两个参数 oldTheme、newTheme 都是一个格式如 { id, name, path } 的 JSON-Object,其可能的值参考 $.easyui.theme.dataSource 。
|
// thisArg: 可选参数;表示 callback 回调函数执行中的 this 引用;
|
// 备注:如果该方法未传入任何参数;则获取当前页面的 jQuery EasyUI 主题皮肤名称并返回;
|
$.easyui.theme = function (isTop, themeName, callback, thisArg) {
|
if (arguments.length == 0) { return getTheme($); }
|
if (arguments.length == 1 && typeof isTop == "boolean") {
|
return isTop ? getTheme($.util.$) : getTheme($);
|
} else {
|
if (isTop === true) {
|
return setTopTheme($.util.$, themeName, callback, thisArg);
|
} else {
|
return isTop === false ? setTheme($, themeName, callback, thisArg) : setTheme($, isTop, themeName, callback);
|
}
|
}
|
};
|
|
function getTheme(jq) {
|
jq = jq || $;
|
var link = jq("link[href$='easyui.css']"), href = link.attr("href"), array = href.split("/");
|
return array.length > 1 ? array[array.length - 2] : array[array.length - 1];
|
};
|
|
function setTheme(jq, theme, callback, thisArg) {
|
var oldTheme = getTheme(jq);
|
if (oldTheme == theme) { return; }
|
var link = jq("link[href$='easyui.css']"), href = link.attr("href"), array = href.split("/");
|
if (arguments.length > 1) { array[array.length - 2] = theme; } else { jq.array.insert(array, 0, theme); }
|
link.attr("href", array.join("/"));
|
callbackFunc(callback, oldTheme, theme, thisArg);
|
};
|
|
function setTopTheme(jq, theme, callback, thisArg) {
|
var oldTheme = getTheme(jq);
|
setTheme(jq, theme);
|
jq("iframe,iframe").each(function () {
|
try {
|
if (jq.util && jq.util.isWindow(this.contentWindow) && jq.util.isObject(this.contentWindow.document)
|
&& jq.isFunction(this.contentWindow.$) && this.contentWindow.$.easyui && this.contentWindow.$.easyui.theme) {
|
setTopTheme(this.contentWindow.$, theme);
|
}
|
} catch (ex) { };
|
});
|
callbackFunc(callback, oldTheme, theme, thisArg);
|
};
|
|
function callbackFunc(callback, oldTheme, theme, thisArg) {
|
if (!$.isFunction(callback)) { return; }
|
var item1 = $.array.first($.easyui.theme.dataSource, function (val) { return val.path == oldTheme; }),
|
item2 = $.array.first($.easyui.theme.dataSource, function (val) { return val.path == theme; });
|
if (item1) { oldTheme = item1; }
|
if (item2) { theme = item2; }
|
$.util.exec(function () {
|
callback.call(thisArg, theme, oldTheme);
|
});
|
};
|
|
$.easyui.theme.dataSource = [
|
{ id: 1, name: "天空蓝(默认)", path: "default" },
|
{ id: 2, name: "金属黑", path: "black" },
|
{ id: 3, name: "银色(推荐)", path: "bootstrap" },
|
{ id: 4, name: "灰霾(推荐)", path: "gray" },
|
|
{ id: 5, name: "清泉", path: "ui-cupertino", disabled: false },
|
{ id: 6, name: "黑巢", path: "ui-dark-hive", disabled: false },
|
{ id: 7, name: "杏黄", path: "ui-pepper-grinder", disabled: false },
|
{ id: 8, name: "阳光", path: "ui-sunny", disabled: false },
|
|
{ id: 9, name: "磁贴(标准)", path: "metro-standard" },
|
{ id: 10, name: "磁贴(蓝)", path: "metro-blue" },
|
{ id: 11, name: "磁贴(灰)", path: "metro-gray" },
|
{ id: 12, name: "磁贴(绿)", path: "metro-green" },
|
{ id: 13, name: "磁贴(橙)", path: "metro-orange" },
|
{ id: 14, name: "磁贴(红)", path: "metro-red" }
|
];
|
|
|
|
|
})(jQuery);
|