/**************************************************************************\ Início \**************************************************************************/ function Tree_Box(){ this.name_folder = ""; this.name_func = ""; connector.loadScript("TreeS"); } Tree_Box.prototype.update_folder = function(expand_local_root){ var handler_update_folders = function(data){ folders = data; // update element dftree_folders_tree; ttree.make_tree(data,"div_tree","folders_tree","ttree.get_folder(\"root\")",ttreeBox.name_folder,ttreeBox.name_folder,false); // update element dftree_tree_folders; if(Element('content_folders')){Element('content_folders').innerHTML = "";} draw_tree_folders(folders); // update element dftree_wfolders_tree; if (Element('dftree_wfolders_tree')){ Element('dftree_wfolders_tree').innerHTML = ''; ttree.make_tree(data,"wfolders_content_tree","wfolders_tree","","","",false); } ttree.FOLDER = ttreeBox.name_folder; if (tree_folders.getNodeById(ttree.FOLDER)) tree_folders.getNodeById(ttree.FOLDER)._select(); if(expand_local_root) tree_folders.getNodeById('local_root').changeState(); /* if (tree_folders.getNodeById(get_current_folder())) tree_folders.getNodeById(get_current_folder())._select(); */ } if(!expresso_offline) cExecute ("$this.imap_functions.get_folders_list&folder="+current_folder, handler_update_folders); else handler_update_folders(''); } Tree_Box.prototype.verify_children = function(param){ var aux; var aux1; var cont = parseInt(0); for(var i=0 ; i < folders.length; i++){ aux = folders[i].folder_id.split(cyrus_delimiter); aux.pop(); for(var j=0; j < aux.length; j++){ if(j == 0) aux1 = aux[j]; else aux1 += cyrus_delimiter + aux[j]; } if( aux1 == param){ cont++; } } if( cont == 0){ ttreeBox.del_past(param); }else{ alert(get_lang("Delete your sub-folders first")); } cont = parseInt(0); } Tree_Box.prototype.verify = function(exp) { // IE does not understand accents in regex! that \xNN are the hex codes for the accented characters! var reTipo = /^[\w\xda\xc1\xc9\xcd\xd3\xdd\xe1\xe9\xed\xfa\xfd\xf3\xc0\xc8\xcc\xd2\xe0\xe8\xec\xf2\xf9\xd9\xc3\xd1\xd5\xe3\xf1\xf5\xc2\xca\xce\xd4\xe2\xea\xee\xf4\xdb\xfb\xc7\xe7\xc4\xd6\xe4\xf6\xfc\xcb\xcf\xeb\xef\xff \-_+=]*$/i; if(exp.search(reTipo) == -1) return false; else return true; } // Função para verificar o nome da caixa; Tree_Box.prototype.verify_names = function(name_folder){ var arr_nm_folder = new Array("INBOX",trashfolder,draftsfolder,sentfolder,spamfolder); for(var i=0 ; i < arr_nm_folder.length; i++){ if(name_folder == arr_nm_folder[i]){ ttree.FOLDER = ""; return true; } } return false; } // Valida os nomes das pastas Tree_Box.prototype.validate = function(func){ var aux = ttree.FOLDER.split(cyrus_delimiter); var aux2; if(ttree.FOLDER != ""){ if(aux.length > 1) { aux2 = aux[1]; } else { aux2 = aux[0]; } if(func == "rename" && this.verify_names(aux2)){ alert(get_lang("It's not possible rename the folder: ") + lang_folder(aux2) + '.'); return false; }else{ if(func == "newpast"){ var button = prompt(get_lang('Enter the name of the new folder:'),""); if (button.indexOf("local_") != -1 || button.toUpperCase() == "INBOX") { alert(get_lang("cannot create folder. try other folder name")); return false; //Não posso criar pastas contendo a string local_ } if(button.match(/[\/\\\!\@\#\$\%\&\*\(\)]/gi)){ alert(get_lang("cannot create folder. try other folder name")); return false; } if(trim(button) == "" || trim(button) == null){ return false; }else{ ttreeBox.new_past(button); } } if(func == "rename"){ if(ttree.FOLDER == "root"){ alert(get_lang("It's not possible rename this folder!")); return false; } if(ttree.FOLDER == get_current_folder()){ alert(get_lang("It's not possible rename this folder, because it is being used in the moment!")); return false; } var button1 = prompt(get_lang("Enter a name for the box"), ""); if (button1.indexOf("local_") != -1 || button1.toUpperCase() == "INBOX") { alert(get_lang("cannot create folder. try other folder name")); return false; //Não posso criar pastas contendo a string local_ } if(button1.match(/[\/\\\!\@\#\$\%\&\*\(\)]/gi)){ alert(get_lang("It's not possible rename this folder. try other folder name")); return false; } if(trim(button1) == "" || trim(button1) == null){ return false; }else{ ttreeBox.rename(button1); } } } }else{ alert(get_lang("Select a folder!")); return false; } } // Para criar a nova pasta; Tree_Box.prototype.new_past = function(newp){ var aux = ttree.FOLDER.split(cyrus_delimiter); var delimExp = new RegExp('\\'+cyrus_delimiter,"g"); newp = newp.replace(delimExp,'_'); var newp2 = ""; if( aux[0] == "root"){ if(!this.verify(newp)){ alert(get_lang("Type without spaces, dots or special characters!")); newp = ""; return false; }else{ newp2 = newp; newp = "INBOX" + cyrus_delimiter + newp; } }else{ if(!this.verify(newp)){ alert(get_lang("Type without spaces, dots or special characters!")); newp = ""; return false; }else{ newp2 = newp; newp = ttree.FOLDER + cyrus_delimiter + newp; } } if(newp != ""){ var handler_return = function(data){ if(data != "Ok"){ alert(get_lang(data)); }else{ ttreeBox.name_folder = "root"; //or use var newpast this.name_func = "newpast"; connector.purgeCache(); ttreeBox.update_folder(); } } var args = "$this.imap_functions.create_mailbox"; var params = "newp="+newp; cExecute(args,handler_return,params); } } // Funcao para renomear a pasta; Tree_Box.prototype.rename = function(rename){ var old_box = ttree.FOLDER; var aux = old_box.split(cyrus_delimiter); var rename_new = ""; if(old_box == "root"){ alert(get_lang("Select a folder!")); return false; } if(aux.length == 1){ alert(get_lang("It's not possible rename the folder: ") + aux[0] + '.'); rename = ""; return false; }else{ if(this.verify_names(aux[1])){ alert(get_lang("It's not possible rename the folder: ") + aux[1] + '.'); rename = ""; return false; }else{ if(!this.verify(rename)){ alert(get_lang("Type without spaces, dots or special characters!")); rename = ""; return false; }else{ aux.pop(); aux.push(rename); for(var i=0; i< aux.length; i++){ if( i == 0) rename_new = aux[i]; else rename_new += cyrus_delimiter + aux[i]; } } } } if(rename != ""){ var handler_return = function(data) { connector.purgeCache(); ttreeBox.name_folder = "root"; ttreeBox.update_folder(); } var args = "$this.imap_functions.ren_mailbox"; var params = "rename="+rename_new+"¤t="+old_box; cExecute(args,handler_return,params); } } // Tree_Box.prototype.export_all_msg = function(){ if(ttree.FOLDER == "root"){return false;} var nm_bx = ttree.FOLDER.split(cyrus_delimiter); var name_f = nm_bx[nm_bx.length -1]; var hand_export = function(data){ if(!data){ write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.')) }else if(data["empty_folder"]){ write_msg(get_lang("The selected folder is empty.")); alert(get_lang("The selected folder is empty.")); }else download_attachments(null, null, data, null,null, name_f +'.zip'); } cExecute("$this.exporteml.export_all",hand_export,"folder="+ttree.FOLDER); write_msg(get_lang('You must wait while the messages will be exported...')); } // Função para deletar a pasta; Tree_Box.prototype.del = function(){ var folder_name = ttree.FOLDER; var aux = ttree.FOLDER.split(cyrus_delimiter); if(aux[0] == "root" || ttree.FOLDER == ""){ alert(get_lang("Select a folder!")); return false; } if(aux.length == 1){ alert(get_lang("It's not possible delete the folder: ") + get_lang("Inbox") + '.'); return false; }else{ if(this.verify_names(aux[1]) && typeof(aux[2]) == 'undefined'){ alert(get_lang("It's not possible delete the folder: ") + get_lang(special_folders[aux[1]]) + '.'); return false; }else{ this.verify_children(folder_name); } } } Tree_Box.prototype.del_past = function(param){ var aux = param.split(cyrus_delimiter); var aux1 = aux.pop(); if(ttree.FOLDER == get_current_folder()){ alert(get_lang("It's not possible delete this folder, because it is being used in the moment!")); return false; } if(confirm(get_lang("Do you wish to exclude the folder ") + aux1+ "?")){ var handler_return = function(data) { if(data != "Ok") { alert(data); }else{ connector.purgeCache(); ttreeBox.name_folder = "root"; ttreeBox.update_folder(); write_msg(get_lang("The folder %1 was successfully removed", aux1)); } } var args = "$this.imap_functions.delete_mailbox"; var params = "del_past="+param; cExecute(args,handler_return,params); } } /* - Build Object -*/ var ttreeBox; ttreeBox = new Tree_Box();