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

Revision 4856, 31.8 KB checked in by fernando-alberto, 13 years ago (diff)

Ticket #1269 - Desenvolvimento da nova solucao de arquivamento local MailArchiver?, from e subj nulos

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