source: trunk/prototype/modules/mail/js/foldertree.js @ 7459

Revision 7459, 32.8 KB checked in by thiago, 12 years ago (diff)

Ticket #3088 - Internacionalizações e correção de bug na aba.

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