Ignore:
Timestamp:
09/13/12 16:28:32 (12 years ago)
Author:
thiago
Message:

Ticket #3088 - Listagem das arvore de pastas, deleção, renomear, criar, etc.

Location:
sandbox/2.5.0-expresso1
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • sandbox/2.5.0-expresso1/expressoMail1_2/js/mail_archiver.js

    r7195 r7202  
    549549 
    550550/** 
     551 *move Folder 
     552 * 
     553 *@author Thiago Rossetto Afonso [thiago@prognus.com.br] 
     554 * 
     555 *@param folder_to_move Current folder that will be moved to another folder 
     556 *@param folder_to Folter that will receive the new folder 
     557 */ 
     558MailArchiver.prototype.moveFolder = function(folter_to_move, folter_to){ 
     559    try{ 
     560        connector.showProgressBar(); 
     561        ArchiveServices.moveFolder(expresso_mail_archive.getFoldersListOperationOK, expresso_mail_archive.getFoldersListOperationFailure, expresso_mail_archive.session.id, folter_to, folter_to_move); 
     562    }catch(e){ 
     563        expresso_mail_archive.getFaultInfo(); 
     564    } 
     565     
     566} 
     567MailArchiver.prototype.getArchiveOperationOK = function(message){ 
     568    document.write("Sucesso, sucesso, sucesso!!!"); 
     569} 
     570MailArchiver.prototype.getArchiveOperationFailure = function(error_message){ 
     571    alert("Error: " + error_message.getReturn()); 
     572} 
     573 
     574 
     575 
     576 
     577/** 
    551578 *Unarchieve Message 
    552579 * 
     
    10151042    //Internal variable used to map all XML data return from WS invokated 
    10161043    var lfolders = new Array(); 
     1044 
    10171045     
    10181046    //Mapping XML data to a handler data structure 
     
    10601088            expresso_mail_archive.drawFolderTree(); 
    10611089        } 
     1090    } else { 
     1091        expresso_mail_archive.folders = 0; 
    10621092    } 
    10631093    connector.hideProgressBar(); 
     
    12041234    draw_tree_local_folders(); 
    12051235    expresso_mail_archive.drawdata.treeObject._drawn = true; 
    1206     ttreeBox.update_folder();     
     1236    //ttreeBox.update_folder();     
    12071237} 
    12081238 
  • sandbox/2.5.0-expresso1/expressoMail1_2/js/main.js

    r7185 r7202  
    11// Tempo do auto refresh (em milisegundos) 
    22var time_refresh = 300000; 
     3//local_messages_inbox 
     4expresso_mail_archive.createFolder(expresso_mail_archive.sessionid, "Inbox", "testando"); 
    35 
    46//MAILARCHIVER-01 
     
    1517var autosave_time = 40000; 
    1618var results_search_messages = "";  
    17 var cabecalho = '<h4>ExpressoLivre - ExpressoMail</h4>';  
    18  
     19var cabecalho = '<h4>ExpressoLivre - ExpressoMail</h4>'; 
    1920var auxNotificationCriteriaVetor = []; 
    2021var auxNotification; 
     
    46734674} 
    46744675 
     4676function create_new_local_folder(parentFolderId, name){ 
     4677 
     4678    if(typeof(parentFolderId) == "string"){ 
     4679        parentFolderId = parentFolderId.split("_"); 
     4680        var parentName = parentFolderId[2]; 
     4681    } 
     4682     
     4683 
     4684    expresso_mail_archive.createFolder(parentName, name); 
     4685 
     4686} 
     4687 
    46754688function create_new_folder(name_folder, base_path){ 
    46764689        //Limit reached folders 
  • sandbox/2.5.0-expresso1/prototype/modules/mail/js/foldertree.js

    r7154 r7202  
    44var cp_tree1; 
    55var cp_tree2; 
    6 //Marcosw início 
     6//Marcosw início 
    77var cp_tree3; 
    88//Marcosw fim 
    99function unorphanize(root, element) { 
    10         var ok = false; 
    11         var f = 0; 
    12         for (var i=0; i<root.length; i++) { 
    13                 if (root[i].id == element.parentFolder) { 
    14                         element.children = new Array();  
    15                         root[i].children.push(element); 
    16                         return true; 
    17                 } else if (ok = unorphanize(root[i].children, element)) { 
    18                         break; 
    19                 } 
    20         } 
    21         return ok; 
     10    var ok = false; 
     11    var f = 0; 
     12    for (var i=0; i<root.length; i++) { 
     13        if (root[i].id == element.parentFolder) { 
     14            element.children = new Array();  
     15            root[i].children.push(element); 
     16            return true; 
     17        } else if (ok = unorphanize(root[i].children, element)) { 
     18            break; 
     19        } 
     20    } 
     21    return ok; 
    2222} 
    2323 
     24function mount_children_localfolders_list(folder){  
     25    folder.children = new Array(); 
     26    folder.id_search = folder.id; 
     27    folder.id = 'local_messages_'+folder.id, 
     28    folder.commonName =  folder.name, 
     29    folder.parentId = folder.parentid, 
     30    folder.type = 'localFolder', 
     31    folder.name = folder.id, 
     32    folder.messageCount = { 
     33                             total: folder.messages, 
     34                             unseen: folder.unseen 
     35                          } 
     36 
     37    if(folder.haschild){ 
     38        expresso_mail_archive.getFoldersList(folder.id_search); 
     39        folder.children = expresso_mail_archive.folders; 
     40 
     41        for(var i = 0; i < folder.children.length; i++){ 
     42            mount_children_localfolders_list(folder.children[i]); 
     43        } 
     44 
     45    } 
     46} 
     47 
    2448function count_unseen_children(folder){ 
    25         if(folder.children.length){ 
    26                 for(var i=0; i< folder.children.length; i++){ 
    27                         if(folder.children[i].children.length) 
    28                                 folder.children[i]['children_unseen'] = (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + count_unseen_children(folder.children[i]); 
    29                          
    30                         folder['children_unseen'] = (folder['children_unseen'] ? folder['children_unseen'] : 0)+ (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + parseInt(folder.children[i].messageCount.unseen);                         
    31                 } 
    32                 return folder['children_unseen']; 
    33         }else{ 
    34                 return parseInt(folder.messageCount.unseen); 
    35         } 
     49 
     50    if(folder.children.length){ 
     51        for(var i=0; i< folder.children.length; i++){ 
     52             
     53                if(folder.children[i].children.length) 
     54                folder.children[i]['children_unseen'] = (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + count_unseen_children(folder.children[i]);     
     55            
     56            folder['children_unseen'] = (folder['children_unseen'] ? folder['children_unseen'] : 0)+ (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + parseInt(folder.children[i].messageCount.unseen);             
     57        } 
     58        return folder['children_unseen']; 
     59    } else { 
     60        return parseInt(folder.messageCount.unseen); 
     61    } 
    3662} 
    3763 
    3864function valid_tabs(children_of_this_folder, folder_to_move){ 
    39         var borders_open = $("#border_tr").children(); 
    40  
    41         var error = false; 
    42         for(var i = 1; i <= borders_open.length -2; i ++){ 
    43                 //VERIFICA A CADA FILHO DA PASTA SE ESTA eventNSAGEM E DESTA PASTA 
    44                 $.each(children_of_this_folder, function(index, value){ 
    45                         if($(children_of_this_folder[index]).attr('id') == openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")]){ 
    46                                 error = true; 
    47                                 write_msg(get_lang("One or more messages from any sub-folder are open")); 
    48                                 return error; 
    49                                  
    50                         } 
    51                 }); 
    52                 if(error){ 
    53                         return error; 
    54                 } 
    55                 //VERIFICA SE EXISTE NA PASTA A SER MOVIDA 
    56                 if(openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")] == folder_to_move){ 
    57                         error = true; 
    58                         write_msg(get_lang("One or more messages from this folder are open")); 
    59                         return error; 
    60                 } 
    61         } 
     65    var borders_open = $("#border_tr").children(); 
     66 
     67    var error = false; 
     68    for(var i = 1; i <= borders_open.length -2; i ++){ 
     69        //VERIFICA A CADA FILHO DA PASTA SE ESTA eventNSAGEM E DESTA PASTA 
     70        $.each(children_of_this_folder, function(index, value){ 
     71            if($(children_of_this_folder[index]).attr('id') == openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")]){ 
     72                error = true; 
     73                write_msg(get_lang("One or more messages from any sub-folder are open")); 
     74                return error; 
     75                 
     76            } 
     77        }); 
     78        if(error){ 
     79            return error; 
     80        } 
     81        //VERIFICA SE EXISTE NA PASTA A SER MOVIDA 
     82        if(openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")] == folder_to_move){ 
     83            error = true; 
     84            write_msg(get_lang("One or more messages from this folder are open")); 
     85            return error; 
     86        } 
     87    } 
    6288} 
    6389 
    6490function draw_new_tree_folder(callback){ 
    65         var folders = DataLayer.get("folder", true);     
    66  
    67         if(expresso_mail_archive.folders){      //MailArchive 
    68             //pega pastas locais do mailarchiver e insere no array de pastas 
    69             var local_folders = new Array(); 
    70             for (var i=0; i<expresso_mail_archive.folders.length; i++) { 
    71                 var local_folder = { 
    72                     id: 'local_messages_'+expresso_mail_archive.folders[i].id, 
    73                     commonName: expresso_mail_archive.folders[i].name, 
    74                     messageCount: { 
    75                         total: expresso_mail_archive.folders[i].messages, 
    76                         unseen: expresso_mail_archive.folders[i].unseen 
    77                     } 
    78                 }; 
    79                 folders.push(local_folder); 
    80             } 
    81         } 
    82  
    83     //var local_folders = { id: 'local_messages', commonName: 'Pasta Local', messageCount: {total:200, unseen:20} }; 
    84     //var local_folders = expresso_mail_archive.folders; 
    85  
    86     //folders.push(local_folders); 
    87  //    folders[24] = new Array(); 
    88         // folders[24].id = 'local_messages'; 
    89  //    folders[24].commonName = 'Pasta Local'; 
    90  //    //folders[20].parentFolder = 'root'; 
    91  //    folders[24].messageCount = { total: 200, unseen: 20}; 
    92  
    93  //    console.log(folders); 
    94  //    console.log(folders.length); 
    95  
    96         if(!selected){ 
    97                 selected = "INBOX"; 
    98         } 
    99         /* 
    100         if( folders ) 
    101         { 
    102             folders = $.map( folders, function( folder ){ 
    103                   return { 
    104                     id: folder.folder_id, 
    105                     commonName: folder.folder_name, 
    106                     parentFolder: folder.folder_parent === "root" ? "" : folder.folder_parent, 
    107                     messageCount: { total : '', unseen : '0' } 
    108                   }; 
    109             }); 
    110         } 
    111         else 
    112             folders = DataLayer.get("folder", true); 
    113         */ 
    114         var tree1 = new Array(); 
    115         var tree2 = new Array(); 
    116         var tree3 = new Array(); 
    117         for (var i=0; i<folders.length; i++) { 
    118                 if (/^INBOX/.test(folders[i].id)) { 
    119                         if (!unorphanize(tree1, folders[i])) { 
    120                                 folders[i].children = new Array(); 
    121                                 tree1.push(folders[i]); 
    122                         } 
    123                 } 
    124                 else if (/^user/.test(folders[i].id)) { 
    125                         if (!unorphanize(tree2, folders[i])) { 
    126                                 folders[i].children = new Array(); 
    127                                 tree2.push(folders[i]); 
    128                         } 
    129                 } 
    130                 else if (/^local_messages/.test(folders[i].id)) { 
    131                         if (!unorphanize(tree3, folders[i])) { 
    132                                 folders[i].children = new Array(); 
    133                                 tree3.push(folders[i]); 
    134                         } 
    135                 } 
    136         } 
    137          
    138         for(var i =0; i<tree1.length; i++){ 
    139                 count_unseen_children(tree1[i]); 
    140         } 
    141         for(var i =0; i<tree2.length; i++){ 
    142                 count_unseen_children(tree2[i]); 
    143         } 
    144         for(var i =0; i<tree3.length; i++){ 
    145                 count_unseen_children(tree3[i]); 
    146         } 
    147         cp_tree1 = tree1; 
    148         cp_tree2 = tree2; 
    149         //Marcosw inicio 
    150         cp_tree3 = tree3; 
    151         //Marcosw fim 
    152         var shared_acls = {}; 
    153  
    154         $.each(cp_tree2, function(index, value){ 
    155                 shared_acls[value.id] = value.acl_share; 
    156         }); 
    157  
    158         $("#content_folders").removeClass("menu-degrade").parent().removeClass("image-menu"); 
    159         var html = DataLayer.render('../prototype/modules/mail/templates/detailedfoldertree.ejs', {folders: [tree1, tree2, tree3]}); 
    160         var folders_html = $("#content_folders").html(html).find(".mainfoldertree").treeview({ 
    161                         persist: "cookie", 
    162                         animated: "fast" 
    163         }).find(".folder").unbind("click").click(function(event){ 
    164                  
    165                 // MUDANÇA DE PASTAS! 
    166                 var target = $(this);    
    167                  
    168                 if($(".folders-loading").length) 
    169                         return; 
    170                  
    171                 if($(event.target).parent().is(".float-menu")) 
    172                         return; 
    173                          
    174                 if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable-hitarea, .lastExpandable-hitarea, .treeview ,.folder_unseen,.ui-icon, .float-menu, .new_folder, .folders-loading, .head_folder, .shared-folders') ) 
    175                         return; 
    176                  
    177                 if( target.parent().find(".new_folder").length) 
    178                         return; 
    179                          
    180                 if( !target.attr('id') ) 
    181                         target = target.parent(); 
    182                 if (target[0] == $(".mainfoldertree")[0]) return; 
    183                 var uiId = target.attr('id'); 
    184                 var child = target.find('.folder'); 
    185                    
    186                 if(!target.is('.mainfoldertree > .expandable-hitarea, .mainfoldertree > .collapsable-hitarea')){ 
    187                         $('.filetree span.folder.selected').removeClass('selected'); 
    188                         $(target).children('.folder').addClass('selected'); 
    189                 } 
    190                 $(this).addClass("folders-loading"); 
    191                 selected = target.attr('id'); 
    192                 change_folder(target.attr('id'), child.attr('title'));   
    193  
    194                 $.ajax({ 
    195                           url : "controller.php?"+ $.param( { action: "$this.imap_functions.get_folders_list", folder: target.attr('id') } ), 
    196                           success : function(data){ 
    197                                   data = connector.unserialize(data); 
    198  
    199                                   if(data) 
    200                                     build_quota(data); 
    201                           } 
    202                 }); 
    203  
    204         }).filter('.followup-messages').click(function(event, ui){ 
    205                 search_emails("UNDELETED KEYWORD \"$Followupflagged\""); 
    206         }).end().end(); 
    207          
    208         folders_html.find('[id="'+selected+'"]').children().addClass("selected"); 
    209         $(".folder").not(".head_folder").not(".shared-folders").parent().find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").draggable({ 
    210                 // DRAG DE PASTAS 
    211                 start : function(){ 
    212                         $(this).css("color", "gray"); 
    213                 }, 
    214                 stop : function(){ 
    215                         $(this).css("color", ""); 
    216                 }, 
    217                 revert: "invalid", 
    218                 helper: function(event){ 
    219                         if($.trim(($(this).text().split("["))[0]).length > 18) 
    220                                 return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]).substring(0,18) + "...", type: "folder"})); 
    221                         return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]), type: "folder"})); 
    222                 }, 
    223                 delay: 150, 
    224                 refreshPositions: true, 
    225                 zIndex : 2700, 
    226                 //scroll: true,  
    227                 //scrollSensitivity: 100, 
    228                 //scrollSpeed: 100, 
    229                 containment: "#divAppbox"  
    230         }).end().droppable({ 
    231                 //DROP DE PASTAS 
    232                 over : function(a, b){ 
    233                         //INICIO : SE A PASTA CONTER FILHAS EXPANDE  
    234                         over = $(this); 
    235                         $(this).addClass("folder-over"); 
    236                         if(($(this)[0] != $(this).parent().find(".head_folder")[0])) 
    237                                 if($(this).prev()[0]) 
    238                                         if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){ 
    239                                                 setTimeout(function(){ 
    240                                                         if(over.hasClass("folder-over")) 
    241                                                                 over.prev().trigger("click"); 
    242                                                 }, 500); 
    243                                                  
    244                                         } 
    245                         //FIM : SE A PASTA CONTER FILHAS EXPANDE 
    246                          
    247                         //SETA BORDA EM VOLTA DA PASTA 
    248                 }, 
    249                 out : function(){ 
    250                         //RETIRA BORDA EM VOLTA DA PASTA 
    251                         $(this).removeClass("folder-over"); 
    252                 }, 
    253                 drop : function(event, ui){ 
    254                         $(this).removeClass("folder-over"); 
    255                         if($(this).parent().attr('id') == undefined){ 
    256                                 var folder_to = 'INBOX'; 
    257                                 var to_folder_title = get_lang("Inbox"); 
    258                         }else{ 
    259                                 var folder_to = $(this).parent().attr('id'); 
    260                                 var to_folder_title = $(this).attr('title'); 
    261                         }                
    262                         var folder_to_move = ui.draggable.parent().attr('id'); 
    263                         var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 
    264                         // eventnsagens : SE O DROP VIER DA LISTA DE eventNSAGENS : 
    265                         if(folder_to_move == "tbody_box"){ 
    266                                 move_msgs2(get_current_folder(), 'selected', 0, folder_to, to_folder_title,true); 
    267                                 return refresh(); 
    268                         } 
    269                         //SE FOR DE UMA PESQUISA RAPIDA 
    270                         else if(ui.draggable.parents('[id^="content_id_"]')[0]){ 
    271                                 move_search_msgs("content_id_"+border_id, folder_to, to_folder_title); 
    272                                 return refresh(); 
    273                         } 
    274                         // eventnsagens : SE O DROP VIER DE UMA ABA ABERTA 
    275                         else if(folder_to_move == "border_tr"){ 
    276                                 var id_msg = border_id.split("_")[0]; 
    277                                 folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 
    278                                 alternate_border(border_id); 
    279                                 move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); 
    280                                 return refresh(); 
    281                         } 
    282                         // SE O DROP VIER DA LISTA DE PASTAS 
    283                         else{ 
    284                                 var folder_to_exist = folder_to_move.split(cyrus_delimiter);     
    285                                 folder_to_exist = folder_to+cyrus_delimiter+folder_to_exist[folder_to_exist.length-1]; 
    286                                  
    287                                 //VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS 
    288  
    289                                 if(valid_tabs(ui.draggable.parent().find("li"), folder_to_move)){ 
    290                                         return; 
    291                                 } 
    292                                 //FIM : VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS; 
    293                                  
    294                                 // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA PARA O eventSMO LOCAL 
    295                                 if(folder_to_exist == folder_to_move){ 
    296                                         return write_msg(get_lang("Thie folder is already in this place")); 
    297                                 } 
    298                                  
    299                                 // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA ABERTA NO momentO 
    300                                 if(folder_to_move == get_current_folder()){ 
    301                                         return write_msg(get_lang("It's not possible move this folder, because it is being used in the moment!")); 
    302                                 } 
    303                                  
    304                                 // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA FILHA DA PASTA ABERTA NO momentO 
    305                                 if(ui.draggable.parent().find(".selected")[0]){ 
    306                                         return write_msg(get_lang("It's not possible move this folder, because its subfolder is being used in the moment!")); 
    307                                 } 
    308                                  
    309                                 // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA PAI PARA DENTRO DE UMA FILHA 
    310                                 if(ui.draggable.parent().find('[id="'+folder_to+'"]')[0]){ 
    311                                         return write_msg(get_lang("It's not possible to move this folder to its subfolders!")); 
    312                                 }                                        
    313                                  
    314                                 if($('[id="'+folder_to_exist+'"]').length){ 
    315                                         return write_msg(get_lang("Can not move this folder to this location, because the target has already a folder with this name")); 
    316                                 } 
    317                                  
    318                                 $(this).addClass("folders-loading"); 
    319                                  
    320                                 $.ajax({ 
    321                                         url : "controller.php?"+ $.param( { action: "$this.imap_functions.move_folder", folder_to_move: folder_to_move, folder_to: folder_to } ), 
    322                                         success : function(data){ 
    323                                                 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    324                                                 data = connector.unserialize(data); 
    325                                                 if(data == "Permission denied"){ 
    326                                                         write_msg(get_lang("Permission denied")); 
    327                                                 }else if(data){ 
    328                                                         write_msg(get_lang("The folder was successfully moved")); 
    329                                                 } 
    330                                                 else{ 
    331                                                         write_msg(get_lang("ERROR moving your folder.")); 
    332                                                 } 
    333                                         } 
    334                                 }); 
    335                         } 
    336                 } 
    337         }); 
    338         $(".folder").not(".shared-folders").parent().find(".folder").hover( 
    339                 function(){ 
    340                         //CASO A LI NÃO TENHA UM eventNU FLUTUANTE AINDA, O eventNU É ADICIONADO! 
    341                         if(!$(this).children(":last").hasClass("float-menu") && !$(this).children(":last").hasClass("new_folder")){ 
    342                                 var folder_ = $(this); 
    343                                 var folder_name; 
    344                                 var shared = { 
    345                                         head : false, 
    346                                         valid : false 
    347                                 }; 
    348                                 if(folder_.parent().attr('id')){ 
    349                                         folder_name = folder_.parent().attr('id').split(cyrus_delimiter); 
    350                                         folder_name = folder_name[folder_name.length -1]; 
    351                                         shared.valid = folder_.parent().attr('id').search("user/") == 0 ? true : false; 
    352                                 }else 
    353                                         folder_name = "Root"; 
    354                                  
    355                                 if(shared.valid){ 
    356                                         shared.head = folder_.parent().attr('id').split(cyrus_delimiter).length == 2 ?  true : false; 
    357                                         var folder_name_parts = folder_.parent().attr('id').split(cyrus_delimiter); 
    358                                         var acls = shared_acls[folder_name_parts[0]+cyrus_delimiter+folder_name_parts[1]]; 
    359  
    360                                 } 
    361  
    362                                 html = DataLayer.render("../prototype/modules/mail/templates/float_folder_menu.ejs", {name_folder : folder_name, flag : shared, acl : acls});                                    
    363                                         //FUNÇÃO DO eventNU FLUTUANTE EDITAR < BEGIN 
    364                                 var esc = false; 
    365                                 $(folder_).append(html).find(".float-menu-edit").click(function(){ 
    366                                         var folder_id = $(this).parents(".closed:first").attr('id'); 
    367                                         var name = $.trim($(this).parents(".closed:first").find("span:first").text().split("[")[0]); 
    368                                         if($(this).parents(".closed:first").find("span:first").hasClass("selected")) 
    369                                                 return write_msg(get_lang("It's not possible rename this folder, because it is being used in the moment!")); 
    370                                         if($(this).parents(".closed:first").find(".selected").length) 
    371                                                 return write_msg(get_lang("It's not possible rename this folder, because its subfolder is being used in the moment!"));  
    372                                         if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
    373                                                 return; 
    374                                         $(this).parents(".closed:first").find("span:first").empty().append("<input class='new_folder folder' type='text' maxlength='100'></input>"); 
    375                                         $(".new_folder").focus().keydown(function(event){ 
    376                                                 event.stopPropagation(); 
    377                                                 if(event.keyCode == 13){ 
    378                                                         if($(this).val() != ""){ 
    379                                                                 if($(this).val().match(/[\/\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi)){ 
    380                                                                         return write_msg(get_lang("cannot create folder. try other folder name")); 
    381                                                                 } 
    382                                                                 var new_name = folder_id.replace(/[a-zA-Z0-9á-úÁ-Ú^\s_-]+$/, $(this).val()); 
    383                                                                 if($('[id="'+new_name+'"]').length){ 
    384                                                                         $(".folders-loading").removeClass("folders-loading"); 
    385                                                                         write_msg(get_lang("Mailbox already exists")); 
    386                                                                         return draw_new_tree_folder(); 
    387                                                                 } 
    388                                                                 $(".new_folder").parent().addClass("folders-loading"); 
    389                                                                 $.ajax({ 
    390                                                                         url : "controller.php?action=$this.imap_functions.ren_mailbox", 
    391                                                                         type : "POST", 
    392                                                                         data : "current="+folder_id+"&rename="+new_name, 
    393                                                                         success : function(data){ 
    394                                                                                 data = connector.unserialize(data); 
    395                                                                                 if(data == "Permission denied"){ 
    396                                                                                         $(".folders-loading").removeClass("folders-loading"); 
    397                                                                                         cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    398                                                                                         return write_msg(get_lang("Permission denied")); 
    399                                                                                 } 
    400                                                                                 write_msg(get_lang("The folder was successfully rename")); 
    401                                                                                 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    402                                                                         } 
    403                                                                 }); 
    404                                                         }else{ 
    405                                                                 $(".new_folder").focusout(); 
    406                                                         } 
    407                                                 }else if( event.keyCode == 27){ 
    408                                                         draw_new_tree_folder(); 
    409                                                 } 
    410                                         }).focusout(function(){ 
    411                                                 draw_new_tree_folder(); 
    412                                         }).val(name); 
    413                                 }) 
    414                                 //FUNÇÃO DO eventNU FLUTUANTE EDITAR < END 
    415                                 //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < BEGIN 
    416                                 .end().find(".float-menu-remove").click(function(){ 
    417                                          
    418                                         var folder_id = $(this).parents(".closed:first").attr('id'); 
    419                                         var folder_name = "<strong>"+$.trim($(this).parents(".closed:first").find(".folder").text().split("[")[0])+"</strong>"; 
    420                                          
    421                                         if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
    422                                                 return; 
    423                                         $(this).parents(".closed:first").find(".folder").addClass("folders-loading");  
    424                                          
    425                                         if($(this).parents(".closed:first").find("ul").length){ 
    426                                                 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    427                                                 return write_msg(get_lang("Delete/move subfolders first")); 
    428                                         } 
    429                                         if($(this).parents(".closed:first").find(".selected").length){ 
    430                                                 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    431                                                 return write_msg(get_lang("It's not possible delete this folder, because it is being used in the moment!"));  
    432                                         } 
    433                                         var folder_span = $(this); 
    434                                         var confirm_text = get_lang("Do you wish to exclude the folder "); 
    435                                         $.Zebra_Dialog(confirm_text+folder_name, { 
    436                                                 'type':     'question', 
    437                                                 'overlay_opacity': '0.5', 
    438                                                 'buttons':  [get_lang('Yes'), get_lang('No')], 
    439                                                 'onClose':  function(caption) { 
    440                                                         if(caption == get_lang('Yes')){ 
    441                                                                 $.ajax({ 
    442                                                                         url : "controller.php?action=$this.imap_functions.delete_mailbox", 
    443                                                                         type: "POST", 
    444                                                                         data : "del_past="+folder_id, 
    445                                                                         success : function(data){ 
    446                                                                                 data = connector.unserialize(data); 
    447                                                                                 if(data == "Mailbox does not exist"){ 
    448                                                                                         $(".folders-loading").removeClass("folders-loading"); 
    449                                                                                         return write_msg(get_lang("Mailbox does not exist")); 
    450                                                                                 }else if(data == "Permission denied"){ 
    451                                                                                         $(".folders-loading").removeClass("folders-loading"); 
    452                                                                                         cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    453                                                                                         return write_msg(get_lang("Permission denied")); 
    454                                                                                 } 
    455                                                                                 write_msg(get_lang("The folder %1 was successfully removed", folder_name)); 
    456                                                                                 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    457                                                                         } 
    458                                                                 }); 
    459                                                         }else{ 
    460                                                                 folder_span.parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    461                                                                 return; 
    462                                                         } 
    463                                                 } 
    464                                         }); 
    465                                         /* if(!confirm(confirm_text + folder_name)){ 
    466                                                 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    467                                                 return; 
    468                                         } */ 
    469                                 }) 
    470                                 //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < END 
    471                                 //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < BEGIN 
    472                                 .end().find(".float-menu-new").click(function(){ 
    473                                         $(this).parents(".float-menu").hide(); 
    474                                         var selected_li = $(this).parents(".closed:first"); 
    475                                         if(selected_li.find("ul:first").length){ 
    476                                                 var new_folder = $("<li><input class='new_folder folder' type='text' maxlength='100'></input></li>").appendTo(selected_li.find("ul:first"));                                                             
    477                                                 if(selected_li.find(".expandable-hitarea").length){ 
    478                                                         selected_li.find(".expandable-hitarea").trigger('click'); 
    479                                                 } 
    480                                                 selected_li.find("ul:first").treeview({ 
    481                                                         add: new_folder 
    482                                                 }); 
    483                                         }else if(selected_li.length){ 
    484                                                 var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li);                                                             
    485                                                 selected_li.treeview({ 
    486                                                         add: new_folder 
    487                                                 }); 
    488                                         }else{ 
    489                                                 selected_li = $(this).parents(".head_folder").parent(); 
    490                                                 if($(this).parents(".head_folder").parent().find(".expandable-hitarea").length){ 
    491                                                         $(this).parents(".head_folder").parent().find(".expandable-hitarea").trigger('click'); 
    492                                                 } 
    493                                                 var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li);                                                             
    494                                                 selected_li.treeview({ 
    495                                                         add: new_folder 
    496                                                 }); 
    497                                         } 
    498                                          
    499                                         selected_li.find(".new_folder").Watermark("Nova Pasta").focus().keydown(function(event){ 
    500                                                 event.stopPropagation(); 
    501                                                 if(event.keyCode == 13){ 
    502                                                         if($(this).val().match(/[\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi)){ 
    503                                                                 return write_msg(get_lang("cannot create folder. try other folder name")); 
    504                                                         } 
    505                                                         if($('[id="'+ (selected_li.attr('id')? selected_li.attr('id') : "INBOX") + cyrus_delimiter + $(this).val()+'"]').length){ 
    506                                                                 $(".folders-loading").removeClass("folders-loading"); 
    507                                                                 write_msg(get_lang("Mailbox already exists")); 
    508                                                                 return draw_new_tree_folder(); 
    509                                                         } 
    510                                                         $(".new_folder").parent().addClass("folders-loading"); 
    511                                                         create_new_folder(($(this).val() != "" ? $(this).val() : get_lang("New Folder")), (selected_li.attr('id')? selected_li.attr('id') : "INBOX")); 
    512                                                 }else if( event.keyCode == 27){ 
    513                                                         draw_new_tree_folder(); 
    514                                                 } 
    515                                         }).focusout(function(){ 
    516                                                 draw_new_tree_folder(); 
    517                                         }); 
    518                                 }).end().find(".float-menu-export").click(function(){ 
    519                                         //proxy_mensagens.export_all_messages($(this).parents("li:first").attr("id")) 
    520  
    521                                         var name_box = $(this).parents("li:first").attr("id"); 
    522                                         var name_folder = name_box.split(cyrus_delimiter)[name_box.split(cyrus_delimiter).length-1]; 
    523  
    524                                         var hand_export = function(data){ 
    525                                                 if(!data){ 
    526                                                         write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.')) 
    527                                                 }else if(data["empty_folder"]){ 
    528                                                         write_msg(get_lang("The selected folder is empty.")); 
    529                                                 }else 
    530                                                   download_attachments(null, null, data, null,null, name_folder +'.zip'); 
    531                                         } 
    532                                         cExecute("$this.exporteml.export_all",hand_export,"folder="+name_box);   
    533                                         write_msg(get_lang('You must wait while the messages will be exported...'));             
    534                                 }); 
    535                                 //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < END 
    536                         } 
    537                         if(!$(".new_folder").length){ 
    538                                 $(this).find(".float-menu:first").css("display", ""); 
    539                         } 
    540                 }, 
    541                 function(){ 
    542                         $(this).find(".float-menu:first").hide(); 
    543                 } 
    544         ); 
    545         $("#new_m").html($('.selected').find(".folder_unseen").html() ? $('.selected').find(".folder_unseen").html() : "0").css("color", "red"); 
     91    var folders = DataLayer.get("folder", true);     
     92 
     93 
     94    if(expresso_mail_archive.folders){  //MailArchive 
     95        //pega pastas locais do mailarchiver e insere no array de pastas 
     96            expresso_mail_archive.getFoldersList("home"); 
     97            treeFolders = expresso_mail_archive.folders; 
     98 
     99            for(var i=0; i<treeFolders.length; i++ ){ 
     100                mount_children_localfolders_list(treeFolders[i]); 
     101            } 
     102             
     103            for(var i = 0; i < treeFolders.length; i++){ 
     104                folders.push(treeFolders[i]); 
     105            } 
     106  
     107    } 
     108 
     109    if(!selected){ 
     110        selected = "INBOX"; 
     111    } 
     112 
     113    var tree1 = new Array(); 
     114    var tree2 = new Array(); 
     115    var tree3 = new Array(); 
     116    for (var i=0; i<folders.length; i++) { 
     117        if (/^INBOX/.test(folders[i].id)) { 
     118            if (!unorphanize(tree1, folders[i])) { 
     119                folders[i].children = new Array(); 
     120 
     121                tree1.push(folders[i]); 
     122            } 
     123        } 
     124        else if (/^user/.test(folders[i].id)) { 
     125            if (!unorphanize(tree2, folders[i])) { 
     126                folders[i].children = new Array(); 
     127                tree2.push(folders[i]); 
     128            } 
     129        } 
     130        else if (/^local_messages/.test(folders[i].id)) { 
     131            
     132                tree3.push(folders[i]); 
     133             
     134        } 
     135    } 
     136     
     137    for(var i =0; i<tree1.length; i++){ 
     138        count_unseen_children(tree1[i]); 
     139    } 
     140    for(var i =0; i<tree2.length; i++){ 
     141        count_unseen_children(tree2[i]); 
     142    } 
     143    for(var i =0; i<tree3.length; i++){ 
     144        count_unseen_children(tree3[i]); 
     145    } 
     146    cp_tree1 = tree1; 
     147    cp_tree2 = tree2; 
     148    //Marcosw inicio 
     149    cp_tree3 = tree3; 
     150    //Marcosw fim 
     151    var shared_acls = {}; 
     152 
     153    $.each(cp_tree2, function(index, value){ 
     154        shared_acls[value.id] = value.acl_share; 
     155    }); 
     156 
     157    $("#content_folders").removeClass("menu-degrade").parent().removeClass("image-menu"); 
     158    var html = DataLayer.render('../prototype/modules/mail/templates/detailedfoldertree.ejs', {folders: [tree1, tree2, tree3]}); 
     159    var folders_html = $("#content_folders").html(html).find(".mainfoldertree").treeview({ 
     160            persist: "cookie", 
     161            animated: "fast" 
     162    }).find(".folder").unbind("click").click(function(event){ 
     163         
     164        // MUDANÇA DE PASTAS! 
     165        var target = $(this);    
     166         
     167        if($(".folders-loading").length) 
     168            return; 
     169         
     170        if($(event.target).parent().is(".float-menu")) 
     171            return; 
     172             
     173        if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable-hitarea, .lastExpandable-hitarea, .treeview ,.folder_unseen,.ui-icon, .float-menu, .new_folder, .folders-loading, .head_folder, .shared-folders') ) 
     174            return; 
     175         
     176        if( target.parent().find(".new_folder").length) 
     177            return; 
     178             
     179        if( !target.attr('id') ) 
     180            target = target.parent(); 
     181        if (target[0] == $(".mainfoldertree")[0]) return; 
     182        var uiId = target.attr('id'); 
     183        var child = target.find('.folder'); 
     184           
     185        if(!target.is('.mainfoldertree > .expandable-hitarea, .mainfoldertree > .collapsable-hitarea')){ 
     186            $('.filetree span.folder.selected').removeClass('selected'); 
     187            $(target).children('.folder').addClass('selected'); 
     188        } 
     189        $(this).addClass("folders-loading"); 
     190        selected = target.attr('id'); 
     191        change_folder(target.attr('id'), child.attr('title'));   
     192 
     193        $.ajax({ 
     194              url : "controller.php?"+ $.param( { action: "$this.imap_functions.get_folders_list", folder: target.attr('id') } ), 
     195              success : function(data){ 
     196                  data = connector.unserialize(data); 
     197 
     198                  if(data) 
     199                    build_quota(data); 
     200              } 
     201        }); 
     202 
     203    }).filter('.followup-messages').click(function(event, ui){ 
     204        search_emails("UNDELETED KEYWORD \"$Followupflagged\""); 
     205    }).end().end(); 
     206     
     207    folders_html.find('[id="'+selected+'"]').children().addClass("selected"); 
     208    $(".folder").not(".head_folder").not(".shared-folders").parent().find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").draggable({ 
     209        // DRAG DE PASTAS 
     210        start : function(){ 
     211            $(this).css("color", "gray"); 
     212        }, 
     213        stop : function(){ 
     214            $(this).css("color", ""); 
     215        }, 
     216        revert: "invalid", 
     217        helper: function(event){ 
     218            if($.trim(($(this).text().split("["))[0]).length > 18) 
     219                return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]).substring(0,18) + "...", type: "folder"})); 
     220            return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]), type: "folder"})); 
     221        }, 
     222        delay: 150, 
     223        refreshPositions: true, 
     224        zIndex : 2700, 
     225        //scroll: true,  
     226        //scrollSensitivity: 100, 
     227        //scrollSpeed: 100, 
     228        containment: "#divAppbox"  
     229    }).end().droppable({ 
     230        //DROP DE PASTAS 
     231        over : function(a, b){ 
     232            //INICIO : SE A PASTA CONTER FILHAS EXPANDE  
     233            over = $(this); 
     234            $(this).addClass("folder-over"); 
     235            if(($(this)[0] != $(this).parent().find(".head_folder")[0])) 
     236                if($(this).prev()[0]) 
     237                    if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){ 
     238                        setTimeout(function(){ 
     239                            if(over.hasClass("folder-over")) 
     240                                over.prev().trigger("click"); 
     241                        }, 500); 
     242                         
     243                    } 
     244            //FIM : SE A PASTA CONTER FILHAS EXPANDE 
     245             
     246            //SETA BORDA EM VOLTA DA PASTA 
     247        }, 
     248        out : function(){ 
     249            //RETIRA BORDA EM VOLTA DA PASTA 
     250            $(this).removeClass("folder-over"); 
     251        }, 
     252        drop : function(event, ui){ 
     253            $(this).removeClass("folder-over"); 
     254            if($(this).parent().attr('id') == undefined){ 
     255                var folder_to = 'INBOX'; 
     256                var to_folder_title = get_lang("Inbox"); 
     257            }else{ 
     258                var folder_to = $(this).parent().attr('id'); 
     259                var to_folder_title = $(this).attr('title'); 
     260            }        
     261            var folder_to_move = ui.draggable.parent().attr('id'); 
     262            var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 
     263            // eventnsagens : SE O DROP VIER DA LISTA DE eventNSAGENS : 
     264            if(folder_to_move == "tbody_box"){ 
     265                move_msgs2(get_current_folder(), 'selected', 0, folder_to, to_folder_title,true); 
     266                return refresh(); 
     267            } 
     268            //SE FOR DE UMA PESQUISA RAPIDA 
     269            else if(ui.draggable.parents('[id^="content_id_"]')[0]){ 
     270                move_search_msgs("content_id_"+border_id, folder_to, to_folder_title); 
     271                return refresh(); 
     272            } 
     273            // eventnsagens : SE O DROP VIER DE UMA ABA ABERTA 
     274            else if(folder_to_move == "border_tr"){ 
     275                var id_msg = border_id.split("_")[0]; 
     276                folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 
     277                alternate_border(border_id); 
     278                move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); 
     279                return refresh(); 
     280            } 
     281            // SE O DROP VIER DA LISTA DE PASTAS 
     282            else{ 
     283                var folder_to_exist = folder_to_move.split(cyrus_delimiter);     
     284                folder_to_exist = folder_to+cyrus_delimiter+folder_to_exist[folder_to_exist.length-1]; 
     285                 
     286                //VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS 
     287 
     288                if(valid_tabs(ui.draggable.parent().find("li"), folder_to_move)){ 
     289                    return; 
     290                } 
     291                //FIM : VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS; 
     292                 
     293                // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA PARA O eventSMO LOCAL 
     294                if(folder_to_exist == folder_to_move){ 
     295                    return write_msg(get_lang("Thie folder is already in this place")); 
     296                } 
     297                 
     298                // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA ABERTA NO momentO 
     299                if(folder_to_move == get_current_folder()){ 
     300                    return write_msg(get_lang("It's not possible move this folder, because it is being used in the moment!")); 
     301                } 
     302                 
     303                // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA FILHA DA PASTA ABERTA NO momentO 
     304                if(ui.draggable.parent().find(".selected")[0]){ 
     305                    return write_msg(get_lang("It's not possible move this folder, because its subfolder is being used in the moment!")); 
     306                } 
     307                 
     308                // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA PAI PARA DENTRO DE UMA FILHA 
     309                if(ui.draggable.parent().find('[id="'+folder_to+'"]')[0]){ 
     310                    return write_msg(get_lang("It's not possible to move this folder to its subfolders!")); 
     311                }                    
     312                 
     313                if($('[id="'+folder_to_exist+'"]').length){ 
     314                    return write_msg(get_lang("Can not move this folder to this location, because the target has already a folder with this name")); 
     315                } 
     316                 
     317                $(this).addClass("folders-loading"); 
     318 
     319                $.ajax({ 
     320                    url : "controller.php?"+ $.param( { action: "$this.imap_functions.move_folder", folder_to_move: folder_to_move, folder_to: folder_to } ), 
     321                    success : function(data){ 
     322                        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     323                        data = connector.unserialize(data); 
     324                        if(data == "Permission denied"){ 
     325                            write_msg(get_lang("Permission denied")); 
     326                        }else if(data){ 
     327                            write_msg(get_lang("The folder was successfully moved")); 
     328                        } else { 
     329                            write_msg(get_lang("ERROR moving your folder.")); 
     330                        } 
     331                    } 
     332                }); 
     333            } 
     334        } 
     335    }); 
     336    $(".folder").not(".shared-folders").parent().find(".folder").hover( 
     337        function(){ 
     338            //CASO A LI NÃO TENHA UM eventNU FLUTUANTE AINDA, O eventNU É ADICIONADO! 
     339            if(!$(this).children(":last").hasClass("float-menu") && !$(this).children(":last").hasClass("new_folder")){ 
     340                var folder_ = $(this); 
     341                var folder_name; 
     342                var shared = { 
     343                    head : false, 
     344                    valid : false 
     345                }; 
     346                if(folder_.parent().attr('id')){ 
     347                    folder_name = folder_.parent().attr('id').split(cyrus_delimiter); 
     348                    folder_name = folder_name[folder_name.length -1]; 
     349                    shared.valid = folder_.parent().attr('id').search("user/") == 0 ? true : false; 
     350                }else 
     351                    folder_name = "Root"; 
     352                 
     353                if(shared.valid){ 
     354                    shared.head = folder_.parent().attr('id').split(cyrus_delimiter).length == 2 ?  true : false; 
     355                    var folder_name_parts = folder_.parent().attr('id').split(cyrus_delimiter); 
     356                    var acls = shared_acls[folder_name_parts[0]+cyrus_delimiter+folder_name_parts[1]]; 
     357 
     358                } 
     359 
     360                html = DataLayer.render("../prototype/modules/mail/templates/float_folder_menu.ejs", {name_folder : folder_name, flag : shared, acl : acls});                    
     361                    //FUNÇÃO DO eventNU FLUTUANTE EDITAR < BEGIN 
     362                var esc = false; 
     363                $(folder_).append(html).find(".float-menu-edit").click(function(){ 
     364                    var folder_id = $(this).parents(".closed:first").attr('id'); 
     365                    var name = $.trim($(this).parents(".closed:first").find("span:first").text().split("[")[0]); 
     366                    if($(this).parents(".closed:first").find("span:first").hasClass("selected")) 
     367                        return write_msg(get_lang("It's not possible rename this folder, because it is being used in the moment!")); 
     368                    if($(this).parents(".closed:first").find(".selected").length) 
     369                        return write_msg(get_lang("It's not possible rename this folder, because its subfolder is being used in the moment!"));  
     370                    if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
     371                        return; 
     372                    $(this).parents(".closed:first").find("span:first").empty().append("<input class='new_folder folder' type='text' maxlength='100'></input>"); 
     373                    $(".new_folder").focus().keydown(function(event){ 
     374                        event.stopPropagation(); 
     375                         
     376                        if(event.keyCode == 13){ 
     377                            if($(this).val() != ""){ 
     378 
     379                                if($(this).val().match(/[\/\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi)){ 
     380                                    return write_msg(get_lang("cannot create folder. try other folder name")); 
     381                                } 
     382                                var new_name = folder_id.replace(/[a-zA-Z0-9á-úÁ-Ú^\s_-]+$/, $(this).val()); 
     383                                if($('[id="'+new_name+'"]').length){ 
     384                                    $(".folders-loading").removeClass("folders-loading"); 
     385                                    write_msg(get_lang("Mailbox already exists")); 
     386                                    return draw_new_tree_folder(); 
     387                                } 
     388                                $(".new_folder").parent().addClass("folders-loading"); 
     389 
     390                                if($(this).parent().parent().parent().find("input").val() == "localFolder"){ 
     391                                    var idFolder = $(this).parent().parent().attr("id").split("_")[2]; 
     392                                    expresso_mail_archive.renameFolder(idFolder, new_name); 
     393                                     cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     394                                } else { 
     395 
     396                                $.ajax({ 
     397                                    url : "controller.php?action=$this.imap_functions.ren_mailbox", 
     398                                    type : "POST", 
     399                                    data : "current="+folder_id+"&rename="+new_name, 
     400                                    success : function(data){ 
     401                                        data = connector.unserialize(data); 
     402                                        if(data == "Permission denied"){ 
     403                                            $(".folders-loading").removeClass("folders-loading"); 
     404                                            cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     405                                            return write_msg(get_lang("Permission denied")); 
     406                                        } 
     407                                        write_msg(get_lang("The folder was successfully rename")); 
     408                                        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     409                                    } 
     410                                }); 
     411 
     412                                } 
     413                            }else{ 
     414                                $(".new_folder").focusout(); 
     415                            } 
     416                        }else if( event.keyCode == 27){ 
     417                            draw_new_tree_folder(); 
     418                        } 
     419                    }).focusout(function(){ 
     420                        draw_new_tree_folder(); 
     421                    }).val(name); 
     422                }) 
     423                //FUNÇÃO DO eventNU FLUTUANTE EDITAR < END 
     424                //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < BEGIN 
     425                .end().find(".float-menu-remove").click(function(){ 
     426                     
     427                    var folder_id = $(this).parents(".closed:first").attr('id'); 
     428                    var folder_name = "<strong>"+$.trim($(this).parents(".closed:first").find(".folder").text().split("[")[0])+"</strong>"; 
     429                     
     430                    if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
     431                        return; 
     432                    $(this).parents(".closed:first").find(".folder").addClass("folders-loading");  
     433                     
     434                    if($(this).parents(".closed:first").find("ul").length){ 
     435                        $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     436                        return write_msg(get_lang("Delete/move subfolders first")); 
     437                    } 
     438                    if($(this).parents(".closed:first").find(".selected").length){ 
     439                        $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     440                        return write_msg(get_lang("It's not possible delete this folder, because it is being used in the moment!"));  
     441                    } 
     442                    var folder_span = $(this); 
     443                    var confirm_text = get_lang("Do you wish to exclude the folder "); 
     444 
     445                    $.Zebra_Dialog(confirm_text+folder_name, { 
     446                        'type':     'question', 
     447                        'overlay_opacity': '0.5', 
     448                        'buttons':  [get_lang('Yes'), get_lang('No')], 
     449                        'onClose':  function(caption) { 
     450 
     451                            if(caption == get_lang('Yes')){ 
     452                                if(folder_span.parent().parent().parent().find("input").val() == "localFolder"){ 
     453                                    var idFolder = folder_span.parent().parent().parent("li").attr("id").split("_")[2]; 
     454                                    expresso_mail_archive.deleteFolder(idFolder); 
     455                                     cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     456                                } else { 
     457                                $.ajax({ 
     458                                    url : "controller.php?action=$this.imap_functions.delete_mailbox", 
     459                                    type: "POST", 
     460                                    data : "del_past="+folder_id, 
     461                                    success : function(data){ 
     462                                        data = connector.unserialize(data); 
     463                                        if(data == "Mailbox does not exist"){ 
     464                                            $(".folders-loading").removeClass("folders-loading"); 
     465                                            return write_msg(get_lang("Mailbox does not exist")); 
     466                                        }else if(data == "Permission denied"){ 
     467                                            $(".folders-loading").removeClass("folders-loading"); 
     468                                            cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     469                                            return write_msg(get_lang("Permission denied")); 
     470                                        } 
     471                                        write_msg(get_lang("The folder %1 was successfully removed", folder_name)); 
     472                                        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     473                                    } 
     474                                }); 
     475                                } 
     476                            }else{ 
     477                                folder_span.parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     478                                return; 
     479                            } 
     480                        } 
     481                    }); 
     482                    /* if(!confirm(confirm_text + folder_name)){ 
     483                        $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     484                        return; 
     485                    } */ 
     486                }) 
     487                //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < END 
     488                //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < BEGIN 
     489                .end().find(".float-menu-new").click(function(){ 
     490                    $(this).parents(".float-menu").hide(); 
     491                    var selected_li = $(this).parents(".closed:first"); 
     492                    if(selected_li.find("ul:first").length){ 
     493                        var new_folder = $("<li><input class='new_folder folder' type='text' maxlength='100'></input></li>").appendTo(selected_li.find("ul:first"));                                 
     494                        if(selected_li.find(".expandable-hitarea").length){ 
     495                            selected_li.find(".expandable-hitarea").trigger('click'); 
     496                        } 
     497                        selected_li.find("ul:first").treeview({ 
     498                            add: new_folder 
     499                        }); 
     500                    }else if(selected_li.length){ 
     501                        var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li);                                 
     502                        selected_li.treeview({ 
     503                            add: new_folder 
     504                        }); 
     505                    }else{ 
     506                        selected_li = $(this).parents(".head_folder").parent(); 
     507                        if($(this).parents(".head_folder").parent().find(".expandable-hitarea").length){ 
     508                            $(this).parents(".head_folder").parent().find(".expandable-hitarea").trigger('click'); 
     509                        } 
     510                        var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li);                                 
     511                        selected_li.treeview({ 
     512                            add: new_folder 
     513                        }); 
     514                    } 
     515                     
     516                    selected_li.find(".new_folder").Watermark("Nova Pasta").focus().keydown(function(event){ 
     517                        event.stopPropagation(); 
     518 
     519 
     520                        if(event.keyCode == 13){ 
     521 
     522                            if($(this).parent().parent().parent().find("input[type=hidden]").val() == "localFolder"){ 
     523 
     524                                 $(".new_folder").parent().addClass("folders-loading"); 
     525 
     526                                 var folderName = $(this).val(); 
     527                                 var folder = (folderName != "" ? folderName : get_lang("New Folder")); 
     528 
     529                                 create_new_local_folder((selected_li.attr('id') ? selected_li.attr('id') : "inbox") , folder); 
     530                                 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     531                            } else { 
     532 
     533                                if($(this).val().match(/[\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi)){ 
     534                                    return write_msg(get_lang("cannot create folder. try other folder name")); 
     535                                } 
     536                                if($('[id="'+ (selected_li.attr('id')? selected_li.attr('id') : "INBOX") + cyrus_delimiter + $(this).val()+'"]').length){ 
     537                                    $(".folders-loading").removeClass("folders-loading"); 
     538                                    write_msg(get_lang("Mailbox already exists")); 
     539                                    return draw_new_tree_folder(); 
     540                                } 
     541                                $(".new_folder").parent().addClass("folders-loading"); 
     542                                create_new_folder(($(this).val() != "" ? $(this).val() : get_lang("New Folder")), (selected_li.attr('id')? selected_li.attr('id') : "INBOX")); 
     543                            } 
     544 
     545                        }else if( event.keyCode == 27){ 
     546                            draw_new_tree_folder(); 
     547                        } 
     548 
     549 
     550 
     551                    }).focusout(function(){ 
     552                        draw_new_tree_folder(); 
     553                    }); 
     554                }).end().find(".float-menu-export").click(function(){ 
     555                    //proxy_mensagens.export_all_messages($(this).parents("li:first").attr("id")) 
     556 
     557                    var name_box = $(this).parents("li:first").attr("id"); 
     558                    var name_folder = name_box.split(cyrus_delimiter)[name_box.split(cyrus_delimiter).length-1]; 
     559 
     560                    var hand_export = function(data){ 
     561                        if(!data){ 
     562                            write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.')) 
     563                        }else if(data["empty_folder"]){ 
     564                            write_msg(get_lang("The selected folder is empty.")); 
     565                        }else 
     566                          download_attachments(null, null, data, null,null, name_folder +'.zip'); 
     567                    } 
     568                    cExecute("$this.exporteml.export_all",hand_export,"folder="+name_box);   
     569                    write_msg(get_lang('You must wait while the messages will be exported...'));         
     570                }); 
     571                //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < END 
     572            } 
     573            if(!$(".new_folder").length){ 
     574                $(this).find(".float-menu:first").css("display", ""); 
     575            } 
     576        }, 
     577        function(){ 
     578            $(this).find(".float-menu:first").hide(); 
     579        } 
     580    ); 
     581    $("#new_m").html($('.selected').find(".folder_unseen").html() ? $('.selected').find(".folder_unseen").html() : "0").css("color", "red"); 
    546582} 
  • sandbox/2.5.0-expresso1/prototype/modules/mail/templates/detailedfoldertree.ejs

    r6773 r7202  
    3030                  <% }  %> 
    3131                  </span> 
     32                  <input type="hidden" value="<%= array_trees[i].type %>"> 
    3233                  <% 
    3334                  if (array_trees[i].children.length>0) 
  • sandbox/2.5.0-expresso1/prototype/modules/mail/templates/float_folder_menu.ejs

    r7092 r7202  
    1 <% 
     1<%  
    22        var specialFolders = { 
    33                        INBOX: {name:'Caixa de Entrada'},  
     
    55                        Root : {name:'root'} 
    66                }; 
     7    specialFolders["local_messages_trash"] = {name:'Lixeira', classe:'trash'}; 
     8    specialFolders["local_messages_drafts"] = {name:'Rascunhos', classe:'drafts'}; 
     9    specialFolders["local_messages_spam"] = {name:'Spam', classe:'spam'}; 
     10    specialFolders["local_messages_sent"] = {name:'Enviados', classe:'sent'}; 
     11    specialFolders["local_messages_outbox"] = {name:'Enviados', classe:'sent'}; 
     12 
    713        specialFolders[trashfolder] = {name:'Lixeira', classe:'trash'}; 
    814        specialFolders[draftsfolder] = {name:'Rascunhos', classe:'drafts'}; 
     
    1218 
    1319<span class="float-menu"> 
     20    <% if(data.name_folder != "local_messages_inbox"){ %> 
    1421        <%if(!data.flag.valid){ %> 
     22 
    1523                <%if(data.name_folder != 'INBOX'){%> 
    1624                        <span class="ui-icon ui-icon-document float-menu-new floating-default" title="<%=get_lang("New Folder")%>"></span>   
    1725                <%}%> 
    18                 <%if(!specialFolders[data.name_folder]){ %> 
     26                <%if(!specialFolders[data.name_folder] ){ %> 
    1927                        <span class="ui-icon ui-icon-pencil float-menu-edit floating-default" title="<%=get_lang("Edit folder")%>"></span>   
    2028                        <span class="ui-icon ui-icon-close float-menu-remove floating-default" title="<%=get_lang("Delete folder")%>"></span>   
    2129                <%}  
    22                 else if(data.name_folder == trashfolder){%> 
     30                else if(data.name_folder == trashfolder || data.name_folder == "local_messages_trash"){%> 
    2331                        <span class="ui-icon ui-icon-trash float-menu-clean floating-default" onclick="empty_trash_imap();" title="<%=get_lang("Empty Trash")%>"></span>   
    2432                <%} 
    25                 else if(data.name_folder == spamfolder){%> 
     33                else if(data.name_folder == spamfolder || data.name_folder == "local_messages_spam"){%> 
     34         
    2635                        <span class="ui-icon ui-icon-trash float-menu-clean floating-default" onclick="empty_spam_imap();" title="<%=get_lang("Empty Spam")%>"></span>   
    2736                         
     
    4554                <%}%> 
    4655        <%}%> 
     56    <% } %> 
    4757        <span class="ui-icon ui-icon-arrowthickstop-1-n float-menu-export floating-default" title="<%=get_lang("Export folder messages")%>"></span>   
    4858 </span> 
Note: See TracChangeset for help on using the changeset viewer.