📄 menu-wizard.js
字号:
else config.dropShadow = false; config.showDelay = getConfigParam("f_showdelay", 0); config.hideDelay = getConfigParam("f_hidedelay", 500); config.animSpeed = getConfigParam("f_animspeed", 10); return config;};/* functions that return the HTML code */function makeIndent(indent) { var str = ""; while (indent-- > 0) str += " "; return str;};function htmlEncode(str) { str = str.replace(/&/ig, "&"); str = str.replace(/</ig, "<"); str = str.replace(/>/ig, ">"); str = str.replace(/\x22/ig, """); return str;};function checkOutputNode(node) { if (!node.tagName || node.tagName == '!' /* IE anomaly */) throw "Node has no tag"; if (node.className) { if (/(^|\s)not-in-output(\s|$)/i.test(node.className)) throw "class: not-in-output"; }};function getHTML(indent, node, compact, noRoot) { var html = ""; if (node.nodeType == 3) { var str = node.data; str = str.replace(/(^\s+|\s+$)/g, ""); if (str) { if (!compact) html += makeIndent(indent); html += htmlEncode(str); if (!compact) html += "\n"; } return html; } else try { checkOutputNode(node); // throws an exception if node shouldn't be displayed var tag = node.tagName.toLowerCase(); if (!noRoot) { html += makeIndent(indent) + "<" + tag; var a = ["href", "target", "src", "rel", "type", "http-equiv", "content", "alt"]; for (var i = 0; i < a.length; ++i) { if (!(tag == 'img' && a[i] == 'href')) { // IE bug var val = node.getAttribute(a[i]); if (tag=='img' && a[i]=='src') val=node.getAttribute('zpPathRelative') || val if (val) html += ' ' + a[i] + '="' + val + '"'; } } if (node.id == "designMenu") html += ' id="' + node.id + '"'; var enter = true; if (!node.firstChild && /^(link|meta|img|br|hr)$/i.test(tag)) { html += " />\n"; noRoot = true; enter = false; } else { if (tag == 'ul' || tag == 'li') { if (customClasses.customized(node)) { html += ' class="' + customClasses.getClassName(node) + '"'; } } html += ">"; } if (enter && !compact) html += "\n"; } for (var i = node.firstChild; i; i = i.nextSibling) html += getHTML(indent + 1, i, compact); if (!noRoot) { if (!compact) html += makeIndent(indent); html += "</" + tag + ">"; html += "\n"; } return html; } catch(e) { return ""; }};function getHeaders() { var headers = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">\n'; headers += "<html>\n"; headers += makeIndent(1) + "<head>\n"; headers += makeIndent(2) + '<title>Javascript Menu By Zapatec</title>\n'; headers += makeIndent(2) + ('<!-- Works if this file is in the zpmenu folder. Adjust for other locations.-->\n\n'); headers += makeIndent(2) + ('<!-- Javascript modules required for the menu-->\n'); headers += makeIndent(2) + '<script src="utils/zapatec.js" type="text/javascript"></script>\n'; headers += makeIndent(2) + ('<!-- basic Javascript file for the menu-->\n'); headers += makeIndent(2) + '<script src="zpmenu/src/zpmenu.js" type="text/javascript"></script>\n'; var strCustomClasses = customClasses.getHeaders(makeIndent(2)); if (strCustomClasses) { headers += strCustomClasses; } headers += makeIndent(1) + "</head>\n"; return(headers);}/* * Set the active theme for the */function setActiveTheme(objSelectBox) { strCurrentThemeName = objSelectBox.value; doLook();};function getConfigParam(id, elDefault) { var returnValue = elDefault; var element = _el(id); if (element) { if (element.tagName.toLowerCase() == 'select') { // selectbox returnValue = element.value * 1; // convert to number } else if (element.getAttribute('type').toLowerCase() == 'text') { // text var value = element.value; value = value.replace(/[^\w-]/g, ''); if (value != '') { returnValue = value; } } else { // checkbox returnValue = element.checked; } } return returnValue;};/* * CustomClass class */function CustomClass(cssStyle, cssFont, cssStyleHi, cssFontHi, isContainerClass, node) { this.cssStyle = cssStyle; // Properties applied to item div this.cssFont = cssFont; // Properties applied to item label this.cssStyleHi = cssStyleHi; // Properties applied to highlighted item this.cssFontHi = cssFontHi; // Properties applied to highlighted item label this.isContainerClass = isContainerClass; // This is container class this.node = node; // Item or container node};/* * CustomClasses class */function CustomClasses() { this.menuClass = new CustomClass('', '', '', ''); // Whole menu properties this.classes = new Array(); this.styleSheet = new Zapatec.StyleSheet(); this.propertiesWind = new PropertiesWind();};CustomClasses.prototype.addClass = function(i, node, cssStyle, cssFont, cssStyleHi, cssFontHi, isContainerClass) { if (i >= 0 && this.classes[i]) { this.classes[i].cssStyle = cssStyle; this.classes[i].cssFont = cssFont; this.classes[i].cssStyleHi = cssStyleHi; this.classes[i].cssFontHi = cssFontHi; this.apply(); } else { this.classes.push(new CustomClass(cssStyle, cssFont, cssStyleHi, cssFontHi, isContainerClass, node)); i = this.classes.length - 1; Zapatec.Utils.addClass(node, 'zpMenuCust'+i); }};CustomClasses.prototype.getClassName = function(node) { var c = node.className; if (c) { var p = c.indexOf('zpMenuCust'); if (p >= 0) { c = c.substring(p); p = c.indexOf(' '); if (p > 0) c = c.substring(0, p); return c; } } return '';};CustomClasses.prototype.getClassNumber = function(node) { var cn = -1; var c = node.className; if (c) { var p = c.indexOf('zpMenuCust'); if (p >= 0) { cn = c.substring(p+10); p = cn.indexOf(' '); if (p > 0) cn = cn.substring(0, p); cn *= 1; } } return cn;};CustomClasses.prototype.customized = function(node) { var cn = this.getClassNumber(node); if (cn >= 0 && this.classes[cn]) { var c = this.classes[cn]; if (c.cssStyle || c.cssFont || c.cssStyleHi || c.cssFontHi) { return true; } } return false;};CustomClasses.prototype.propertiesDialog = function(node, title, isContainerClass) { var cssStyle = ''; var cssFont = ''; var cssStyleHi = ''; var cssFontHi = ''; var cn = this.getClassNumber(node); if (cn>=0 && this.classes[cn]) { cssStyle = this.classes[cn].cssStyle; cssFont = this.classes[cn].cssFont; cssStyleHi = this.classes[cn].cssStyleHi; cssFontHi = this.classes[cn].cssFontHi; } var self = this; this.propertiesWind.show(cssStyle, cssFont, cssStyleHi, cssFontHi, title, false, function(cssStyle, cssFont, cssStyleHi, cssFontHi) { self.addClass(cn, node, cssStyle, cssFont, cssStyleHi, cssFontHi, isContainerClass); doLook(); // Redraw menu } );};CustomClasses.prototype.propertiesDialogLi = function(node) { this.propertiesDialog(node, 'Menu Item Properties', false);};CustomClasses.prototype.propertiesDialogUl = function(node) { this.propertiesDialog(node, 'Sub-Menu Properties', true);};CustomClasses.prototype.propertiesDialogMenu = function() { var self = this; var mc = this.menuClass; this.propertiesWind.show(mc.cssStyle, mc.cssFont, mc.cssStyleHi, mc.cssFontHi, 'Menu Properties', true, function(cssStyle, cssFont, cssStyleHi, cssFontHi) { mc.cssStyle = cssStyle; mc.cssFont = cssFont; mc.cssStyleHi = cssStyleHi; mc.cssFontHi = cssFontHi; self.apply(); doLook(); // Redraw menu } );};CustomClasses.prototype.apply = function() { var ss = this.styleSheet; ss.removeRules(); // Clean style sheet var mc = this.menuClass; // Check if menu is initialized if (!contentsMenu) { return; } // Get class name prefix var strClassName = '.' + contentsMenu.getClassName({prefix: 'zpMenu'}) + ' .zpMenuContainer'; // Apply custom properties to whole menu if (mc.cssStyle) { ss.addRule(strClassName + ' .zpMenu-item', mc.cssStyle); ss.addRule(strClassName + ' .zpMenuContainer .zpMenu-item', mc.cssStyle); } if (mc.cssFont) { ss.addRule(strClassName + ' .zpMenu-item .zpMenu-label', mc.cssFont); ss.addRule(strClassName + ' .zpMenu-item a', mc.cssFont); ss.addRule(strClassName + ' .zpMenuContainer .zpMenu-item .zpMenu-label', mc.cssFont); ss.addRule(strClassName + ' .zpMenuContainer .zpMenu-item a', mc.cssFont); } if (mc.cssStyleHi) { ss.addRule(strClassName + ' .zpMenu-item-selected', mc.cssStyleHi); ss.addRule(strClassName + ' .zpMenuContainer .zpMenu-item-selected', mc.cssStyleHi); } if (mc.cssFontHi) { ss.addRule(strClassName + ' .zpMenu-item-selected .zpMenu-label', mc.cssFontHi); ss.addRule(strClassName + ' .zpMenu-item-selected a', mc.cssFontHi); ss.addRule(strClassName + ' .zpMenuContainer .zpMenu-item-selected .zpMenu-label', mc.cssFontHi); ss.addRule(strClassName + ' .zpMenuContainer .zpMenu-item-selected a', mc.cssFontHi); } // Apply custom properties to items for (var i=0; i<this.classes.length; i++) { var ci = this.classes[i]; if (ci.cssStyle) { ss.addRule(strClassName + ' .zpMenuCust'+i, ci.cssStyle); ss.addRule(strClassName + ' .zpMenuContainer .zpMenuCust'+i, ci.cssStyle); if (ci.isContainerClass) { ss.addRule(strClassName + ' .zpMenuCust'+i+' .zpMenuContainer', ci.cssStyle); ss.addRule(strClassName + ' .zpMenuContainer .zpMenuCust' + i + ' .zpMenuContainer', ci.cssStyle); } } if (ci.cssFont) { ss.addRule(strClassName + ' .zpMenuCust' + i + ' .zpMenu-label', ci.cssFont); ss.addRule(strClassName + ' .zpMenuCust' + i + ' a', ci.cssFont); ss.addRule(strClassName + ' .zpMenuContainer .zpMenuCust' + i + ' .zpMenu-label', ci.cssFont); ss.addRule(strClassName + ' .zpMenuContainer .zpMenuCust' + i + ' a', ci.cssFont); } }};CustomClasses.prototype.unApply = function() { this.styleSheet.removeRules(); // Clean style sheet};CustomClasses.prototype.getHeaders = function(indent) { // Check if menu is initialized if (!contentsMenu) { return; } // Get class name prefix var strClassName = '.' + contentsMenu.getClassName({prefix: 'zpMenu'}) + ' .zpMenuContainer'; // Form headers var headers = ''; if (this.classes.length > 0 || this.menuClass.cssStyle || this.menuClass.cssFont) { var indentpp = indent + makeIndent(1); var mc = this.menuClass; if (mc.cssStyle) { headers += indentpp + strClassName + ' .zpMenu-item { '+mc.cssStyle+' }\n'; headers += indentpp + strClassName + ' .zpMenuContainer .zpMenu-item { '+mc.cssStyle+' }\n'; } if (mc.cssFont) { headers += indentpp + strClassName + ' .zpMenu-item .zpMenu-label { '+mc.cssFont+' }\n'; headers += indentpp + strClassName + ' .zpMenu-item a { '+mc.cssFont+' }\n'; headers += indentpp + strClassName + ' .zpMenuContainer .zpMenu-item .zpMenu-label { '+mc.cssFont+' }\n'; headers += indentpp + strClassName + ' .zpMenuContainer .zpMenu-item a { '+mc.cssFont+' }\n'; } if (mc.cssStyleHi) { headers += indentpp + strClassName + ' .zpMenu-item-selected { '+mc.cssStyleHi+' }\n'; headers += indentpp + strClassName + ' .zpMenuContainer .zpMenu-item-selected { '+mc.cssStyleHi+' }\n'; } if (mc.cssFontHi) { headers += indentpp + strClassName + ' .zpMenu-item-selected .zpMenu-label { '+mc.cssFontHi+' }\n'; headers += indentpp + strClassName + ' .zpMenu-item-selected a { '+mc.cssFontHi+' }\n'; headers += indentpp + strClassName + ' .zpMenuContainer .zpMenu-item-selected .zpMenu-label { '+mc.cssFontHi+' }\n'; headers += indentpp + strClassName + ' .zpMenuContainer .zpMenu-item-selected a { '+mc.cssFontHi+' }\n'; } for (var i=0; i<this.classes.length; i++) { var ci = this.classes[i]; if (ci.cssStyle) { headers += indentpp + strClassName + ' .zpMenuCust'+i+' { '+ci.cssStyle+' }\n'; headers += indentpp + strClassName + ' .zpMenuContainer .zpMenuCust'+i+' { '+ci.cssStyle+' }\n'; if (ci.isContainerClass) { headers += indentpp + strClassName + ' .zpMenuCust'+i+' .zpMenuContainer { '+ci.cssStyle+' }\n'; headers += indentpp + strClassName + ' .zpMenuContainer .zpMenuCust'+i+' .zpMenuContainer { '+ci.cssStyle+' }\n'; } } if (ci.cssFont) { headers += indentpp + strClassName + ' .zpMenuCust'+i+' .zpMenu-label { '+ci.cssFont+' }\n'; headers += indentpp + strClassName + ' .zpMenuCust'+i+' a { '+ci.cssFont+' }\n'; headers += indentpp + strClassName + ' .zpMenuContainer .zpMenuCust'+i+' .zpMenu-label { '+ci.cssFont+' }\n'; headers += indentpp + strClassName + ' .zpMenuContainer .zpMenuCust'+i+' a { '+ci.cssFont+' }\n'; } } } if (headers) { headers = indent + '<style type="text/css">\n' + headers + indent + '</style>\n'; } return headers;};/* * Wind class */function Wind(id, title) { this.div = null; this.titleDiv = null; if (arguments.length > 0) { this.init(id, title); }};Wind.prototype.init = function(id, title) { this.div = _el(id); var st = this.div.style; st.position = 'absolute'; st.zIndex = 10; this.titleDiv = _el(id + 'Title'); if (this.titleDiv) { for (var i = 0; i < this.titleDiv.childNodes.length; i++) { this.titleDiv.removeChild(this.titleDiv.childNodes[i]); } this.titleDiv.appendChild(document.createTextNode(title)); } this.dragging = false; this.xOffs = 0; this.yOffs = 0; var self = this; Zapatec.Utils.addEvent(window.document, "mousedown", function(ev) { return self.dragStart(ev, self) }); Zapatec.Utils.addEvent(window.document, "mousemove", function(ev) { return self.dragMove(ev, self) }); Zapatec.Utils.addEvent(window.document, "mouseup",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -