diff --git a/UI/WebServerResources/AdministrationUI.js b/UI/WebServerResources/AdministrationUI.js index 2128f6234..60dc06db9 100644 --- a/UI/WebServerResources/AdministrationUI.js +++ b/UI/WebServerResources/AdministrationUI.js @@ -38,7 +38,6 @@ function usersSearchCallback(http) { function buildUsersTree(treeDiv, response) { d = new dTree("d"); - d.config.folderLlinks = true; d.config.hideRoot = true; d.icon.root = ResourcesURL + '/tbtv_account_17x17.gif'; d.icon.folder = ResourcesURL + '/tbtv_leaf_corner_17x17.png'; @@ -54,6 +53,7 @@ function buildUsersTree(treeDiv, response) { d.icon.nlPlus = ResourcesURL + '/tbtv_corner_plus_17x17.gif'; d.icon.nlMinus = ResourcesURL + '/tbtv_corner_minus_17x17.gif'; d.icon.empty = ResourcesURL + '/empty.gif'; + d.preload (); d.add(0, -1, ''); var isUserDialog = false; @@ -65,7 +65,7 @@ function buildUsersTree(treeDiv, response) { if (lines[i].length > 0) addUserLineToTree(d, 1 + i * multiplier, lines[i]); } - treeDiv.update(d); + treeDiv.appendChild(d.domObject ()); treeDiv.clean = false; for (var i = 0; i < lines.length - 1; i++) { if (lines[i].length > 0) { @@ -129,23 +129,22 @@ function foldersSearchCallback(http) { var folders = response.split(";"); var user = http.callbackData["user"]; - var str = ''; + dd.innerHTML = ''; for (var i = 1; i < folders.length - 1; i++) { - str += addFolderBranchToTree (d, user, folders[i], nodeId, i, false); - log (i + " = " + folders[i]); + dd.appendChild(addFolderBranchToTree (d, user, folders[i], nodeId, i, false)); + log (i + " = " + folders[i]); } - str += addFolderBranchToTree (d, user, folders[folders.length-1], nodeId, - (folders.length - 1), true); + dd.appendChild (addFolderBranchToTree (d, user, folders[folders.length-1], nodeId, + (folders.length - 1), true)); log ((folders.length - 1) + " = " + folders[folders.length-1]); - dd.update(str); for (var i = 1; i < folders.length; i++) { - var sd = $("sd" + (nodeId + i)); - sd.observe("click", onTreeItemClick); - sd.observe("dblclick", onFolderOpen); + var sd = $("sd" + (nodeId + i)); + sd.observe("click", onTreeItemClick); + sd.observe("dblclick", onFolderOpen); } } else { - dd.update(addFolderNotFoundNode (d, nodeId)); + dd.appendChild (addFolderNotFoundNode (d, nodeId)); var sd = $("sd" + (nodeId + 1)); sd.observe("click", onTreeItemClick); } @@ -169,7 +168,7 @@ function addFolderBranchToTree(tree, user, folder, nodeId, subId, isLast) { var node = new Node(subId, nodeId, name, 0, '#', folderId, folderInfos[2] + '-folder', '', '', icon, icon); node._ls = isLast; - var content = tree.node(node, (nodeId + subId)); + var content = tree.node(node, (nodeId + subId), null); return content; } @@ -179,7 +178,7 @@ function addFolderNotFoundNode (tree, nodeId) { var node = new Node(1, nodeId, labels["No possible subscription"], 0, '#', null, null, '', '', icon, icon); node._ls = true; - return tree.node(node, (nodeId + 1)); + return tree.node(node, (nodeId + 1), null); } function onFolderOpen(event) { diff --git a/UI/WebServerResources/MailerUI.js b/UI/WebServerResources/MailerUI.js index 447b90641..4374eb44a 100644 --- a/UI/WebServerResources/MailerUI.js +++ b/UI/WebServerResources/MailerUI.js @@ -478,7 +478,7 @@ function onMailboxTreeItemClick(event) { var table = $("messageList"); var head = table.tHead; var body = table.tBodies[0]; - body.deselectAll (); + if (body.deselectAll) body.deselectAll (); for (var i = body.rows.length; i > 0; i--) body.deleteRow(i-1); if (head.rows[1]) @@ -1518,9 +1518,7 @@ function initMailboxTree() { if (node) node.parentNode.removeChild(node); mailboxTree = new dTree("mailboxTree"); - mailboxTree.config.folderLinks = true; mailboxTree.config.hideRoot = true; - mailboxTree.icon.root = ResourcesURL + "/tbtv_account_17x17.gif"; mailboxTree.icon.folder = ResourcesURL + "/tbtv_leaf_corner_17x17.png"; mailboxTree.icon.folderOpen = ResourcesURL + "/tbtv_leaf_corner_17x17.png"; @@ -1535,6 +1533,7 @@ function initMailboxTree() { mailboxTree.icon.nlPlus = ResourcesURL + "/tbtv_corner_plus_17x17.gif"; mailboxTree.icon.nlMinus = ResourcesURL + "/tbtv_corner_minus_17x17.gif"; mailboxTree.icon.empty = ResourcesURL + "/empty.gif"; + mailboxTree.preload (); mailboxTree.add(0, -1, ''); @@ -1548,7 +1547,8 @@ function initMailboxTree() { function updateMailboxTreeInPage() { var treeContent = $("folderTreeContent"); - treeContent.update(mailboxTree); + //treeContent.update(mailboxTree.toString ()); + treeContent.appendChild(mailboxTree.domObject ()); var inboxFound = false; var tree = $("mailboxTree"); diff --git a/UI/WebServerResources/UIxContactsUserFolders.js b/UI/WebServerResources/UIxContactsUserFolders.js index aea6466a3..61082d755 100644 --- a/UI/WebServerResources/UIxContactsUserFolders.js +++ b/UI/WebServerResources/UIxContactsUserFolders.js @@ -53,7 +53,6 @@ function addUserLineToTree(tree, parent, line) { function buildUsersTree(treeDiv, response) { d = new dTree("d"); - d.config.folderLlinks = true; d.config.hideRoot = true; d.icon.root = ResourcesURL + '/tbtv_account_17x17.gif'; d.icon.folder = ResourcesURL + '/tbtv_leaf_corner_17x17.png'; @@ -69,6 +68,7 @@ function buildUsersTree(treeDiv, response) { d.icon.nlPlus = ResourcesURL + '/tbtv_corner_plus_17x17.gif'; d.icon.nlMinus = ResourcesURL + '/tbtv_corner_minus_17x17.gif'; d.icon.empty = ResourcesURL + '/empty.gif'; + d.preload (); d.add(0, -1, ''); var isUserDialog = (window.opener.userFolderType == "user"); @@ -80,7 +80,7 @@ function buildUsersTree(treeDiv, response) { if (lines[i].length > 0) addUserLineToTree(d, 1 + i * multiplier, lines[i]); } - treeDiv.update(d); + treeDiv.appendChild(d.domObject ()); treeDiv.clean = false; for (var i = 0; i < lines.length - 1; i++) { if (lines[i].length > 0) { @@ -140,19 +140,19 @@ function foldersSearchCallback(http) { var folders = response.split(";"); var user = http.callbackData["user"]; - var str = ''; + dd.innerHTML = ''; for (var i = 1; i < folders.length - 1; i++) - str += addFolderBranchToTree (d, user, folders[i], nodeId, i, false); - str += addFolderBranchToTree (d, user, folders[folders.length-1], nodeId, - (folders.length - 1), true); - dd.update(str); + dd.appendChild (addFolderBranchToTree (d, user, folders[i], nodeId, i, false)); + dd.appendChild (addFolderBranchToTree (d, user, folders[folders.length-1], nodeId, + (folders.length - 1), true)); + //dd.update(str); for (var i = 1; i < folders.length; i++) { var sd = $("sd" + (nodeId + i)); sd.observe("click", onTreeItemClick); } } else { - dd.update(addFolderNotFoundNode (d, nodeId)); + dd.appendChild(addFolderNotFoundNode (d, nodeId, null)); var sd = $("sd" + (nodeId + 1)); sd.observe("click", onTreeItemClick); } @@ -176,7 +176,7 @@ function addFolderBranchToTree(tree, user, folder, nodeId, subId, isLast) { var node = new Node(subId, nodeId, name, 0, '#', folderId, folderInfos[2] + '-folder', '', '', icon, icon); node._ls = isLast; - var content = tree.node(node, (nodeId + subId)); + var content = tree.node(node, (nodeId + subId), null); return content; } diff --git a/UI/WebServerResources/dtree.js b/UI/WebServerResources/dtree.js index 9b0dfa0db..b0527647c 100644 --- a/UI/WebServerResources/dtree.js +++ b/UI/WebServerResources/dtree.js @@ -47,33 +47,27 @@ function Node(id, pid, name, isParent, url, dataname, datatype, title, target, function dTree(objName) { this.obj = objName; this.config = { - target: null, - hideRoot: false, - folderLinks: true, - useSelection: true, - useCookies: false, - useLines: true, - useIcons: true, - useStatusText: false, - closeSameLevel: false, - inOrder: false + target: null, + useCookies: false }; this.icon = { - root: 'img/base.gif', - folder: 'img/folder.gif', - folderOpen: 'img/folderopen.gif', - node: 'img/page.gif', - empty: 'img/empty.gif', - line: 'img/line.gif', - join: 'img/join.gif', - joinBottom: 'img/joinbottom.gif', - plus: 'img/plus.gif', - plusBottom: 'img/plusbottom.gif', - minus: 'img/minus.gif', - minusBottom: 'img/minusbottom.gif', - nlPlus: 'img/nolines_plus.gif', - nlMinus: 'img/nolines_minus.gif' + root: 'img/base.gif', + folder: 'img/folder.gif', + folderOpen: 'img/folderopen.gif', + node: 'img/page.gif', + empty: 'img/empty.gif', + line: 'img/line.gif', + join: 'img/join.gif', + joinBottom: 'img/joinbottom.gif', + plus: 'img/plus.gif', + plusBottom: 'img/plusbottom.gif', + minus: 'img/minus.gif', + minusBottom: 'img/minusbottom.gif', + nlPlus: 'img/nolines_plus.gif', + nlMinus: 'img/nolines_minus.gif' }; + this.images = {}; + this.objects = {}; this.aNodes = []; this.aIndent = []; this.root = new Node(-1); @@ -103,6 +97,26 @@ dTree.prototype = { iconOpen, open, false, hasUnseen); }, + preload: function () { + this.images['line'] = new Element ("img", {"src": this.icon.line}); + this.images['empty'] = new Element ("img", {"src": this.icon.empty}); + this.images['plus'] = new Element ("img", {"src": this.icon.plus}); + this.images['minus'] = new Element ("img", {"src": this.icon.minus}); + this.images['plusbottom'] = new Element ("img", {"src": this.icon.plusBottom}); + this.images['minusbottom'] = new Element ("img", {"src": this.icon.minusBottom}); + this.images['join'] = new Element ("img", {"src": this.icon.join}); + this.images['joinbottom'] = new Element ("img", {"src": this.icon.joinBottom}); + + this.objects['link'] = new Element ("a", {"href": "#"}); + this.objects['nodelink'] = new Element ("a", {"href": "#", "class": "node"}); + this.objects['div'] = new Element ("div"); + this.objects['nodediv'] = new Element ("div", {"class": "dTreeNode"}); + this.objects['clipdiv'] = new Element ("div", {"class": "clip"}); + this.objects['namespan'] = new Element ("span", {"class": "nodeName"}); + this.objects['image'] = new Element ("img"); + }, + + // Open/close all nodes openAll: function() { this.oAll(true); @@ -112,27 +126,21 @@ dTree.prototype = { }, // Outputs the tree to the page - toString: function() { - var str = '
\n'; - if (document.getElementById) { - if (this.config.useCookies) - this.selectedNode = this.getSelected(); - str += this.addNode(this.root); - } else str += 'Browser not supported.'; - str += '
'; + domObject: function() { + var div = this.objects["div"].cloneNode (true); + div.id = this.obj; + div.addClassName ("dtree"); + if (this.config.useCookies) + this.selectedNode = this.getSelected(); + this.addNode (this.root, div); if (!this.selectedFound) this.selectedNode = null; this.completed = true; - return str; - }, - valueOf: function() { - return this.toString(); + return div; }, // Creates the tree structure - addNode: function(pNode) { - var str = ''; + addNode: function(pNode, container) { var n=0; - if (this.config.inOrder) n = pNode._ai; for (n; n'; - if (this.config.useIcons) { - if (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node); - if (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node; - if (this.root.id == node.pid) { - node.icon = this.icon.root; - node.iconOpen = this.icon.root; - } - str += ''; - } - str += ''; - if (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += ''; - str += ''; + span.addClassName ("unseen"); + span.update (node.name); + + link.appendChild (img); + link.appendChild (span); + div.appendChild (link); + if (container) + container.appendChild (div); + else + rc = div; } if (node._hc) { - str += '
'; - str += this.addNode(node); - str += '
'; + var div = this.objects['clipdiv'].cloneNode (true); + div.id = 'd' + this.obj + nodeId; + div.setStyle ({"display": + ((this.root.id == node.pid || node._io) ? + 'block' : 'none')}); + this.addNode(node, div); + if (container) + container.appendChild (div); } this.aIndent.pop(); - - return str; + return rc; }, // Adds the empty and line icons - indent: function(node, nodeId) { - var str = ''; - if (this.root.id != node.pid) - { - - for (var n=0; n'; - (node._ls) ? this.aIndent.push(0) : this.aIndent.push(1); - if (node._hc) - { - str += ''; - } - else - str += ''; + indent: function(node, nodeId, container) { + if (this.root.id != node.pid) { + for (var n=0; n