📄 bs_treeelement.class.js
字号:
/********************************************************************************************* BlueShoes Framework; This file is part of the php application framework.* NOTE: This code is stripped (obfuscated). To get the clean documented code goto * www.blueshoes.org and register for the free open source *DEVELOPER* version or * buy the commercial version.* * In case you've already got the developer version, then this is one of the few * packages/classes that is only available to *PAYING* customers.* To get it go to www.blueshoes.org and buy a commercial version.* * @copyright www.blueshoes.org* @author Samuel Blume <sam at blueshoes dot org>* @author Andrej Arn <andrej at blueshoes dot org>*/function Bs_TreeElement() {this.id;this.parent;this._tree;this.caption;this.url;this.target;this.linkStyle;this.divStyle;this.onClick;this.isOpen = false;this.visible = true;this.isChecked = 0;this.checkboxName;this.radioButtonSelected;this._checkboxObject;this._level = 0;this._children = new Array;this._undoneChildren;this.imageDir;this.imageHeight;this.icon;this.beforeIconSpan;this.beforeCaptionSpan;this.afterCaptionSpan;this.dataContainer;this._attachedEvents;this._isOutrendered = false;this._errorArray;this.getThis = function() {return this;}this.addChild = function(treeElement) {treeElement.parent = this;if (typeof(this._children) != 'object') this._children = new Array;if (this._children.push) {this._children.push(treeElement);} else {this._children[this._children.length] = treeElement;}treeElement._level = this._level +1;this._updateLevelAndParent(treeElement);this._tree._clearingHouse[treeElement.id] = treeElement;if (this._isOutrendered) {this.render(true, true);}}this.addChildByArray = function(elementData) {var treeElement = this._tree._createTreeElement(elementData);this.addChild(treeElement);return treeElement;}this.isChild = function(elementId, bubble) {for (var i=0; i<this._children.length; i++) {if (this._children[i].id == elementId) return true;if (bubble) {if (this._children[i].isChild(elementId, true)) return true;}}return false;}this.setCaption = function(caption) {this.caption = caption;if (this._isOutrendered) {var span = document.getElementById(this._tree._objectId + '_e_' + this.id + '_caption2');if (span) span.innerHTML = caption;}}this.render = function(omitDivTags, putIntoPage, lookAhead) {if (typeof(this._tree.stopWatch) == 'object') this._tree.stopWatch.takeTime('Bs_TreeElement.render() for id: ' + this.id + ' in level: ' + this._level);if (typeof(lookAhead) == 'undefined') {lookAhead = this._tree.lookAhead;}if ((this._tree._pseudoElement == this) && !this._tree.showPseudoElement && (lookAhead != -1)) {lookAhead++;}var imageDir = this._getVar('imageDir');var imageHeight = this._getVar('imageHeight');var out = new Array();var outI = 0;var evalStr = '';if (!omitDivTags) {out[outI++] = '<span id="' + this._tree._objectId + '_e_' + this.id + '"';out[outI++] = ' style="';if (!this.visible) {out[outI++] = 'display:none;';}out[outI++] = '">';}if ((this._level) > 0 || (this._tree.showPseudoElement)) {out[outI++] = '<nobr>';out[outI++] = '<div style="float:none;"';out[outI++] = ' id="' + this._tree._objectId + '_e_' + this.id + '_drag"';if (this._tree.draggable) {out[outI++] = ' onDragStart="Bs_Objects['+this._tree._id+'].executeOnElement(\'' + this.id + '\', \'fireEvent\', Array(\'onDragStart\'));"';out[outI++] = ' onDragEnter="Bs_Objects['+this._tree._id+'].executeOnElement(\'' + this.id + '\', \'fireEvent\', Array(\'onDragEnter\'));"';out[outI++] = ' onDragOver="Bs_Objects['+this._tree._id+'].executeOnElement(\'' + this.id + '\', \'fireEvent\', Array(\'onDragOver\'));"';out[outI++] = ' onDrop="Bs_Objects['+this._tree._id+'].executeOnElement(\'' + this.id + '\', \'fireEvent\', Array(\'onDrop\'));"';}out[outI++] = '>';out[outI++] = '<div style="overflow:visible; height:' + imageHeight + '; ' + this._getVar('divStyle') + '">';var level = this._level;if (!this._tree.showPseudoElement) --level;var obj = null;var outTemp = '';for (var i=0; i<level; i++) {if (!obj) {obj = this.parent;} else {obj = obj.parent;}if (obj.hasSiblingsDown()) {var img = 'line1';} else {var img = 'empty';}outTemp = '<img src="' + imageDir + img + '.gif" height="' + imageHeight + '" border="0" align="top">' + outTemp;}out[outI++] = outTemp;if (this.hasSiblingsDown()) {var imgNumber = 3;} else {var imgNumber = 2;}if (this.hasVisibleChildren()) {if ((this._level == 0) || (!this._tree.showPseudoElement && (this._level == 1) && ((this._tree.useAutoSequence && (this.id == 1)) || (!this._tree.useAutoSequence && true)))) {if (this.hasSiblingsDown()) {imgNumber++;} else {imgNumber--;}}if (this.isOpen) {var plusImg = 'minus' + imgNumber;var onClick = 'Close';} else {var plusImg = 'plus' + imgNumber;var onClick = 'Open';}} else {var plusImg = 'line' + imgNumber;var onClick = false;}if (onClick) {var onClickStr = 'onClick="Bs_Objects['+this._tree._id+'].elementToggleOpenClose(\'' + this.id + '\');"';} else {var onClickStr = '';}if (this.onClick) {var onClick = this.onClick; onClick = onClick.replace(/__this\.id__/g, this.id); //replace the string __this.id__ with the actual id (int).out[outI++] = '<span style="cursor:pointer; cursor:hand;" onClick="' + onClick + '">';}out[outI++] = '<img id="' + this._tree._objectId + '_e_' + this.id + '_openClose" src="' + imageDir + plusImg + '.gif" height="' + imageHeight + '" border="0" ' + onClickStr + ' align="middle"';out[outI++] = ' style="vertical-align:' + ((imageHeight > 16) ? 'middle' : 'top') + '">';if (this.beforeIconSpan) {out[outI++] = "<span>" + this.beforeIconSpan + "</span>";}if (this.url) {var hRef = '<a href="' + this.url + '"';if (this.target) {hRef += ' target="' + this.target + '"';hRef += ' style="' + this._getLinkStyle() + '"';}hRef += '>';}var folderIconId = this._tree._objectId + '_e_' + this.id + '_folder';if (this._getVar('useFolderIcon')) {if (hRef) out[outI++] = hRef;switch (typeof(this.icon)) {case 'undefined':if (this._tree.useLeaf && !this.hasChildren()) {var folderImg = 'leaf';} else {var folderImg = 'folder';folderImg += (this.isOpen) ? 'Open' : 'Closed';}out[outI++] = '<img id="' + folderIconId + '" src="' + imageDir + folderImg + '.gif" height="' + imageHeight + '" border="0" align="top">';break;case 'bool':case 'boolean':break;case 'string':if (this.icon != 'false') {out[outI++] = '<img id="' + folderIconId + '" src="';if (!this._iconHasPath(this.icon)) out[outI++] = imageDir;out[outI++] = this.icon;if (!this._iconHasExtension(this.icon)) out[outI++] = '.gif';out[outI++] = '" height="' + imageHeight + '" border="0" align="top">';}}if (hRef) out[outI++] = '</a>';}if (this.beforeCaptionSpan) {out[outI++] = "<span>" + this.beforeCaptionSpan + "</span>";}if (this._tree.useRadioButton) {out[outI++] = '<input type="radio"';if (this._tree.radioButtonName) {out[outI++] = ' name="' + this._tree.radioButtonName + '"';} else {out[outI++] = ' name="' + 'bsTreeRad_' + this._tree._objectId + '"';}if (true) {out[outI++] = ' style="height:16px;"';}if (this.radioButtonSelected) {out[outI++] = ' checked';}out[outI++] = '>';}if (this._tree.useCheckboxSystem) {var checkboxSpan = this.checkboxName + 'Span';var checkboxObj = this.checkboxName + 'Obj';out[outI++] = ' <span id="' + checkboxSpan + '">';var t = new Bs_Checkbox();t.objectName = checkboxObj;t.checkboxName = this.checkboxName;t.value = this.isChecked;if (this._getVar('checkboxSystemGuiNochange')) {t.guiNochange = true;}var chkImagDir = this._getVar('checkboxSystemImgDir');if (chkImagDir) {t.imgDir = chkImagDir;} else {t.imgDir = "/_bsJavascript/components/checkbox/img/win2k_noBorder/";}t.imgWidth = '13';t.imgHeight = '13';if (this._tree.checkboxSystemWalkTree) {t.attachOnClick('Bs_Objects['+this._tree._id+'].elementCheckboxEvent(\'' + this.id + '\', ' + checkboxObj + '.value);');}eval(checkboxObj + ' = t;');this._checkboxObject = t;evalStr += checkboxObj + ".draw('" + checkboxSpan + "');";out[outI++] = '</span>';}out[outI++] = ' ';out[outI++] = '<span id="' + this._tree._objectId + '_e_' + this.id + '_caption"';if (this.onClick || this.hasEventAttached('onClickCaption')) {out[outI++] = ' style="cursor:pointer; cursor:hand;"';} else {out[outI++] = ' style="cursor:default;"';}out[outI++] = ' onClick="Bs_Objects['+this._tree._id+'].executeOnElement(\'' + this.id + '\', \'fireEvent\', Array(\'onClickCaption\'));">';if (hRef) out[outI++] = hRef;out[outI++] = '<span id="' + this._tree._objectId + '_e_' + this.id + '_caption2">' + this.caption + '</span>';if (hRef) out[outI++] = '</a>';out[outI++] = '</span>';if (this.onClick) {out[outI++] = '</span>';}out[outI++] = '</div>';if (this.afterCaptionSpan) {out[outI++] = '<div style="overflow:visible;">' + this.afterCaptionSpan + '</div>';} else {}out[outI++] = '</div>';out[outI++] = '</nobr>';}out[outI++] = '<span id="' + this._tree._objectId + '_e_' + this.id + '_children"';if (!this.isOpen) {out[outI++] = ' style="display:none;"';}out[outI++] = '>';if (this.isOpen || (lookAhead > 0) || (lookAhead == -1)) {for (var i=0; i<this._children.length; i++) {if (lookAhead == -1) {var newLookAhead = -1;} else {if (this.isOpen) {var newLookAhead = lookAhead;} else {var newLookAhead = lookAhead -1;}}var t = this._children[i].render(false, false, newLookAhead);out[outI++] = t[0];evalStr += t[1];}}out[outI++] = '</span>';if (!omitDivTags) {out[outI++] = '</span>';}out[outI++] = "\n";this._isOutrendered = true;var content = new Array(out.join(''), evalStr);if (putIntoPage) {var doc = document.getElementById(this._tree._objectId + '_e_' + this.id);if (doc != null) {doc.innerHTML = content[0];if (content[1] != '') {eval(content[1]);}return true;} else {return false;}} else {return content;}}this.reset = function() {this.caption = null;this.url = null;this.target = null;this.onClick = null;this.isOpen = false;this.isChecked = 0;this.checkboxName = null;this.beforeIconSpan = null;this.beforeCaptionSpan = null;this.afterCaptionSpan = null;}this.initByArray = function(a, tree, level) {this._tree = tree;this._level = level;if (typeof(this._tree.stopWatch) == 'object') this._tree.stopWatch.takeTime('Bs_TreeElement.initByArray()');if (this._tree.useAutoSequence && (level > 0)) {this.id = ++this._tree._elementSequence;} else {if (typeof(a['id']) == 'undefined') {this._addError('tree error: useAutoSequence is set to false, but for an array element there is no id defined.');return false;}this.id = a['id'];}if (typeof(a['caption']) != 'undefined') this.caption = a['caption'];if (typeof(a['url']) != 'undefined') this.url = a['url'];if (typeof(a['target']) != 'undefined') this.target = a['target'];if (typeof(a['onClick']) != 'undefined') this.onClick = a['onClick'];if (typeof(a['isOpen']) != 'undefined') this.isOpen = a['isOpen'];if (typeof(a['isChecked']) != 'undefined') this.isChecked = parseInt(a['isChecked']);if (typeof(a['visible']) != 'undefined') this.visible = a['visible'];if (typeof(a['icon']) != 'undefined') this.icon = a['icon'];if (typeof(a['imageDir']) != 'undefined') this.imageDir = a['imageDir'];if (typeof(a['beforeIconSpan']) != 'undefined') this.beforeIconSpan = a['beforeIconSpan'];if (typeof(a['beforeCaptionSpan']) != 'undefined') this.beforeCaptionSpan = a['beforeCaptionSpan'];if (typeof(a['afterCaptionSpan']) != 'undefined') this.afterCaptionSpan = a['afterCaptionSpan'];if (typeof(a['radioButtonSelected']) != 'undefined') this.radioButtonSelected = a['radioButtonSelected'];if (typeof(a['dataContainer']) != 'undefined') this.dataContainer = a['dataContainer'];if (typeof(a['checkboxName']) != 'undefined') {this.checkboxName = a['checkboxName'];} else {if (this._tree.useCheckboxSystem) {this.checkboxName = 'bsTreeChk_' + this._tree._objectId + '_' + this.id;}}if (typeof(a['onClickCaption']) != 'undefined') {this.attachEvent('onClickCaption', a['onClickCaption']);}if (typeof(a['onChangeCheckbox']) != 'undefined') {this.attachEvent('onChangeCheckbox', a['onChangeCheckbox']);}if (typeof(a['events']) != 'undefined') {for (ev in a['events']) {this.attachEvent(ev, a['events'][ev]);}}return true;}this.exportAsArray = function(withChildren) {var ret = new Array();if (typeof(this.id) != 'undefined') ret['id'] = this.id;if (typeof(this.caption) != 'undefined') ret['caption'] = this.caption;if (typeof(this.url) != 'undefined') ret['url'] = this.url;if (typeof(this.target) != 'undefined') ret['target'] = this.target;if (typeof(this.onClick) != 'undefined') ret['onClick'] = this.onClick;if (typeof(this.isOpen) != 'undefined') ret['isOpen'] = this.isOpen;if (typeof(this.isChecked) != 'undefined') ret['isChecked'] = this.isChecked;if (typeof(this.visible) != 'undefined') ret['visible'] = this.visible;if (typeof(this.icon) != 'undefined') ret['icon'] = this.icon;if (typeof(this.imageDir) != 'undefined') ret['imageDir'] = this.imageDir;if (typeof(this.beforeIconSpan) != 'undefined') ret['beforeIconSpan'] = this.beforeIconSpan;if (typeof(this.afterCaptionSpan) != 'undefined') ret['afterCaptionSpan'] = this.afterCaptionSpan;if (typeof(this.radioButtonSelected) != 'undefined') ret['radioButtonSelected'] = this.radioButtonSelected;if (typeof(this.dataContainer) != 'undefined') ret['dataContainer'] = this.dataContainer;if (typeof(this.checkboxName) != 'undefined') ret['checkboxName'] = this.checkboxName;if (typeof(this.beforeCaptionSpan) != 'undefined') ret['beforeCaptionSpan'] = this.beforeCaptionSpan;if (withChildren) {ret['children'] = new Array();for (var i=0; i<this._children.length; i++) {ret['children'][ret['children'].length] = this._children[i].exportAsArray(true);}}return ret;}this.updateObjectByArray = function(a) {this.reset();if (a['caption']) this.caption = a['caption'];if (a['url']) this.url = a['url'];if (a['target']) this.target = a['target'];if (a['onClick']) this.onClick = a['onClick'];if (a['isOpen']) this.isOpen = a['isOpen'];if (a['isChecked']) this.isChecked = a['isChecked'];if (a['imageDir']) this.imageDir = a['imageDir'];if (a['checkboxName']) {this.checkboxName = a['checkboxName'];} else {if (this._tree.useCheckboxSystem) {this.checkboxName = 'bsTreeCheckbox' + this.id;}}if (a['beforeIconSpan']) this.beforeIconSpan = a['beforeIconSpan'];if (a['beforeCaptionSpan']) this.beforeCaptionSpan = a['beforeCaptionSpan'];if (a['afterCaptionSpan']) this.afterCaptionSpan = a['afterCaptionSpan'];}this.getJavascriptCode = function(varName, recursive) {var ret = "";if ((this._tree.useAutoSequence && (this.id > 1))|| (!this._tree.useAutoSequence && !this.parent)) {} else {ret += varName + " = new Array();\n";if (!this._tree.useAutoSequence) {ret += varName + "['id'] = \"" + this.id + "\";\n";}if (this.caption) ret += varName + "['caption'] = \"" + this.caption + "\";\n";if (this.url) ret += varName + "['url'] = \"" + this.url + "\";\n";if (this.target) ret += varName + "['target'] = \"" + this.target + "\";\n";if (this.onClick) { //var onClick = this.onClick.replace(/'/g, "\'"); var onClick = this.onClick.replace(/"/g, '\"');ret += varName + "['onClick'] = \"" + onClick + "\";\n";}if (this.imageDir) ret += varName + "['imageDir'] = \"" + this.imageDir + "\";\n";if (this.isOpen) ret += varName + "['isOpen'] = '" + this.isOpen + "';\n";if (this.isChecked) ret += varName + "['isChecked'] = '" + this.isChecked + "';\n";if (this.checkboxName) ret += varName + "['checkboxName'] = '" + this.checkboxName + "';\n";if (this.icon) ret += varName + "['icon'] = \"" + this.icon + "\";\n";if (this.beforeIconSpan) ret += varName + "['beforeIconSpan'] = \"" + this.beforeIconSpan + "\";\n";if (this.beforeCaptionSpan) ret += varName + "['beforeCaptionSpan'] = \"" + this.beforeCaptionSpan + "\";\n";if (this.afterCaptionSpan) ret += varName + "['afterCaptionSpan'] = \"" + this.afterCaptionSpan + "\";\n";varName += "['children']";}if (recursive) {if (this._children.length > 0) {ret += varName + " = new Array();\n";for (var i=0; i<this._children.length; i++) {ret += this._children[i].getJavascriptCode(varName + "[" + i + "]", recursive);}}}return ret;}this.setActive = function() {var activeElement = this._tree.getActiveElement();if (activeElement != false) {activeElement.unsetActive();}this._tree.setActiveElement(this);this._highlight();}this._highlight = function() {var elmSetActive = document.getElementById(this._tree._objectId + '_e_' + this.id + '_caption');if (elmSetActive != null) {elmSetActive.style.backgroundColor = this._getVar('captionBgColor');} else {setTimeout("Bs_Objects["+this._tree._id+"].executeOnElement('" + this.id + "', '_highlight');", 800);}}this.unsetActive = function() {var e = document.getElementById(this._tree._objectId + '_e_' + this.id + '_caption');if (e != null) e.style.backgroundColor = 'transparent';}this.toggleOpenClose = function() {if (this.isOpen) {if (this.hasEventAttached('onBeforeClose')) {var status = this.fireEvent('onBeforeClose');if (status != true) return;}this.close();if (this.hasEventAttached('onAfterClose')) this.fireEvent('onAfterClose');} else {if (this.hasEventAttached('onBeforeOpen')) {var status = this.fireEvent('onBeforeOpen');if (status != true) return;}this.open();if (this.hasEventAttached('onAfterOpen')) this.fireEvent('onAfterOpen');}}this.open = function(checkParents) {if (this.isOpen) return;this.isOpen = true;if (true || !doRender) {if (this._isOutrendered) {var d = document.getElementById(this._tree._objectId + '_e_' + this.id + '_children');d.style.display = 'block';this._switchIconsOnToggleOpenClose();} else {if (checkParents) {this._renderParentsUp();}this.render(true, true);}}if (this._tree.autoCollapse) {var sib = this.getSiblings();for (var i=0; i<sib.length; i++) {if (sib[i].id != this.id) {sib[i].close();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -