source: sandbox/2.4.2-expresso2/expressoMail1_2/js/messages_controller.js @ 6778

Revision 6778, 17.6 KB checked in by angelo, 12 years ago (diff)

Ticket #2954 - Selecionar todas as mensagens de uma pasta independente de paginacao

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                        var real_folder = folder.substr(6);             
14                        var msgs = expresso_local_messages.get_local_range_msgs(real_folder,msg_range_begin,preferences.max_email_per_page,sort_box_type,sort_box_reverse,search_box_type,preferences.preview_msg_subject,preferences.preview_msg_tip);
15                        if(call_back)
16                                call_back(msgs);
17                        else{
18                                call_back = function(data)
19                                {
20                                        alternate_border(0);
21                                        draw_box(data, get_current_folder());
22                                }
23                                call_back(msgs);
24                        }
25                        draw_tree_local_folders();
26                }else {
27                        $.ajax({
28                                url: "controller.php?" + $.param( {action: "$this.imap_functions.get_range_msgs3",
29                                                                    folder: folder,
30                                                                    msg_range_begin: msg_range_begin,
31                                                                    msg_range_end: emails_per_page,
32                                                                    sort_box_type: sort_box_type,
33                                                                    search_box_type: search_box_type,
34                                                                    sort_box_reverse: sort_box_reverse } ),
35
36                              success: function( data ){
37                                    data = connector.unserialize(data);
38                                   
39                                    if( data )
40                                                call_back( data );
41                                               
42                                        $.ajax({                       
43                                                url: "controller.php?" + $.param( {action: "$this.imap_functions.get_range_msgs3",
44                                                        folder: folder,
45                                                         msg_range_begin: "0",
46                                                         msg_range_end: "0",                                   
47                                                        sort_box_type: "SORTARRIVAL",
48                                                        search_box_type: "ALL",
49                                                        sort_box_reverse: "1"
50                                                        }),
51                                                success: function(data){
52                                                        data = connector.unserialize(data);
53                                                        if(data){
54                                                                var _data = {};
55                                                                $.each(data,function(index,value){
56                                                                        if (data[index] && data[index].msg_number){
57                                                                                _data[data[index].msg_number] = data[index].msg_number;
58                                                                        }
59                                                                });
60                                                                populateSelectedMsgs(_data);
61                                                                _data = {};
62                                                       
63                                                        }
64                                                },
65                                                beforeSend: function( jqXHR, settings ){
66                                                        connector.showProgressBar();
67                                                },
68                                                complete: function( jqXHR, settings ){
69                                                        connector.hideProgressBar();
70                                                }
71                                        });
72                              },
73                                  beforeSend: function( jqXHR, settings ){
74                                        connector.showProgressBar();
75                                  },
76                                  complete: function( jqXHR, settings ){
77                                        connector.hideProgressBar();
78                                  }
79                         
80                        });
81                }
82        }
83
84        messages_proxy.prototype.get_msg = function(msg_number,msg_folder,set_flag,call_back) {
85                if(this.is_local_folder(msg_folder)) {
86                        if(set_flag)
87                                expresso_local_messages.set_messages_flag(msg_number,"seen");
88                        var data = expresso_local_messages.get_local_mail(msg_number); 
89
90                        eval("call_back(data)");
91                }else{
92                    $.ajax({
93                              url: 'controller.php?' + $.param( {action: '$this.imap_functions.get_info_msg',
94                                                                  msg_number: msg_number,
95                                                                  msg_folder: msg_folder
96                                                                  } ),
97                              success: function( data ){
98                                  data = connector.unserialize( data );
99                                 
100                                  if( data )
101                                      call_back( data );
102                              },
103                                  beforeSend: function( jqXHR, settings ){
104                                        connector.showProgressBar();
105                                  },
106                                  complete: function( jqXHR, settings ){
107                                        connector.hideProgressBar();
108                                  }
109
110                    });
111                }
112
113        }
114       
115        messages_proxy.prototype.delete_msgs = function(folder, msgs_number, border_ID) {
116
117                if (folder == 'null')
118                        folder = get_current_folder();
119                if (msgs_number == 'selected')
120                        msgs_number = get_selected_messages();
121               
122                if(currentTab != 0 && currentTab.indexOf("search_")  >= 0){
123                        var content_search = document.getElementById('content_id_'+currentTab);
124                        action_msg_selected_from_search(content_search.id, 'delete');
125                        refresh();
126                        //draw_tree_folders();
127                        //update_local_box();
128                        return;
129                }
130                       
131                if (!this.is_local_folder(folder)){
132                        delete_msgs(folder, msgs_number, border_ID);
133                }else {
134                        if((folder != 'local_Trash') && (expresso_local_messages.as_trash())){
135                                expresso_local_messages.move_messages('Trash', msgs_number);
136                                this.aux_interface_remove_mails(msgs_number, 'local_Trash', border_ID);
137                                draw_tree_local_folders();
138                                update_local_box();
139                                refresh();
140                        }else{
141                        expresso_local_messages.delete_msgs(msgs_number, border_ID);
142                        draw_tree_local_folders();
143                                update_local_box();
144                                refresh();
145                        }
146                }
147        }
148       
149        messages_proxy.prototype.link_anexo = function (info_msg,numero_ordem_anexo) {
150
151                if(info_msg.local_message==true) {
152                        return "javascript:download_local_attachment('"+
153                                        expresso_local_messages.get_url_anexo(info_msg.msg_number,info_msg.attachments[numero_ordem_anexo].pid)+
154                                        "')";
155                }
156                else {
157                        return "javascript:download_attachments('"+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+"')";
158                }
159        }
160
161        messages_proxy.prototype.proxy_source_msg = function (id_msg,folder) {
162                if(!this.is_local_folder(folder)) {
163                        source_msg(id_msg,folder);
164                }
165                else {
166                        var num_msg = id_msg.substr(0,(id_msg.length - 2));
167                        expresso_local_messages.get_source_msg(num_msg);
168                }
169        }
170       
171        messages_proxy.prototype.proxy_set_messages_flag = function (flag,msg_number){
172                if(this.is_local_folder(get_current_folder())) {
173                        expresso_local_messages.set_messages_flag(msg_number,flag);
174                }
175                else {
176                        set_messages_flag(flag,msg_number);
177                                // Verifica se a pasta que esta selecionada contem a opção "Não lidas" ativada
178                                // caso exista, ele chama novamente a opção "Não lidas" para atualizar a pasta.
179                                if('UNSEEN' == search_box_type)
180                                        return sort_box('UNSEEN','SORTARRIVAL');
181                }
182        }
183       
184        messages_proxy.prototype.proxy_set_message_flag = function (msg_number,flag,func_after_flag_change){
185                var msg_number_folder = Element("new_input_folder_"+msg_number+"_r"); //Mensagens respondidas/encaminhadas
186                if(!msg_number_folder)
187                        var msg_number_folder = Element("input_folder_"+msg_number+"_r"); //Mensagens abertas
188                var folder = msg_number_folder ?  msg_number_folder.value : get_current_folder();
189                if(this.is_local_folder(folder)) {
190                        expresso_local_messages.set_message_flag(msg_number,flag, func_after_flag_change);
191                }
192                else {
193                        set_message_flag(msg_number,flag, func_after_flag_change);
194                }
195        }
196       
197        messages_proxy.prototype.is_local_folder = function(folder) {
198                if(typeof(folder) == "undefined" || folder.indexOf("local_")==-1)
199                        return false;
200                return true;
201        }
202       
203
204        messages_proxy.prototype.proxy_rename_folder = function(){
205                var specialFolders = special_folders[ttree.getFolder().split(cyrus_delimiter)[ttree.getFolder().split(cyrus_delimiter).length-1]];
206                if (ttree.getFolder() == 'INBOX' || specialFolders ) {
207                        alert(get_lang("It's not possible rename the folder: ") + lang_folder((specialFolders ? specialFolders : ttree.getFolder()))+ '.');
208                        return false;
209                }
210                if(ttree.getFolder() == 'root') {
211                        alert(get_lang("It's not possible rename this folder!"));
212                        return false;
213                }
214                if(!specialFolders && ttree.getFolder() == get_current_folder()){
215                                alert(get_lang("It's not possible rename this folder, because it is being used in the moment!"));
216                                return false;
217                }
218               
219                if (this.is_local_folder(ttree.getFolder())) {
220                        folder = prompt(get_lang("Enter a name for the box"), "");
221                        if(folder.match(/[\/\\\!\@\#\$\%\&\*\+\(\)]/gi)){
222                        alert(get_lang("It's not possible rename this folder. try other folder name"));
223                        return false;
224                        }
225                        if(trim(folder) == "" || trim(folder) == null){
226                                alert(get_lang("you have to enter the name of the new folder"));
227                                return false;
228                        }
229                        var temp = expresso_local_messages.rename_folder(folder, ttree.FOLDER.substr(6));
230                        if (!temp)
231                                alert(get_lang("cannot rename folder. try other folder name"));
232                        ttreeBox.update_folder();
233                }
234                else {
235                        ttreeBox.validate("rename");
236                }
237               
238        }
239
240        messages_proxy.prototype.proxy_create_folder = function() {
241                if (folders.length == preferences.imap_max_folders){
242                    alert(get_lang("Limit reached folders"));
243                    return false;
244                }
245               
246                if (this.is_local_folder(ttree.FOLDER)) {
247                        folder = prompt(get_lang('Enter the name of the new folder:'), "");
248
249                        if(folder == null)
250                            return;
251
252
253                        if(trim(folder) == ""){
254                                alert(get_lang("you have to enter the name of the new folder"));
255                                return false;
256                        }
257                        if(folder.match(/[\/\\\!\@\#\$\%\&\*\+\(\)]/gi)){
258                            alert(get_lang("cannot create folder. try other folder name"));
259                            return false;
260                        }
261                        if(ttree.FOLDER=="local_root")
262                                var temp = expresso_local_messages.create_folder(folder);
263                        else
264                                var temp = expresso_local_messages.create_folder(ttree.FOLDER.substr(6)+"/"+folder);
265                        if (!temp)
266                                alert(get_lang("cannot create folder. try other folder name"));
267                        ttreeBox.update_folder(true);
268                }
269                else                   
270                        if(ttree.FOLDER == "INBOX")
271                                alert(get_lang("It's not possible create inside: ") + lang_folder(ttree.FOLDER)+".");
272                        else if (!this.is_local_folder(ttree.FOLDER))
273                                ttreeBox.validate("newpast");
274                        else
275                                alert(get_lang("It's not possible create inside: ") + lang_folder(ttree.FOLDER.substr(6))+".");
276        }
277       
278        messages_proxy.prototype.proxy_remove_folder = function() {
279                if (this.is_local_folder(ttree.FOLDER)) {
280                        if(ttree.FOLDER == 'local_root') {
281                                alert(get_lang("Select a folder!"));
282                                return false;
283                        }
284                        if (ttree.FOLDER == 'local_Inbox' || (preferences.auto_create_local == '1' && (ttree.FOLDER == 'local_Sent' || ttree.FOLDER == 'local_Drafts' || ttree.FOLDER == 'local_Trash'))) {
285                                alert(get_lang("It's not possible delete the folder: ")  + lang_folder(ttree.FOLDER.substr(6)) + '.');
286                                return false;
287                        }
288                        if(ttree.FOLDER.match("^local_.*$") && ttree.FOLDER == get_current_folder()){
289                            alert(get_lang("It's not possible rename this folder, because it is being used in the moment!"));
290                            return false;
291                        }
292
293                        if(ttree.FOLDER.indexOf("/")!="-1") {
294                                final_pos = ttree.FOLDER.lastIndexOf("/");
295                                new_caption = ttree.FOLDER.substr(final_pos+1);
296                        }
297                        else {
298                                new_caption = ttree.FOLDER.substr(6);
299                        }
300                        var string_confirm = get_lang("Do you wish to exclude the folder ") + new_caption + "?";
301
302                        if (confirm(string_confirm)) {
303                                var flag = expresso_local_messages.remove_folder(ttree.FOLDER.substr(6));
304                                if (flag) {
305                                        write_msg(get_lang("The folder %1 was successfully removed", new_caption));
306                                        draw_tree_local_folders();
307                                        ttreeBox.update_folder(true);
308                                }
309                                else
310                                        alert(get_lang("Delete your sub-folders first"));
311                               
312                        }
313                }
314                else
315                        ttreeBox.del();
316        }
317
318        messages_proxy.prototype.proxy_move_messages = function (folder, msgs_number, border_ID, new_folder, new_folder_name) {
319                if (! folder || folder == 'null')
320                        folder = Element("input_folder_"+msgs_number+"_r") ? Element("input_folder_"+msgs_number+"_r").value : (openTab.imapBox[currentTab] ? openTab.imapBox[currentTab]:get_current_folder());
321                if ((this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) { //Move entre pastas não locais...
322                        if (folder == new_folder){
323                                write_msg(get_lang('The origin folder and the destination folder are the same.'));
324                                return;
325                        }
326                        if(msgs_number=='selected')
327                                msgs_number = get_selected_messages();
328                        if (new_folder == 'local_root')
329                                alert(get_lang("Select a folder!"));
330                        if (parseInt(msgs_number) > 0 || msgs_number.length > 0) {
331                                expresso_local_messages.move_messages(new_folder.substr(6), msgs_number);
332                                this.aux_interface_remove_mails(msgs_number, new_folder_name, border_ID);
333                                draw_tree_local_folders();
334                                update_local_box();
335                        }
336                        else
337                                write_msg(get_lang('No selected message.'));
338                }
339                else
340                        if ((!this.is_local_folder(folder)) && (!this.is_local_folder(new_folder))) { //Move entre pastas locais...
341                                if(new_folder_name == 'Spam'){
342                                        move_msgs_not_previus(folder, msgs_number, border_ID, new_folder, new_folder_name);
343                                }else{
344                                move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name);
345                        }
346                        }else if ((!this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) {
347                                if(msgs_number=='selected')
348                                        archive_msgs(folder,new_folder);
349                                else
350                                        archive_msgs(folder,new_folder,msgs_number);
351
352                               
353                                draw_tree_local_folders();
354                                refresh();
355                        }
356                        else {
357                //Por Bruno Costa (bruno.vieira-costa@serpro.gov.br) permite o desarquivamento de menssagens chamando a função unarchive_msgs quando uma msg é movida de uma pasta local para uma pasta remota.
358
359                                expresso_local_messages.unarchive_msgs(folder,new_folder,msgs_number);
360                //write_msg(get_lang("you can't move mails from local to server folders"));
361                        }
362               
363               
364        }
365       
366        messages_proxy.prototype.proxy_move_search_messages = function(border_id, new_folder, new_folder_name) {
367               
368               
369                /*
370               
371               
372                if ((this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) { //Move entre pastas não locais...
373                        if (folder == new_folder){
374                                write_msg(get_lang('The origin folder and the destination folder are the same.'));
375                                return;
376                        }
377                        if(msgs_number=='selected')
378                                msgs_number = get_selected_messages();
379                        if (new_folder == 'local_root')
380                                alert(get_lang("Select a folder!"));
381                        if (parseInt(msgs_number) > 0 || msgs_number.length > 0) {
382                                expresso_local_messages.move_messages(new_folder.substr(6), msgs_number);
383                                this.aux_interface_remove_mails(msgs_number, new_folder_name, border_ID);
384                        }
385                        else
386                                write_msg(get_lang('No selected message.'));
387                }
388                else
389                        if ((!this.is_local_folder(folder)) && (!this.is_local_folder(new_folder))) { //Move entre pastas locais...
390                                move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name);
391                        }
392                        else if ((!this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) {
393                                archive_msgs(folder,new_folder);
394                        }
395                        else {
396                                write_msg(get_lang("you can't move mails from local to server folders"));
397                        }*/
398        }
399       
400        messages_proxy.prototype.aux_interface_remove_mails = function(msgs_number,new_folder_name,border_ID,previous_msg) {
401                if(!msgs_number)
402                        msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
403                       
404                if(msgs_number === ""){
405                        write_msg(get_lang('No selected message.'));
406                        return;
407                }
408               
409                Element('chk_box_select_all_messages').checked = false;
410                mail_msg = Element("tbody_box");
411                msgs_number = msgs_number.split(",");
412                var msg_to_delete;
413                this.previous = 0;
414                for (var i=0; i<msgs_number.length; i++){
415                        msg_to_delete = Element(msgs_number[i]);
416                        if (msg_to_delete){
417                                if ( (msg_to_delete.style.backgroundColor != '') && (preferences.use_shortcuts == '1') )
418                                        select_msg('null', 'down');
419                                       
420                                  if (parseInt(preferences.delete_and_show_previous_message) && msg_to_delete && currentTab.toString().indexOf("_r") > 0)
421                                for(var ii=0; ii < mail_msg.rows.length; ii++){
422                                        if(mail_msg.rows[ii] === msg_to_delete){
423                                                if(ii == 0){
424                                                        break;
425                                                }else{
426                                                        this.previous = mail_msg.rows[(ii - 1)].attributes[0];
427                                                        this.previous = parseInt(this.previous.value);
428                                                        break;
429                                                }
430                                        }
431                                }
432                                mail_msg.removeChild(msg_to_delete);
433                        }
434                }
435                new_folder_name = this.get_folder_name(new_folder_name);
436                if (msgs_number.length == 1)
437                        write_msg(get_lang("The message was moved to folder ") + new_folder_name);
438                else
439                        write_msg(get_lang("The messages were moved to folder ") + new_folder_name);
440
441                if (parseInt(preferences.delete_and_show_previous_message) && msg_to_delete && this.previous){
442                        proxy_mensagens.get_msg(this.previous, folder, true, show_msg);
443                }else if(currentTab != 0){
444                if (border_ID != '' && border_ID != 'null'){
445                                delete_border(border_ID,'false');
446                        }else{
447                                delete_border(currentTab,'false');
448                        }
449                }
450                if(folder == get_current_folder())
451                        Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) - msgs_number.length;                 
452        }
453
454        messages_proxy.prototype.get_folder_name = function(new_folder_name){
455                switch (new_folder_name) {
456                        case 'local_Inbox':
457                                return 'Local_Caixa de Entrada';
458                        case 'local_Sent':
459                                return 'Local_Enviados';
460                        case 'local_Trash':
461                                return 'Local_Lixeira';
462                        case 'local_Drafts':
463                                return 'Local_Rascunhos';
464                        default:
465                                return new_folder_name;
466                }
467        }
468       
469        messages_proxy.prototype.msg_img = function(msgs_number,folder_name,call_back) {
470     if(this.is_local_folder(folder_name)){
471         var msg = expresso_local_messages.get_local_mail(msgs_number);
472                 eval('call_back(msg)');
473     }
474     else
475         $.ajax({
476                  url: 'controller.php?' + $.param( {action: '$this.imap_functions.get_info_msg',
477                                                      msg_number: msg_number,
478                                                      msg_folder: msg_folder,
479                                                      decoded: true } ),
480                  success: function( data ){
481                      data = connector.unserialize( data );
482                     
483                      if( data )
484                          call_back( data );
485                  },
486                  beforeSend: function( jqXHR, settings ){
487                        connector.showProgressBar();
488                  },
489                  complete: function( jqXHR, settings ){
490                        connector.hideProgressBar();
491                  }
492
493        });
494    }
495
496    messages_proxy.prototype.export_all_messages = function(folder){
497
498                if (!folder){
499                        folder = get_current_folder();
500                }
501
502                if(!this.is_local_folder(folder)){
503                        export_all_selected_msgs();
504                }else{
505                        local_messages.prototype.local_messages_to_export();
506                }
507        }
508
509        messages_proxy.prototype.proxy_export_all_msg=function(){
510
511                var er=/^local/;
512
513
514                if(ttree.getFolder() == "local_root" || ttree.getFolder() == "root"){return false;}   //Usuario não selecionou uma pasta local e esta no começo dos nós
515                var nm_bx = ttree.getFolder().split(cyrus_delimiter);
516
517                var name_f = nm_bx[nm_bx.length -1].replace("local_","");
518
519                if (!er.test(nm_bx)){
520                        //Se a pasta nao for local, ou seja a string nao contem a string "local"
521                        ttreeBox.export_all_msg();
522                } else{
523                        expresso_local_messages.get_all_local_folder_messages(name_f);
524                }
525        }
526
527        var proxy_mensagens;
528        proxy_mensagens = new messages_proxy();
Note: See TracBrowser for help on using the repository browser.