Changeset 5440 for trunk/expressoMail1_2/js/TreeS.js
- Timestamp:
- 01/27/12 15:59:35 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/js/TreeS.js
r5134 r5440 1 /**************************************************************************\ 2 Início 3 \**************************************************************************/ 1 function treeS() 2 { 3 this.FOLDER = ""; 4 this.xtools = new xtools('../expressoMail1_2/templates/'); 5 this.parentHtml = null; 6 } 4 7 5 function treeS() 8 treeS.prototype.make_Window = function() 9 { 10 var div = null; 11 var args = null; 12 13 args = 6 14 { 7 this.arrayW = new Array(); 8 this.el; 9 this.FOLDER = ""; 15 "delete_folder" : get_lang('Delete folder'), 16 "export_messages" : get_lang('Export messages'), 17 "new_folder" : get_lang('New folder'), 18 "rename_folder" : get_lang('Rename folder') 19 }; 20 21 div = document.createElement("div"); 22 div.innerHTML = this.xtools.parse(this.xtools.xml('treeFolders'), 'treeFolders.xsl', args ); 23 this.parentHtml = div; 24 25 var openWindow = function() 26 { 27 if( folders.length == 0 ) 28 { 29 write_msg( "ERRO : Sem dados" ); 30 $(div).dialog("destroy"); 31 div.removeChild( div.firstChild ); 32 return false; 33 } 34 else 35 { 36 ttree.make_tree(div.firstChild); 37 } 38 }; 39 40 $(div).dialog( 41 { 42 resizable : false, 43 title : get_lang("Manager your folders and export messages"), 44 position : 'center', 45 width : 600, 46 height : 300, 47 modal : false, 48 buttons : [ 49 { 50 text: get_lang("Close"), 51 click: function() 52 { 53 $(this).dialog("destroy"); 54 div.removeChild(div.firstChild); 55 }, 56 style: "margin-top: -2.1em" 57 } 58 ], 59 beforeClose : function() 60 { 61 $(this).dialog("destroy"); 62 div.removeChild(div.firstChild); 63 }, 64 open : function() 65 { 66 openWindow(); 67 } 68 }); 69 70 } 71 72 treeS.prototype.setFolder = function(folderName) 73 { 74 this.FOLDER = folderName; 75 } 76 77 treeS.prototype.make_tree = function () 78 { 79 var elementHtml = null; 80 81 if( arguments.length > 0 ) 82 { 83 elementHtml = arguments[0]; 84 } 85 else 86 { 87 if( Element('dftree_treeFolders') != null ) 88 { 89 elementHtml = Element('dftree_treeFolders').parentNode.parentNode; 90 Element('dftree_treeFolders').innerHTML = ""; 91 } 92 } 93 94 var treeFolders = new dFTree({ name : 'treeFolders' }); 95 96 if( !expresso_offline ) 97 { 98 var root = new dNode({ id : 'root', caption: get_lang('My Folders'), onClick: "ttree.setFolder('root')" }); 99 100 treeFolders.add(root, 'root'); 101 102 for(var i = 0; i < folders.length ; i++ ) 103 { 104 var nn = new dNode({ id:folders[i].folder_id, caption: lang_folder(folders[i].folder_name), plusSign:folders[i].folder_hasChildren, onClick: "ttree.setFolder('"+folders[i].folder_id+"')"}); 105 106 if ( folders[i].folder_parent == '' ) 107 { 108 folders[i].folder_parent = 'root'; 109 } 110 else if ( folders[i].folder_parent == 'user' ) 111 { 112 if ( treeFolders.getNodeById('user') ) 113 { 114 var n_root_shared_folders = new dNode({ id:'user', caption:get_lang("Shared Folders"), plusSign:true}); 115 treeFolders.add( n_root_shared_folders,'root'); 116 } 117 } 118 119 // Ver Ticket #1548 120 if( folders[i].folder_parent != 'root') 121 { 122 var node_parent = treeFolders.getNodeById(folders[i].folder_parent); 123 124 if( typeof node_parent != 'undefined') 125 { 126 node_parent.plusSign = true; 127 treeFolders.alter(node_parent); 128 } 129 } 130 131 treeFolders.add( nn, folders[i].folder_parent ); 132 } 133 } 134 135 //Pastas locais 136 if ( preferences.use_local_messages == 1 ) 137 { 138 var n_root_local = new dNode({ id : "local_root", caption : get_lang("local folders"), onClick: "ttree.setFolder('root')" }); 139 140 treeFolders.add( n_root_local, 'root' ); 141 142 var local_folders = expresso_local_messages.list_local_folders(); 143 144 //Coloca as pastas locais. 145 for (var i in local_folders) 146 { 147 var node_parent = "local_root"; 148 var new_caption = local_folders[i][0]; 149 150 if( local_folders[i][0].indexOf("/") != "-1" ) 151 { 152 final_pos = local_folders[i][0].lastIndexOf("/"); 153 node_parent = "local_"+local_folders[i][0].substr(0,final_pos); 154 new_caption = local_folders[i][0].substr(final_pos+1); 155 } 156 157 if ( local_folders[i][1] > 0 ) 158 { 159 var nodeLocal = new dNode({ 160 id: "local_" + local_folders[i][0], 161 caption: lang_folder(new_caption) + '<font style=color:red> (</font><span id="local_unseen" style=color:red>' + local_folders[i][1] + '</span><font style=color:red>)</font>', 162 plusSign: local_folders[i][2] 163 }); 164 } 165 else 166 { 167 var nodeLocal = new dNode({ 168 id: "local_" + local_folders[i][0], 169 caption: lang_folder(new_caption), 170 plusSign: local_folders[i][2] 171 }); 172 } 173 treeFolders.add(nodeLocal, node_parent); 174 } 10 175 } 11 176 12 treeS.prototype.make_Window = function(){ 13 _this = this; 14 connector.loadScript("TreeShow"); 15 var title = ':: '+get_lang("Manager your folders and export messages")+' ::'; 16 tree = document.createElement("DIV"); 17 tree.style.visibility = "hidden"; 18 tree.style.position = "absolute"; 19 tree.style.left = "0px"; 20 tree.style.width = "0px"; 21 tree.style.top = "0px"; 22 tree.style.height = "0px"; 23 tree.id = "window_tree"; 24 document.body.appendChild(tree); 25 26 tree.innerHTML = " <b><font color='BLACK' nowrap>"+title+"</font></b>"+ 27 " <br><u></u> "; 28 29 var div_buttons = document.createElement("DIV"); 30 div_buttons.id = "div_buttons"; 31 div_buttons.style.position = "absolute"; 32 div_buttons.style.left = "440px"; 33 div_buttons.style.top = "20px" 34 div_buttons.style.width = "10px"; 35 div_buttons.style.height = "214px"; 36 div_buttons.innerHTML = "<table border='0' cellpading='0' cellspacing='0'>"+ 37 "<tr>"+ 38 "<td><input type='button' value='"+get_lang('New folder')+"' onclick='proxy_mensagens.proxy_create_folder()' "+ (is_ie ? "style=\"width:85px\"": "") +"></td>"+ 39 "</tr>"+ 40 "<tr>"+ 41 "<td><input type='button' value='"+get_lang('Delete folder')+"' onclick='proxy_mensagens.proxy_remove_folder()'></td>"+ 42 "</tr>"+ 43 "<tr>"+ 44 "<td><input type='button' value='"+get_lang('Rename folder')+"' onclick='proxy_mensagens.proxy_rename_folder()' "+ (is_ie ? "style=\"width:108px\"": "") +"></td>"+ 45 "</tr>"+ 46 "<tr>"+ 47 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Chama o proxy_mensagens para que uma pasta local também possa ser exportada 48 "<td><input type='button' value='"+get_lang('Export messages')+"' onclick='proxy_mensagens.proxy_export_all_msg()' "+ (is_ie ? "style=\"width:130px\"": "") +"></td>"+ 49 "</tr>"+ 50 "<tr><td><br><br><br><br><br></td></tr>"+ 51 "<tr><td><input type='button' value='"+get_lang('Close')+"' onclick='ttree.close_win()'></td></tr>"+ 52 "</table>"; 53 tree.appendChild(div_buttons); 54 55 // Conf tree 56 var jo = document.createElement("DIV"); 57 jo.id = "div_tree"; 58 jo.style.position = "absolute"; 59 jo.style.left = "10px"; 60 jo.style.top = "20px"; 61 jo.style.width = "420px"; 62 jo.style.height = "215px"; 63 jo.style.borderStyle = "outset"; 64 jo.style.borderColor = "black"; 65 jo.style.borderWidth = "2px"; 66 jo.style.background = "#F7F7F7"; 67 jo.style.overflow = "auto"; 68 jo.innerHTML = ""; 69 tree.appendChild(jo); 70 71 if(!expresso_offline) 72 ttree.make_tree(folders,"div_tree","folders_tree","ttree.get_folder(\"root\")","","root",false); 73 else 74 ttree.make_tree(folders,"div_tree","folders_tree","ttree.get_folder(\"local_root\")","","local_root",false); 75 _this.showWindow(tree); 76 77 } 78 79 treeS.prototype.get_folder = function(param){ 80 this.FOLDER = param; 81 } 82 83 treeS.prototype.showWindow = function (div){ 84 if(! div) { 85 return; 86 } 87 88 if(! this.arrayW[div.id]) { 89 div.style.width = "580px"; 90 div.style.height = "250px"; 91 div.style.zIndex = "10000"; 92 var title = get_lang("Folder Management"); 93 var wHeight = div.offsetHeight + "px"; 94 var wWidth = div.offsetWidth + "px"; 95 div.style.width = div.offsetWidth - 5; 96 97 win = new dJSWin({ 98 id: 'win_'+div.id, 99 content_id: div.id, 100 width: wWidth, 101 height: wHeight, 102 title_color: '#3978d6', 103 bg_color: '#eee', 104 title: title, 105 title_text_color: 'white', 106 button_x_img: '../phpgwapi/images/winclose.gif', 107 border: true }); 108 109 this.arrayW[div.id] = win; 110 win.draw(); 111 } 112 else { 113 win = this.arrayW[div.id]; 114 } 115 win.open(); 116 } 117 118 treeS.prototype.close_win = function(){ 119 120 this.FOLDER = ""; 121 this.arrayW['window_tree'].close(); 122 123 } 124 125 treeS.prototype.make_tree = function (data,destination,name_tree, click_root, opentomb, selected,menu_folder){ 126 //Somente para teste 127 // alert("data: " + data.length + "\n" + "destination : " + destination + "\n" + "name_tree : " + name_tree + "\n" + "click_root : " + click_root + "\n" + "opentomb : " + opentomb + "\n" + "selected : " + selected + "\n" + "menu_folder : " + menu_folder); 128 129 if(Element('dftree_' + name_tree)){ 130 Element('dftree_' + name_tree).innerHTML = ''; 131 } 132 133 folders_tree = new dFTree({name: name_tree}); 134 if (!expresso_offline) { 135 if(click_root != ""){ 136 var n_root = new dNode({id:'root', caption:get_lang("My Folders"), onClick:click_root}); 137 }else{ 138 var n_root = new dNode({id:'root', caption:get_lang("My Folders")}); 139 } 140 folders_tree.add(n_root,'root'); //Places the root; second argument can be anything. 141 142 if(data.length == 0){ 143 alert("sem dados"); 144 return false; 145 } 146 147 for (var i=0; i<data.length; i++){ 148 if(menu_folder){ 149 if (data[i].folder_unseen > 0) 150 var nn = new dNode({id:data[i].folder_id, caption:lang_folder(data[i].folder_name) + '<font style=color:red> (</font><span id="dftree_'+data[i].folder_id+'_unseen" style=color:red>'+data[i].folder_unseen+'</span><font style=color:red>)</font>', onClick:"change_folder('"+data[i].folder_id+"','"+data[i].folder_name+"')", plusSign:data[i].folder_hasChildren}); 151 else 152 var nn = new dNode({id:data[i].folder_id, caption:lang_folder(data[i].folder_name), onClick:"change_folder('"+data[i].folder_id+"','"+data[i].folder_name+"')", plusSign:data[i].folder_hasChildren}); 153 }else{ 154 var nn = new dNode({id:data[i].folder_id, caption:lang_folder(data[i].folder_name), plusSign:data[i].folder_hasChildren}); 155 } 156 157 if (data[i].folder_parent == '') 158 data[i].folder_parent = 'root'; 159 else if (data[i].folder_parent == 'user'){ 160 if (tree_folders.getNodeById('user')){ 161 var n_root_shared_folders = new dNode({id:'user', caption:get_lang("Shared Folders"), plusSign:true}); 162 folders_tree.add(n_root_shared_folders,'root'); 163 } 164 } 165 166 // Foi preciso fazer esse tratamento porque a api (imap_getmailboxes) do PHP retorna uma informação incorreta em algumas ocasiões 167 // a função imap_getmailboxes não retorna o atributo 32 (has_children) quando tem pastas seguindo o seguinte padrão: 168 // prefixo 169 // subPasta1 170 // subPasta2 171 // prefixo-pasta2 (tudo devido a este underscore aqui) 172 // Caso seja criada pastas dessa forma, a pasta "prefixo", fica com a flag folder_hasChildren como false 173 // sendo assim não aparece o sinal de "mais" na árvore de pastas para poder expandir 174 // Olhar a chamada para a função imap_getmailboxes() dentro do método expressoMail1_2.imap_functions.get_folders_list() 175 // Ticket #1548 176 if(data[i].folder_parent != 'root') { 177 var node_parent = folders_tree.getNodeById(data[i].folder_parent); 178 if(typeof node_parent != 'undefined'){ 179 node_parent.plusSign = true; 180 folders_tree.alter(node_parent); 181 182 } 183 } 184 folders_tree.add(nn,data[i].folder_parent); 185 186 } 187 } 188 //Pastas locais 189 if (preferences.use_local_messages == 1) { 190 var n_root_local = new dNode({ 191 id: 'local_root', 192 caption: get_lang("local folders"), 193 plusSign: true, 194 onClick:"ttree.get_folder('local_root')" 195 }); 196 folders_tree.add(n_root_local, 'root'); 197 198 var local_folders = expresso_local_messages.list_local_folders(); 199 for (var i in local_folders) { //Coloca as pastas locais. 200 201 var node_parent = "local_root"; 202 var new_caption = local_folders[i][0]; 203 if(local_folders[i][0].indexOf("/")!="-1") { 204 final_pos = local_folders[i][0].lastIndexOf("/"); 205 node_parent = "local_"+local_folders[i][0].substr(0,final_pos); 206 new_caption = local_folders[i][0].substr(final_pos+1); 207 } 208 209 if (local_folders[i][1] > 0) 210 var nodeLocal = new dNode({ 211 id: "local_" + local_folders[i][0], 212 caption: lang_folder(new_caption) + '<font style=color:red> (</font><span id="local_unseen" style=color:red>' + local_folders[i][1] + '</span><font style=color:red>)</font>', 213 plusSign: local_folders[i][2] 214 }); 215 else 216 var nodeLocal = new dNode({ 217 id: "local_" + local_folders[i][0], 218 caption: lang_folder(new_caption), 219 plusSign: local_folders[i][2] 220 }); 221 folders_tree.add(nodeLocal, node_parent); 222 } 223 } 224 folders_tree.draw(Element(destination)); 225 if(!expresso_offline) 226 n_root.changeState(); 227 else 228 n_root_local.changeState(); 229 if(opentomb != ""){folders_tree.openTo(opentomb);} 230 if(selected != "" && folders_tree.getNodeById(selected)){folders_tree.getNodeById(selected)._select();} 231 232 } 177 treeFolders.draw(elementHtml); 178 treeFolders.getNodeById("root")._select(); 179 root.changeState(); 180 } 233 181 234 182 /* Build the Object */ 235 var ttree; 236 ttree = new treeS(); 183 var ttree = new treeS();
Note: See TracChangeset
for help on using the changeset viewer.