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

Revision 4715, 30.6 KB checked in by fernando-alberto, 13 years ago (diff)

Ticket #1269 - Desenvolvimento da nova solucao de arquivamento local MailArchiver?, servico listmessages

  • Property svn:eol-style set to native
Line 
1/*
2 * Mail Archive JS API
3 *
4 * This JavaScript file is the core to use MailArchiver embeded at Expresso suite.
5 * It contains all the resources used to handle local messages stored at the brand
6 * new solution Mail Archiver (a embeded application server running at client side).
7 *
8 * This feature is a replacement for Google Gears(obsolete by now), used by
9 * Expresso to store local messages at user workstation hard disk.
10 *
11 * @author Fernando Wendt [fernando-alberto.wendt@serpro.gov.br]
12 *
13 * @status under development
14 */
15
16var sessid = 'sessionId';
17
18function IterateIt(){
19    var deph = 0;
20    var returnstr = "";
21
22    for (i in arguments[0]){
23      if((arguments[0][i]) && (arguments[0][i].visited == null)){
24          arguments[0][i].visited = true;
25
26          if(typeof(arguments[0][i]) == 'object'){
27            returnstr += '+ Property "' + i + '"[object ' + deph + ']\n<br>';
28            //returnstr += IterateIt(arguments[0][i]);
29            deph++;
30          }
31      }
32    else returnstr += 'Property "' + i + '" -> ' + arguments[0][i] + ' [' + typeof(i) + ']\n<br>';
33    }
34    return (returnstr);
35}
36
37function dump(arr,level) {
38        var dumped_text = "";
39        if(!level) level = 0;
40       
41        //The padding given at the beginning of the line.
42        var level_padding = "";
43        for(var j=0;j<level+1;j++) level_padding += "    ";
44       
45        if(typeof(arr) == 'object') { //Array/Hashes/Objects
46                for(var item in arr) {
47                        var value = arr[item];
48                       
49                        if(typeof(value) == 'object') { //If it is an array,
50                                dumped_text += level_padding + "'" + item + "' ...\n<br>";
51                                dumped_text += dump(value,level+1);
52                        } else {
53                                dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n<br>";
54                        }
55                }
56        } else { //Stings/Chars/Numbers etc.
57                dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
58        }
59        return dumped_text;
60}
61
62function zeroFill(d){
63    if(parseInt(d) < 10)
64        return('0' + d);
65    else
66        return(d);
67}
68
69/**
70 * Concatenates the values of a variable into an easily readable string
71 * by Matt Hackett [scriptnode.com]
72 * @param {Object} x The variable to debug
73 * @param {Number} max The maximum number of recursions allowed (keep low, around 5 for HTML elements to prevent errors) [default: 10]
74 * @param {String} sep The separator to use between [default: a single space ' ']
75 * @param {Number} l The current level deep (amount of recursion). Do not use this parameter: it's for the function's own use
76 */
77function print_r(x, max, sep, l) {
78
79        l = l || 0;
80        max = max || 100;
81        sep = sep || ' ';
82
83        if (l > max) {
84                return "[WARNING: Too much recursion]\n";
85        }
86
87        var
88                i,
89                r = '',
90                t = typeof x,
91                tab = '';
92
93        if (x === null) {
94                r += "(null)\n";
95        } else if (t == 'object') {
96
97                l++;
98
99                for (i = 0; i < l; i++) {
100                        tab += sep;
101                }
102
103                if (x && x.length) {
104                        t = 'array';
105                }
106
107                r += '(' + t + ") :\n";
108
109                for (i in x) {
110                        try {
111                                r += tab + '[' + i + '] : ' + print_r(x[i], max, sep, (l + 1));
112                        } catch(e) {
113                                return "[ERROR: " + e + "]\n";
114                        }
115                }
116
117        } else {
118
119                if (t == 'string') {
120                        if (x == '') {
121                                x = '(empty)';
122                        }
123                }
124
125                r += '(' + t + ') ' + x + "\n";
126
127        }
128
129        return r;
130
131};
132var_dump = print_r;
133
134
135
136//Main object structure: object property data definition
137function MailArchiver() {
138    this.enabled = null;
139    this.interval = 500;
140    this.timer = null;
141    this.counter = 0;
142    this.message_list = new Array();
143    this.total_messages = 0;
144    this.messages_processed = 0;
145    this.messages_fail = 0;
146    this.folder_origin = null;
147    this.folder_destination = null;
148    this.folders = null;
149    this.currentfolder = 'local_root';
150    this.drawdata = null;
151    this.onprocess = false;
152}
153
154//Invoked at some possible MA crash issue
155MailArchiver.prototype.resetObject = function(){
156    expresso_mail_archive.message_list = new Array();
157    expresso_mail_archive.total_messages = 0;
158    expresso_mail_archive.messages_processed = 0;
159    expresso_mail_archive.messages_fail = 0;
160    expresso_mail_archive.folder_origin = null;
161    expresso_mail_archive.folder_destination = null;
162    expresso_mail_archive.folder = null;
163}
164
165/*SystemCheck method: test if MailArchive is installed and/or running at user workstation
166*Try to get a instance of ArchiveServices object - the handler of services provided by
167*the MailArchive services provider interface, from user workstation.
168*/
169MailArchiver.prototype.SystemCheck = function(){
170    expresso_mail_archive.enabled = ((ArchiveServices) ? true : false);
171}
172
173//Turns on the listener timer to check services availability
174MailArchiver.prototype.ActivateStatusListener = function(obj){
175    if (document.getElementById('mail_archiver_retry'))
176        tem_tag = true;
177    else
178        tem_tag = false;
179    try{
180        if (obj.enabled){
181            obj.interval = 500; //set default timer to 1ms (imediate lauching)
182            draw_footer_box(get_current_folder());
183            obj.getServicesStatus(obj);
184        }
185        else{
186            throw "this is not enabled: " + obj;
187            window.alert('Nope: obj.enabled is not true...');
188        }
189    }
190    catch (e){
191        window.alert('ActivateStatusListener error: ' + e);
192    }
193}
194
195//Turns off the service status listener, at a crash issue
196MailArchiver.prototype.DeactivateStatusListener = function(obj){
197    window.clearInterval(obj.timer);
198    obj.enabled = null;
199    obj.timer=null;
200    obj.interval = 500;
201    ArchiveServices = null;
202    connector.purgeCache();
203   
204    draw_footer_box(get_current_folder());
205    auto_refresh();
206
207    if(document.getElementById('mail_archiver_retry')){
208        document.getElementById('mail_archiver_retry').parentNode.removeChild(document.getElementById('mail_archiver_retry'));
209    }
210    else{
211        //to do, by now, means nothing
212    }
213}
214
215//ServiceStatus callback OK
216MailArchiver.prototype.getServicesStatusOK = function(serviceData){
217    if ((serviceData.getReturn() == "STARTED") || (serviceData.getReturn() == "RUNNING")){
218        //If there is no timer activated to services check interval, set it up.
219        if(expresso_mail_archive.enabled){
220           if(expresso_mail_archive.timer == null){
221                expresso_mail_archive.interval = 5000;
222                expresso_mail_archive.timer = window.setInterval(expresso_mail_archive.getServicesStatus, expresso_mail_archive.interval);
223                var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders', folderName: 'local_root'};
224                expresso_mail_archive.currentfolder = 'local_root';
225                expresso_mail_archive.drawdata = drawinginfo;
226                expresso_mail_archive.getFoldersList();
227           }
228        }
229        else{
230            window.clearInterval(expresso_mail_archive.timer);
231            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);
232        }
233    }
234    else{
235        expresso_mail_archive.enabled = false;
236        window.clearInterval(expresso_mail_archive.timer);
237        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);
238    }
239}
240
241//Dettach resources handler
242MailArchiver.prototype.DeactivateResources = function(obj){   
243    if(obj.timer)
244        window.clearInterval(obj.timer);
245    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!'));
246    obj.DeactivateStatusListener(obj);
247    return;
248}
249
250//Services Status Fail callback
251MailArchiver.prototype.getServicesStatusFailure = function(serviceData){
252    window.alert('getServicesStatusFailure feature: ' + serviceData);
253}
254
255//Service Status handler
256MailArchiver.prototype.getServicesStatus = function(obj){
257    try{
258        if(ArchiveServices){
259            try{
260                ArchiveServices.getState(expresso_mail_archive.getServicesStatusOK, expresso_mail_archive.getServicesStatusFailure, "true");
261            }catch (e){
262                throw "Service failure status: getState";
263            }
264        }
265        else {
266            throw "No ArchiveServices object present. Sorry, but leaving now...";
267        }
268    }catch (e){
269        window.alert('getServiceStatus exception:' + e);
270    }
271    expresso_mail_archive.counter = expresso_mail_archive.counter +1;
272}
273
274/*Restart method: re-initializes all the Mail Archive structure
275 **/
276MailArchiver.prototype.Restart = function(obj){
277    obj.SystemCheck();
278    obj.ActivateStatusListener(obj);
279    auto_refresh();
280}
281
282/*Startup method: initializes all the Mail Archive structure to work so far as possible
283 *Looks like the old 'gears_init', from Gears
284 **/
285MailArchiver.prototype.Startup = function(){
286    this.SystemCheck();
287}
288
289MailArchiver.prototype.serializeToExpresso = function(data){
290    return(connector.serialize(data));
291}
292
293MailArchiver.prototype.unserializeFromExpresso = function(data){
294    return(connector.unserialize(data));
295}
296
297
298MailArchiver.prototype.CreateMessageList = function(msg_list){
299    if((msg_list != null) && (msg_list != "") && (msg_list != " ")){
300        if (expresso_mail_archive.message_list.length == 0){
301            //Get all the messages ids by pass at msgs_id to "message_list" object array propertie - if more than one exists
302            if(msg_list.indexOf(',') != -1){
303                var tmp_list = msg_list.split(',');
304                for(var i=0; i < tmp_list.length; i++){
305                    expresso_mail_archive.message_list.push(tmp_list[i]);
306                }
307            }
308            //Push message list to process the only one
309            else expresso_mail_archive.message_list.push(msg_list);
310        }
311    }
312    //msg_list is corrupted. aborting population
313    else expresso_mail_archive.message_list = new Array();
314}
315
316//Archive Operation
317MailArchiver.prototype.Archive = function(source_folder,destination_folder,msgs_id){
318    //window.alert('tentando arquivar a mensagem [' + msgs_id + '], do folder ['+source_folder+'] para a pasta destino ['+destination_folder+']');
319    try{
320        document.getElementById('main_title').innerHTML = get_lang("Starting to archive messages");
321        expresso_mail_archive.CreateMessageList(msgs_id);
322
323        if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')){
324
325            //Sets the message counter
326            expresso_mail_archive.total_messages = expresso_mail_archive.message_list.length;
327           
328            //Sets the folders properties: destination and origin
329            expresso_mail_archive.folder_origin = source_folder;
330            //window.alert('substr(0,5) = ' + destination_folder.substr(0,5));
331            if(destination_folder.substr(0,5) == 'local')
332                expresso_mail_archive.folder_destination = destination_folder.substr(6,destination_folder.length);
333            else
334                expresso_mail_archive.folder_destination = destination_folder;
335           
336            //window.alert('destination_folder = ' + expresso_mail_archive.folder_destination);
337
338            var arch_handler = function(data){
339                //Store the message source from Ajax request by now (string data)
340                var js_var = new String(data);
341                try{
342                    //Archive services needs session id, message source and destination folder
343                    document.getElementById('main_title').innerHTML = get_lang("Archiving message on folder") + " " + expresso_mail_archive.folder_destination +"...";
344                    ArchiveServices.archive(expresso_mail_archive.getArchiveOperationOK, expresso_mail_archive.getArchiveOperationFailure, sessid, data ,expresso_mail_archive.folder_destination);
345                }
346                catch(e){
347                    window.alert('ArchiveServices.archive eror: ' + e);
348                }
349            }
350           
351            document.getElementById('main_title').innerHTML = get_lang("Archiving messages " + expresso_mail_archive.messages_processed + " of " + expresso_mail_archive.message_list.length);
352            cExecute("$this.exporteml.js_source_var",arch_handler,"folder="+url_decode(source_folder)+"&msgs_to_export="+expresso_mail_archive.message_list[0]);
353        }
354        else throw('Ops. Message list stack is empty!');
355    }
356    catch(e){
357        window.alert('Archive error: ' + e);
358    }
359}
360
361//Archive callback OK
362MailArchiver.prototype.getArchiveOperationOK = function(status_message){
363    expresso_mail_archive.messages_processed++;
364    if(expresso_mail_archive.message_list.length > 1){
365       document.getElementById('main_title').innerHTML = get_lang("Message " + expresso_mail_archive.messages_processed + " of " + expresso_mail_archive.total_messages + " successfully archived.");
366       expresso_mail_archive.message_list.shift();
367       expresso_mail_archive.Archive(expresso_mail_archive.folder_origin, expresso_mail_archive.folder_destination, expresso_mail_archive.message_list);
368    }
369    else{
370        document.getElementById('main_title').innerHTML = get_lang("All done. End of archive messages operation.");
371        expresso_mail_archive.resetObject();
372        window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);
373    }
374}
375//Archive callback Fail
376MailArchiver.prototype.getArchiveOperationFailure = function(error_message){
377    window.alert('Hi! getArchiveOperationFailure comes with ' + error_message.getReturn());
378    window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000);
379}
380
381//getFolderList Operation
382MailArchiver.prototype.getFoldersList = function(basefolder){   
383    try{
384        ArchiveServices.listFolders(expresso_mail_archive.getFoldersListOperationOK, expresso_mail_archive.getFoldersListOperationFailure, sessid, basefolder);
385    }
386    catch (e){
387        window.alert('AQUI MESMO\nOps...List folders fails at:\n' + e.description);
388    }
389}
390
391//getFolderList callback OK
392MailArchiver.prototype.getFoldersListOperationOK = function(folderlist){
393    //Internal variable used to map all XML data return from WS invokated
394    var lfolders = new Array();
395   
396    //Mapping XML data to a handler data structure
397    if(folderlist.getReturn().length > 0){
398        var lfolders = new Array();
399        for(i=0; i<folderlist.getReturn().length; i++){
400            (folderlist.getReturn()[i].getFolderCount() > 0 ) ? folderChild = 1 : folderChild = 0;
401
402            //Store folder data at this format: {folder name, number of messages contained, folder has child nodes, folder id, folder parent id, folder full path}
403            //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());
404            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()};
405            lfolders.push(folderData);
406        }
407
408        //Sets folders property at main object
409        expresso_mail_archive.folders = lfolders;
410       
411        if(expresso_mail_archive.folders[0]["parentid"] == "")
412            expresso_mail_archive.currentfolder = 'local_root';
413        else
414            expresso_mail_archive.currentfolder = expresso_mail_archive.folders[0]["parentid"];
415       
416        //Folders dumping :)
417        /*var strFolders = '---';
418        for (var w=0; w < expresso_mail_archive.folders.length; w++){
419            strFolders += '\nFolder ' + w + ' -->';
420            for (x in expresso_mail_archive.folders[w]){
421                strFolders += '\n----------' + x + ':= ' + expresso_mail_archive.folders[w][x];
422            }
423            strFolders += '\n<---';
424        }
425        strFolders += '\n---';
426        alert(lfolders.length + ' folders mapeados, com default = ' + expresso_mail_archive.currentfolder + '\nfolders list:\n\n' + strFolders);
427        */
428
429        //If something UI related have been flagged, handle it
430        if (expresso_mail_archive.drawdata){
431            //window.alert('com drawdata');
432            expresso_mail_archive.drawFolderTree();
433        }
434    }
435}
436
437//getFolderList callback Fail
438MailArchiver.prototype.getFoldersListOperationFailure = function(error, http_msg){
439    window.alert('List folders mistake:' + error + '\nhttp_error = ' + http_msg);
440}
441
442//drawFolderTree operation, if requested to
443MailArchiver.prototype.drawFolderTree = function(){
444    //window.alert('na api de foldertree');
445    var localBaseName  = 'local_';
446    var objectTree = expresso_mail_archive.drawdata.treeObject;
447    var evalobjectTree = eval(expresso_mail_archive.drawdata.treeName);
448   
449    //Add nodes to tree
450    if(expresso_mail_archive.folders.length > 0){
451        for(i=0; i<expresso_mail_archive.folders.length; i++){
452            var folder_caption;
453           
454            //Special folders treatment: Inbox, Outbox, Drafts, Sent and Trash folders
455            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')){
456                folder_caption = get_lang(expresso_mail_archive.folders[i]["name"]);
457            }
458            else{
459                folder_caption = expresso_mail_archive.folders[i]["name"];
460            }
461           
462            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"]});
463           
464            //Adjust the id node names
465            if(expresso_mail_archive.currentfolder){
466                if(expresso_mail_archive.currentfolder.substr(0,5) != 'local'){
467                    evalobjectTree.add(n_demo, localBaseName + expresso_mail_archive.currentfolder);
468                }
469                else{
470                    evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder);
471                }
472            }
473            else {
474                expresso_mail_archive.currentfolder = 'local_root';
475                evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder);
476            }
477        }
478    }
479}
480
481//getFaultInfo operation
482MailArchiver.prototype.getFaultInfo = function(){
483    try{
484        ArchiveServices.getFaultInfo(expresso_mail_archive.getFaultInfoOperationOK, expresso_mail_archive.getFaultInfoOperationFailure, sessid);
485    }   
486    catch(e){
487        write_msg(get_lang('getFaultInfo invoke fails = ' + e),true);
488    }
489}
490
491//getFaultInfo callback OK
492MailArchiver.prototype.getFaultInfoOperationOK = function(faultinfo){
493    try{
494        write_msg(get_lang('MailArchiver remote service reports the following error:' + faultinfo.getReturn().getSoapFaultString(), true));
495    } catch(e){
496        write_msg(get_lang('Ops! It was not possible to capture service error data.', true));
497    }
498}
499
500//getFaultInfo callback Fail
501MailArchiver.prototype.getFaultInfoOperationFailure = function(errorCode, errorDesc){
502    try{
503        write_msg(get_lang('SoapFault capture fails at:' + errorCode + ' | ' + errorDesc, true));
504    } catch(e){
505        write_msg(get_lang('Service error mapping', true));
506    }   
507}
508
509//createFolder operation
510MailArchiver.prototype.createFolder = function(parentFolder, folderName){
511    try{
512        ArchiveServices.createFolder(expresso_mail_archive.createFolderOperationOK, expresso_mail_archive.createFolderOperationFailure, sessid, parentFolder, folderName);
513    }
514    catch (e){
515        window.alert('Ops...create folder fails at:\n' + e);
516    }
517   
518}
519
520//createFolder callback OK
521MailArchiver.prototype.createFolderOperationOK = function (folderObject){
522    draw_tree_local_folders();
523    ttreeBox.update_folder();   
524}
525
526//createFolder callback Fail
527MailArchiver.prototype.createFolderOperationFailure = function (message){
528    window.alert('Folder creation fails...\n->' + message.getReturn());
529}
530
531//deleteFolder operation
532MailArchiver.prototype.deleteFolder = function(folderName){
533    try{
534        ArchiveServices.deleteFolder(expresso_mail_archive.deleteFolderOperationOK, expresso_mail_archive.deleteFolderOperationFailure, sessid, folderName, true);
535    }
536    catch (e){
537        window.alert('Ops...delete folder fails at:\n' + e);
538    }
539   
540}
541
542//deleteFolder callback OK
543MailArchiver.prototype.deleteFolderOperationOK = function (folderObject){
544    var fo = IterateIt(folderObject);
545    write_msg(get_lang("The folder " + expresso_mail_archive.drawdata.folderName + " was successfully removed"));
546    draw_tree_local_folders();
547    ttreeBox.update_folder();   
548}
549
550//deleteFolder callback Fail
551MailArchiver.prototype.deleteFolderOperationFailure = function (message){
552    window.alert('Folder deletion fails...\n->' + message.getReturn());
553}
554
555//renameFolder operation
556MailArchiver.prototype.renameFolder = function(folderId, newFolderName){
557    try{
558        ArchiveServices.renameFolder(expresso_mail_archive.renameFolderOperationOK, expresso_mail_archive.renameFolderOperationFailure, sessid, folderId, newFolderName);
559    }
560    catch (e){
561        window.alert('Ops...renaming folder fails at:\n' + e);
562    }
563   
564}
565
566//renameFolder callback OK
567MailArchiver.prototype.renameFolderOperationOK = function (returnService){
568    var evalobjectTree = eval(expresso_mail_archive.drawdata.treeName);
569    evalobjectTree.update_folder();
570}
571
572//renameFolder callback Fail
573MailArchiver.prototype.renameFolderOperationFailure = function (ServiceFault){
574    window.alert('Folder rename fails...\n->' + ServiceFault.getReturn());
575    alert(get_lang("cannot rename folder. try other folder name"));
576}
577
578//getFolderInfo operation
579MailArchiver.prototype.getFolderInfo = function (folderId){
580    try{
581        ArchiveServices.getFolderInfo(expresso_mail_archive.getFolderInfoOperationOK, expresso_mail_archive.getFolderInfoOperationFailure, sessid, folderId);
582    }
583    catch (e){
584        window.alert('Ops...getFolderInfo fails at:\n' + e);
585    }     
586}
587
588//getFolderInfo callback OK
589MailArchiver.prototype.getFolderInfoOperationOK = function(returnService){
590   var folder_info = {id : returnService.getReturn().getId(), name : returnService.getReturn().getName(), parent : returnService.getReturn().getParentId(), numfolders: returnService.getReturn().getFolderCount(), nummessages: returnService.getReturn().getMessageCount()};
591   expresso_mail_archive.folder = folder_info;
592}
593
594//getFolderInfo callback Fail
595MailArchiver.prototype.getFolderInfoOperationFailure = function (ServiceFault){
596    window.alert('getFolderInfo service fails...\n->' + ServiceFault.getReturn());
597}
598
599//listMessages operation
600MailArchiver.prototype.listMessages = function(){
601    try{
602        var folderid = expresso_mail_archive.currentfolder;
603        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>';
604        var testing_data_json_mapped = '{"query":{"@lowerIndex":"0", "@upperIndex":"50", "folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date", "@desc":"subject"}]}}';
605        var testing_data = testing_data_json_mapped;
606        //window.alert('vai chamar o listMessages com testing_data = ' + testing_data);
607        ArchiveServices.listMessages(expresso_mail_archive.listMessagesOperationOK, expresso_mail_archive.listMessagesOperationFailure, sessid, testing_data);
608    }
609    catch (e){
610        window.alert('Ops...listMessages fails at:\n' + e);
611    }
612}
613
614//listMessages callback OK
615MailArchiver.prototype.listMessagesOperationOK = function(returnService){
616    var msglist = new Array();
617    /*window.alert('Dados da mensagem:\n->From ' + returnService.getReturn()[0].getFrom()
618                                      +'\n->To ' + returnService.getReturn()[0].getTo()
619                                      +'\n->Subject ' + returnService.getReturn()[0].getSubject()
620                                      +'\n->Date ' + returnService.getReturn()[0].getDate()
621                                      +'\n->Date ' + returnService.getReturn()[0].getSize()
622                                      +'\n->ID ' + returnService.getReturn()[0].getId());
623    */
624    for(var i=0; i< returnService.getReturn().length; i++){
625        //window.alert('quer deserializar:\n\n' + print_r(returnService.getReturn()[i]));
626        var ExpSerialized = expresso_mail_archive.toExpressoHeader(returnService.getReturn()[i]);
627        //window.alert('expSerialized ' + i + '\n\n --\n\n' + print_r(ExpSerialized));
628        //var test = connector.unserialize(ExpSerialized);
629        //window.alert('unserialized = \n\n' + test);
630        msglist.push(connector.unserialize(ExpSerialized));//usando connector.unserialize sobre o header mapeado no layout abaixo
631    }
632    msglist["num_msgs"] = returnService.getReturn().length;
633    //window.alert('print_r\n\n' + print_r(msglist));
634    expresso_mail_archive.drawdata = {messagesList:msglist};
635    expresso_mail_archive.drawMessagesList();
636}
637
638//listMessages callback Fail
639MailArchiver.prototype.listMessagesOperationFailure = function(ServiceFault){
640    window.alert('listmessages FALHOU!\n' + ServiceFault.getReturn());
641}
642
643MailArchiver.prototype.drawMessagesList = function(){
644    var data_to_draw = expresso_mail_archive.drawdata.messagesList; 
645    //window.alert('data to draw =  ' + data_to_draw.length + '\ndata_to_draw[0].from.full = ' + print_r(data_to_draw));
646   
647    alternate_border(0);
648    Element("border_id_0").innerHTML = "&nbsp;" + lang_folder(expresso_mail_archive.currentfolder) + '&nbsp;<font face="Verdana" size="1" color="#505050">[<span id="new_m">&nbsp;</span> / <span id="tot_m"></span>]</font>';
649    draw_box(data_to_draw, expresso_mail_archive.currentfolder, true);
650    draw_paging(expresso_mail_archive.drawdata.messagesList.length);
651    Element("tot_m").innerHTML = expresso_mail_archive.drawdata.messagesList.length;
652    //update_menu();
653   
654}
655
656// -----------------------------------SERIALIZED DATA TEMPLATES ----------------
657MailArchiver.prototype.toExpressoAddress = function(data){
658    /*var dataFormat = expresso_mail_archive.toExpressoFormatNameMail(data);
659    var dataName = dataFormat[0];
660    var dataEmail = dataFormat[1];
661    */
662    //window.alert('em toExpressoFrom com data = \n' + data + '[' + typeof(data) + ']('+data.length+')');
663    var Fromdata = eval("(" + data + ")");
664    var dataName = Fromdata.mailbox.name.$;
665    var dataEmail = Fromdata.mailbox.localPart.$ + '@' + Fromdata.mailbox.domain.$;
666    //window.alert('name = ' + Fromdata.mailbox.name.$ + '\nlocal part = ' + Fromdata.mailbox.localPart.$ + '\ndomain = ' + Fromdata.mailbox.domain.$);
667       
668    var tplFrom = 'a:2:{'
669+           's:4:"name";'
670+           's:'+dataName.length+':"'+dataName+'";'
671+           's:5:"email";'
672+           's:'+dataEmail.length+':"'+dataEmail+'";'
673+           's:4:"full";'
674+           's:'+(dataName.length + dataEmail.length + 3)+':"'+dataName+'" <'+dataEmail+'>;'
675+       '}';
676    //window.alert('retorno do email: ' + tplFrom);
677    return(tplFrom);
678}
679
680MailArchiver.prototype.toExpressoDate = function(data){
681    var ndate = new Date(data);   
682    var odate = zeroFill(ndate.getDay()) + '/' + zeroFill(ndate.getMonth()) + '/' + zeroFill(ndate.getFullYear());
683    return(odate);
684}
685
686MailArchiver.prototype.toExpressoHour = function(data){
687    var ndate = new Date(data);   
688    var ohour = zeroFill(ndate.getHours()) + ':' + zeroFill(ndate.getMinutes()) + ':' + zeroFill(ndate.getSeconds());
689    return(ohour);   
690}
691
692MailArchiver.prototype.toExpressoCC = function(data){
693    var tplCC =  "s:"+data.getCC().length+":\""+data.getCC()+"\";";
694    return(tplCC);
695}
696
697MailArchiver.prototype.toExpressoTo = function(data){
698    var tplTo =  "s:"+data.getTo().length+":\""+data.getTo()+"\";";
699    return(tplTo);
700}
701
702/**
703 *+           's:'+expresso_mail_archive.toExpressoDate(data.getDate()).length+':"'+expresso_mail_archive.toExpressoDate(data.getDate())+'";'
704+           's:7:"msg_day";'
705+           's:'+expresso_mail_archive.toExpressoDate(data.getDate()).length+':"'+expresso_mail_archive.toExpressoDate(data.getDate())+'";'
706+           's:8:"msg_hour";'
707+           's:'+expresso_mail_archive.toExpressoHour(data.getDate()).length+':"'+expresso_mail_archive.toExpressoHour(data.getDate())+'";'
708+           's:8:"fulldate";'
709+           's:'+(expresso_mail_archive.toExpressoDate(data.getDate()).length+expresso_mail_archive.toExpressoHour(data.getDate()).length+1)+':"'+expresso_mail_archive.toExpressoDate(data.getDate())+' '+expresso_mail_archive.toExpressoHour(data.getDate())+'";'
710+           's:9:"smalldate";'
711+           's:'+expresso_mail_archive.toExpressoDate(data.getDate()).length+':"'+expresso_mail_archive.toExpressoDate(data.getDate())+'";'
712+           's:8:"aux_date";'
713+           's:1:"N";'
714 */
715
716
717MailArchiver.prototype.toExpressoHeader = function(data){   
718    var tplHeader = 'a:16:{'
719+           's:11:"ContentType";'
720+           's:6:"normal";'
721+           's:10:"Importance";'
722+           's:6:"Normal";'
723+           's:6:"Recent";'
724+           's:1:" ";'
725+           's:6:"Unseen";'
726+           's:1:"N";'
727+           's:8:"Answered";'
728+           's:1:" ";'
729+           's:5:"Draft";'
730+           's:1:" ";'
731+           's:7:"Deleted";'
732+           's:1:" ";'
733+           's:7:"Flagged";'
734+           'b:0;'
735+           's:10:"msg_number";'
736+           's:'+data.getId().length+':"'+data.getId()+'";'
737+           's:4:"from";'
738+           expresso_mail_archive.toExpressoAddress(data.getFrom())
739+           's:2:"to";'
740+           expresso_mail_archive.toExpressoAddress(data.getTo())
741+           's:7:"subject";'
742+           's:'+data.getSubject().length+':"'+data.getSubject()+'";'
743+           's:4:"Size";'
744+           'i:'+data.getSize()+';'
745+           's:5:"udate";'
746+           's:10:"01/04/2011";'
747+           's:7:"msg_day";'
748+           's:10:"01/04/2011";'
749+           's:8:"msg_hour";'
750+           's:8:"01:01:59";'
751+           's:8:"fulldate";'
752+           's:19:"01/04/2011 01:01:59";'
753+           's:9:"smalldate";'
754+           's:10:"01/04/2011";'
755+           's:10:"attachment";'
756+           'a:2:{'
757+                   's:5:"names";'
758+                   'b:0;'
759+                   's:18:"number_attachments";'
760+                  'i:0;'
761+               '}'
762+           's:8:"aux_date";'
763+           's:10:"01/04/2011";'
764+           '}';
765    //window.alert('Expresso Header draw data = ' + tplHeader);
766    return(tplHeader);
767}
768
769MailArchiver.prototype.toExpressoMail = function(data){
770   
771}
772/*
773 *The all pourpose JavaScript variable, used by all related functionalityes at
774 *Expresso Mail to handle this object at user gui.
775 */
776
777var expresso_mail_archive;
778expresso_mail_archive = new MailArchiver();
Note: See TracBrowser for help on using the repository browser.