|
@@ -0,0 +1,823 @@
|
|
|
|
+/**
|
|
|
|
+* jQuery ligerUI 1.1.9
|
|
|
|
+*
|
|
|
|
+* http://ligerui.com
|
|
|
|
+*
|
|
|
|
+* Author daomi 2012 [ gd_star@163.com ]
|
|
|
|
+*
|
|
|
|
+*/
|
|
|
|
+(function ($)
|
|
|
|
+{
|
|
|
|
+
|
|
|
|
+ $.fn.ligerTab = function (options)
|
|
|
|
+ {
|
|
|
|
+ return $.ligerui.run.call(this, "ligerTab", arguments);
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ $.fn.ligerGetTabManager = function ()
|
|
|
|
+ {
|
|
|
|
+ return $.ligerui.run.call(this, "ligerGetTabManager", arguments);
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ $.ligerDefaults.Tab = {
|
|
|
|
+ height: null,
|
|
|
|
+ heightDiff: 0, // 高度补差
|
|
|
|
+ changeHeightOnResize: false,
|
|
|
|
+ contextmenu: true,
|
|
|
|
+ dblClickToClose: false, //是否双击时关闭
|
|
|
|
+ dragToMove: false, //是否允许拖动时改变tab项的位置
|
|
|
|
+ onBeforeOverrideTabItem: null,
|
|
|
|
+ onAfterOverrideTabItem: null,
|
|
|
|
+ onBeforeRemoveTabItem: null,
|
|
|
|
+ onAfterRemoveTabItem: null,
|
|
|
|
+ onBeforeAddTabItem: null,
|
|
|
|
+ onAfterAddTabItem: null,
|
|
|
|
+ onBeforeSelectTabItem: null,
|
|
|
|
+ onAfterSelectTabItem: null
|
|
|
|
+ };
|
|
|
|
+ $.ligerDefaults.TabString = {
|
|
|
|
+ closeMessage: "关闭当前页",
|
|
|
|
+ closeOtherMessage: "关闭其他",
|
|
|
|
+ closeAllMessage: "关闭所有",
|
|
|
|
+ reloadMessage: "刷新"
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ $.ligerMethos.Tab = {};
|
|
|
|
+
|
|
|
|
+ $.ligerui.controls.Tab = function (element, options)
|
|
|
|
+ {
|
|
|
|
+ $.ligerui.controls.Tab.base.constructor.call(this, element, options);
|
|
|
|
+ };
|
|
|
|
+ $.ligerui.controls.Tab.ligerExtend($.ligerui.core.UIComponent, {
|
|
|
|
+ __getType: function ()
|
|
|
|
+ {
|
|
|
|
+ return 'Tab';
|
|
|
|
+ },
|
|
|
|
+ __idPrev: function ()
|
|
|
|
+ {
|
|
|
|
+ return 'Tab';
|
|
|
|
+ },
|
|
|
|
+ _extendMethods: function ()
|
|
|
|
+ {
|
|
|
|
+ return $.ligerMethos.Tab;
|
|
|
|
+ },
|
|
|
|
+ _render: function ()
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ if (p.height) g.makeFullHeight = true;
|
|
|
|
+ g.tab = $(this.element);
|
|
|
|
+ g.tab.addClass("l-tab");
|
|
|
|
+ if (p.contextmenu && $.ligerMenu)
|
|
|
|
+ {
|
|
|
|
+ g.tab.menu = $.ligerMenu({ width: 100, items: [
|
|
|
|
+ { text: p.closeMessage, id: 'close', click: function ()
|
|
|
|
+ {
|
|
|
|
+ g._menuItemClick.apply(g, arguments);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ { text: p.closeOtherMessage, id: 'closeother', click: function ()
|
|
|
|
+ {
|
|
|
|
+ g._menuItemClick.apply(g, arguments);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ { text: p.closeAllMessage, id: 'closeall', click: function ()
|
|
|
|
+ {
|
|
|
|
+ g._menuItemClick.apply(g, arguments);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ { text: p.reloadMessage, id: 'reload', click: function ()
|
|
|
|
+ {
|
|
|
|
+ g._menuItemClick.apply(g, arguments);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ ]
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ g.tab.content = $('<div class="l-tab-content"></div>');
|
|
|
|
+ $("> div", g.tab).appendTo(g.tab.content);
|
|
|
|
+ g.tab.content.appendTo(g.tab);
|
|
|
|
+ g.tab.links = $('<div class="l-tab-links"><ul style="left: 0px; "></ul></div>');
|
|
|
|
+ g.tab.links.prependTo(g.tab);
|
|
|
|
+ g.tab.links.ul = $("ul", g.tab.links);
|
|
|
|
+ var lselecteds = $("> div[lselected=true]", g.tab.content);
|
|
|
|
+ var haslselected = lselecteds.length > 0;
|
|
|
|
+ g.selectedTabId = lselecteds.attr("tabid");
|
|
|
|
+
|
|
|
|
+ $("> div", g.tab.content).each(function (i, box)
|
|
|
|
+ {
|
|
|
|
+ var li = $('<li class=""><a></a></li>');
|
|
|
|
+ var contentitem = $(this);
|
|
|
|
+
|
|
|
|
+ if (contentitem.attr("title"))
|
|
|
|
+ {
|
|
|
|
+ $("> a", li).html(contentitem.attr("title"));
|
|
|
|
+ contentitem.attr("title", "");
|
|
|
|
+ }
|
|
|
|
+ var tabid = contentitem.attr("tabid");
|
|
|
|
+ if (tabid == undefined)
|
|
|
|
+ {
|
|
|
|
+ tabid = g.getNewTabid();
|
|
|
|
+ contentitem.attr("tabid", tabid);
|
|
|
|
+ if (contentitem.attr("lselected"))
|
|
|
|
+ {
|
|
|
|
+ g.selectedTabId = tabid;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ li.attr("tabid", tabid);
|
|
|
|
+ if (!haslselected && i == 0) g.selectedTabId = tabid;
|
|
|
|
+ var showClose = contentitem.attr("showClose");
|
|
|
|
+ if (showClose)
|
|
|
|
+ {
|
|
|
|
+ li.append("<div class='l-tab-links-item-close'></div>");
|
|
|
|
+ }
|
|
|
|
+ $("> ul", g.tab.links).append(li);
|
|
|
|
+ if (!contentitem.hasClass("l-tab-content-item")) contentitem.addClass("l-tab-content-item");
|
|
|
|
+ if (contentitem.find("iframe").length > 0)
|
|
|
|
+ {
|
|
|
|
+ var iframe = $("iframe:first", contentitem);
|
|
|
|
+ if (iframe[0].readyState != "complete")
|
|
|
|
+ {
|
|
|
|
+ if (contentitem.find(".l-tab-loading:first").length == 0)
|
|
|
|
+ contentitem.prepend("<div class='l-tab-loading' style='display:block;'></div>");
|
|
|
|
+ var iframeloading = $(".l-tab-loading:first", contentitem);
|
|
|
|
+ iframe.bind('load.tab', function ()
|
|
|
|
+ {
|
|
|
|
+ iframeloading.hide();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ //init
|
|
|
|
+ g.selectTabItem(g.selectedTabId);
|
|
|
|
+ //set content height
|
|
|
|
+ if (p.height)
|
|
|
|
+ {
|
|
|
|
+ if (typeof (p.height) == 'string' && p.height.indexOf('%') > 0)
|
|
|
|
+ {
|
|
|
|
+ g.onResize();
|
|
|
|
+ if (p.changeHeightOnResize)
|
|
|
|
+ {
|
|
|
|
+ $(window).resize(function ()
|
|
|
|
+ {
|
|
|
|
+ g.onResize.call(g);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ } else
|
|
|
|
+ {
|
|
|
|
+ g.setHeight(p.height);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (g.makeFullHeight)
|
|
|
|
+ g.setContentHeight();
|
|
|
|
+ //add even
|
|
|
|
+ $("li", g.tab.links).each(function ()
|
|
|
|
+ {
|
|
|
|
+ g._addTabItemEvent($(this));
|
|
|
|
+ });
|
|
|
|
+ g.tab.bind('dblclick.tab', function (e)
|
|
|
|
+ {
|
|
|
|
+ if (!p.dblClickToClose) return;
|
|
|
|
+ g.dblclicking = true;
|
|
|
|
+ var obj = (e.target || e.srcElement);
|
|
|
|
+ var tagName = obj.tagName.toLowerCase();
|
|
|
|
+ if (tagName == "a")
|
|
|
|
+ {
|
|
|
|
+ var tabid = $(obj).parent().attr("tabid");
|
|
|
|
+ var allowClose = $(obj).parent().find("div.l-tab-links-item-close").length ? true : false;
|
|
|
|
+ if (allowClose)
|
|
|
|
+ {
|
|
|
|
+ g.removeTabItem(tabid);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ g.dblclicking = false;
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ g.set(p);
|
|
|
|
+ },
|
|
|
|
+ _applyDrag: function (tabItemDom)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ g.droptip = g.droptip || $("<div class='l-tab-drag-droptip' style='display:none'><div class='l-drop-move-up'></div><div class='l-drop-move-down'></div></div>").appendTo('body');
|
|
|
|
+ var drag = $(tabItemDom).ligerDrag(
|
|
|
|
+ {
|
|
|
|
+ revert: true, animate: false,
|
|
|
|
+ proxy: function ()
|
|
|
|
+ {
|
|
|
|
+ var name = $(this).find("a").html();
|
|
|
|
+ g.dragproxy = $("<div class='l-tab-drag-proxy' style='display:none'><div class='l-drop-icon l-drop-no'></div></div>").appendTo('body');
|
|
|
|
+ g.dragproxy.append(name);
|
|
|
|
+ return g.dragproxy;
|
|
|
|
+ },
|
|
|
|
+ onRendered: function ()
|
|
|
|
+ {
|
|
|
|
+ this.set('cursor', 'pointer');
|
|
|
|
+ },
|
|
|
|
+ onStartDrag: function (current, e)
|
|
|
|
+ {
|
|
|
|
+ if (!$(tabItemDom).hasClass("l-selected")) return false;
|
|
|
|
+ if (e.button == 2) return false;
|
|
|
|
+ var obj = e.srcElement || e.target;
|
|
|
|
+ if ($(obj).hasClass("l-tab-links-item-close")) return false;
|
|
|
|
+ },
|
|
|
|
+ onDrag: function (current, e)
|
|
|
|
+ {
|
|
|
|
+ if (g.dropIn == null)
|
|
|
|
+ g.dropIn = -1;
|
|
|
|
+ var tabItems = g.tab.links.ul.find('>li');
|
|
|
|
+ var targetIndex = tabItems.index(current.target);
|
|
|
|
+ tabItems.each(function (i, item)
|
|
|
|
+ {
|
|
|
|
+ if (targetIndex == i)
|
|
|
|
+ {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ var isAfter = i > targetIndex;
|
|
|
|
+ if (g.dropIn != -1 && g.dropIn != i) return;
|
|
|
|
+ var offset = $(this).offset();
|
|
|
|
+ var range = {
|
|
|
|
+ top: offset.top,
|
|
|
|
+ bottom: offset.top + $(this).height(),
|
|
|
|
+ left: offset.left - 10,
|
|
|
|
+ right: offset.left + 10
|
|
|
|
+ };
|
|
|
|
+ if (isAfter)
|
|
|
|
+ {
|
|
|
|
+ range.left += $(this).width();
|
|
|
|
+ range.right += $(this).width();
|
|
|
|
+ }
|
|
|
|
+ var pageX = e.pageX || e.screenX;
|
|
|
|
+ var pageY = e.pageY || e.screenY;
|
|
|
|
+ if (pageX > range.left && pageX < range.right && pageY > range.top && pageY < range.bottom)
|
|
|
|
+ {
|
|
|
|
+ g.droptip.css({
|
|
|
|
+ left: range.left + 5,
|
|
|
|
+ top: range.top - 9
|
|
|
|
+ }).show();
|
|
|
|
+ g.dropIn = i;
|
|
|
|
+ g.dragproxy.find(".l-drop-icon").removeClass("l-drop-no").addClass("l-drop-yes");
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ g.dropIn = -1;
|
|
|
|
+ g.droptip.hide();
|
|
|
|
+ g.dragproxy.find(".l-drop-icon").removeClass("l-drop-yes").addClass("l-drop-no");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ onStopDrag: function (current, e)
|
|
|
|
+ {
|
|
|
|
+ if (g.dropIn > -1)
|
|
|
|
+ {
|
|
|
|
+ var to = g.tab.links.ul.find('>li:eq(' + g.dropIn + ')').attr("tabid");
|
|
|
|
+ var from = $(current.target).attr("tabid");
|
|
|
|
+ setTimeout(function ()
|
|
|
|
+ {
|
|
|
|
+ g.moveTabItem(from, to);
|
|
|
|
+ }, 0);
|
|
|
|
+ g.dropIn = -1;
|
|
|
|
+ g.dragproxy.remove();
|
|
|
|
+ }
|
|
|
|
+ g.droptip.hide();
|
|
|
|
+ this.set('cursor', 'default');
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ return drag;
|
|
|
|
+ },
|
|
|
|
+ _setDragToMove: function (value)
|
|
|
|
+ {
|
|
|
|
+ if (!$.fn.ligerDrag) return; //需要ligerDrag的支持
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ if (value)
|
|
|
|
+ {
|
|
|
|
+ if (g.drags) return;
|
|
|
|
+ g.drags = g.drags || [];
|
|
|
|
+ g.tab.links.ul.find('>li').each(function ()
|
|
|
|
+ {
|
|
|
|
+ g.drags.push(g._applyDrag(this));
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ moveTabItem: function (fromTabItemID, toTabItemID)
|
|
|
|
+ {
|
|
|
|
+ var g = this;
|
|
|
|
+ var from = g.tab.links.ul.find(">li[tabid=" + fromTabItemID + "]");
|
|
|
|
+ var to = g.tab.links.ul.find(">li[tabid=" + toTabItemID + "]");
|
|
|
|
+ var index1 = g.tab.links.ul.find(">li").index(from);
|
|
|
|
+ var index2 = g.tab.links.ul.find(">li").index(to);
|
|
|
|
+ if (index1 < index2)
|
|
|
|
+ {
|
|
|
|
+ to.after(from);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ to.before(from);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //设置tab按钮(左和右),显示返回true,隐藏返回false
|
|
|
|
+ setTabButton: function ()
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ var sumwidth = 0;
|
|
|
|
+ $("li", g.tab.links.ul).each(function ()
|
|
|
|
+ {
|
|
|
|
+ sumwidth += $(this).width() + 2;
|
|
|
|
+ });
|
|
|
|
+ var mainwidth = g.tab.width();
|
|
|
|
+ if (sumwidth > mainwidth)
|
|
|
|
+ {
|
|
|
|
+ g.tab.links.append('<div class="l-tab-links-left"></div><div class="l-tab-links-right"></div>');
|
|
|
|
+ g.setTabButtonEven();
|
|
|
|
+ return true;
|
|
|
|
+ } else
|
|
|
|
+ {
|
|
|
|
+ g.tab.links.ul.animate({ left: 0 });
|
|
|
|
+ $(".l-tab-links-left,.l-tab-links-right", g.tab.links).remove();
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //设置左右按钮的事件 标签超出最大宽度时,可左右拖动
|
|
|
|
+ setTabButtonEven: function ()
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ $(".l-tab-links-left", g.tab.links).hover(function ()
|
|
|
|
+ {
|
|
|
|
+ $(this).addClass("l-tab-links-left-over");
|
|
|
|
+ }, function ()
|
|
|
|
+ {
|
|
|
|
+ $(this).removeClass("l-tab-links-left-over");
|
|
|
|
+ }).click(function ()
|
|
|
|
+ {
|
|
|
|
+ g.moveToPrevTabItem();
|
|
|
|
+ });
|
|
|
|
+ $(".l-tab-links-right", g.tab.links).hover(function ()
|
|
|
|
+ {
|
|
|
|
+ $(this).addClass("l-tab-links-right-over");
|
|
|
|
+ }, function ()
|
|
|
|
+ {
|
|
|
|
+ $(this).removeClass("l-tab-links-right-over");
|
|
|
|
+ }).click(function ()
|
|
|
|
+ {
|
|
|
|
+ g.moveToNextTabItem();
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ //切换到上一个tab
|
|
|
|
+ moveToPrevTabItem: function ()
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ var btnWitdth = $(".l-tab-links-left", g.tab.links).width();
|
|
|
|
+ var leftList = new Array(); //记录每个tab的left,由左到右
|
|
|
|
+ $("li", g.tab.links).each(function (i, item)
|
|
|
|
+ {
|
|
|
|
+ var currentItemLeft = -1 * btnWitdth;
|
|
|
|
+ if (i > 0)
|
|
|
|
+ {
|
|
|
|
+ currentItemLeft = parseInt(leftList[i - 1]) + $(this).prev().width() + 2;
|
|
|
|
+ }
|
|
|
|
+ leftList.push(currentItemLeft);
|
|
|
|
+ });
|
|
|
|
+ var currentLeft = -1 * parseInt(g.tab.links.ul.css("left"));
|
|
|
|
+ for (var i = 0; i < leftList.length - 1; i++)
|
|
|
|
+ {
|
|
|
|
+ if (leftList[i] < currentLeft && leftList[i + 1] >= currentLeft)
|
|
|
|
+ {
|
|
|
|
+ g.tab.links.ul.animate({ left: -1 * parseInt(leftList[i]) });
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //切换到下一个tab
|
|
|
|
+ moveToNextTabItem: function ()
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ var btnWitdth = $(".l-tab-links-right", g.tab).width();
|
|
|
|
+ var sumwidth = 0;
|
|
|
|
+ var tabItems = $("li", g.tab.links.ul);
|
|
|
|
+ tabItems.each(function ()
|
|
|
|
+ {
|
|
|
|
+ sumwidth += $(this).width() + 2;
|
|
|
|
+ });
|
|
|
|
+ var mainwidth = g.tab.width();
|
|
|
|
+ var leftList = new Array(); //记录每个tab的left,由右到左
|
|
|
|
+ for (var i = tabItems.length - 1; i >= 0; i--)
|
|
|
|
+ {
|
|
|
|
+ var currentItemLeft = sumwidth - mainwidth + btnWitdth + 2;
|
|
|
|
+ if (i != tabItems.length - 1)
|
|
|
|
+ {
|
|
|
|
+ currentItemLeft = parseInt(leftList[tabItems.length - 2 - i]) - $(tabItems[i + 1]).width() - 2;
|
|
|
|
+ }
|
|
|
|
+ leftList.push(currentItemLeft);
|
|
|
|
+ }
|
|
|
|
+ var currentLeft = -1 * parseInt(g.tab.links.ul.css("left"));
|
|
|
|
+ for (var j = 1; j < leftList.length; j++)
|
|
|
|
+ {
|
|
|
|
+ if (leftList[j] <= currentLeft && leftList[j - 1] > currentLeft)
|
|
|
|
+ {
|
|
|
|
+ g.tab.links.ul.animate({ left: -1 * parseInt(leftList[j - 1]) });
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ getTabItemCount: function ()
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ return $("li", g.tab.links.ul).length;
|
|
|
|
+ },
|
|
|
|
+ getSelectedTabItemID: function ()
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ return $("li.l-selected", g.tab.links.ul).attr("tabid");
|
|
|
|
+ },
|
|
|
|
+ removeSelectedTabItem: function ()
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ g.removeTabItem(g.getSelectedTabItemID());
|
|
|
|
+ },
|
|
|
|
+ //覆盖选择的tabitem
|
|
|
|
+ overrideSelectedTabItem: function (options)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ g.overrideTabItem(g.getSelectedTabItemID(), options);
|
|
|
|
+ },
|
|
|
|
+ //覆盖
|
|
|
|
+ overrideTabItem: function (targettabid, options)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ if (g.trigger('beforeOverrideTabItem', [targettabid]) == false)
|
|
|
|
+ return false;
|
|
|
|
+ var tabid = options.tabid;
|
|
|
|
+ if (tabid == undefined) tabid = g.getNewTabid();
|
|
|
|
+ var url = options.url;
|
|
|
|
+ var content = options.content;
|
|
|
|
+ var target = options.target;
|
|
|
|
+ var text = options.text;
|
|
|
|
+ var showClose = options.showClose;
|
|
|
|
+ var height = options.height;
|
|
|
|
+ //如果已经存在
|
|
|
|
+ if (g.isTabItemExist(tabid))
|
|
|
|
+ {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ var tabitem = $("li[tabid=" + targettabid + "]", g.tab.links.ul);
|
|
|
|
+ var contentitem = $(".l-tab-content-item[tabid=" + targettabid + "]", g.tab.content);
|
|
|
|
+ if (!tabitem || !contentitem) return;
|
|
|
|
+ tabitem.attr("tabid", tabid);
|
|
|
|
+ contentitem.attr("tabid", tabid);
|
|
|
|
+ if ($("iframe", contentitem).length == 0 && url)
|
|
|
|
+ {
|
|
|
|
+ contentitem.html("<iframe frameborder='0'></iframe>");
|
|
|
|
+ }
|
|
|
|
+ else if (content)
|
|
|
|
+ {
|
|
|
|
+ contentitem.html(content);
|
|
|
|
+ }
|
|
|
|
+ $("iframe", contentitem).attr("name", tabid);
|
|
|
|
+ if (showClose == undefined) showClose = true;
|
|
|
|
+ if (showClose == false) $(".l-tab-links-item-close", tabitem).remove();
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ if ($(".l-tab-links-item-close", tabitem).length == 0)
|
|
|
|
+ tabitem.append("<div class='l-tab-links-item-close'></div>");
|
|
|
|
+ }
|
|
|
|
+ if (text == undefined) text = tabid;
|
|
|
|
+ if (height) contentitem.height(height);
|
|
|
|
+ $("a", tabitem).text(text);
|
|
|
|
+ $("iframe", contentitem).attr("src", url);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ g.trigger('afterOverrideTabItem', [targettabid]);
|
|
|
|
+ },
|
|
|
|
+ //选中tab项
|
|
|
|
+ selectTabItem: function (tabid)
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ if (g.trigger('beforeSelectTabItem', [tabid]) == false)
|
|
|
|
+ return false;
|
|
|
|
+
|
|
|
|
+ // 如果tabid不存在设为主页home
|
|
|
|
+ if(tabid==null||tabid==''){
|
|
|
|
+ tabid = 'home';
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ g.selectedTabId = tabid;
|
|
|
|
+// $("> .l-tab-content-item[tabid=" + tabid + "]", g.tab.content).show().siblings().hide();
|
|
|
|
+
|
|
|
|
+ var tabContentObj = $("> .l-tab-content-item[tabid=" + tabid + "]", g.tab.content);
|
|
|
|
+
|
|
|
|
+ //if(navigator.userAgent.indexOf("Firefox")>0){
|
|
|
|
+
|
|
|
|
+ tabContentObj.removeAttr("style").css({ "height":"100%","width":"100%"}).siblings()
|
|
|
|
+ .css({ "width":"0px", "height":"0px", "padding":"0px"});
|
|
|
|
+ //}else{
|
|
|
|
+
|
|
|
|
+ // tabContentObj.show().siblings().hide();
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ // ie8 下,报表切换处理
|
|
|
|
+ if(navigator.userAgent.indexOf("MSIE 8")){
|
|
|
|
+ g.tab.menu.show({ top: 0, left: 0 });
|
|
|
|
+ g.tab.menu.hide();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ $("li[tabid=" + tabid + "]", g.tab.links.ul).addClass("l-selected").siblings().removeClass("l-selected");
|
|
|
|
+ g.trigger('afterSelectTabItem', [tabid]);
|
|
|
|
+ },
|
|
|
|
+ //移动到最后一个tab
|
|
|
|
+ moveToLastTabItem: function ()
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ var sumwidth = 0;
|
|
|
|
+ $("li", g.tab.links.ul).each(function ()
|
|
|
|
+ {
|
|
|
|
+ sumwidth += $(this).width() + 2;
|
|
|
|
+ });
|
|
|
|
+ var mainwidth = g.tab.width();
|
|
|
|
+ if (sumwidth > mainwidth)
|
|
|
|
+ {
|
|
|
|
+ var btnWitdth = $(".l-tab-links-right", g.tab.links).width();
|
|
|
|
+ g.tab.links.ul.animate({ left: -1 * (sumwidth - mainwidth + btnWitdth + 2) });
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //判断tab是否存在
|
|
|
|
+ isTabItemExist: function (tabid)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ return $("li[tabid=" + tabid + "]", g.tab.links.ul).length > 0;
|
|
|
|
+ },
|
|
|
|
+ //增加一个tab
|
|
|
|
+ addTabItem: function (options)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ if (g.trigger('beforeAddTabItem', [tabid]) == false)
|
|
|
|
+ return false;
|
|
|
|
+ var tabid = options.tabid;
|
|
|
|
+ if (tabid == undefined) tabid = g.getNewTabid();
|
|
|
|
+ var url = options.url;
|
|
|
|
+ var content = options.content;
|
|
|
|
+ var text = options.text;
|
|
|
|
+ //添加图标。
|
|
|
|
+ var icon=options.icon;
|
|
|
|
+ var showClose = options.showClose;
|
|
|
|
+ var height = options.height;
|
|
|
|
+ //如果已经存在
|
|
|
|
+ if (g.isTabItemExist(tabid))
|
|
|
|
+ {
|
|
|
|
+ g.selectTabItem(tabid);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ var tabitem = $("<li><a></a><div class='l-tab-links-item-close'></div></li>");
|
|
|
|
+ var contentitem = $("<div class='l-tab-content-item'><div class='l-tab-loading' style='display:block;'></div><iframe frameborder='0'></iframe></div>");
|
|
|
|
+ var iframeloading = $("div:first", contentitem);
|
|
|
|
+ var iframe = $("iframe:first", contentitem);
|
|
|
|
+ if (g.makeFullHeight)
|
|
|
|
+ {
|
|
|
|
+ var newheight = g.tab.height() - g.tab.links.height();
|
|
|
|
+ contentitem.height(newheight);
|
|
|
|
+ }
|
|
|
|
+ tabitem.attr("tabid", tabid);
|
|
|
|
+ contentitem.attr("tabid", tabid);
|
|
|
|
+ if (url)
|
|
|
|
+ {
|
|
|
|
+ iframe.attr("name", tabid)
|
|
|
|
+ .attr("id", tabid)
|
|
|
|
+ .attr("src", url)
|
|
|
|
+ .bind('load.tab', function ()
|
|
|
|
+ {
|
|
|
|
+ iframeloading.hide();
|
|
|
|
+ if (options.callback)
|
|
|
|
+ options.callback();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ iframe.remove();
|
|
|
|
+ iframeloading.remove();
|
|
|
|
+ }
|
|
|
|
+ if (content)
|
|
|
|
+ {
|
|
|
|
+ contentitem.html(content);
|
|
|
|
+ }
|
|
|
|
+ else if (options.target)
|
|
|
|
+ {
|
|
|
|
+ contentitem.append(options.target);
|
|
|
|
+ }
|
|
|
|
+ if (showClose == undefined) showClose = true;
|
|
|
|
+ if (showClose == false) $(".l-tab-links-item-close", tabitem).remove();
|
|
|
|
+ if (text == undefined) text = tabid;
|
|
|
|
+ if (height) contentitem.height(height);
|
|
|
|
+ var title=text;
|
|
|
|
+ //暂时关掉图片
|
|
|
|
+// if(icon!=null && icon!="" ){
|
|
|
|
+// title="<img src='"+icon+"' border='0' style='vertical-align:middle;margin-right:4px;' />" + title;
|
|
|
|
+// }
|
|
|
|
+ $("a", tabitem).html(title);
|
|
|
|
+
|
|
|
|
+ g.tab.links.ul.append(tabitem);
|
|
|
|
+ g.tab.content.append(contentitem);
|
|
|
|
+ g.selectTabItem(tabid);
|
|
|
|
+ if (g.setTabButton())
|
|
|
|
+ {
|
|
|
|
+ g.moveToLastTabItem();
|
|
|
|
+ }
|
|
|
|
+ //增加事件
|
|
|
|
+ g._addTabItemEvent(tabitem);
|
|
|
|
+ if (p.dragToMove && $.fn.ligerDrag)
|
|
|
|
+ {
|
|
|
|
+ g.drags = g.drags || [];
|
|
|
|
+ tabitem.each(function ()
|
|
|
|
+ {
|
|
|
|
+ g.drags.push(g._applyDrag(this));
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ g.trigger('afterAddTabItem', [tabid]);
|
|
|
|
+ },
|
|
|
|
+ _addTabItemEvent: function (tabitem)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ tabitem.click(function ()
|
|
|
|
+ {
|
|
|
|
+ var tabid = $(this).attr("tabid");
|
|
|
|
+ g.selectTabItem(tabid);
|
|
|
|
+ });
|
|
|
|
+ //右键事件支持
|
|
|
|
+ g.tab.menu && g._addTabItemContextMenuEven(tabitem);
|
|
|
|
+ $(".l-tab-links-item-close", tabitem).hover(function ()
|
|
|
|
+ {
|
|
|
|
+ $(this).addClass("l-tab-links-item-close-over");
|
|
|
|
+ }, function ()
|
|
|
|
+ {
|
|
|
|
+ $(this).removeClass("l-tab-links-item-close-over");
|
|
|
|
+ }).click(function ()
|
|
|
|
+ {
|
|
|
|
+ var tabid = $(this).parent().attr("tabid");
|
|
|
|
+ g.removeTabItem(tabid);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ //移除tab项
|
|
|
|
+ removeTabItem: function (tabid)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ if (g.trigger('beforeRemoveTabItem', [tabid]) == false)
|
|
|
|
+ return false;
|
|
|
|
+ var currentIsSelected = $("li[tabid=" + tabid + "]", g.tab.links.ul).hasClass("l-selected");
|
|
|
|
+ if (currentIsSelected)
|
|
|
|
+ {
|
|
|
|
+ $(".l-tab-content-item[tabid=" + tabid + "]", g.tab.content).prev().show();
|
|
|
|
+ $("li[tabid=" + tabid + "]", g.tab.links.ul).prev().addClass("l-selected").siblings().removeClass("l-selected");
|
|
|
|
+ }
|
|
|
|
+ $(".l-tab-content-item[tabid=" + tabid + "]", g.tab.content).remove();
|
|
|
|
+ $("li[tabid=" + tabid + "]", g.tab.links.ul).remove();
|
|
|
|
+ g.setTabButton();
|
|
|
|
+ g.trigger('afterRemoveTabItem', [tabid]);
|
|
|
|
+
|
|
|
|
+ var tabArr = g.getTabidList(tabid,true);
|
|
|
|
+ var last = tabArr.slice(tabArr.length-1);
|
|
|
|
+ g.selectTabItem(last);
|
|
|
|
+ },
|
|
|
|
+ addHeight: function (heightDiff)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ var newHeight = g.tab.height() + heightDiff;
|
|
|
|
+ g.setHeight(newHeight);
|
|
|
|
+ },
|
|
|
|
+ setHeight: function (height)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ g.tab.height(height);
|
|
|
|
+ g.setContentHeight();
|
|
|
|
+ },
|
|
|
|
+ setContentHeight: function ()
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ var newheight = g.tab.height() - g.tab.links.height();
|
|
|
|
+ g.tab.content.height(newheight);
|
|
|
|
+ $("> .l-tab-content-item", g.tab.content).height(newheight);
|
|
|
|
+ },
|
|
|
|
+ getNewTabid: function ()
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ g.getnewidcount = g.getnewidcount || 0;
|
|
|
|
+ return 'tabitem' + (++g.getnewidcount);
|
|
|
|
+ },
|
|
|
|
+ //notabid 过滤掉tabid的
|
|
|
|
+ //noclose 过滤掉没有关闭按钮的
|
|
|
|
+ getTabidList: function (notabid, noclose)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ var tabidlist = [];
|
|
|
|
+ $("> li", g.tab.links.ul).each(function ()
|
|
|
|
+ {
|
|
|
|
+ if ($(this).attr("tabid")
|
|
|
|
+ && $(this).attr("tabid") != notabid
|
|
|
|
+ && (!noclose || $(".l-tab-links-item-close", this).length > 0))
|
|
|
|
+ {
|
|
|
|
+ tabidlist.push($(this).attr("tabid"));
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ return tabidlist;
|
|
|
|
+ },
|
|
|
|
+ removeOther: function (tabid, compel)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ var tabidlist = g.getTabidList(tabid, true);
|
|
|
|
+ $(tabidlist).each(function ()
|
|
|
|
+ {
|
|
|
|
+ g.removeTabItem(this);
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ reload: function (tabid)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ var contentitem = $(".l-tab-content-item[tabid=" + tabid + "]");
|
|
|
|
+ var iframeloading = $(".l-tab-loading:first", contentitem);
|
|
|
|
+ var iframe = $("iframe:first", contentitem);
|
|
|
|
+ var url = $(iframe).attr("src");
|
|
|
|
+ iframeloading.show();
|
|
|
|
+ iframe.attr("src", url).unbind('load.tab').bind('load.tab', function ()
|
|
|
|
+ {
|
|
|
|
+ iframeloading.hide();
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ removeAll: function (compel)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ var tabidlist = g.getTabidList(null, true);
|
|
|
|
+ $(tabidlist).each(function ()
|
|
|
|
+ {
|
|
|
|
+ g.removeTabItem(this);
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ onResize: function ()
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ if (!p.height || typeof (p.height) != 'string' || p.height.indexOf('%') == -1) return false;
|
|
|
|
+ //set tab height
|
|
|
|
+ if (g.tab.parent()[0].tagName.toLowerCase() == "body")
|
|
|
|
+ {
|
|
|
|
+ var windowHeight = $(window).height();
|
|
|
|
+ windowHeight -= parseInt(g.tab.parent().css('paddingTop'));
|
|
|
|
+ windowHeight -= parseInt(g.tab.parent().css('paddingBottom'));
|
|
|
|
+ g.height = p.heightDiff + windowHeight * parseFloat(g.height) * 0.01;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ g.height = p.heightDiff + (g.tab.parent().height() * parseFloat(p.height) * 0.01);
|
|
|
|
+ }
|
|
|
|
+ g.tab.height(g.height);
|
|
|
|
+ g.setContentHeight();
|
|
|
|
+ },
|
|
|
|
+ _menuItemClick: function (item)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ if (!item.id || !g.actionTabid) return;
|
|
|
|
+ switch (item.id)
|
|
|
|
+ {
|
|
|
|
+ case "close":
|
|
|
|
+ g.removeTabItem(g.actionTabid);
|
|
|
|
+ g.actionTabid = null;
|
|
|
|
+ break;
|
|
|
|
+ case "closeother":
|
|
|
|
+ g.removeOther(g.actionTabid);
|
|
|
|
+ break;
|
|
|
|
+ case "closeall":
|
|
|
|
+ g.removeAll();
|
|
|
|
+ g.actionTabid = null;
|
|
|
|
+ break;
|
|
|
|
+ case "reload":
|
|
|
|
+ g.selectTabItem(g.actionTabid);
|
|
|
|
+ g.reload(g.actionTabid);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ _addTabItemContextMenuEven: function (tabitem)
|
|
|
|
+ {
|
|
|
|
+ var g = this, p = this.options;
|
|
|
|
+ tabitem.bind("contextmenu", function (e)
|
|
|
|
+ {
|
|
|
|
+ if (!g.tab.menu) return;
|
|
|
|
+ g.actionTabid = tabitem.attr("tabid");
|
|
|
|
+
|
|
|
|
+ var w=$(window).width() ;
|
|
|
|
+ var menuWidth=120;
|
|
|
|
+ if(e.pageX+menuWidth>w){
|
|
|
|
+ e.pageX=e.pageX-menuWidth;
|
|
|
|
+ }
|
|
|
|
+ g.tab.menu.show({ top: e.pageY, left: e.pageX });
|
|
|
|
+ if ($(".l-tab-links-item-close", this).length == 0)
|
|
|
|
+ {
|
|
|
|
+ g.tab.menu.setDisabled('close');
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ g.tab.menu.setEnabled('close');
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+})(jQuery);
|