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

Revision 5158, 14.9 KB checked in by wmerlotto, 12 years ago (diff)

Ticket #2305 - Enviando alteracoes, desenvolvidas internamente na Prognus. Ultimas sincronizacoes

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                        cExecute ("$this.imap_functions.get_range_msgs2&folder="+folder+"&msg_range_begin="+msg_range_begin+"&msg_range_end="+emails_per_page+"&sort_box_type="+sort_box_type+ "&search_box_type="+ search_box_type +"&sort_box_reverse="+sort_box_reverse+"", call_back);
28                }
29        }
30
31        messages_proxy.prototype.get_msg = function(msg_number,msg_folder,set_flag,call_back) {
32                if(this.is_local_folder(msg_folder)) {
33                        if(set_flag)
34                                expresso_local_messages.set_messages_flag(msg_number,"seen");
35                        var data = expresso_local_messages.get_local_mail(msg_number); 
36
37                        eval("call_back(data)");
38                }else {
39                        cExecute("$this.imap_functions.get_info_msg&msg_number="+ msg_number + "&msg_folder=" + url_encode(msg_folder), call_back);
40                }
41        }
42       
43        messages_proxy.prototype.delete_msgs = function(folder, msgs_number, border_ID) {
44
45                if (folder == 'null')
46                        folder = get_current_folder();
47                if (msgs_number == 'selected')
48                        msgs_number = get_selected_messages();
49                if (!this.is_local_folder(folder)){
50                        delete_msgs(folder, msgs_number, border_ID);
51                }else {
52                        if((folder != 'local_Trash') && (expresso_local_messages.as_trash())){
53                                expresso_local_messages.move_messages('Trash', msgs_number);
54                                this.aux_interface_remove_mails(msgs_number, 'local_Trash', border_ID);
55                                draw_tree_local_folders();
56                                update_local_box();
57                                refresh();
58                        }else{
59                        expresso_local_messages.delete_msgs(msgs_number, border_ID);
60                        draw_tree_local_folders();
61                                update_local_box();
62                                refresh();
63                        }
64                }
65        }
66       
67        messages_proxy.prototype.link_anexo = function (info_msg,numero_ordem_anexo) {
68
69                if(info_msg.local_message==true) {
70                        return "javascript:download_local_attachment('"+
71                                        expresso_local_messages.get_url_anexo(info_msg.msg_number,info_msg.attachments[numero_ordem_anexo].pid)+
72                                        "')";
73                }
74                else {
75                        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+"')";
76                }
77        }
78
79        messages_proxy.prototype.proxy_source_msg = function (id_msg,folder) {
80                if(!this.is_local_folder(folder)) {
81                        source_msg(id_msg,folder);
82                }
83                else {
84                        var num_msg = id_msg.substr(0,(id_msg.length - 2));
85                        expresso_local_messages.get_source_msg(num_msg);
86                }
87        }
88       
89        messages_proxy.prototype.proxy_set_messages_flag = function (flag,msg_number){
90                if(this.is_local_folder(get_current_folder())) {
91                        expresso_local_messages.set_messages_flag(msg_number,flag);
92                }
93                else {
94                        set_messages_flag(flag,msg_number);
95                }
96        }
97       
98        messages_proxy.prototype.proxy_set_message_flag = function (msg_number,flag,func_after_flag_change){
99                var msg_number_folder = Element("new_input_folder_"+msg_number+"_r"); //Mensagens respondidas/encaminhadas
100                if(!msg_number_folder)
101                        var msg_number_folder = Element("input_folder_"+msg_number+"_r"); //Mensagens abertas
102                var folder = msg_number_folder ?  msg_number_folder.value : get_current_folder();
103                if(this.is_local_folder(folder)) {
104                        expresso_local_messages.set_message_flag(msg_number,flag, func_after_flag_change);
105                }
106                else {
107                        set_message_flag(msg_number,flag, func_after_flag_change);
108                }
109        }
110       
111        messages_proxy.prototype.is_local_folder = function(folder) {
112                if(typeof(folder) == "undefined" || folder.indexOf("local_")==-1)
113                        return false;
114                return true;
115        }
116       
117
118        messages_proxy.prototype.proxy_rename_folder = function(){
119
120                if (ttree.FOLDER == 'local_Inbox') {
121                        alert(get_lang("It's not possible rename the folder: ") + lang_folder(ttree.FOLDER.substr(6)) + '.');
122                        return false;
123                }
124                if(ttree.FOLDER == 'local_root') {
125                                alert(get_lang("It's not possible rename this folder!"));
126                                return false;
127                }
128                if(ttree.FOLDER.match("^local_.*$") && ttree.FOLDER == get_current_folder()){
129                        alert(get_lang("It's not possible rename this folder, because it is being used in the moment!"));
130                                                return false;
131                }
132               
133                if (this.is_local_folder(ttree.FOLDER)) {
134                        folder = prompt(get_lang("Enter a name for the box"), "");
135                        if(folder.match(/[\/\\\!\@\#\$\%\&\*\+\(\)]/gi)){
136                            alert(get_lang("It's not possible rename this folder. try other folder name"));
137                            return false;
138                        }
139                        if(trim(folder) == "" || trim(folder) == null){
140                                alert(get_lang("you have to enter the name of the new folder"));
141                                return false;
142                        }
143                        var temp = expresso_local_messages.rename_folder(folder, ttree.FOLDER.substr(6));
144                        if (!temp)
145                                alert(get_lang("cannot rename folder. try other folder name"));
146                        ttreeBox.update_folder();
147                }
148                else {
149                        ttreeBox.validate("rename");
150                }
151               
152        }
153
154        messages_proxy.prototype.proxy_create_folder = function() {
155                if (folders.length == preferences.imap_max_folders){
156                    alert(get_lang("Limit reached folders"));
157                    return false;
158                }
159               
160                if (this.is_local_folder(ttree.FOLDER)) {
161                        folder = prompt(get_lang('Enter the name of the new folder:'), "");
162
163                        if(folder == null)
164                            return;
165
166
167                        if(trim(folder) == ""){
168                                alert(get_lang("you have to enter the name of the new folder"));
169                                return false;
170                        }
171                        if(folder.match(/[\/\\\!\@\#\$\%\&\*\+\(\)]/gi)){
172                            alert(get_lang("cannot create folder. try other folder name"));
173                            return false;
174                        }
175                        if(ttree.FOLDER=="local_root")
176                                var temp = expresso_local_messages.create_folder(folder);
177                        else
178                                var temp = expresso_local_messages.create_folder(ttree.FOLDER.substr(6)+"/"+folder);
179                        if (!temp)
180                                alert(get_lang("cannot create folder. try other folder name"));
181                        ttreeBox.update_folder(true);
182                }
183                else                   
184                        if(ttree.FOLDER == "INBOX")
185                                alert(get_lang("It's not possible create inside: ") + lang_folder(ttree.FOLDER)+".");
186                        else if (!this.is_local_folder(ttree.FOLDER))
187                                ttreeBox.validate("newpast");
188                        else
189                                alert(get_lang("It's not possible create inside: ") + lang_folder(ttree.FOLDER.substr(6))+".");
190        }
191       
192        messages_proxy.prototype.proxy_remove_folder = function() {
193                if (this.is_local_folder(ttree.FOLDER)) {
194                        if(ttree.FOLDER == 'local_root') {
195                                alert(get_lang("Select a folder!"));
196                                return false;
197                        }
198                        if (ttree.FOLDER == 'local_Inbox' || (preferences.auto_create_local == '1' && (ttree.FOLDER == 'local_Sent' || ttree.FOLDER == 'local_Drafts' || ttree.FOLDER == 'local_Trash'))) {
199                                alert(get_lang("It's not possible delete the folder: ")  + lang_folder(ttree.FOLDER.substr(6)) + '.');
200                                return false;
201                        }
202                        if(ttree.FOLDER.match("^local_.*$") && ttree.FOLDER == get_current_folder()){
203                            alert(get_lang("It's not possible rename this folder, because it is being used in the moment!"));
204                            return false;
205                        }
206
207                        if(ttree.FOLDER.indexOf("/")!="-1") {
208                                final_pos = ttree.FOLDER.lastIndexOf("/");
209                                new_caption = ttree.FOLDER.substr(final_pos+1);
210                        }
211                        else {
212                                new_caption = ttree.FOLDER.substr(6);
213                        }
214                        var string_confirm = get_lang("Do you wish to exclude the folder ") + new_caption + "?";
215
216                        if (confirm(string_confirm)) {
217                                var flag = expresso_local_messages.remove_folder(ttree.FOLDER.substr(6));
218                                if (flag) {
219                                        write_msg(get_lang("The folder %1 was successfully removed", new_caption));
220                                        draw_tree_local_folders();
221                                        ttreeBox.update_folder(true);
222                                }
223                                else
224                                        alert(get_lang("Delete your sub-folders first"));
225                               
226                        }
227                }
228                else
229                        ttreeBox.del();
230        }
231
232        messages_proxy.prototype.proxy_move_messages = function (folder, msgs_number, border_ID, new_folder, new_folder_name) {
233                if (! folder || folder == 'null')
234                        folder = Element("input_folder_"+msgs_number+"_r") ? Element("input_folder_"+msgs_number+"_r").value : (openTab.imapBox[currentTab] ? openTab.imapBox[currentTab]:get_current_folder());
235                if ((this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) { //Move entre pastas não locais...
236                        if (folder == new_folder){
237                                write_msg(get_lang('The origin folder and the destination folder are the same.'));
238                                return;
239                        }
240                        if(msgs_number=='selected')
241                                msgs_number = get_selected_messages();
242                        if (new_folder == 'local_root')
243                                alert(get_lang("Select a folder!"));
244                        if (parseInt(msgs_number) > 0 || msgs_number.length > 0) {
245                                expresso_local_messages.move_messages(new_folder.substr(6), msgs_number);
246                                this.aux_interface_remove_mails(msgs_number, new_folder_name, border_ID);
247                                draw_tree_local_folders();
248                                update_local_box();
249                        }
250                        else
251                                write_msg(get_lang('No selected message.'));
252                }
253                else
254                        if ((!this.is_local_folder(folder)) && (!this.is_local_folder(new_folder))) { //Move entre pastas locais...
255                                if(new_folder_name == 'Spam'){
256                                        move_msgs_not_previus(folder, msgs_number, border_ID, new_folder, new_folder_name);
257                                }else{
258                                move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name);
259                        }
260                        }else if ((!this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) {
261                                if(msgs_number=='selected')
262                                        archive_msgs(folder,new_folder);
263                                else
264                                        archive_msgs(folder,new_folder,msgs_number);
265
266                               
267                                draw_tree_local_folders();
268                                refresh();
269                        }
270                        else {
271                //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.
272
273                                expresso_local_messages.unarchive_msgs(folder,new_folder,msgs_number);
274                //write_msg(get_lang("you can't move mails from local to server folders"));
275                        }
276               
277               
278        }
279       
280        messages_proxy.prototype.proxy_move_search_messages = function(border_id, new_folder, new_folder_name) {
281               
282               
283                /*
284               
285               
286                if ((this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) { //Move entre pastas não locais...
287                        if (folder == new_folder){
288                                write_msg(get_lang('The origin folder and the destination folder are the same.'));
289                                return;
290                        }
291                        if(msgs_number=='selected')
292                                msgs_number = get_selected_messages();
293                        if (new_folder == 'local_root')
294                                alert(get_lang("Select a folder!"));
295                        if (parseInt(msgs_number) > 0 || msgs_number.length > 0) {
296                                expresso_local_messages.move_messages(new_folder.substr(6), msgs_number);
297                                this.aux_interface_remove_mails(msgs_number, new_folder_name, border_ID);
298                        }
299                        else
300                                write_msg(get_lang('No selected message.'));
301                }
302                else
303                        if ((!this.is_local_folder(folder)) && (!this.is_local_folder(new_folder))) { //Move entre pastas locais...
304                                move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name);
305                        }
306                        else if ((!this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) {
307                                archive_msgs(folder,new_folder);
308                        }
309                        else {
310                                write_msg(get_lang("you can't move mails from local to server folders"));
311                        }*/
312        }
313       
314        messages_proxy.prototype.aux_interface_remove_mails = function(msgs_number,new_folder_name,border_ID,previous_msg) {
315                if(!msgs_number)
316                        msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));
317                       
318                if(msgs_number === ""){
319                        write_msg(get_lang('No selected message.'));
320                        return;
321                }
322               
323                Element('chk_box_select_all_messages').checked = false;
324                mail_msg = Element("tbody_box");
325                msgs_number = msgs_number.split(",");
326                var msg_to_delete;
327                this.previous = 0;
328                for (var i=0; i<msgs_number.length; i++){
329                        msg_to_delete = Element(msgs_number[i]);
330                        if (msg_to_delete){
331                                if ( (msg_to_delete.style.backgroundColor != '') && (preferences.use_shortcuts == '1') )
332                                        select_msg('null', 'down');
333                                       
334                                  if (parseInt(preferences.delete_and_show_previous_message) && msg_to_delete && currentTab.toString().indexOf("_r") > 0)
335                                for(var ii=0; ii < mail_msg.rows.length; ii++){
336                                        if(mail_msg.rows[ii] === msg_to_delete){
337                                                if(ii == 0){
338                                                        break;
339                                                }else{
340                                                        this.previous = mail_msg.rows[(ii - 1)].attributes[0];
341                                                        this.previous = parseInt(this.previous.value);
342                                                        break;
343                                                }
344                                        }
345                                }
346                                mail_msg.removeChild(msg_to_delete);
347                        }
348                }
349                new_folder_name = this.get_folder_name(new_folder_name);
350                if (msgs_number.length == 1)
351                        write_msg(get_lang("The message was moved to folder ") + new_folder_name);
352                else
353                        write_msg(get_lang("The messages were moved to folder ") + new_folder_name);
354
355                if (parseInt(preferences.delete_and_show_previous_message) && msg_to_delete && this.previous){
356                        proxy_mensagens.get_msg(this.previous, folder, true, show_msg);
357                }else if(currentTab != 0){
358                if (border_ID != '' && border_ID != 'null'){
359                                delete_border(border_ID,'false');
360                        }else{
361                                delete_border(currentTab,'false');
362                        }
363                }
364                if(folder == get_current_folder())
365                        Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) - msgs_number.length;                 
366        }
367
368        messages_proxy.prototype.get_folder_name = function(new_folder_name){
369                switch (new_folder_name) {
370                        case 'local_Inbox':
371                                return 'Local_Caixa de Entrada';
372                        case 'local_Sent':
373                                return 'Local_Enviados';
374                        case 'local_Trash':
375                                return 'Local_Lixeira';
376                        case 'local_Drafts':
377                                return 'Local_Rascunhos';
378                        default:
379                                return new_folder_name;
380                }
381        }
382       
383        messages_proxy.prototype.msg_img = function(msgs_number,folder_name,call_back) {
384     if(this.is_local_folder(folder_name)){
385         var msg = expresso_local_messages.get_local_mail(msgs_number);
386                 eval('call_back(msg)');
387     }
388     else
389        cExecute('$this.imap_functions.get_info_msg&msg_number='+msgs_number+'&msg_folder='+url_encode(folder_name),call_back);
390    }
391
392    messages_proxy.prototype.export_all_messages = function(folder){
393
394                if (!folder){
395                        folder = get_current_folder();
396                }
397
398                if(!this.is_local_folder(folder)){
399                        export_all_selected_msgs();
400                }else{
401                        local_messages.prototype.local_messages_to_export();
402                }
403        }
404
405        messages_proxy.prototype.proxy_export_all_msg=function(){
406
407                var er=/^local/;
408
409
410                if(ttree.FOLDER == "local_root"){return false;}   //Usuario não selecionou uma pasta local e esta no começo dos nós
411                var nm_bx = ttree.FOLDER.split(cyrus_delimiter);
412
413                var name_f = nm_bx[nm_bx.length -1].replace("local_","");
414
415                if (!er.test(nm_bx)){
416                        //Se a pasta nao for local, ou seja a string nao contem a string "local"
417                        ttreeBox.export_all_msg();
418                } else{
419                        expresso_local_messages.get_all_local_folder_messages(name_f);
420                }
421        }
422
423        var proxy_mensagens;
424        proxy_mensagens = new messages_proxy();
Note: See TracBrowser for help on using the repository browser.