Ignore:
Timestamp:
10/11/12 18:14:36 (12 years ago)
Author:
marcosw
Message:

Ticket #3088 - Realização de merge da melhoria do MailArchiver?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/modules/mail/js/foldertree.js

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