source: sandbox/expressoMail1_2/MailArchiver/2.2/expressoMail1_2/js/mail_archiver.js @ 4942

Revision 4942, 51.3 KB checked in by fernando-alberto, 13 years ago (diff)

Ticket #1269 - Desenvolvimento da nova solucao de arquivamento local MailArchiver?, evolucao dos trabalhos

  • Property svn:eol-style set to native
Line 
1<!--
2/*
3 * Mail Archive JS API
4 *
5 * This JavaScript file is the core to use MailArchiver embeded at Expresso suite.
6 * It contains all the resources used to handle local messages stored at the brand
7 * new solution Mail Archiver (a embeded application server running at client side).
8 *
9 * This feature is a replacement for Google Gears(obsolete by now), used by
10 * Expresso to store local messages at user workstation hard disk.
11 *
12 * @author Fernando Wendt [fernando-alberto.wendt@serpro.gov.br]
13 *
14 * @status under development
15 */
16
17var sessid = 'sessionId';
18
19function IterateIt(){
20    var deph = 0;
21    var returnstr = "";
22
23    for (i in arguments[0]){
24      if((arguments[0][i]) && (arguments[0][i].visited == null)){
25          arguments[0][i].visited = true;
26
27          if(typeof(arguments[0][i]) == 'object'){
28            returnstr += '+ Property "' + i + '"[object ' + deph + ']\n<br>';
29            //returnstr += IterateIt(arguments[0][i]);
30            deph++;
31          }
32      }
33    else returnstr += 'Property "' + i + '" -> ' + arguments[0][i] + ' [' + typeof(i) + ']\n<br>';
34    }
35    return (returnstr);
36}
37
38function dump(arr,level) {
39        var dumped_text = "";
40        if(!level) level = 0;
41       
42        //The padding given at the beginning of the line.
43        var level_padding = "";
44        for(var j=0;j<level+1;j++) level_padding += "    ";
45       
46        if(typeof(arr) == 'object') { //Array/Hashes/Objects
47                for(var item in arr) {
48                        var value = arr[item];
49                       
50                        if(typeof(value) == 'object') { //If it is an array,
51                                dumped_text += level_padding + "'" + item + "' ...\n<br>";
52                                dumped_text += dump(value,level+1);
53                        } else {
54                                dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n<br>";
55                        }
56                }
57        } else { //Stings/Chars/Numbers etc.
58                dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
59        }
60        return dumped_text;
61}
62
63function zeroFill(d){
64    if(parseInt(d) < 10)
65        return('0' + d);
66    else
67        return(d);
68}
69
70/**
71 * Concatenates the values of a variable into an easily readable string
72 * by Matt Hackett [scriptnode.com]
73 * @param {Object} x The variable to debug
74 * @param {Number} max The maximum number of recursions allowed (keep low, around 5 for HTML elements to prevent errors) [default: 10]
75 * @param {String} sep The separator to use between [default: a single space ' ']
76 * @param {Number} l The current level deep (amount of recursion). Do not use this parameter: it's for the function's own use
77 */
78function print_r(x, max, sep, l) {
79
80        l = l || 0;
81        max = max || 100;
82        sep = sep || ' ';
83
84        if (l > max) {
85                return "[WARNING: Too much recursion]\n";
86        }
87
88        var
89                i,
90                r = '',
91                t = typeof x,
92                tab = '';
93
94        if (x === null) {
95                r += "(null)\n";
96        } else if (t == 'object') {
97
98                l++;
99
100                for (i = 0; i < l; i++) {
101                        tab += sep;
102                }
103
104                if (x && x.length) {
105                        t = 'array';
106                }
107
108                r += '(' + t + ") :\n";
109
110                for (i in x) {
111                        try {
112                                r += tab + '[' + i + '] : ' + print_r(x[i], max, sep, (l + 1));
113                        } catch(e) {
114                                return "[ERROR: " + e + "]\n";
115                        }
116                }
117
118        } else {
119
120                if (t == 'string') {
121                        if (x == '') {
122                                x = '(empty)';
123                        }
124                }
125
126                r += '(' + t + ') ' + x + "\n";
127
128        }
129
130        return r;
131
132};
133var_dump = print_r;
134
135
136
137//Main object structure: object property data definition
138function MailArchiver() {
139    this.enabled = null;
140    this.interval = 500;
141    this.timer = null;
142    this.counter = 0;
143    this.message_list = new Array();
144    this.messageslisted = new Array();
145    this.total_messages = 0;
146    this.messages_processed = 0;
147    this.messages_fail = 0;
148    this.folder_origin = null;
149    this.folder_destination = null;
150    this.folders = null;
151    this.currentfolder = 'local_root';
152    this.currentmessage = null;
153    this.drawdata = null;
154    this.onprocess = false;
155    this.queryconfig = new MAQueryConfig();
156    this.messagesourcehandler = new Cxf_Transport_Handler();
157    this.specialfolders = {
158                            "inbox":"local_inbox",
159                            "sent":"local_sent",
160                            "drafts":"local_drafts",
161                            "outbox":"local_outbox",
162                            "trash":"local_trash"
163                          };
164}
165
166//Invoked at some possible MA crash issue
167MailArchiver.prototype.resetObject = function(){
168    expresso_mail_archive.message_list = new Array();
169    expresso_mail_archive.total_messages = 0;
170    expresso_mail_archive.messages_processed = 0;
171    expresso_mail_archive.messages_fail = 0;
172    expresso_mail_archive.folder_origin = null;
173    expresso_mail_archive.folder_destination = null;
174    expresso_mail_archive.folder = null;
175}
176
177/*SystemCheck method: test if MailArchive is installed and/or running at user workstation
178*Try to get a instance of ArchiveServices object - the handler of services provided by
179*the MailArchive services provider interface, from user workstation.
180*/
181MailArchiver.prototype.SystemCheck = function(){
182    expresso_mail_archive.enabled = ((ArchiveServices) ? true : false);
183}
184
185//Turns on the listener timer to check services availability
186MailArchiver.prototype.ActivateStatusListener = function(obj){
187    if (document.getElementById('mail_archiver_retry'))
188        tem_tag = true;
189    else
190        tem_tag = false;
191    try{
192        if (obj.enabled){
193            obj.interval = 500; //set default timer to 1ms (imediate lauching)
194            draw_footer_box(get_current_folder());
195            obj.getServicesStatus(obj);
196        }
197        else{
198            throw "this is not enabled: " + obj;
199            window.alert('Nope: obj.enabled is not true...');
200        }
201    }
202    catch (e){
203        window.alert('ActivateStatusListener error: ' + e);
204    }
205}
206
207//Turns off the service status listener, at a crash issue
208MailArchiver.prototype.DeactivateStatusListener = function(obj){
209    window.clearInterval(obj.timer);
210    obj.enabled = null;
211    obj.timer=null;
212    obj.interval = 500;
213    ArchiveServices = null;
214    connector.purgeCache();
215   
216    draw_footer_box(get_current_folder());
217    auto_refresh();
218
219    if(document.getElementById('mail_archiver_retry')){
220        document.getElementById('mail_archiver_retry').parentNode.removeChild(document.getElementById('mail_archiver_retry'));
221    }
222    else{
223        //to do, by now, means nothing
224    }
225}
226
227//ServiceStatus callback OK
228MailArchiver.prototype.getServicesStatusOK = function(serviceData){
229    if ((serviceData.getReturn() == "STARTED") || (serviceData.getReturn() == "RUNNING")){
230        //If there is no timer activated to services check interval, set it up.
231        if(expresso_mail_archive.enabled){
232           if(expresso_mail_archive.timer == null){
233                expresso_mail_archive.interval = 5000;
234                expresso_mail_archive.timer = window.setInterval(expresso_mail_archive.getServicesStatus, expresso_mail_archive.interval);
235                var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders', folderName: 'local_root'};
236                expresso_mail_archive.currentfolder = 'local_root';
237                expresso_mail_archive.drawdata = drawinginfo;
238                expresso_mail_archive.getFoldersList();
239           }
240        }
241        else{
242            window.clearInterval(expresso_mail_archive.timer);
243            write_msg(get_lang('Your preferences are setting to use local messages, but Mail Archiver does not seems to be running or installed at this workstation. By now, we are turning off this feature. Check it out!'),true);
244        }
245    }
246    else{
247        expresso_mail_archive.enabled = false;
248        window.clearInterval(expresso_mail_archive.timer);
249        write_msg(get_lang('Your preferences are setting to use local messages, but Mail Archiver does not seems to be running or installed at this workstation. By now, we are turning off this feature. Check it out!'),true);
250    }
251}
252
253//Dettach resources handler
254MailArchiver.prototype.DeactivateResources = function(obj){   
255    if(obj.timer)
256        window.clearInterval(obj.timer);
257    write_msg(get_lang('3Mail Archiver is not responding. There is some communicating issue hang it up. Some services may not work properly. Check it out!'));
258    obj.DeactivateStatusListener(obj);
259    return;
260}
261
262//Services Status Fail callback
263MailArchiver.prototype.getServicesStatusFailure = function(serviceData){
264    window.alert('getServicesStatusFailure feature: ' + serviceData);
265}
266
267//Service Status handler
268MailArchiver.prototype.getServicesStatus = function(obj){
269    try{
270        if(ArchiveServices){
271            try{
272                ArchiveServices.getState(expresso_mail_archive.getServicesStatusOK, expresso_mail_archive.getServicesStatusFailure, "true");
273            }catch (e){
274                throw "Service failure status: getState";
275            }
276        }
277        else {
278            throw "No ArchiveServices object present. Sorry, but leaving now...";
279        }
280    }catch (e){
281        window.alert('getServiceStatus exception:' + e);
282    }
283    expresso_mail_archive.counter = expresso_mail_archive.counter +1;
284}
285
286/*Restart method: re-initializes all the Mail Archive structure
287 **/
288MailArchiver.prototype.Restart = function(obj){
289    obj.SystemCheck();
290    obj.ActivateStatusListener(obj);
291    auto_refresh();
292}
293
294/*Startup method: initializes all the Mail Archive structure to work so far as possible
295 *Looks like the old 'gears_init', from Gears
296 **/
297MailArchiver.prototype.Startup = function(){
298    this.SystemCheck();
299}
300
301MailArchiver.prototype.serializeToExpresso = function(data){
302    return(connector.serialize(data));
303}
304
305MailArchiver.prototype.unserializeFromExpresso = function(data){
306    return(connector.unserialize(data));
307}
308
309
310MailArchiver.prototype.CreateMessageList = function(msg_list){
311    if((msg_list != null) && (msg_list != "") && (msg_list != " ")){
312        if (expresso_mail_archive.message_list.length == 0){
313            //Get all the messages ids by pass at msgs_id to "message_list" object array propertie - if more than one exists
314            if(msg_list.indexOf(',') != -1){
315                var tmp_list = msg_list.split(',');
316                for(var i=0; i < tmp_list.length; i++){
317                    expresso_mail_archive.message_list.push(tmp_list[i]);
318                }
319            }
320            //Push message list to process the only one
321            else expresso_mail_archive.message_list.push(msg_list);
322        }
323    }
324    //msg_list is corrupted. aborting population
325    else expresso_mail_archive.message_list = new Array();
326}
327
328//Archive Operation
329MailArchiver.prototype.Archive = function(source_folder,destination_folder,msgs_id){
330    //window.alert('tentando arquivar a mensagem [' + msgs_id + '], do folder ['+source_folder+'] para a pasta destino ['+destination_folder+']');
331    try{
332        document.getElementById('main_title').innerHTML = get_lang("Starting to archive messages");
333        expresso_mail_archive.CreateMessageList(msgs_id);
334
335        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')){
336
337            //Sets the message counter
338            expresso_mail_archive.total_messages = expresso_mail_archive.message_list.length;
339           
340            //Sets the folders properties: destination and origin
341            expresso_mail_archive.folder_origin = source_folder;
342            //window.alert('substr(0,5) = ' + destination_folder.substr(0,5));
343            if(destination_folder.substr(0,5) == 'local')
344                expresso_mail_archive.folder_destination = destination_folder.substr(6,destination_folder.length);
345            else
346                expresso_mail_archive.folder_destination = destination_folder;
347           
348            var fcaption = expresso_mail_archive.folder_destination;
349   
350            for (var w=0; w < expresso_mail_archive.folders.length; w++){
351                if(expresso_mail_archive.folders[w]["id"] == expresso_mail_archive.folder_destination){
352                    fcaption = expresso_mail_archive.folders[w]["name"];
353                    break;
354                }
355            }
356           
357            //window.alert('destination_folder = ' + expresso_mail_archive.folder_destination);
358
359            var arch_handler = function(data){
360                //Store the message source from Ajax request by now (string data)
361                var js_var = new String(data);
362                try{
363                    //Archive services needs session id, message source and destination folder
364                    document.getElementById('main_title').innerHTML = get_lang("Archiving message on folder") + " " + fcaption +"...";
365                    ArchiveServices.archive(expresso_mail_archive.getArchiveOperationOK, expresso_mail_archive.getArchiveOperationFailure, sessid, data ,expresso_mail_archive.folder_destination);
366                }
367                catch(e){
368                    window.alert('ArchiveServices.archive eror: ' + e);
369                }
370            }
371           
372            document.getElementById('main_title').innerHTML = get_lang("Archiving messages " + expresso_mail_archive.messages_processed + " of " + expresso_mail_archive.message_list.length);
373            cExecute("$this.exporteml.js_source_var",arch_handler,"folder="+url_decode(source_folder)+"&msgs_to_export="+expresso_mail_archive.message_list[0]);
374        }
375        else throw('Ops. Message list stack is empty!\nMessage list count = ' + expresso_mail_archive.message_list.length + '\nFirst child = ' + expresso_mail_archive.message_list[0]);
376    }
377    catch(e){
378        window.alert('Archive error: ' + e);
379    }
380}
381
382//Archive callback OK
383MailArchiver.prototype.getArchiveOperationOK = function(status_message){
384    expresso_mail_archive.messages_processed++;
385    if(expresso_mail_archive.message_list.length > 1){
386       document.getElementById('main_title').innerHTML = get_lang("Message " + expresso_mail_archive.messages_processed + " of " + expresso_mail_archive.total_messages + " successfully archived.");
387       expresso_mail_archive.message_list.shift();
388       expresso_mail_archive.Archive(expresso_mail_archive.folder_origin, expresso_mail_archive.folder_destination, expresso_mail_archive.message_list);
389    }
390    else{
391        document.getElementById('main_title').innerHTML = get_lang("All done. End of archive messages operation.");
392        expresso_mail_archive.resetObject();
393        window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);
394    }
395}
396//Archive callback Fail
397MailArchiver.prototype.getArchiveOperationFailure = function(error_message){
398    window.alert('Hi! getArchiveOperationFailure comes with ' + error_message.getReturn());
399    window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);
400}
401
402/**
403 *Archieve Delete Message
404 *
405 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
406 *
407 *@param msg_number Unique identification of the message
408 */
409MailArchiver.prototype.deleteMessages = function(msgs_number){
410    try{
411        expresso_mail_archive.CreateMessageList(msgs_number);
412        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
413            ArchiveServices.deleteMessages(expresso_mail_archive.deleteMessagesOperationOK,
414                                           expresso_mail_archive.deleteMessagesOperationFailure,
415                                           sessid,
416                                           expresso_mail_archive.message_list);
417        }
418    }
419    catch (e){
420        return (e);
421    }
422}
423
424/**
425 *Archieve Delete Message Ok
426 *
427 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
428 *
429 */
430MailArchiver.prototype.deleteMessagesOperationOK = function(){
431    var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders'};
432    expresso_mail_archive.drawdata = drawinginfo;
433    expresso_mail_archive.drawFolderTree();
434    expresso_mail_archive.listMessages();
435    if(expresso_mail_archive.message_list.length > 1){
436        write_msg(get_lang("The messages were deleted."));
437    }else{
438        write_msg(get_lang("The message was deleted."));
439    }
440}
441
442/**
443 *Archieve Delete Message Operation Failure
444 *
445 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
446 *
447 */
448MailArchiver.prototype.deleteMessagesOperationFailure = function(error_message){
449    if(expresso_mail_archive.message_list.length > 1){
450        write_msg(get_lang("Error deleting messages.") + ' ' + error_message.getReturn());
451    }else{
452        write_msg(get_lang("Error deleting message.") + ' ' + error_message.getReturn());
453    }
454}
455
456/**
457 *Move message
458 *
459 *@param folder Folder where the message will be moved
460 *@param msgs_number Unique Id of the message
461 *
462 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
463 *
464 */
465MailArchiver.prototype.moveMessages = function(folder, msgs_number){
466    try{
467        expresso_mail_archive.CreateMessageList(msgs_number);
468        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) {
469            ArchiveServices.moveMessages(expresso_mail_archive.moveMessagesOperationOK,
470                                           expresso_mail_archive.moveMessagesOperationFailure,
471                                           sessid,
472                                           expresso_mail_archive.message_list,
473                                           folder
474                                       );
475        }
476        else {
477            throw "Error moving the messages!";
478        }
479    }
480    catch (e){
481        return (e);
482    }
483}
484
485/**
486 *Move Message Ok
487 *
488 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
489 *
490 */
491MailArchiver.prototype.moveMessagesOperationOK = function(){
492    var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders'};
493    expresso_mail_archive.drawdata = drawinginfo;
494    expresso_mail_archive.drawFolderTree();
495    expresso_mail_archive.listMessages();
496    if(expresso_mail_archive.message_list.length > 1){
497        write_msg(get_lang("The messages were moved."));
498    }else{
499        write_msg(get_lang("The message was moved."));
500    }
501}
502
503/**
504 *Move Message Failure
505 *
506 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br]
507 *
508 */
509MailArchiver.prototype.moveMessagesOperationFailure = function(error_message){
510    if(expresso_mail_archive.message_list.length > 1){
511        write_msg(get_lang("Error deleting messages.") + ' ' + error_message.getReturn());
512    }else{
513        write_msg(get_lang("Error deleting message.") + ' ' + error_message.getReturn());
514    }
515}
516
517
518//getFolderList Operation
519MailArchiver.prototype.getFoldersList = function(basefolder){   
520    try{
521        ArchiveServices.listFolders(expresso_mail_archive.getFoldersListOperationOK, expresso_mail_archive.getFoldersListOperationFailure, sessid, basefolder);
522    }
523    catch (e){
524        window.alert('AQUI MESMO\nOps...List folders fails at:\n' + e.description);
525    }
526}
527
528//getFolderList callback OK
529MailArchiver.prototype.getFoldersListOperationOK = function(folderlist){
530    //Internal variable used to map all XML data return from WS invokated
531    var lfolders = new Array();
532   
533    //Mapping XML data to a handler data structure
534    if(folderlist.getReturn().length > 0){
535        var lfolders = new Array();
536        for(i=0; i<folderlist.getReturn().length; i++){
537            (folderlist.getReturn()[i].getFolderCount() > 0 ) ? folderChild = 1 : folderChild = 0;
538
539            //Store folder data at this format: {folder name, number of messages contained, folder has child nodes, folder id, folder parent id, folder full path}
540            //var folderData = new Array(folderlist.getReturn()[i].getName(), folderlist.getReturn()[i].getMessageCount(), folderChild, folderlist.getReturn()[i].getId(), folderlist.getReturn()[i].getParentId(), folderlist.getReturn()[i].getPath());
541            var folderData = {name: folderlist.getReturn()[i].getName(), messages: folderlist.getReturn()[i].getMessageCount(), haschild: folderChild, id: folderlist.getReturn()[i].getId(), parentid: folderlist.getReturn()[i].getParentId(), path: folderlist.getReturn()[i].getPath()};
542            lfolders.push(folderData);
543        }
544
545        //Sets folders property at main object
546        expresso_mail_archive.folders = lfolders;
547       
548        if(expresso_mail_archive.folders[0]["parentid"] == "")
549            expresso_mail_archive.currentfolder = 'local_root';
550        else
551            expresso_mail_archive.currentfolder = expresso_mail_archive.folders[0]["parentid"];
552       
553        //Folders dumping :)
554        /*var strFolders = '---';
555        for (var w=0; w < expresso_mail_archive.folders.length; w++){
556            strFolders += '\nFolder ' + w + ' -->';
557            for (x in expresso_mail_archive.folders[w]){
558                strFolders += '\n----------' + x + ':= ' + expresso_mail_archive.folders[w][x];
559            }
560            strFolders += '\n<---';
561        }
562        strFolders += '\n---';
563        alert(lfolders.length + ' folders mapeados, com default = ' + expresso_mail_archive.currentfolder + '\nfolders list:\n\n' + strFolders);
564        */
565
566        //If something UI related have been flagged, handle it
567        if (expresso_mail_archive.drawdata){
568            //window.alert('com drawdata');
569            expresso_mail_archive.drawFolderTree();
570        }
571    }
572}
573
574//getFolderList callback Fail
575MailArchiver.prototype.getFoldersListOperationFailure = function(error, http_msg){
576    window.alert('List folders mistake:' + error + '\nhttp_error = ' + http_msg);
577}
578
579//drawFolderTree operation, if requested to
580MailArchiver.prototype.drawFolderTree = function(){
581    //window.alert('na api de foldertree');
582    var localBaseName  = 'local_';
583    var objectTree = expresso_mail_archive.drawdata.treeObject;
584    var evalobjectTree = eval(expresso_mail_archive.drawdata.treeName);
585   
586    //Add nodes to tree
587    if(expresso_mail_archive.folders.length > 0){
588        for(i=0; i<expresso_mail_archive.folders.length; i++){
589            var folder_caption;
590           
591            //Special folders treatment: Inbox, Outbox, Drafts, Sent and Trash folders
592            if((expresso_mail_archive.folders[i]["name"] == 'Inbox') || (expresso_mail_archive.folders[i]["name"] == 'Outbox') || (expresso_mail_archive.folders[i]["name"] == 'Drafts') || (expresso_mail_archive.folders[i]["name"] == 'Sent') || (expresso_mail_archive.folders[i]["name"] == 'Trash')){
593                folder_caption = get_lang(expresso_mail_archive.folders[i]["name"]);
594            }
595            else{
596                folder_caption = expresso_mail_archive.folders[i]["name"];
597            }
598            var n_demo = new dNode({id: localBaseName + expresso_mail_archive.folders[i]["id"], caption: folder_caption, onClick: "change_folder('"+ localBaseName + expresso_mail_archive.folders[i]["id"] +"','"+ localBaseName + expresso_mail_archive.folders[i]["id"]+"', '" + expresso_mail_archive.drawdata.treeName + "')", plusSign:expresso_mail_archive.folders[i]["haschild"]});
599            //var n_demo = new dNode({id: localBaseName + expresso_mail_archive.folders[i]["name"], caption: folder_caption, onClick: "change_folder('"+ localBaseName + expresso_mail_archive.folders[i]["name"] +"','"+ localBaseName + expresso_mail_archive.folders[i]["name"]+"', '" + expresso_mail_archive.drawdata.treeName + "')", plusSign:expresso_mail_archive.folders[i]["haschild"]});
600           
601            //Adjust the id node names
602            if(expresso_mail_archive.currentfolder){
603                if(expresso_mail_archive.currentfolder.substr(0,5) != 'local'){
604                    evalobjectTree.add(n_demo, localBaseName + expresso_mail_archive.currentfolder);
605                }
606                else{
607                    evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder);
608                }
609            }
610            else {
611                expresso_mail_archive.currentfolder = 'local_root';
612                evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder);
613            }
614        }
615    }
616}
617
618//getFaultInfo operation
619MailArchiver.prototype.getFaultInfo = function(){
620    try{
621        ArchiveServices.getFaultInfo(expresso_mail_archive.getFaultInfoOperationOK, expresso_mail_archive.getFaultInfoOperationFailure, sessid);
622    }   
623    catch(e){
624        write_msg(get_lang('getFaultInfo invoke fails = ' + e),true);
625    }
626}
627
628//getFaultInfo callback OK
629MailArchiver.prototype.getFaultInfoOperationOK = function(faultinfo){
630    try{
631        write_msg(get_lang('MailArchiver remote service reports the following error:' + faultinfo.getReturn().getSoapFaultString(), true));
632    } catch(e){
633        write_msg(get_lang('Ops! It was not possible to capture service error data.', true));
634    }
635}
636
637//getFaultInfo callback Fail
638MailArchiver.prototype.getFaultInfoOperationFailure = function(errorCode, errorDesc){
639    try{
640        write_msg(get_lang('SoapFault capture fails at:' + errorCode + ' | ' + errorDesc, true));
641    } catch(e){
642        write_msg(get_lang('Service error mapping', true));
643    }   
644}
645
646//createFolder operation
647MailArchiver.prototype.createFolder = function(parentFolder, folderName){
648   
649    try{
650        ArchiveServices.createFolder(expresso_mail_archive.createFolderOperationOK, expresso_mail_archive.createFolderOperationFailure, sessid, parentFolder, folderName);
651    }
652    catch (e){
653        window.alert('Ops...create folder fails at:\n' + e);
654    }
655   
656}
657
658//createFolder callback OK
659MailArchiver.prototype.createFolderOperationOK = function (folderObject){
660    draw_tree_local_folders();
661    ttreeBox.update_folder();   
662}
663
664//createFolder callback Fail
665MailArchiver.prototype.createFolderOperationFailure = function (message){
666    window.alert('Folder creation fails...\n->' + message.getReturn());
667}
668
669//deleteFolder operation
670MailArchiver.prototype.deleteFolder = function(folderName){
671    try{
672        ArchiveServices.deleteFolder(expresso_mail_archive.deleteFolderOperationOK, expresso_mail_archive.deleteFolderOperationFailure, sessid, folderName, true);
673    }
674    catch (e){
675        window.alert('Ops...delete folder fails at:\n' + e);
676    }
677   
678}
679
680//deleteFolder callback OK
681MailArchiver.prototype.deleteFolderOperationOK = function (folderObject){
682    var fo = IterateIt(folderObject);
683    write_msg(get_lang("The folder " + expresso_mail_archive.drawdata.folderName + " was successfully removed"));
684    draw_tree_local_folders();
685    ttreeBox.update_folder();   
686}
687
688//deleteFolder callback Fail
689MailArchiver.prototype.deleteFolderOperationFailure = function (message){
690    window.alert('Folder deletion fails...\n->' + message.getReturn());
691}
692
693//renameFolder operation
694MailArchiver.prototype.renameFolder = function(folderId, newFolderName){
695    try{
696        ArchiveServices.renameFolder(expresso_mail_archive.renameFolderOperationOK, expresso_mail_archive.renameFolderOperationFailure, sessid, folderId, newFolderName);
697    }
698    catch (e){
699        window.alert('Ops...renaming folder fails at:\n' + e);
700    }
701   
702}
703
704//renameFolder callback OK
705MailArchiver.prototype.renameFolderOperationOK = function (returnService){
706    var evalobjectTree = eval(expresso_mail_archive.drawdata.treeName);
707    evalobjectTree.update_folder();
708}
709
710//renameFolder callback Fail
711MailArchiver.prototype.renameFolderOperationFailure = function (ServiceFault){
712    window.alert('Folder rename fails...\n->' + ServiceFault.getReturn());
713    alert(get_lang("cannot rename folder. try other folder name"));
714}
715
716//getFolderInfo operation
717MailArchiver.prototype.getFolderInfo = function (folderId){
718    try{
719        ArchiveServices.getFolderInfo(expresso_mail_archive.getFolderInfoOperationOK, expresso_mail_archive.getFolderInfoOperationFailure, sessid, folderId);
720    }
721    catch (e){
722        window.alert('Ops...getFolderInfo fails at:\n' + e);
723    }     
724}
725
726//getFolderInfo callback OK
727MailArchiver.prototype.getFolderInfoOperationOK = function(returnService){
728   var folder_info = {id : returnService.getReturn().getId(), name : returnService.getReturn().getName(), parent : returnService.getReturn().getParentId(), numfolders: returnService.getReturn().getFolderCount(), nummessages: returnService.getReturn().getMessageCount()};
729   expresso_mail_archive.folder = folder_info;
730}
731
732//getFolderInfo callback Fail
733MailArchiver.prototype.getFolderInfoOperationFailure = function (ServiceFault){
734    window.alert('getFolderInfo service fails...\n->' + ServiceFault.getReturn());
735}
736
737//listMessages operation
738//OLD local_messages.prototype.get_local_range_msgs = function(folder,msg_range_begin,emails_per_page,sort,sort_reverse,search,preview_msg_subject,preview_msg_tip) {
739//ONLINE 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,tree_name) {
740//sys call = proxy_mensagens.messages_list(current_folder,1,preferences.max_email_per_page,sort,search,sort_box_reverse,preferences.preview_msg_subject,preferences.preview_msg_tip,handler_draw_box);
741MailArchiver.prototype.listMessages = function(){
742    try{
743        var folderid = expresso_mail_archive.currentfolder;
744        var testing_data_xml = '<?xml version="1.0" encoding="UTF-8"?><query lowerIndex="0" upperIndex="50"><folder id="'+folderid+'"/><order asc="date"/><order desc="subject"/></query>';
745        var testing_data_json_mapped = '{"query":{"@lowerIndex":"0", "@upperIndex":"50", "folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date", "@desc":"subject"}]}}';
746        //window.alert('Query config lower = ' + expresso_mail_archive.queryconfig.lowerIndex + ' - upper = ' + expresso_mail_archive.queryconfig.upperIndex + ' folder = ' + expresso_mail_archive.queryconfig.folder);
747        if (expresso_mail_archive.queryconfig.folder != null)
748            var testing_data = expresso_mail_archive.queryconfig.query();
749        else
750            var testing_data = testing_data_json_mapped;
751       
752        //window.alert('vai chamar o listMessages com testing_data = ' + testing_data);
753        ArchiveServices.listMessages(expresso_mail_archive.listMessagesOperationOK, expresso_mail_archive.listMessagesOperationFailure, sessid, testing_data);
754    }
755    catch (e){
756        window.alert('Ops...listMessages fails at:\n' + e);
757    }
758}
759
760//listMessages callback OK
761MailArchiver.prototype.listMessagesOperationOK = function(returnService){
762    var msglist = new Array();
763    /*window.alert('Dados da mensagem:\n->From ' + returnService.getReturn()[0].getFrom()
764                                      +'\n->To ' + returnService.getReturn()[0].getTo()
765                                      +'\n->Subject ' + returnService.getReturn()[0].getSubject()
766                                      +'\n->Date ' + returnService.getReturn()[0].getDate()
767                                      +'\n->Date ' + returnService.getReturn()[0].getSize()
768                                      +'\n->ID ' + returnService.getReturn()[0].getId());
769    */
770    for(var i=0; i< returnService.getReturn().length; i++){
771        //window.alert('quer deserializar:\n\n' + print_r(returnService.getReturn()[i]));
772        var ExpSerialized = expresso_mail_archive.toExpressoHeader(returnService.getReturn()[i]);
773        //window.alert('expSerialized ' + i + '\n\n --\n\n' + print_r(ExpSerialized));
774        //var test = connector.unserialize(ExpSerialized);
775        //window.alert('unserialized = \n\n' + test);
776        msglist.push(connector.unserialize(ExpSerialized));//usando connector.unserialize sobre o header mapeado no layout abaixo
777    }
778    msglist["num_msgs"] = returnService.getReturn().length;
779    //window.alert('print_r\n\n' + print_r(msglist));
780    expresso_mail_archive.messageslisted = msglist;
781    //window.alert('expresso_mail_archive.message_list.length = ' + expresso_mail_archive.message_list.length);
782    //window.alert(print_r(expresso_mail_archive.message_list));
783    expresso_mail_archive.drawdata = {messagesList:msglist};
784    expresso_mail_archive.drawMessagesList();
785   
786    window.alert('get ajax...');
787    expresso_mail_archive.getMessageSource();
788}
789
790//listMessages callback Fail
791MailArchiver.prototype.listMessagesOperationFailure = function(ServiceFault){
792    window.alert('listmessages FALHOU!\n' + ServiceFault.getReturn());
793}
794
795MailArchiver.prototype.drawMessagesList = function(){
796    var data_to_draw = expresso_mail_archive.drawdata.messagesList; 
797    //window.alert('data to draw =  ' + data_to_draw.length + '\ndata_to_draw[0].from.full = ' + print_r(data_to_draw));
798    //window.alert('Current folder = ' + expresso_mail_archive.currentfolder + ' com ' + expresso_mail_archive.folders.length + ' folders.');
799    var fcaption = expresso_mail_archive.currentfolder;
800   
801    for (var w=0; w < expresso_mail_archive.folders.length; w++){
802        if(expresso_mail_archive.folders[w]["id"] == expresso_mail_archive.currentfolder){
803            fcaption = expresso_mail_archive.folders[w]["name"];
804            break;
805        }
806    }
807
808    alternate_border(0);
809    Element("border_id_0").innerHTML = "&nbsp;" + lang_folder(fcaption) + '&nbsp;<font face="Verdana" size="1" color="#505050">[<span id="new_m">&nbsp;</span> / <span id="tot_m"></span>]</font>';
810    draw_box(data_to_draw, 'local_' + expresso_mail_archive.currentfolder, true);
811    draw_paging(expresso_mail_archive.drawdata.messagesList.length);
812    Element("tot_m").innerHTML = expresso_mail_archive.drawdata.messagesList.length;
813    //update_menu();
814   
815}
816
817MailArchiver.prototype.getMessageHeaders = function(msgId){
818    var msgfound = false;
819    var headerMsg;
820   
821    //Get message header info, from message list operation previously invoked
822    for (var w=0; w < expresso_mail_archive.messageslisted.length; w++){
823        //window.alert('comparando messageslisted "' +expresso_mail_archive.messageslisted[w]["msg_number"]+ '" com o id parametrizado "' +msgId+ '"');
824        if(expresso_mail_archive.messageslisted[w]["msg_number"] == msgId){
825            headerMsg = expresso_mail_archive.messageslisted[w];
826            msgfound = true;
827            break;
828        }
829    }
830    //Message does not exists at message list. it will not be loaded.
831    if(!msgfound){
832        alert('ops... the message"'+msgId+'" was not found at messages list, so it cannot be readed!')
833        headerMsg = null;
834        return;
835    }
836    return(headerMsg);
837}
838
839MailArchiver.prototype.getMessage = function(msgdata){
840    try{
841        if((msgdata.length <= 0) || (msgdata == null)){
842            window.alert('no msgdata received. aborting local message load')
843            return;
844        }
845
846        expresso_mail_archive.currentmessage = expresso_mail_archive.getMessageHeaders(msgdata)["msg_number"];
847        //window.alert('current message guid = ' + expresso_mail_archive.currentmessage);
848
849        //window.alert('vai invocar getMessageBody com msgid=' + expresso_mail_archive.currentmessage);
850        ArchiveServices.getMessageBody(expresso_mail_archive.getMessageOperationOK, expresso_mail_archive.getMessageOperationFailure, sessid, expresso_mail_archive.currentmessage);
851    }
852    catch(e){
853        window.alert('Ops...getMessage fails at:\n' + e);
854    }
855}
856
857MailArchiver.prototype.getMessageOperationOK = function(returnService){
858    if(returnService.getReturn().length <= 0){
859        window.alert('Oh no: service return data is zero length...');
860        return;
861    }
862   
863    //window.alert('Get header info from message "' + expresso_mail_archive.currentmessage + '"');
864   
865   
866    var msgBody = returnService.getReturn();
867    var msgHeaders = expresso_mail_archive.getMessageHeaders(expresso_mail_archive.currentmessage);
868    var expSerializedMessage = expresso_mail_archive.toExpressoMessage(msgHeaders, msgBody);
869    //window.alert('Serialized data\n\n' + print_r(expSerializedMessage));
870    show_msg(expSerializedMessage);
871}
872
873MailArchiver.prototype.getMessageOperationFailure = function(ServiceFault){
874    window.alert('Message fails do be loaded.');
875}
876
877//Under develpment this one
878MailArchiver.prototype.getMessageSource = function(){
879    expresso_mail_archive.messagesourcehandler.onreadystatechange = AlerteO();
880    //expresso_mail_archive.messagesourcehandler.setRequestHeader("SOAPAction", "");
881    //expresso_mail_archive.messagesourcehandler.setRequestHeader("Access-Control-Allow-Origin", "*");
882    //expresso_mail_archive.messagesourcehandler.setRequestHeader("Access-Control-Allow-Credentials", "true");
883    window.alert('vai chamar via ajax o texto');
884    expresso_mail_archive.messagesourcehandler.open("GET", "http://10.200.242.186:4333/mail/Sent/teste.txt", true);
885    //expresso_mail_archive.messagesourcehandler.setRequestHeader("MessageType", "CALL");
886    //expresso_mail_archive.messagesourcehandler.setRequestHeader("Access-Control-Allow-Origin", "*");
887    //expresso_mail_archive.messagesourcehandler.setRequestHeader("Access-Control-Allow-Credentials", "true");   
888    expresso_mail_archive.messagesourcehandler.send();
889}
890
891function AlerteO(){
892    window.alert('Ajax lido:\n\nState = ' + expresso_mail_archive.messagesourcehandler.readyState + '\nStatus = ' + expresso_mail_archive.messagesourcehandler.status);
893}
894
895// -----------------------------------SERIALIZED DATA TEMPLATES ----------------
896MailArchiver.prototype.toExpressoAddress = function(data){
897    if((typeof(data) != 'undefined') && (data.length > 0)){
898        /*var dataFormat = expresso_mail_archive.toExpressoFormatNameMail(data);
899        var dataName = dataFormat[0];
900        var dataEmail = dataFormat[1];
901        */
902        //window.alert('em toExpressoFrom com data = \n' + data + '[' + typeof(data) + ']('+data.length+')');
903        var Fromdata = eval("(" + data + ")");
904        //window.alert('temos ' + Fromdata.mailbox.length + ' destinatarios/remetentes a lidar...');
905        //window.alert('name = ' + Fromdata.mailbox["@name"] + '\nlocal part = ' + Fromdata.mailbox["@localPart"] + '\ndomain = ' + Fromdata.mailbox["@domain"]);
906     
907        //one address
908        if(typeof(Fromdata.mailbox.length) == 'undefined'){
909            var dataName = Fromdata.mailbox["@name"];               
910            var dataEmail = Fromdata.mailbox["@localPart"] + '@' + Fromdata.mailbox["@domain"];
911            if(dataName == 'null')
912                dataName = dataEmail;
913        }
914        //address list: to header(msgs list), only first metters
915        else{
916            var dataName = Fromdata.mailbox[0]["@name"];
917            var dataEmail = Fromdata.mailbox[0]["@localPart"] + '@' + Fromdata.mailbox[0]["@domain"];
918            if(dataName == 'null')
919                dataName = dataEmail;
920        }
921
922        var tplFrom = 'a:3:{'
923+           's:4:"name";'
924+           's:'+dataName.length+':"'+dataName+'";'
925+           's:5:"email";'
926+           's:'+dataEmail.length+':"'+dataEmail+'";'
927+           's:4:"full";'
928+           's:'+(dataName.length + dataEmail.length + 3)+':"'+dataName+' <'+dataEmail+'>";'
929+       '}';
930    //window.alert('from = ' + tplFrom);
931    }
932    //Data adrress from mailbox is empty, null, or canot be correctly returned by service invocation (will return 'unknow mailbox' string)
933    else {
934        tplFrom = 'a:2{s:4:"name";s:14:"Unknow mailbox";s:5:"email";s:15:"Unknow_mailbox";}';
935    }
936    return(tplFrom);
937}
938
939MailArchiver.prototype.toExpressoSubject = function(data){
940    if((typeof(data) != 'undefined') && (data.length > 0)){
941        var tplSbj = 's:'+data.length+':"'+data+'";'
942    }
943    //Subject is empty, null, or canot be correctly returned by service invocation (will return 'Message without subject' string)
944    else {
945        tplSbj = 's:25:"[Message without subject]";';
946    }
947    return(tplSbj);
948}
949
950MailArchiver.prototype.toExpressoAttachmentsHeader = function(data){
951    if((typeof(data) != 'undefined') && (data.length > 0)){
952        var Attdata = eval("(" + data + ")");
953        if(typeof(Attdata.attachment) != 'undefined'){                   
954            var tplAttatch = 'a:2:{'
955+               's:5:"names";';
956            //More than 1 attachment - because length will be 'undefined' if just one exists
957            if(Attdata.attachment.length > 0){
958                var strnamesatt = "";
959                for(var x=0; x<Attdata.attachment.length; x++){
960                  var attId = Attdata.attachment[x]["@id"];
961                  var attName = Attdata.attachment[x]["@name"];
962                  var attSize = Attdata.attachment[x]["@size"];
963                  var attMediaType = Attdata.attachment[x]["@mediaType"];
964                  var attSubType = Attdata.attachment[x]["@subType"];
965                  var attEncoding = Attdata.attachment[x]["@encoding"];
966                 
967                  strnamesatt += attName + ', ';
968                }
969                strnamesatt = strnamesatt.substr(0, strnamesatt.length-2);
970                var intnumberatt = Attdata.attachment.length;
971            }
972            //Just one attachment
973            else{
974                var attId = Attdata.attachment["@id"];
975                var attName = Attdata.attachment["@name"];
976                var attSize = Attdata.attachment["@size"];
977                var attMediaType = Attdata.attachment["@mediaType"];
978                var attSubType = Attdata.attachment["@subType"];
979                var attEncoding = Attdata.attachment["@encoding"];
980                strnamesatt = attName;
981                var intnumberatt = 1;
982            }
983           
984            tplAttatch += 's:'+strnamesatt.length+':"'+strnamesatt+'";'
985+               's:18:"number_attachments";i:' +intnumberatt+';'
986+           '}';
987        }
988        else {
989            tplAttatch = 'a:2:{s:5:"names";b:0;s:18:"number_attachments";i:0;}';   
990        }
991    }
992    //No attatch data
993    else {
994        tplAttatch = 'a:2:{s:5:"names";b:0;s:18:"number_attachments";i:0;}';
995    }
996    return(tplAttatch);
997}
998
999MailArchiver.prototype.toExpressoDate = function(data){
1000    var ndate = new Date(data);
1001    //ndate.setTime(data);
1002    var odate = zeroFill(ndate.getDate()) + '/' + zeroFill(ndate.getMonth()+1) + '/' + zeroFill(ndate.getFullYear() + ' ' + zeroFill(ndate.getHours()) + ':' + zeroFill(ndate.getMinutes()) + ':' + zeroFill(ndate.getSeconds()));
1003    return(odate);
1004}
1005
1006MailArchiver.prototype.toExpressoFlags = function(data){
1007    if((data.length > 0) && (typeof(data) != 'undefined')){
1008        var Tagdata = eval("(" + data + ")");
1009        //More than 1 attachment - because length will be 'undefined' if just one exists
1010        if(Tagdata.tag.length >= 0){
1011            var strnamestag = "";
1012            for(var x=0; x<Tagdata.tag.length; x++){
1013                var tagvalue = Tagdata.tag[x]["@value"];
1014                if(tagvalue.toLowerCase().indexOf('recent')!= -1)
1015                    strnamestag += 's:6:"Recent";s:1:"N";';
1016                if(tagvalue.toLowerCase().indexOf('unseen')!= -1)
1017                    strnamestag += 's:6:"Unseen";s:1:"U";';
1018                if(tagvalue.toLowerCase().indexOf('answered')!= -1)
1019                    strnamestag += 's:8:"Answered";s:1:"A";';
1020                if(tagvalue.toLowerCase().indexOf('forwarded')!= -1)
1021                    strnamestag += 's:9:"Forwarded";s:1:"F"';
1022                if(tagvalue.toLowerCase().indexOf('draft')!= -1)
1023                    strnamestag += 's:5:"Draft";s:1:"X";';
1024                if(tagvalue.toLowerCase().indexOf('importance')!= -1)
1025                    strnamestag += 's:10:"Importance";s:6:"High";';
1026                if(tagvalue.toLowerCase().indexOf('flagged')!= -1)
1027                    strnamestag += 's:7:"Flagged";s:1:"F";';                       
1028            }
1029            var tplTags = strnamestag;
1030        }
1031        else{
1032            var strnamestag = "";
1033            var tagvalue = Tagdata.tag["@value"];
1034            if(tagvalue.toLowerCase().indexOf('recent')!= -1)
1035                strnamestag += 's:6:"Recent";s:1:"N";';
1036            if(tagvalue.toLowerCase().indexOf('unseen')!= -1)
1037                strnamestag += 's:6:"Unseen";s:1:"U";';
1038            if(tagvalue.toLowerCase().indexOf('answered')!= -1)
1039                strnamestag += 's:8:"Answered";s:1:"A";';
1040            if(tagvalue.toLowerCase().indexOf('forwarded')!= -1)
1041                strnamestag += 's:9:"Forwarded";s:1:"F"';
1042            if(tagvalue.toLowerCase().indexOf('draft')!= -1)
1043                strnamestag += 's:5:"Draft";s:1:"X";';
1044            if(tagvalue.toLowerCase().indexOf('importance')!= -1)
1045                strnamestag += 's:10:"Importance";s:6:"High";';
1046            if(tagvalue.toLowerCase().indexOf('flagged')!= -1)
1047                strnamestag += 's:7:"Flagged";s:1:"F";';
1048            var tplTags = strnamestag;
1049        }
1050    }
1051    else{
1052        tplTags = 's:6:"Recent";s:1:" ";s:6:"Unseen";s:1:" ";s:8:"Answered";s:1:" ";s:9:"Forwarded";s:1:" ";s:5:"Draft";s:1:" ";s:10:"Importance";s:6:"Normal";s:7:"Flagged";b:0;';
1053    }
1054    return(tplTags);
1055}
1056
1057MailArchiver.prototype.toExpressoHeader = function(data){   
1058    var tplHeader = 'a:16:{'
1059+           's:11:"ContentType";'
1060+           's:' + data.getContentType().length + ':"' + data.getContentType() + '";'
1061+           expresso_mail_archive.toExpressoFlags(data.getTags())
1062+           's:10:"msg_number";'
1063+           's:'+data.getId().length+':"'+data.getId()+'";'
1064+           's:5:"udate";'
1065+           'i:' + parseInt(data.getDate()/1000) + ';'
1066+           's:9:"timestamp";'
1067+           'i:' + parseInt(data.getDate()/1000) + ';'
1068+           's:4:"from";'
1069+           expresso_mail_archive.toExpressoAddress(data.getFrom())
1070+           's:2:"to";'
1071+           expresso_mail_archive.toExpressoAddress(data.getTo())
1072+           's:7:"subject";'
1073+           expresso_mail_archive.toExpressoSubject(data.getSubject())
1074+           's:4:"Size";'
1075+           'i:'+data.getSize()+';'
1076+           's:10:"attachment";'
1077+           expresso_mail_archive.toExpressoAttachmentsHeader(data.getAttachments())
1078+           '}';
1079    //window.alert('Serialized data\n\n' + tplHeader + '\ngmtoffset: ' + gmtoffset);
1080    return(tplHeader);
1081}
1082
1083MailArchiver.prototype.toExpressoBody = function(mheader){
1084    var tplBody = 'a:33:{'
1085+                   's:4:"body";N;'
1086+                   's:11:"attachments";N;'
1087+                   's:6:"thumbs";N;'
1088+                   's:9:"signature";N;'
1089+                   's:10:"Importance";s:6:"Normal";'
1090+                   's:6:"Recent";s:1:" ";'
1091+                   's:6:"Unseen";s:1:"N";'
1092+                   's:7:"Deleted";s:1:" ";'
1093+                   's:7:"Flagged";b:0;'
1094+                   's:8:"Answered";s:1:" ";'
1095+                   's:5:"Draft";s:1:" ";'
1096+                   's:10:"msg_number";s:4:"2241";'
1097+                   's:10:"msg_folder";s:5:"INBOX";'
1098+                   's:5:"udate";s:5:"10:01";'
1099+                   's:7:"msg_day";s:10:"10/05/2011";'
1100+                   's:8:"msg_hour";s:5:"10:02";'
1101+                   's:8:"fulldate";s:36:"10/05/2011 10:01 (05:35 horas atras)";'
1102+                   's:9:"smalldate";s:5:"10:04";'
1103+                   's:4:"from";N;'
1104+                   's:6:"sender";a:3:{'
1105+                       's:4:"name";N;'
1106+                       's:5:"email";s:46:"listaregional-pae-bounces@grupos.serpro.gov.br";'
1107+                       's:4:"full";s:46:"listaregional-pae-bounces@grupos.serpro.gov.br";'
1108+                   '}'
1109+                   's:10:"toaddress2";s:32:"comunicacao.social@serpro.gov.br";'
1110+                   's:2:"cc";N;'
1111+                   's:3:"bcc";N;'
1112+                   's:8:"reply_to";N;'
1113+                   's:7:"subject";N;'
1114+                   's:4:"Size";s:4:"1234";'
1115+                   's:15:"reply_toaddress";s:45:"com.social <comunicacao.social@serpro.gov.br>";'
1116+                   's:9:"timestamp";i:1305032476;'
1117+                   's:5:"login";i:944889240;'
1118+                   's:6:"header";a:16:{'
1119+                      's:11:"ContentType";s:6:"normal";'
1120+                      's:10:"Importance";s:6:"Normal";'
1121+                      's:6:"Recent";s:1:" ";'
1122+                      's:6:"Unseen";s:1:"N";'
1123+                      's:8:"Answered";s:1:" ";'
1124+                      's:5:"Draft";s:1:" ";'
1125+                      's:7:"Deleted";s:1:" ";'
1126+                      's:7:"Flagged";b:0;'
1127+                      's:10:"msg_number";s:4:"2251";'
1128+                      's:5:"udate";s:10:"10/05/2011";'
1129+                      's:11:"offsetToGMT";i:-10800;'
1130+                      's:8:"aux_date";N;'
1131+                      's:4:"from";a:2:{'
1132+                         's:4:"name";s:10:"com.social";'
1133+                         's:5:"email";s:32:"comunicacao.social@serpro.gov.br";'
1134+                      '}'
1135+                      's:2:"to";a:2:{'
1136+                         's:4:"name";s:32:"comunicacao.social@serpro.gov.br";'
1137+                         's:5:"email";s:32:"comunicacao.social@serpro.gov.br";'
1138+                      '}'
1139+                      's:7:"subject";s:28:"Primeira leitura - 10/5/2011";'
1140+                      's:4:"Size";N;'
1141+                      's:10:"attachment";a:2:{'
1142+                         's:5:"names";b:0;'
1143+                         's:18:"number_attachments";i:0;'
1144+                      '}'
1145+                  '}'
1146+                  's:12:"array_attach";N;'
1147+                  's:15:"url_export_file";s:160:"inc/gotodownload.php?idx_file=/var/www/expressov2/expressoMail1_2/inc/../tmpLclAtt/source_38a3e960115351578aa182ae1d6c2b7b.txt&newfilename=fonte_da_mensagem.txt";'
1148+                  's:2:"to";N;'
1149+              '}';
1150    return(tplBody);
1151}
1152
1153MailArchiver.prototype.toExpressoMessage = function(mheader, mbody){
1154    var strMessage = null;
1155    var strMessage1 = expresso_mail_archive.toExpressoBody(mheader);
1156    //var str3 = connector.unserialize(strMessage1);
1157    //strMessage =  eval("(" + strMessage1 + ")");
1158    strMessage = connector.unserialize(strMessage1);
1159   
1160    window.alert('dump strMessage:\n\n' + print_r(strMessage,0));
1161   
1162    strMessage['from'] = mheader["from"];
1163    //strMessage['from'] = expresso_mail_archive.toExpressoBody(mheader, mbody);
1164    strMessage['subject'] = mheader["subject"];
1165    strMessage['body'] = mbody;
1166    strMessage['to'] = mheader["to"];
1167    strMessage['cc'] = mheader["cc"];
1168    strMessage['local_message'] = true;
1169    strMessage['folder'] = 'local_' + expresso_mail_archive.currentfolder;
1170    strMessage['msg_number'] = mheader["msg_number"];
1171    //window.alert('strMessage dump\n\n' + print_r(strMessage));
1172    return(strMessage);
1173
1174
1175/*
1176 *      retorno['from'] = connector.unserialize(rs.field(2));
1177        retorno['subject'] = rs.field(3);
1178        retorno['body'] = rs.field(4);
1179        //Codigo que as imagens embutidas em emails (com multipart/related ou multipart/mixed) sejam corretamente mostradas em emails arquivados. Os links do
1180        //tipo "./inc/show_embedded_attach.php?msg_folder=[folder]&msg_num=[msg_num]&msg_part=[part]"
1181        //são substituidos pelos links dos anexos capturados pelo gears.
1182
1183        var thumbs= retorno.thumbs;
1184        var anexos= retorno.array_attach;
1185        for (i in anexos)
1186        {
1187            if(anexos[i]['url'] && anexos[i]['url'].match(/((jpg)|(jpeg)|(png)|(gif)|(bmp))/gi))
1188            {
1189                var er_imagens = new RegExp("\\.\\/inc\\/show_embedded_attach.php\\?msg_folder=[\\w/]+\\&msg_num=[0-9]+\\&msg_part="+anexos[i]['pid']);
1190                var Result_imagens = er_imagens.exec(retorno['body']);
1191                retorno['body'] = retorno['body'].replace(Result_imagens,anexos[i]['url']);
1192                if(thumbs && thumbs[i]){
1193                    er_imagens = new RegExp("\\.\\/inc\\/show_thumbs.php\\?file_type=image\\/[\\w]+\\&msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']);
1194                    Result_imagens = er_imagens.exec(thumbs[i]);
1195                    thumbs[i] = thumbs[i].replace(Result_imagens,"'"+anexos[i]['url']+"'");
1196                    er_imagens = new RegExp("\\.\\/inc\\/show_img.php\\?msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']);
1197                    Result_imagens = er_imagens.exec(thumbs[i]);
1198                    thumbs[i] = thumbs[i].replace(Result_imagens,anexos[i]['url']);
1199                    thumbs[i] = thumbs[i].replace(/<IMG/i,'<img width="120"');
1200                }
1201            }
1202        }
1203
1204        retorno['to'] = connector.unserialize(rs.field(5));
1205        retorno['cc'] = connector.unserialize(rs.field(6));
1206
1207        retorno['local_message'] = true;
1208        retorno['msg_folder'] = "local_"+rs.field(7); //Now it's a local folder
1209        retorno['msg_number'] = rs.field(0)+plus_id; //the message number is the rowid
1210 **/   
1211}
1212
1213
1214MailArchiver.prototype.Query = function(offlow, offup, qdata){
1215    var querystring = this.queryconfig.query(offlow, preferences.max_email_per_page, qdata);
1216    this.listMessages();
1217}
1218
1219/*
1220 *The all pourpose JavaScript variable, used by all related functionalityes at
1221 *Expresso Mail to handle this object at user gui.
1222 */
1223
1224var expresso_mail_archive;
1225expresso_mail_archive = new MailArchiver();
1226-->
Note: See TracBrowser for help on using the repository browser.