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

Revision 7612, 33.4 KB checked in by marcieli, 11 years ago (diff)

Ticket #3219 - Correcoes de problemas provocados ao alterar z-index dos zebraDialogs dos filtros.

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