source: trunk/expressoMail1_2/js/messages_controller.js @ 7761

Revision 7761, 31.5 KB checked in by thiago, 11 years ago (diff)

Ticket #3302 - Melhorar comportamento do expresso Mail caso ações não forem aplicadas.

Line 
1/**
2 * @author diogenes
3 */
4
5        function messages_proxy() {
6               
7        }
8/**
9 * Retorna os cabeçalhos das mensagens a serem desenhadas na caixa de email.
10 */
11    messages_proxy.prototype.messages_list = function(folder,msg_range_begin,emails_per_page,sort_box_type,search_box_type,sort_box_reverse,preview_msg_subject,preview_msg_tip,call_back) {
12        if(this.is_local_folder(folder)) {
13            //MAILARCHIVER-01
14            var baseFolder = folder.replace('local_messages_', '');
15            var tree_name;
16            var drawinginfo = {};
17            expresso_mail_archive.update_counters = false;
18            expresso_mail_archive.currentfolder = baseFolder;
19            expresso_mail_archive.getFolderInfo(expresso_mail_archive.currentfolder);
20            expresso_mail_archive.drawdata = drawinginfo;
21
22            if(tree_name == 'tree_folders'){ //only the 'tree_folders' must show messages. 'folders_tree' are just for managment operation
23                var exp_dfs = new Array(baseFolder,msg_range_begin,emails_per_page,sort_box_type,search_box_type, sort_box_reverse,preview_msg_subject,preview_msg_tip);
24                expresso_mail_archive.queryconfig.setExpressoDefaults(exp_dfs);
25                expresso_mail_archive.listMessages();
26            }
27            else{
28                //window.alert('sem arvore para atualizar, com sort_box_type =' + sort_box_type + ' e search_box_type= ' + search_box_type + ' reverse -- ' + sort_box_reverse);
29                var exp_dfs = new Array(baseFolder,msg_range_begin,emails_per_page,sort_box_type,search_box_type,sort_box_reverse,preview_msg_subject,preview_msg_tip);
30                expresso_mail_archive.queryconfig.setExpressoDefaults(exp_dfs);
31                //Para recontagem de mensagens para aba e paginação.
32                expresso_mail_archive.tot_msgs_tab = 0;
33                expresso_mail_archive.tot_unseen_msgs_tab = 0;
34                expresso_mail_archive.listAllMessagesByFolder(folder.replace("local_messages_",""), search_box_type);
35                selectAllFolderMsgs(false);
36                populateSelectedMsgs(expresso_mail_archive.allmessagesbyfolder);
37                expresso_mail_archive.listMessages();
38            }
39
40        }else {
41            $.ajax({
42                url: "controller.php?" + $.param( {action: "$this.imap_functions.get_range_msgs3",
43                                    folder: folder,
44                                    msg_range_begin: msg_range_begin,
45                                    msg_range_end: emails_per_page,
46                                    sort_box_type: sort_box_type,
47                                    search_box_type: search_box_type,
48                                    sort_box_reverse: sort_box_reverse } ),
49
50                  success: function( data ){
51                    data = connector.unserialize(data);
52                   
53                    if( data )
54                        call_back( data );
55                  },
56                  beforeSend: function( jqXHR, settings ){
57                    connector.showProgressBar();
58                  },
59                  complete: function( jqXHR, settings ){
60                    connector.hideProgressBar();
61                  }
62             
63            });
64        }
65    }
66       
67       
68
69        messages_proxy.prototype.get_msg = function(msg_number,msg_folder,set_flag,call_back) {
70                if(this.is_local_folder(msg_folder)) {
71            //MAILARCHIVER-02
72            expresso_mail_archive.getMessage(msg_number);
73                }else{
74                    $.ajax({
75                              url: 'controller.php?' + $.param( {action: '$this.imap_functions.get_info_msg',
76                                                                  msg_number: msg_number,
77                                                                  msg_folder: msg_folder,
78                                                                  sort_box_type : sort_box_type,
79                                                                  search_box_type : search_box_type,
80                                                                  sort_box_reverse: sort_box_reverse
81                                                                  } ),
82                  async: false,
83                              success: function( data ){
84                                  data = connector.unserialize( data );
85                                 
86                                  if( data )
87                                      call_back( data );
88                              },
89                                  beforeSend: function( jqXHR, settings ){
90                                        connector.showProgressBar();
91                                  },
92                                  complete: function( jqXHR, settings ){
93                                        connector.hideProgressBar();
94                                  }
95
96                    });
97                }
98
99        }
100   
101        function closeBorders(){
102        folder64 = Base64.encode(get_current_folder());
103        folder64 = folder64.replace("=","");
104
105        var msgs = get_selected_messages();
106        msgs = msgs.split(",");
107
108        for(var i = 0; i < msgs.length; i++){
109            var borderId = "border_id_"+msgs[i]+"_r_"+folder64;
110            var id = msgs[i]+"_r_"+folder64;
111            if($("#"+borderId).length){
112                delete_border(id);
113            }
114        }
115    }
116
117        messages_proxy.prototype.delete_msgs = function(folder, msgs_number, border_ID, id_delete_msg) {
118        closeBorders();
119
120                if (folder == 'null')
121                        folder = get_current_folder();
122
123        //Validação para recuperar o id caso não seja aba de listagem
124                if (msgs_number == 'selected' && currentTab != 0) //Recupera apenas o id da mensagem aberta
125                        msgs_number = currentTab.substr(0,currentTab.indexOf('_r'));
126        else if (msgs_number == 'selected' && currentTab == 0)
127            msgs_number = get_selected_messages();
128
129                if(currentTab != 0 && currentTab.indexOf("search_")  >= 0){
130                        var content_search = document.getElementById('content_id_'+currentTab);
131                        action_msg_selected_from_search(content_search.id, 'delete');
132                        refresh();
133                        //draw_tree_folders();
134                        //update_local_box();
135                        return;
136                }
137                       
138                if (!this.is_local_folder(folder)){
139                        delete_msgs(folder, msgs_number, border_ID, undefined, undefined, id_delete_msg);
140                }else {   
141            //MAILARCHIVER-03
142            var msg_to_delete = Element(msgs_number);
143            //user has preference to show previous message on deleting one
144            if (isNaN(currentTab) && parseInt(preferences.delete_and_show_previous_message) && msg_to_delete) {
145                    if (msg_to_delete.previousSibling){
146                            var previous_msg = id_delete_msg ? id_delete_msg : msg_to_delete.previousSibling.id;
147
148                            //user has preference to maintain default folder structure at local folders, so we have trash folder
149                            if(preferences.auto_create_local == 1){
150                                //user has preference to "save" delete messasge on trash folder, so move it to there
151                                if (((preferences.save_deleted_msg == true)) && (folder != expresso_mail_archive.specialfolders.trash)){
152                                    expresso_mail_archive.folder_destination = 'trash';
153                                    expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number);
154                                    delete_border(currentTab,'false');
155                                    expresso_mail_archive.getMessage(previous_msg);
156                                }
157                                //user does not want to save messages deleted on trash. purge them imediatly
158                                else{
159                                    expresso_mail_archive.deleteMessages(msgs_number);
160                                    delete_border(currentTab,'false');
161                                    expresso_mail_archive.getMessage(previous_msg);
162                                }                                                                               
163                            }
164                            //maybe, we do not have trash.
165                            else{
166                                //user has preference to "save" delete messasge on trash folder, so move it to there
167                                if (((preferences.save_deleted_msg == true)) && (folder != expresso_mail_archive.specialfolders.trash)){
168                                    expresso_mail_archive.createFolder("","Trash");
169                                    expresso_mail_archive.folder_destination = 'trash';
170                                    expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number);
171                                    delete_border(currentTab,'false');
172                                    expresso_mail_archive.getMessage(previous_msg);
173                                }
174                                //user does not want to save messages deleted on trash. purge them imediatly
175                                else{
176                                    expresso_mail_archive.deleteMessages(msgs_number);
177                                    delete_border(currentTab,'false');
178                                    expresso_mail_archive.getMessage(previous_msg)
179                                }                                         
180                            }
181                    }
182                    //there is no previous message existing to show. Just delete de view context
183                    else{
184                           //user has preference to maintain default folder structure at local folders, so we have trash folder
185                           if(preferences.auto_create_local == 1){
186                                if (((preferences.save_deleted_msg == true)) && (folder != expresso_mail_archive.specialfolders.trash)){
187                                    expresso_mail_archive.folder_destination = 'trash';
188                                    expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number);
189                                    delete_border(currentTab,'false');
190                                }
191                                //user does not want to save messages deleted on trash. purge them imediatly
192                                else{
193                                    expresso_mail_archive.deleteMessages(msgs_number);
194                                    delete_border(currentTab,'false');
195                                }                                       
196                           }
197                            //maybe, we do not have trash. Purge message so.
198                            else{
199                                //user has preference to "save" delete messasge on trash folder, so move it to there
200                                if (((preferences.save_deleted_msg == true)) && (folder != expresso_mail_archive.specialfolders.trash)){
201                                    expresso_mail_archive.createFolder("","Trash");
202                                    expresso_mail_archive.folder_destination = 'trash';
203                                    expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number);
204                                    expresso_mail_archive.getMessage(previous_msg);
205                                }
206                                //user does not want to save messages deleted on trash. purge them imediatly
207                                else{
208                                    expresso_mail_archive.deleteMessages(msgs_number);
209                                }                                   
210                            }
211                    }
212            }
213            //user has no preferece to show previous message on deleting
214            else{
215                if(preferences.auto_create_local == 1){
216                    //user has preference to "save" delete messasge on trash folder, so move it to there
217                    if (((preferences.save_deleted_msg == true)) && (folder.replace('messages_','') != expresso_mail_archive.specialfolders.trash)){
218                        expresso_mail_archive.folder_destination = 'trash';
219                        expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number);
220                        delete_border(currentTab,'false');
221                    }
222                    //user does not want to save messages deleted on trash (or is cleaning it). purge them imediatly
223                    else{
224                        expresso_mail_archive.deleteMessages(msgs_number);
225                        delete_border(currentTab,'false');
226                    }                           
227                }
228                //maybe, we do not have trash. Purge message so.
229                else{
230                    //user has preference to "save" delete messasge on trash folder, so move it to there
231                    if (((preferences.save_deleted_msg == true)) && (folder.replace('messages_','') != expresso_mail_archive.specialfolders.trash)){
232                        expresso_mail_archive.createFolder("","Trash");
233                        expresso_mail_archive.folder_destination = 'trash';
234                        expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number);
235                    }
236                    //user does not want to save messages deleted on trash. purge them imediatly
237                    else{
238                        expresso_mail_archive.deleteMessages(msgs_number);
239                    }     
240                }
241            }
242                }
243
244        //Código adicionado para o correto funcionamento da seleção independente de paginação.
245        $.each(msgs_number.split(","), function(index, value){
246            delete selectedPagingMsgs[value];
247        });
248//      Inserida verificação ao decrementar variável para que a mesma não seja decrementada mais de uma vez em outros lugares.
249        var isTrash = folder.split("/");
250        if(isTrash[isTrash.length - 1] == 'Trash' || !!!parseInt(preferences.save_deleted_msg))
251            totalFolderMsgs = totalFolderMsgs - msgs_number.split(",").length;
252        selectAllFolderMsgs(false);
253        updateSelectedMsgs();
254        }
255       
256        messages_proxy.prototype.link_anexo = function (info_msg,numero_ordem_anexo) {
257
258                if(info_msg.local_message==true) {
259            //MAILARCHIVER-04
260            return "javascript:download_local_attachment('"+ mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/temp/download/' +info_msg.attachments[numero_ordem_anexo].pid + "')";
261                }
262                else {
263                        return "javascript:download_attachments('"+Base64.encode(info_msg.msg_folder)+"','"+info_msg.msg_number+"',"+numero_ordem_anexo+",'"+info_msg.attachments[numero_ordem_anexo].pid+"','"+info_msg.attachments[numero_ordem_anexo].encoding+"','"+info_msg.attachments[numero_ordem_anexo].name+"')";
264                }
265        }
266
267        messages_proxy.prototype.proxy_source_msg = function (id_msg,folder) {
268                if(!this.is_local_folder(folder)) {
269                        source_msg(id_msg,folder);
270                }
271                else {
272                        var num_msg = id_msg.substr(0,(id_msg.length - 2));
273                        expresso_local_messages.get_source_msg(num_msg);
274                }
275        }
276       
277        messages_proxy.prototype.proxy_set_messages_flag = function (flag,msg_number){
278        //MAILARCHIVER
279
280        if(this.is_local_folder(get_current_folder())) {
281       
282            var msglist = get_selected_messages();   
283            var arrlist = msglist.split(",");
284            var operation;
285            var strtag;
286           
287            for(var i in arrlist){
288                var exit = true;
289
290                switch(flag.toLowerCase()){
291                    case 'unseen':
292                        strtag = "unseen";
293                        operation = 0;
294                        set_msg_as_unread(arrlist[i]);
295                        break;
296                    case 'seen':
297                        strtag = "unseen";
298                        operation = 1;
299                        exit = set_msg_as_read(arrlist[i], false, true);
300                        break;
301                    case 'flagged':
302                        strtag = "flagged, importance_high";
303                        operation = 0;
304                        set_msg_as_flagged(arrlist[i]);
305                        break;
306                    case 'unflagged':
307                        strtag = "flagged, importance_high";
308                        operation = 1;
309                        set_msg_as_unflagged(arrlist[i]);
310                        break;
311                }
312
313                if(exit){
314                    expresso_mail_archive.currenttag = flag;
315                    var tl = expresso_mail_archive.pattern.tagConfig(strtag, arrlist[i], operation);
316                    expresso_mail_archive.taglist = tl;                             
317                    expresso_mail_archive.progressbar = window.setTimeout("expresso_mail_archive.tagMessage()",1);
318                }
319            }
320           
321        }
322        else {
323            set_messages_flag(flag,msg_number);
324            // Verifica se a pasta que esta selecionada contem a opção "Não lidas" ativada
325            // caso exista, ele chama novamente a opção "Não lidas" para atualizar a pasta.
326            if('UNSEEN' == search_box_type)
327                return sort_box('UNSEEN','SORTARRIVAL');
328        }
329        }
330       
331        messages_proxy.prototype.proxy_set_message_flag = function (msg_number,flag,func_after_flag_change,msgid){
332        var msg_number_folder = Element("new_input_folder_"+msg_number+"_r"); //Mensagens respondidas/encaminhadas
333                if(!msg_number_folder)
334                        var msg_number_folder = Element("input_folder_"+msg_number+"_r"); //Mensagens abertas
335                var folder = msg_number_folder ?  msg_number_folder.value : get_current_folder();
336
337        //MAILARCHIVER
338        if(this.is_local_folder(folder)) {
339            if(!msgid)
340                msgid = msg_number;
341            var taglist = flag;
342            var operation;
343   
344            switch(flag.toLowerCase()){
345                case 'unseen':
346                    strtag = "unseen";
347                    operation = 0;
348                    set_msg_as_unread(msgid);
349
350                    break;
351                case 'seen':
352                    strtag = "unseen";
353                    operation = 1;
354                    set_msg_as_read(msgid);
355                    break;
356                case 'flagged':
357                    strtag = 'flagged, importance_high';
358                    operation = 0;
359                    set_msg_as_flagged(msgid);
360                    break;
361                case 'unflagged':
362                    strtag = "flagged, importance_high";
363                    operation = 1;
364                    set_msg_as_unflagged(msgid);
365                    break;
366                case 'forwarded':
367                    strtag = "forwarded";
368                    operation = 0;
369                    set_msg_as_flagged(msgid);
370                case 'answered':
371                    strtag = "answered";
372                    operation = 0;
373                    set_msg_as_flagged(msgid);                                 
374                   
375            }   
376            expresso_mail_archive.drawdata = null;
377            var tl = expresso_mail_archive.pattern.tagConfig(strtag, msgid, operation);
378            expresso_mail_archive.currenttag = flag;
379            expresso_mail_archive.taglist = tl;
380            expresso_mail_archive.progressbar = window.setTimeout("expresso_mail_archive.tagMessage()",1);
381        }
382        else {
383            set_message_flag(msg_number,flag, func_after_flag_change);
384        }
385        }
386       
387        messages_proxy.prototype.is_local_folder = function(folder) {
388                if(typeof(folder) == "undefined" || folder.indexOf("local_")==-1)
389                        return false;
390                return true;
391        }
392       
393        /*
394        messages_proxy.prototype.proxy_rename_folder = function(){
395                var specialFolders = special_folders[ttree.getFolder().split(cyrus_delimiter)[ttree.getFolder().split(cyrus_delimiter).length-1]];
396                if (ttree.getFolder() == 'INBOX' || specialFolders ) {
397                        alert(get_lang("It's not possible rename the folder: ") + lang_folder((specialFolders ? specialFolders : ttree.getFolder()))+ '.');
398                        return false;
399                }
400                if(ttree.getFolder() == 'root') {
401                        alert(get_lang("It's not possible rename this folder!"));
402                        return false;
403                }
404                if(!specialFolders && ttree.getFolder() == get_current_folder()){
405                                alert(get_lang("It's not possible rename this folder, because it is being used in the moment!"));
406                                return false;
407                }
408               
409                if (this.is_local_folder(ttree.getFolder())) {
410                        folder = prompt(get_lang("Enter a name for the box"), "");
411                        if(folder.match(/[\/\\\!\@\#\$\%\&\*\+\(\)]/gi)){
412                        alert(get_lang("It's not possible rename this folder. try other folder name"));
413                        return false;
414                        }
415                        if(trim(folder) == "" || trim(folder) == null){
416                                alert(get_lang("you have to enter the name of the new folder"));
417                                return false;
418                        }
419                        var temp = expresso_local_messages.rename_folder(folder, ttree.FOLDER.substr(6));
420                        if (!temp)
421                                alert(get_lang("cannot rename folder. try other folder name"));
422                        ttreeBox.update_folder();
423                }
424                else {
425                        ttreeBox.validate("rename");
426                }
427               
428        }
429        */
430        /*
431        messages_proxy.prototype.proxy_create_folder = function() {
432                if (folders.length == preferences.imap_max_folders){
433                    alert(get_lang("Limit reached folders"));
434                    return false;
435                }
436               
437                if (this.is_local_folder(ttree.FOLDER)) {
438                        folder = prompt(get_lang('Enter the name of the new folder:'), "");
439
440                        if(folder == null)
441                            return;
442
443
444                        if(trim(folder) == ""){
445                                alert(get_lang("you have to enter the name of the new folder"));
446                                return false;
447                        }
448                        if(folder.match(/[\/\\\!\@\#\$\%\&\*\+\(\)]/gi)){
449                            alert(get_lang("cannot create folder. try other folder name"));
450                            return false;
451                        }
452                        if(ttree.FOLDER=="local_root")
453                                var temp = expresso_local_messages.create_folder(folder);
454                        else
455                                var temp = expresso_local_messages.create_folder(ttree.FOLDER.substr(6)+"/"+folder);
456                        if (!temp)
457                                alert(get_lang("cannot create folder. try other folder name"));
458                        ttreeBox.update_folder(true);
459                }
460                else                   
461                        if(ttree.FOLDER == "INBOX")
462                                alert(get_lang("It's not possible create inside: ") + lang_folder(ttree.FOLDER)+".");
463                        else if (!this.is_local_folder(ttree.FOLDER))
464                                ttreeBox.validate("newpast");
465                        else
466                                alert(get_lang("It's not possible create inside: ") + lang_folder(ttree.FOLDER.substr(6))+".");
467        }
468        */
469        /*
470        messages_proxy.prototype.proxy_remove_folder = function() {
471                if (this.is_local_folder(ttree.FOLDER)) {
472                        if(ttree.FOLDER == 'local_root') {
473                                alert(get_lang("Select a folder!"));
474                                return false;
475                        }
476                        if (ttree.FOLDER == 'local_Inbox' || (preferences.auto_create_local == '1' && (ttree.FOLDER == 'local_Sent' || ttree.FOLDER == 'local_Drafts' || ttree.FOLDER == 'local_Trash'))) {
477                                alert(get_lang("It's not possible delete the folder: ")  + lang_folder(ttree.FOLDER.substr(6)) + '.');
478                                return false;
479                        }
480                        if(ttree.FOLDER.match("^local_.*$") && ttree.FOLDER == get_current_folder()){
481                            alert(get_lang("It's not possible rename this folder, because it is being used in the moment!"));
482                            return false;
483                        }
484
485                        if(ttree.FOLDER.indexOf("/")!="-1") {
486                                final_pos = ttree.FOLDER.lastIndexOf("/");
487                                new_caption = ttree.FOLDER.substr(final_pos+1);
488                        }
489                        else {
490                                new_caption = ttree.FOLDER.substr(6);
491                        }
492                        var string_confirm = get_lang("Do you wish to exclude the folder ") + new_caption + "?";
493
494                        if (confirm(string_confirm)) {
495                                var flag = expresso_local_messages.remove_folder(ttree.FOLDER.substr(6));
496                                if (flag) {
497                                        write_msg(get_lang("The folder %1 was successfully removed", new_caption));
498                                        draw_tree_local_folders();
499                                        ttreeBox.update_folder(true);
500                                }
501                                else
502                                        alert(get_lang("Delete your sub-folders first"));
503                               
504                        }
505                }
506                else
507                        ttreeBox.del();
508        }*/
509
510        messages_proxy.prototype.proxy_move_messages = function (folder, msgs_number, border_ID, new_folder, new_folder_name) {
511               
512        closeBorders();
513
514        if (! folder || folder == 'null')
515                        folder = Element("input_folder_"+msgs_number+"_r") ? Element("input_folder_"+msgs_number+"_r").value : (openTab.imapBox[currentTab] ? openTab.imapBox[currentTab]:get_current_folder());
516
517        //MAILARCHIVER-08
518        if (this.is_local_folder(folder)){
519            expresso_mail_archive.update_counters = true;
520            //Folder de onde sai a mensagem é local (armazenamento local)
521            if (folder == new_folder){
522                write_msg(get_lang('The origin folder and the destination folder are the same.'));
523                                return;
524            }                   
525
526            //Validação para recuperar o id caso não seja aba de listagem
527            if (msgs_number == 'selected' && currentTab != 0) //Recupera apenas o id da mensagem aberta
528                msgs_number = currentTab.substr(0,currentTab.indexOf('_r'));
529            else
530                msgs_number = get_selected_messages();
531
532            if (new_folder == 'local_root'){
533                alert(get_lang("Select a folder!"));
534            }
535                       
536            if (parseInt(msgs_number) > 0 || msgs_number.length > 0) {
537                if (this.is_local_folder(new_folder)){
538                    //esta tirando de um folder local para outro folder local
539                    expresso_mail_archive.moveMessages(new_folder.replace("local_messages_",""), msgs_number);
540                    if(currentTab != 0)
541                        delete_border(currentTab,'false');
542                }
543                else{
544                    //esta tirando de um folder local para um folder IMAP (desarquivamento)
545                    if(!new_folder){
546                        new_folder = 'INBOX';
547                    }
548                    if(currentTab.toString().indexOf("_r") != -1){
549                        msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
550                    }                     
551                    expresso_mail_archive.unarchieve(folder, new_folder, msgs_number);
552                }
553            }
554            else{
555                write_msg(get_lang('No selected message.'));
556            }
557        }else{
558            if (this.is_local_folder(new_folder)){
559                //esta tirando de um folder não local para um folder local (arquivamento)
560                if(msgs_number=='selected'){
561                    archive_msgs(folder, new_folder);
562                }
563                else{
564                    archive_msgs(folder, new_folder, msgs_number);
565                }
566            }
567            else{
568                //esta tirando de um folder não local para outro folder não local (move)
569                move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name);
570            }
571        }       
572
573        //Adicionado código para o correto funcionamento da seleção independente de paginação.
574        $.each(msgs_number.split(","), function(index, value){
575            delete selectedPagingMsgs[value];
576        });
577        totalFolderMsgs = totalFolderMsgs - msgs_number.split(",").length;
578        selectAllFolderMsgs(false);
579        updateSelectedMsgs();
580        }
581       
582        messages_proxy.prototype.proxy_move_search_messages = function(border_id, new_folder, new_folder_name) {
583               
584               
585                /*
586               
587               
588                if ((this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) { //Move entre pastas não locais...
589                        if (folder == new_folder){
590                                write_msg(get_lang('The origin folder and the destination folder are the same.'));
591                                return;
592                        }
593                        if(msgs_number=='selected')
594                                msgs_number = get_selected_messages();
595                        if (new_folder == 'local_root')
596                                alert(get_lang("Select a folder!"));
597                        if (parseInt(msgs_number) > 0 || msgs_number.length > 0) {
598                                expresso_local_messages.move_messages(new_folder.substr(6), msgs_number);
599                                this.aux_interface_remove_mails(msgs_number, new_folder_name, border_ID);
600                        }
601                        else
602                                write_msg(get_lang('No selected message.'));
603                }
604                else
605                        if ((!this.is_local_folder(folder)) && (!this.is_local_folder(new_folder))) { //Move entre pastas locais...
606                                move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name);
607                        }
608                        else if ((!this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) {
609                                archive_msgs(folder,new_folder);
610                        }
611                        else {
612                                write_msg(get_lang("you can't move mails from local to server folders"));
613                        }*/
614        }
615       
616        messages_proxy.prototype.aux_interface_remove_mails = function(msgs_number,new_folder_name,border_ID,previous_msg) {
617                if(!msgs_number)
618                        msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
619                       
620                if(msgs_number === ""){
621                        write_msg(get_lang('No selected message.'));
622                        return;
623                }
624               
625                Element('chk_box_select_all_messages').checked = false;
626                mail_msg = Element("tbody_box");
627                msgs_number = msgs_number.split(",");
628                var msg_to_delete;
629                this.previous = 0;
630                for (var i=0; i<msgs_number.length; i++){
631                        msg_to_delete = Element(msgs_number[i]);
632                        if (msg_to_delete){
633                                if ( (msg_to_delete.style.backgroundColor != '') && (preferences.use_shortcuts == '1') )
634                                        select_msg('null', 'down');
635                                       
636                                  if (parseInt(preferences.delete_and_show_previous_message) && msg_to_delete && currentTab.toString().indexOf("_r") > 0)
637                                for(var ii=0; ii < mail_msg.rows.length; ii++){
638                                        if(mail_msg.rows[ii] === msg_to_delete){
639                                                if(ii == 0){
640                                                        break;
641                                                }else{
642                                                        this.previous = mail_msg.rows[(ii - 1)].attributes[0];
643                                                        this.previous = parseInt(this.previous.value);
644                                                        break;
645                                                }
646                                        }
647                                }
648                                mail_msg.removeChild(msg_to_delete);
649                        }
650                }
651                new_folder_name = this.get_folder_name(new_folder_name);
652                if (msgs_number.length == 1)
653                        write_msg(get_lang("The message was moved to folder ") + new_folder_name);
654                else
655                        write_msg(get_lang("The messages were moved to folder ") + new_folder_name);
656
657                if (parseInt(preferences.delete_and_show_previous_message) && msg_to_delete && this.previous){
658                        proxy_mensagens.get_msg(this.previous, folder, true, show_msg);
659                }else if(currentTab != 0){
660                if (border_ID != '' && border_ID != 'null'){
661                                delete_border(border_ID,'false');
662                        }else{
663                                delete_border(currentTab,'false');
664                        }
665                }
666                if(folder == get_current_folder())
667                        Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) - msgs_number.length;                 
668        }
669
670        messages_proxy.prototype.get_folder_name = function(new_folder_name){
671                switch (new_folder_name) {
672                        case 'local_Inbox':
673                                return 'Local_Caixa de Entrada';
674                        case 'local_Sent':
675                                return 'Local_Enviados';
676                        case 'local_Trash':
677                                return 'Local_Lixeira';
678                        case 'local_Drafts':
679                                return 'Local_Rascunhos';
680                        default:
681                                return new_folder_name;
682                }
683        }
684       
685        messages_proxy.prototype.msg_img = function(msgs_number,folder_name,call_back) {
686     if(this.is_local_folder(folder_name)){
687         var msg = expresso_local_messages.get_local_mail(msgs_number);
688                 eval('call_back(msg)');
689     }
690     else
691         $.ajax({
692                  url: 'controller.php?' + $.param( {action: '$this.imap_functions.get_info_msg',
693                                                      msg_number: msgs_number,
694                                                      msg_folder: folder_name,
695                                                      decoded: true } ),
696                  success: function( data ){
697                      data = connector.unserialize( data );
698                     
699                      if( data )
700                          call_back( data );
701                  },
702                  beforeSend: function( jqXHR, settings ){
703                        connector.showProgressBar();
704                  },
705                  complete: function( jqXHR, settings ){
706                        connector.hideProgressBar();
707                  }
708
709        });
710    }
711
712    messages_proxy.prototype.export_all_messages = function(folder){
713        if(typeof (currentTab) == "string" && currentTab.indexOf("local") != -1){ 
714            alert("Impossível manipular mensagens locais a partir de uma busca. Isso é permitido apenas para mensagens não locais.");
715            return true;
716        }
717        if (!folder) {
718            folder = get_current_folder();
719        }
720
721        if(!this.is_local_folder(folder) || folder.split("_")[0] == "local"){
722            export_all_selected_msgs();
723        }else{
724            local_messages.prototype.local_messages_to_export();
725        }
726        }
727       
728        messages_proxy.prototype.archive_message = function(folder, msgs_number) {
729                if(msgs_number == 'get_selected_messages')
730                        msgs_number = get_selected_messages();
731                       
732                expresso_mail_archive.Archive("INBOX", "inbox", msgs_number);
733        }
734
735    messages_proxy.prototype.unarchive_message = function(folder, msgs_number) {
736
737        if(msgs_number == 'get_selected_messages')
738            msgs_number = get_selected_messages();
739
740        expresso_mail_archive.unarchieve(folder, "inbox", msgs_number);
741        $('.select-link').trigger('click',function(){selectAllFolderMsgs();$('.select-link').unbind('click');});
742    }
743       
744        var proxy_mensagens;
745        proxy_mensagens = new messages_proxy();
Note: See TracBrowser for help on using the repository browser.