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 | |
---|
17 | var sessid = 'sessionId'; |
---|
18 | |
---|
19 | function 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 | |
---|
38 | function 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 | |
---|
63 | function 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 | */ |
---|
78 | function 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 | }; |
---|
133 | var_dump = print_r; |
---|
134 | |
---|
135 | |
---|
136 | |
---|
137 | //Main object structure: object property data definition |
---|
138 | function MailArchiver() { |
---|
139 | this.enabled = null; |
---|
140 | this.interval = 500; |
---|
141 | this.timer = null; |
---|
142 | this.counter = 0; |
---|
143 | this.service_count = 0; |
---|
144 | this.service_count_tryouts = 0; |
---|
145 | this.message_list = new Array(); |
---|
146 | this.messageslisted = new Array(); |
---|
147 | this.total_messages = 0; |
---|
148 | this.messages_processed = 0; |
---|
149 | this.messages_fail = 0; |
---|
150 | this.folder_origin = null; |
---|
151 | this.folder_destination = null; |
---|
152 | this.folders = null; |
---|
153 | this.currentfolder = 'local_root'; |
---|
154 | this.currentmessage = null; |
---|
155 | this.drawdata = null; |
---|
156 | this.onprocess = false; |
---|
157 | this.folder_data = false; |
---|
158 | this.queryconfig = new MAQueryConfig(); |
---|
159 | this.pattern = new MAPattern(); |
---|
160 | this.messagesourcehandler = null; |
---|
161 | this.ServiceReturnObject = null; |
---|
162 | this.specialfolders = { |
---|
163 | "inbox":"local_inbox", |
---|
164 | "sent":"local_sent", |
---|
165 | "drafts":"local_drafts", |
---|
166 | "outbox":"local_outbox", |
---|
167 | "trash":"local_trash" |
---|
168 | }; |
---|
169 | this.unarchivecounter = 0; |
---|
170 | this.unarchievefolder = null; |
---|
171 | this.unarchievenewfolder = null; |
---|
172 | this.taglist = null; |
---|
173 | } |
---|
174 | |
---|
175 | //Invoked at some possible MA crash issue |
---|
176 | MailArchiver.prototype.resetObject = function(){ |
---|
177 | expresso_mail_archive.message_list = new Array(); |
---|
178 | expresso_mail_archive.total_messages = 0; |
---|
179 | expresso_mail_archive.messages_processed = 0; |
---|
180 | expresso_mail_archive.messages_fail = 0; |
---|
181 | expresso_mail_archive.folder_origin = null; |
---|
182 | expresso_mail_archive.folder_destination = null; |
---|
183 | expresso_mail_archive.folder = null; |
---|
184 | } |
---|
185 | |
---|
186 | /*SystemCheck method: test if MailArchive is installed and/or running at user workstation |
---|
187 | *Try to get a instance of ArchiveServices object - the handler of services provided by |
---|
188 | *the MailArchive services provider interface, from user workstation. |
---|
189 | */ |
---|
190 | MailArchiver.prototype.SystemCheck = function(){ |
---|
191 | expresso_mail_archive.enabled = ((ArchiveServices) ? true : false); |
---|
192 | if(expresso_mail_archive.enabled){ |
---|
193 | var reqHandler = new cxf_cors_request_object(); |
---|
194 | reqHandler.init(); |
---|
195 | this.messagesourcehandler = reqHandler.handler; |
---|
196 | } |
---|
197 | } |
---|
198 | |
---|
199 | //Turns on the listener timer to check services availability |
---|
200 | MailArchiver.prototype.ActivateStatusListener = function(obj){ |
---|
201 | if (document.getElementById('mail_archiver_retry')) |
---|
202 | tem_tag = true; |
---|
203 | else |
---|
204 | tem_tag = false; |
---|
205 | try{ |
---|
206 | if (obj.enabled){ |
---|
207 | obj.interval = 500; //set default timer to 1ms (imediate lauching) |
---|
208 | draw_footer_box(get_current_folder()); |
---|
209 | obj.getServicesStatus(obj); |
---|
210 | } |
---|
211 | else{ |
---|
212 | throw "this is not enabled: " + obj; |
---|
213 | window.alert('Nope: obj.enabled is not true...'); |
---|
214 | } |
---|
215 | } |
---|
216 | catch (e){ |
---|
217 | window.alert('ActivateStatusListener error: ' + e); |
---|
218 | } |
---|
219 | } |
---|
220 | |
---|
221 | //Turns off the service status listener, at a crash issue |
---|
222 | MailArchiver.prototype.DeactivateStatusListener = function(obj){ |
---|
223 | window.clearInterval(obj.timer); |
---|
224 | obj.enabled = null; |
---|
225 | obj.timer=null; |
---|
226 | obj.interval = 500; |
---|
227 | ArchiveServices = null; |
---|
228 | connector.purgeCache(); |
---|
229 | |
---|
230 | draw_footer_box(get_current_folder()); |
---|
231 | auto_refresh(); |
---|
232 | if(document.getElementById('mail_archiver_retry')){ |
---|
233 | document.getElementById('mail_archiver_retry').parentNode.removeChild(document.getElementById('mail_archiver_retry')); |
---|
234 | } |
---|
235 | else{ |
---|
236 | //Redraw "Offline" linkage, intended to recoonect MailArchiver link |
---|
237 | connector.purgeCache(); |
---|
238 | ttreeBox.name_folder = "root"; |
---|
239 | ttreeBox.update_folder(); |
---|
240 | draw_tree_local_folders(); |
---|
241 | ttreeBox.update_folder(); |
---|
242 | change_folder('INBOX', 'INBOX', ttreeBox); |
---|
243 | } |
---|
244 | } |
---|
245 | |
---|
246 | //ServiceStatus callback OK |
---|
247 | MailArchiver.prototype.getServicesStatusOK = function(serviceData){ |
---|
248 | //window.alert('getServicesStatusOK com servicedata = ' + serviceData.getReturn()); |
---|
249 | expresso_mail_archive.service_count = expresso_mail_archive.counter; |
---|
250 | if ((serviceData.getReturn() == "STARTED") || (serviceData.getReturn() == "RUNNING")){ |
---|
251 | //If there is no timer activated to services check interval, set it up. |
---|
252 | if(expresso_mail_archive.enabled){ |
---|
253 | if(expresso_mail_archive.timer == null){ |
---|
254 | expresso_mail_archive.interval = 5000; |
---|
255 | expresso_mail_archive.timer = window.setInterval(expresso_mail_archive.getServicesStatus, expresso_mail_archive.interval); |
---|
256 | var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders', folderName: 'local_root'}; |
---|
257 | expresso_mail_archive.currentfolder = 'local_root'; |
---|
258 | expresso_mail_archive.drawdata = drawinginfo; |
---|
259 | expresso_mail_archive.getFoldersList(); |
---|
260 | } |
---|
261 | } |
---|
262 | else{ |
---|
263 | window.clearInterval(expresso_mail_archive.timer); |
---|
264 | 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); |
---|
265 | } |
---|
266 | } |
---|
267 | else{ |
---|
268 | expresso_mail_archive.enabled = false; |
---|
269 | window.clearInterval(expresso_mail_archive.timer); |
---|
270 | 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); |
---|
271 | } |
---|
272 | //window.alert('fooArc set to null'); |
---|
273 | fooArc = null; |
---|
274 | } |
---|
275 | |
---|
276 | //Dettach resources handler |
---|
277 | MailArchiver.prototype.DeactivateResources = function(obj){ |
---|
278 | if(obj.timer) |
---|
279 | window.clearInterval(obj.timer); |
---|
280 | write_msg(get_lang('Mail Archiver is not responding. There is some communicating issue hang it up. Some services may not work properly. Check it out!')); |
---|
281 | obj.DeactivateStatusListener(obj); |
---|
282 | return; |
---|
283 | } |
---|
284 | |
---|
285 | //Services Status Fail callback |
---|
286 | MailArchiver.prototype.getServicesStatusFailure = function(serviceData){ |
---|
287 | window.alert('getServicesStatusFailure incomming'); |
---|
288 | window.alert('getServicesStatusFailure feature: ' + serviceData); |
---|
289 | } |
---|
290 | |
---|
291 | //Service Status handler |
---|
292 | MailArchiver.prototype.getServicesStatus = function(obj){ |
---|
293 | //window.alert('em getServicesStatus obj.enabled = ' + obj.enabled + '\nArchiveServices.enabled = ' + ArchiveServices.enabled + '\nArchiveServices = ' + ArchiveServices); |
---|
294 | try{ |
---|
295 | //window.alert('on try 01'); |
---|
296 | expresso_mail_archive.service_count_tryouts++; |
---|
297 | //window.alert('service_count_tryouts = ' + expresso_mail_archive.service_count_tryouts + '\nservice_count = ' + expresso_mail_archive.service_count); |
---|
298 | |
---|
299 | if((expresso_mail_archive.service_count_tryouts - expresso_mail_archive.service_count) > 1){ |
---|
300 | //window.alert('problema -> deve desligar'); |
---|
301 | expresso_mail_archive.DeactivateResources(expresso_mail_archive); |
---|
302 | } |
---|
303 | else |
---|
304 | //window.alert('ok'); |
---|
305 | |
---|
306 | var fooArc = new web_service_mailarchiver_serpro__ArchiveServices(); |
---|
307 | fooArc.url = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/arcserv/ArchiveServices"; |
---|
308 | //window.alert('typeof(fooArc) = ' + typeof(fooArc) + '\nfooArc = ' + fooArc); |
---|
309 | if(fooArc){ |
---|
310 | try{ |
---|
311 | //window.alert('on try 02'); |
---|
312 | fooArc.getState(expresso_mail_archive.getServicesStatusOK, expresso_mail_archive.getServicesStatusFailure, "true"); |
---|
313 | fooArc = null; |
---|
314 | }catch (e){ |
---|
315 | throw "Service failure status: getState"; |
---|
316 | } |
---|
317 | } |
---|
318 | else { |
---|
319 | throw "No ArchiveServices object present. Sorry, but leaving now..."; |
---|
320 | } |
---|
321 | }catch (e){ |
---|
322 | //window.alert('getServiceStatus exception:' + e); |
---|
323 | } |
---|
324 | expresso_mail_archive.counter = expresso_mail_archive.counter +1; |
---|
325 | } |
---|
326 | |
---|
327 | /*Restart method: re-initializes all the Mail Archive structure |
---|
328 | **/ |
---|
329 | MailArchiver.prototype.Restart = function(obj){ |
---|
330 | obj.SystemCheck(); |
---|
331 | obj.ActivateStatusListener(obj); |
---|
332 | auto_refresh(); |
---|
333 | } |
---|
334 | |
---|
335 | /*Startup method: initializes all the Mail Archive structure to work so far as possible |
---|
336 | *Looks like the old 'gears_init', from Gears |
---|
337 | **/ |
---|
338 | MailArchiver.prototype.Startup = function(){ |
---|
339 | this.SystemCheck(); |
---|
340 | this.ActivateStatusListener(this); |
---|
341 | } |
---|
342 | |
---|
343 | MailArchiver.prototype.serializeToExpresso = function(data){ |
---|
344 | return(connector.serialize(data)); |
---|
345 | } |
---|
346 | |
---|
347 | MailArchiver.prototype.unserializeFromExpresso = function(data){ |
---|
348 | return(connector.unserialize(data)); |
---|
349 | } |
---|
350 | |
---|
351 | |
---|
352 | MailArchiver.prototype.CreateMessageList = function(msg_list){ |
---|
353 | //window.alert('criando messagelist de arquivamento.'); |
---|
354 | |
---|
355 | // for(var j=0; j<expresso_mail_archive.messageslisted.length; j++){ |
---|
356 | // window.alert('\nAnswered = ' + expresso_mail_archive.messageslisted[j]["Answered"] + '\nFlagged = ' + expresso_mail_archive.messageslisted[j]["Flagged"] + '\nUnseen = ' + expresso_mail_archive.messageslisted[j]["Unseen"] + '\nDraft = ' + expresso_mail_archive.messageslisted[j]["Draft"]); |
---|
357 | // } |
---|
358 | |
---|
359 | if((msg_list != null) && (msg_list != "") && (msg_list != " ")){ |
---|
360 | if (expresso_mail_archive.message_list.length == 0){ |
---|
361 | //Get all the messages ids by pass at msgs_id to "message_list" object array propertie - if more than one exists |
---|
362 | if(msg_list.indexOf(',') != -1){ |
---|
363 | var tmp_list = msg_list.split(','); |
---|
364 | for(var i=0; i < tmp_list.length; i++){ |
---|
365 | expresso_mail_archive.message_list.push(tmp_list[i]); |
---|
366 | } |
---|
367 | } |
---|
368 | |
---|
369 | //Push message list to process the only one |
---|
370 | else { |
---|
371 | //window.alert('testando marcadores default...\n->Answered = ' +expresso_mail_archive.messageslisted[i]["Answered"] + '\n->Unseen = '+expresso_mail_archive.messageslisted[i]["Unseen"]); |
---|
372 | expresso_mail_archive.message_list.push(msg_list); |
---|
373 | } |
---|
374 | } |
---|
375 | } |
---|
376 | //msg_list is corrupted. aborting population |
---|
377 | else expresso_mail_archive.message_list = new Array(); |
---|
378 | } |
---|
379 | |
---|
380 | |
---|
381 | //Archive Operation |
---|
382 | MailArchiver.prototype.Archive = function(source_folder,destination_folder,msgs_id){ |
---|
383 | //window.alert('tentando arquivar a mensagem [' + msgs_id + '], do folder ['+source_folder+'] para a pasta destino ['+destination_folder+']'); |
---|
384 | try{ |
---|
385 | document.getElementById('main_title').innerHTML = get_lang("Starting to archive messages"); |
---|
386 | expresso_mail_archive.CreateMessageList(msgs_id); |
---|
387 | |
---|
388 | var tagsHandler = function(data){ |
---|
389 | if(data){ |
---|
390 | var datah = eval(data); |
---|
391 | //window.alert('unseen = ' +datah["unseen"] + '\nrecent = ' + datah["recent"] + '\nflagged = ' + datah["flagged"] + '\ndraft = ' + datah["draft"] + '\nanswered = ' + datah["answered"] + '\ndeleted = ' + datah["deleted"] + '\nforwarded = ' + datah["forwarded"]); |
---|
392 | expresso_mail_archive.taglist = datah; |
---|
393 | } |
---|
394 | } |
---|
395 | |
---|
396 | if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')){ |
---|
397 | |
---|
398 | //Get all tags from current archiving message |
---|
399 | var pardata = "&folder=" + url_encode(current_folder)+ "&msg_number="+ expresso_mail_archive.message_list[0]; |
---|
400 | cExecute("$this.imap_functions.get_msg_flags", tagsHandler, pardata); |
---|
401 | |
---|
402 | //Sets the message counter |
---|
403 | expresso_mail_archive.total_messages = expresso_mail_archive.message_list.length; |
---|
404 | |
---|
405 | //Sets the folders properties: destination and origin |
---|
406 | expresso_mail_archive.folder_origin = source_folder; |
---|
407 | //window.alert('substr(0,5) = ' + destination_folder.substr(0,5)); |
---|
408 | if(destination_folder.substr(0,5) == 'local') |
---|
409 | expresso_mail_archive.folder_destination = destination_folder.substr(6,destination_folder.length); |
---|
410 | else |
---|
411 | expresso_mail_archive.folder_destination = destination_folder; |
---|
412 | |
---|
413 | var fcaption = expresso_mail_archive.folder_destination; |
---|
414 | |
---|
415 | for (var w=0; w < expresso_mail_archive.folders.length; w++){ |
---|
416 | if(expresso_mail_archive.folders[w]["id"] == expresso_mail_archive.folder_destination){ |
---|
417 | fcaption = expresso_mail_archive.folders[w]["name"]; |
---|
418 | break; |
---|
419 | } |
---|
420 | } |
---|
421 | |
---|
422 | //window.alert('destination_folder = ' + expresso_mail_archive.folder_destination); |
---|
423 | |
---|
424 | var arch_handler = function(data){ |
---|
425 | //Store the message source from Ajax request by now (string data) |
---|
426 | var js_var = new String(data); |
---|
427 | try{ |
---|
428 | //Archive services needs session id, message source and destination folder |
---|
429 | document.getElementById('main_title').innerHTML = get_lang("Archiving messages on folder %1...", fcaption); |
---|
430 | ArchiveServices.archive(expresso_mail_archive.getArchiveOperationOK, expresso_mail_archive.getArchiveOperationFailure, sessid, data ,expresso_mail_archive.folder_destination); |
---|
431 | } |
---|
432 | catch(e){ |
---|
433 | window.alert('ArchiveServices.archive error: ' + e); |
---|
434 | } |
---|
435 | } |
---|
436 | |
---|
437 | document.getElementById('main_title').innerHTML = get_lang("Archiving message %1 of %2", expresso_mail_archive.messages_processed, expresso_mail_archive.message_list.length); |
---|
438 | cExecute("$this.exporteml.js_source_var",arch_handler,"folder="+url_decode(source_folder)+"&msgs_to_export="+expresso_mail_archive.message_list[0]); |
---|
439 | } |
---|
440 | 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]); |
---|
441 | } |
---|
442 | catch(e){ |
---|
443 | window.alert(get_lang("Archive error: %1", (e.description)?e.description:e)); |
---|
444 | } |
---|
445 | } |
---|
446 | |
---|
447 | //Archive callback OK |
---|
448 | MailArchiver.prototype.getArchiveOperationOK = function(status_message){ |
---|
449 | //message must be tagged |
---|
450 | var arcid = status_message.getReturn().getId(); |
---|
451 | var tlist = expresso_mail_archive.pattern.tagConfig(expresso_mail_archive.taglist, arcid); |
---|
452 | if(tlist != null){ |
---|
453 | try{ |
---|
454 | ArchiveServices.tagMessages(expresso_mail_archive.tagMessagesOperationOK, expresso_mail_archive.tagMessagesOperationFailure, sessid, tlist); |
---|
455 | }catch (e){ |
---|
456 | window.alert('ArchiveServices.tagMessages failed at: ' + (e.description)?e.description:e); |
---|
457 | } |
---|
458 | } |
---|
459 | //archivement allready done, update controll data and interface |
---|
460 | expresso_mail_archive.messages_processed++; |
---|
461 | if(expresso_mail_archive.message_list.length > 1){ |
---|
462 | document.getElementById('main_title').innerHTML = get_lang("Message %1 of %2 successfully archived", expresso_mail_archive.messages_processed, expresso_mail_archive.total_messages); |
---|
463 | expresso_mail_archive.message_list.shift(); |
---|
464 | expresso_mail_archive.Archive(expresso_mail_archive.folder_origin, expresso_mail_archive.folder_destination, expresso_mail_archive.message_list); |
---|
465 | } |
---|
466 | else{ |
---|
467 | document.getElementById('main_title').innerHTML = get_lang("All done. End of archive messages operation"); |
---|
468 | expresso_mail_archive.resetObject(); |
---|
469 | window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000); |
---|
470 | } |
---|
471 | } |
---|
472 | //Archive callback Fail |
---|
473 | MailArchiver.prototype.getArchiveOperationFailure = function(error_message){ |
---|
474 | window.alert('Hi! getArchiveOperationFailure comes with ' + error_message.getReturn()); |
---|
475 | window.setTimeout("eval('document.getElementById(\"main_title\").innerHTML =\"Expresso Mail\"')",3000); |
---|
476 | } |
---|
477 | |
---|
478 | /** |
---|
479 | *Unarchieve Message |
---|
480 | * |
---|
481 | *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] |
---|
482 | * |
---|
483 | *@param folder Original Folder of the message |
---|
484 | *@param new_folder The new folder of the message |
---|
485 | *@param msgs_number id of the messages |
---|
486 | */ |
---|
487 | MailArchiver.prototype.unarchieve = function (folder, new_folder, msgs_number){ |
---|
488 | try{ |
---|
489 | expresso_mail_archive.message_list = new Array(); |
---|
490 | expresso_mail_archive.CreateMessageList(msgs_number); |
---|
491 | if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) { |
---|
492 | expresso_mail_archive.unarchivecounter = 0; |
---|
493 | expresso_mail_archive.unarchievefolder = folder; |
---|
494 | expresso_mail_archive.unarchievenewfolder = new_folder; |
---|
495 | expresso_mail_archive.unarchieveHandler(); |
---|
496 | } |
---|
497 | else{ |
---|
498 | write_msg(get_lang('No selected message.')); |
---|
499 | } |
---|
500 | } |
---|
501 | catch (e){ |
---|
502 | write_msg(get_lang('Unarchive error: ' + e)); |
---|
503 | } |
---|
504 | } |
---|
505 | |
---|
506 | /** |
---|
507 | * |
---|
508 | *Unarchieve Message Handler |
---|
509 | * |
---|
510 | *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] |
---|
511 | * |
---|
512 | **/ |
---|
513 | MailArchiver.prototype.unarchieveHandler = function(){ |
---|
514 | var email = 'http://127.0.0.1:4333/mail/' + expresso_mail_archive.unarchievefolder.substr(6).charAt(0).toUpperCase() + expresso_mail_archive.unarchievefolder.substr(7) + '/'+ expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter] + '.eml'; |
---|
515 | expresso_mail_archive.messagesourcehandler.onreadystatechange = function(){ |
---|
516 | if (expresso_mail_archive.messagesourcehandler.readyState==4 && expresso_mail_archive.messagesourcehandler.status==200){ |
---|
517 | for (var w=0; w < expresso_mail_archive.messageslisted.length; w++){ |
---|
518 | if(expresso_mail_archive.messageslisted[w]["msg_number"] == expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]){ |
---|
519 | var timestamp = expresso_mail_archive.messageslisted[w]["timestamp"]; |
---|
520 | var flags = "#@#@#@" + (expresso_mail_archive.messageslisted[w]["Answered"]!=undefined)?'A':''; |
---|
521 | flags += (expresso_mail_archive.messageslisted[w]["Draft"] !=undefined)?'D':''; |
---|
522 | flags += (expresso_mail_archive.messageslisted[w]["Flagged"] !=undefined)?'F':''; |
---|
523 | flags += (expresso_mail_archive.messageslisted[w]["Unseen"] !=undefined)?'U':''; |
---|
524 | break; |
---|
525 | } |
---|
526 | } |
---|
527 | var source = "#@#@#@" + escape(expresso_mail_archive.messagesourcehandler.responseText); |
---|
528 | //var flags+="#@#@#@"+ mail["Answered"] +":"+mail["Draft"]+":"+mail["Flagged"]+":"+mail["Unseen"]; |
---|
529 | var params = |
---|
530 | "&folder=" + expresso_mail_archive.unarchievenewfolder + |
---|
531 | "&source=" + source + |
---|
532 | "×tamp=" + timestamp + |
---|
533 | "&flags=" + flags; |
---|
534 | var handler_unarchive = function(){ |
---|
535 | expresso_mail_archive.unarchieveController(); |
---|
536 | } |
---|
537 | write_msg(get_lang('Unarchieving ' + (expresso_mail_archive.unarchivecounter + 1) + ' of ' + expresso_mail_archive.message_list.length)); |
---|
538 | cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params); |
---|
539 | } |
---|
540 | } |
---|
541 | write_msg(get_lang('Opening message ' + (expresso_mail_archive.unarchivecounter + 1) + ' for Unarchieve')); |
---|
542 | expresso_mail_archive.messagesourcehandler.open("GET", email, true); |
---|
543 | expresso_mail_archive.messagesourcehandler.send(); |
---|
544 | } |
---|
545 | |
---|
546 | /** |
---|
547 | * |
---|
548 | *Unarchieve Message Controller |
---|
549 | * |
---|
550 | *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] |
---|
551 | * |
---|
552 | **/ |
---|
553 | MailArchiver.prototype.unarchieveController = function(){ |
---|
554 | expresso_mail_archive.unarchivecounter++; |
---|
555 | if (expresso_mail_archive.unarchivecounter < expresso_mail_archive.message_list.length){ |
---|
556 | expresso_mail_archive.unarchieveHandler(); |
---|
557 | } |
---|
558 | else{ |
---|
559 | if (expresso_mail_archive.message_list.length==1){ |
---|
560 | write_msg(get_lang('Message successfully unarchived')); |
---|
561 | } |
---|
562 | else{ |
---|
563 | write_msg(get_lang('Messages successfully unarchived')); |
---|
564 | } |
---|
565 | } |
---|
566 | } |
---|
567 | |
---|
568 | /** |
---|
569 | *Archieve Delete Message |
---|
570 | * |
---|
571 | *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] |
---|
572 | * |
---|
573 | *@param msgs_number Unique identification of the message |
---|
574 | */ |
---|
575 | MailArchiver.prototype.deleteMessages = function(msgs_number){ |
---|
576 | try{ |
---|
577 | expresso_mail_archive.CreateMessageList(msgs_number); |
---|
578 | if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) { |
---|
579 | ArchiveServices.deleteMessages(expresso_mail_archive.deleteMessagesOperationOK, |
---|
580 | expresso_mail_archive.deleteMessagesOperationFailure, |
---|
581 | sessid, |
---|
582 | expresso_mail_archive.message_list); |
---|
583 | } |
---|
584 | else{ |
---|
585 | write_msg(get_lang('No selected message.')); |
---|
586 | } |
---|
587 | } |
---|
588 | catch (e){ |
---|
589 | window.alert('Delete error: ' + e); |
---|
590 | } |
---|
591 | } |
---|
592 | |
---|
593 | /** |
---|
594 | *Archieve Delete Message Ok |
---|
595 | * |
---|
596 | *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] |
---|
597 | * |
---|
598 | */ |
---|
599 | MailArchiver.prototype.deleteMessagesOperationOK = function(){ |
---|
600 | var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders'}; |
---|
601 | expresso_mail_archive.drawdata = drawinginfo; |
---|
602 | expresso_mail_archive.drawFolderTree(); |
---|
603 | expresso_mail_archive.listMessages(); |
---|
604 | if(expresso_mail_archive.message_list.length > 1){ |
---|
605 | write_msg(get_lang("The messages were deleted.")); |
---|
606 | }else{ |
---|
607 | write_msg(get_lang("The message was deleted.")); |
---|
608 | } |
---|
609 | } |
---|
610 | |
---|
611 | /** |
---|
612 | *Archieve Delete Message Operation Failure |
---|
613 | * |
---|
614 | *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] |
---|
615 | * |
---|
616 | */ |
---|
617 | MailArchiver.prototype.deleteMessagesOperationFailure = function(error_message){ |
---|
618 | if(expresso_mail_archive.message_list.length > 1){ |
---|
619 | write_msg(get_lang("Error deleting messages.") + ' ' + error_message.getReturn()); |
---|
620 | }else{ |
---|
621 | write_msg(get_lang("Error deleting message.") + ' ' + error_message.getReturn()); |
---|
622 | } |
---|
623 | } |
---|
624 | |
---|
625 | /** |
---|
626 | *Move message |
---|
627 | * |
---|
628 | *@param folder Folder where the message will be moved |
---|
629 | *@param msgs_number Unique Id of the message |
---|
630 | * |
---|
631 | *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] |
---|
632 | * |
---|
633 | */ |
---|
634 | MailArchiver.prototype.moveMessages = function(folder, msgs_number){ |
---|
635 | try{ |
---|
636 | expresso_mail_archive.CreateMessageList(msgs_number); |
---|
637 | if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) { |
---|
638 | ArchiveServices.moveMessages(expresso_mail_archive.moveMessagesOperationOK, |
---|
639 | expresso_mail_archive.moveMessagesOperationFailure, |
---|
640 | sessid, |
---|
641 | expresso_mail_archive.message_list, |
---|
642 | folder |
---|
643 | ); |
---|
644 | } |
---|
645 | else{ |
---|
646 | write_msg(get_lang('No selected message.')); |
---|
647 | } |
---|
648 | } |
---|
649 | catch (e){ |
---|
650 | window.alert('Move error: ' + e); |
---|
651 | } |
---|
652 | } |
---|
653 | |
---|
654 | /** |
---|
655 | *Move Message Ok |
---|
656 | * |
---|
657 | *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] |
---|
658 | * |
---|
659 | */ |
---|
660 | MailArchiver.prototype.moveMessagesOperationOK = function(){ |
---|
661 | var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders'}; |
---|
662 | expresso_mail_archive.drawdata = drawinginfo; |
---|
663 | expresso_mail_archive.drawFolderTree(); |
---|
664 | expresso_mail_archive.listMessages(); |
---|
665 | if(expresso_mail_archive.message_list.length > 1){ |
---|
666 | write_msg(get_lang("The messages were moved.")); |
---|
667 | }else{ |
---|
668 | write_msg(get_lang("The message was moved.")); |
---|
669 | } |
---|
670 | } |
---|
671 | |
---|
672 | /** |
---|
673 | *Move Message Failure |
---|
674 | * |
---|
675 | *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] |
---|
676 | * |
---|
677 | */ |
---|
678 | MailArchiver.prototype.moveMessagesOperationFailure = function(error_message){ |
---|
679 | if(expresso_mail_archive.message_list.length > 1){ |
---|
680 | write_msg(get_lang("Error moving messages.") + ' ' + error_message.getReturn()); |
---|
681 | }else{ |
---|
682 | write_msg(get_lang("Error moving message.") + ' ' + error_message.getReturn()); |
---|
683 | } |
---|
684 | } |
---|
685 | |
---|
686 | |
---|
687 | //getFolderList Operation |
---|
688 | MailArchiver.prototype.getFoldersList = function(basefolder){ |
---|
689 | try{ |
---|
690 | ArchiveServices.listFolders(expresso_mail_archive.getFoldersListOperationOK, expresso_mail_archive.getFoldersListOperationFailure, sessid, basefolder); |
---|
691 | } |
---|
692 | catch (e){ |
---|
693 | //window.alert('AQUI MESMO\nOps...List folders fails at:\n' + e.description); |
---|
694 | } |
---|
695 | } |
---|
696 | |
---|
697 | //getFolderList callback OK |
---|
698 | MailArchiver.prototype.getFoldersListOperationOK = function(folderlist){ |
---|
699 | //Internal variable used to map all XML data return from WS invokated |
---|
700 | var lfolders = new Array(); |
---|
701 | |
---|
702 | //Mapping XML data to a handler data structure |
---|
703 | if(folderlist.getReturn().length > 0){ |
---|
704 | var lfolders = new Array(); |
---|
705 | for(i=0; i<folderlist.getReturn().length; i++){ |
---|
706 | (folderlist.getReturn()[i].getFolderCount() > 0 ) ? folderChild = 1 : folderChild = 0; |
---|
707 | |
---|
708 | //Store folder data at this format: {folder name, number of messages contained, folder has child nodes, folder id, folder parent id, folder full path} |
---|
709 | //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()); |
---|
710 | 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(), unseen: folderlist.getReturn()[i].getUnseenCount()}; |
---|
711 | //window.alert('folder ' + folderData.name + ' tem ' + folderData.messages + ' mensagens.'); |
---|
712 | lfolders.push(folderData); |
---|
713 | } |
---|
714 | |
---|
715 | //Sets folders property at main object |
---|
716 | expresso_mail_archive.folders = lfolders; |
---|
717 | |
---|
718 | if(expresso_mail_archive.folders[0]["parentid"] == "") |
---|
719 | expresso_mail_archive.currentfolder = 'local_root'; |
---|
720 | else |
---|
721 | expresso_mail_archive.currentfolder = expresso_mail_archive.folders[0]["parentid"]; |
---|
722 | |
---|
723 | //Folders dumping :) |
---|
724 | /*var strFolders = '---'; |
---|
725 | for (var w=0; w < expresso_mail_archive.folders.length; w++){ |
---|
726 | strFolders += '\nFolder ' + w + ' -->'; |
---|
727 | for (x in expresso_mail_archive.folders[w]){ |
---|
728 | strFolders += '\n----------' + x + ':= ' + expresso_mail_archive.folders[w][x]; |
---|
729 | } |
---|
730 | strFolders += '\n<---'; |
---|
731 | } |
---|
732 | strFolders += '\n---'; |
---|
733 | alert(lfolders.length + ' folders mapeados, com default = ' + expresso_mail_archive.currentfolder + '\nfolders list:\n\n' + strFolders); |
---|
734 | */ |
---|
735 | |
---|
736 | //If something UI related have been flagged, handle it |
---|
737 | if (expresso_mail_archive.drawdata){ |
---|
738 | //window.alert('com drawdata e treeName = ' + expresso_mail_archive.drawdata.treeName); |
---|
739 | expresso_mail_archive.drawFolderTree(); |
---|
740 | } |
---|
741 | } |
---|
742 | } |
---|
743 | |
---|
744 | //getFolderList callback Fail |
---|
745 | MailArchiver.prototype.getFoldersListOperationFailure = function(error, http_msg){ |
---|
746 | window.alert('List folders mistake:' + error + '\nhttp_error = ' + http_msg); |
---|
747 | } |
---|
748 | |
---|
749 | //drawFolderTree operation, if requested to |
---|
750 | MailArchiver.prototype.drawFolderTree = function(){ |
---|
751 | //window.alert('na api de foldertree'); |
---|
752 | var localBaseName = 'local_'; |
---|
753 | var objectTree = expresso_mail_archive.drawdata.treeObject; |
---|
754 | var evalobjectTree = eval(expresso_mail_archive.drawdata.treeName); |
---|
755 | |
---|
756 | //Add nodes to tree |
---|
757 | if(typeof(evalobjectTree) == 'object'){ |
---|
758 | if(expresso_mail_archive.folders.length > 0){ |
---|
759 | //window.alert('vai adicionar ' + expresso_mail_archive.folders.length + ' elementos na tree'); |
---|
760 | //window.alert('arvore ja tem ' + evalobjectTree.length + ' nodos'); |
---|
761 | for(i=0; i<expresso_mail_archive.folders.length; i++){ |
---|
762 | var folder_caption; |
---|
763 | |
---|
764 | //Special folders treatment: Inbox, Outbox, Drafts, Sent and Trash folders |
---|
765 | 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')){ |
---|
766 | folder_caption = get_lang(expresso_mail_archive.folders[i]["name"]); |
---|
767 | } |
---|
768 | else{ |
---|
769 | folder_caption = expresso_mail_archive.folders[i]["name"]; |
---|
770 | } |
---|
771 | |
---|
772 | if(expresso_mail_archive.folders[i]["unseen"] == "0") |
---|
773 | 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"]}); |
---|
774 | else |
---|
775 | //var nn = new dNode({id:data[i].folder_id, caption:lang_folder(data[i].folder_name) + '<font style=color:red> (</font><span id="dftree_'+data[i].folder_id+'_unseen" style=color:red>'+data[i].folder_unseen+'</span><font style=color:red>)</font>', onClick:"change_folder('"+data[i].folder_id+"','"+data[i].folder_name+"')", plusSign:data[i].folder_hasChildren}); |
---|
776 | var n_demo = new dNode({id: localBaseName + expresso_mail_archive.folders[i]["id"], caption: folder_caption + '<font style=color:red> (</font><span id="dftree_'+expresso_mail_archive.folders[i]["id"]+'_unseen" style=color:red>'+expresso_mail_archive.folders[i]["unseen"]+'</span><font style=color:red>)</font>', 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"]}); |
---|
777 | |
---|
778 | //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"]}); |
---|
779 | |
---|
780 | //Adjust the id node names |
---|
781 | if(expresso_mail_archive.currentfolder){ |
---|
782 | if(expresso_mail_archive.currentfolder.substr(0,5) != 'local'){ |
---|
783 | evalobjectTree.add(n_demo, localBaseName + expresso_mail_archive.currentfolder); |
---|
784 | } |
---|
785 | else{ |
---|
786 | evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder); |
---|
787 | } |
---|
788 | } |
---|
789 | else { |
---|
790 | expresso_mail_archive.currentfolder = 'local_root'; |
---|
791 | evalobjectTree.add(n_demo,expresso_mail_archive.currentfolder); |
---|
792 | } |
---|
793 | } |
---|
794 | //window.alert('refrescando...'); |
---|
795 | //evalobjectTree.update_folder('local_root'); |
---|
796 | } |
---|
797 | } |
---|
798 | } |
---|
799 | |
---|
800 | //getFaultInfo operation |
---|
801 | MailArchiver.prototype.getFaultInfo = function(){ |
---|
802 | try{ |
---|
803 | ArchiveServices.getFaultInfo(expresso_mail_archive.getFaultInfoOperationOK, expresso_mail_archive.getFaultInfoOperationFailure, sessid); |
---|
804 | } |
---|
805 | catch(e){ |
---|
806 | write_msg(get_lang('getFaultInfo invoke fails = ' + e),true); |
---|
807 | } |
---|
808 | } |
---|
809 | |
---|
810 | //getFaultInfo callback OK |
---|
811 | MailArchiver.prototype.getFaultInfoOperationOK = function(faultinfo){ |
---|
812 | try{ |
---|
813 | write_msg(get_lang('MailArchiver remote service reports the following error:' + faultinfo.getReturn().getSoapFaultString(), true)); |
---|
814 | } catch(e){ |
---|
815 | write_msg(get_lang('Ops! It was not possible to capture service error data.', true)); |
---|
816 | } |
---|
817 | } |
---|
818 | |
---|
819 | //getFaultInfo callback Fail |
---|
820 | MailArchiver.prototype.getFaultInfoOperationFailure = function(errorCode, errorDesc){ |
---|
821 | try{ |
---|
822 | write_msg(get_lang('SoapFault capture fails at:' + errorCode + ' | ' + errorDesc, true)); |
---|
823 | } catch(e){ |
---|
824 | write_msg(get_lang('Service error mapping', true)); |
---|
825 | } |
---|
826 | } |
---|
827 | |
---|
828 | //createFolder operation |
---|
829 | MailArchiver.prototype.createFolder = function(parentFolder, folderName){ |
---|
830 | |
---|
831 | try{ |
---|
832 | ArchiveServices.createFolder(expresso_mail_archive.createFolderOperationOK, expresso_mail_archive.createFolderOperationFailure, sessid, parentFolder, folderName); |
---|
833 | } |
---|
834 | catch (e){ |
---|
835 | window.alert('Ops...create folder fails at:\n' + e); |
---|
836 | } |
---|
837 | |
---|
838 | } |
---|
839 | |
---|
840 | //createFolder callback OK |
---|
841 | MailArchiver.prototype.createFolderOperationOK = function (folderObject){ |
---|
842 | draw_tree_local_folders(); |
---|
843 | ttreeBox.update_folder(); |
---|
844 | } |
---|
845 | |
---|
846 | //createFolder callback Fail |
---|
847 | MailArchiver.prototype.createFolderOperationFailure = function (message){ |
---|
848 | window.alert('Folder creation fails...\n->' + message.getReturn()); |
---|
849 | } |
---|
850 | |
---|
851 | //deleteFolder operation |
---|
852 | MailArchiver.prototype.deleteFolder = function(folderName){ |
---|
853 | try{ |
---|
854 | ArchiveServices.deleteFolder(expresso_mail_archive.deleteFolderOperationOK, expresso_mail_archive.deleteFolderOperationFailure, sessid, folderName, true); |
---|
855 | } |
---|
856 | catch (e){ |
---|
857 | window.alert('Ops...delete folder fails at:\n' + e); |
---|
858 | } |
---|
859 | |
---|
860 | } |
---|
861 | |
---|
862 | //deleteFolder callback OK |
---|
863 | MailArchiver.prototype.deleteFolderOperationOK = function (folderObject){ |
---|
864 | window.alert('delete ok'); |
---|
865 | //var fo = IterateIt(folderObject); |
---|
866 | write_msg(get_lang("The folder " + expresso_mail_archive.drawdata.folderName + " was successfully removed")); |
---|
867 | connector.purgeCache(); |
---|
868 | ttreeBox.name_folder = "root"; |
---|
869 | ttreeBox.update_folder(); |
---|
870 | draw_tree_local_folders(); |
---|
871 | ttreeBox.update_folder(); |
---|
872 | } |
---|
873 | |
---|
874 | //deleteFolder callback Fail |
---|
875 | MailArchiver.prototype.deleteFolderOperationFailure = function (message){ |
---|
876 | window.alert('Folder deletion fails...\n->' + message.getReturn()); |
---|
877 | } |
---|
878 | |
---|
879 | //renameFolder operation |
---|
880 | MailArchiver.prototype.renameFolder = function(folderId, newFolderName){ |
---|
881 | try{ |
---|
882 | ArchiveServices.renameFolder(expresso_mail_archive.renameFolderOperationOK, expresso_mail_archive.renameFolderOperationFailure, sessid, folderId, newFolderName); |
---|
883 | } |
---|
884 | catch (e){ |
---|
885 | window.alert('Ops...renaming folder fails at:\n' + e); |
---|
886 | } |
---|
887 | |
---|
888 | } |
---|
889 | |
---|
890 | //renameFolder callback OK |
---|
891 | MailArchiver.prototype.renameFolderOperationOK = function (returnService){ |
---|
892 | var evalobjectTree = eval(expresso_mail_archive.drawdata.treeName); |
---|
893 | evalobjectTree.update_folder(); |
---|
894 | } |
---|
895 | |
---|
896 | //renameFolder callback Fail |
---|
897 | MailArchiver.prototype.renameFolderOperationFailure = function (ServiceFault){ |
---|
898 | window.alert('Folder rename fails...\n->' + ServiceFault.getReturn()); |
---|
899 | alert(get_lang("cannot rename folder. try other folder name")); |
---|
900 | } |
---|
901 | |
---|
902 | //getFolderInfo operation |
---|
903 | MailArchiver.prototype.getFolderInfo = function (folderId){ |
---|
904 | try{ |
---|
905 | ArchiveServices.getFolderInfo(expresso_mail_archive.getFolderInfoOperationOK, expresso_mail_archive.getFolderInfoOperationFailure, sessid, folderId); |
---|
906 | } |
---|
907 | catch (e){ |
---|
908 | window.alert('Ops...getFolderInfo fails at:\n' + e); |
---|
909 | } |
---|
910 | } |
---|
911 | |
---|
912 | //getFolderInfo callback OK |
---|
913 | MailArchiver.prototype.getFolderInfoOperationOK = function(returnService){ |
---|
914 | var folder_info = {id : returnService.getReturn().getId(), name : returnService.getReturn().getName(), parent : returnService.getReturn().getParentId(), numfolders: returnService.getReturn().getFolderCount(), nummessages: returnService.getReturn().getMessageCount(), unseen: returnService.getReturn().getUnseenCount()}; |
---|
915 | expresso_mail_archive.folder = folder_info; |
---|
916 | } |
---|
917 | |
---|
918 | //getFolderInfo callback Fail |
---|
919 | MailArchiver.prototype.getFolderInfoOperationFailure = function (ServiceFault){ |
---|
920 | window.alert('getFolderInfo service fails...\n->' + ServiceFault.getReturn()); |
---|
921 | expresso_mail_archive.folder_data = true; |
---|
922 | } |
---|
923 | |
---|
924 | function foo(){ |
---|
925 | var a = 0; |
---|
926 | a++; |
---|
927 | } |
---|
928 | |
---|
929 | //listMessages operation |
---|
930 | //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) { |
---|
931 | //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) { |
---|
932 | //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); |
---|
933 | MailArchiver.prototype.listMessages = function(){ |
---|
934 | try{ |
---|
935 | var folderid = expresso_mail_archive.currentfolder; |
---|
936 | //window.alert('folderid = ' + folderid); |
---|
937 | //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>'; |
---|
938 | //var testing_data_json_mapped = '{"query":{"@lowerIndex":"0", "@upperIndex":"50", "folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date", "@desc":"subject"}]}}'; |
---|
939 | //window.alert('Query config lower = ' + expresso_mail_archive.queryconfig.lowerIndex + ' - upper = ' + expresso_mail_archive.queryconfig.upperIndex + ' folder = ' + expresso_mail_archive.queryconfig.folder); |
---|
940 | //if (expresso_mail_archive.queryconfig.folder != null) |
---|
941 | var query_data = expresso_mail_archive.queryconfig.query(); |
---|
942 | //else |
---|
943 | // var testing_data = testing_data_json_mapped; |
---|
944 | |
---|
945 | //window.alert('vai chamar o listMessages com testing_data = ' + testing_data); |
---|
946 | expresso_mail_archive.getFolderInfo(folderid);//invoked to compute messages count |
---|
947 | //window.alert('Há ' + expresso_mail_archive.folder.nummessages +' no folder ' + expresso_mail_archive.folder.name); |
---|
948 | ArchiveServices.listMessages(expresso_mail_archive.listMessagesOperationOK, expresso_mail_archive.listMessagesOperationFailure, sessid, query_data); |
---|
949 | } |
---|
950 | catch (e){ |
---|
951 | window.alert('Ops...listMessages fails at:\n' + e); |
---|
952 | } |
---|
953 | } |
---|
954 | |
---|
955 | //listMessages callback OK |
---|
956 | MailArchiver.prototype.listMessagesOperationOK = function(returnService){ |
---|
957 | var msglist = new Array(); |
---|
958 | expresso_mail_archive.ServiceReturnObject = new Array(); |
---|
959 | //window.alert('messages data\n\n' + print_r(returnService.getReturn())); |
---|
960 | /*window.alert('Dados da mensagem:\n->From ' + returnService.getReturn()[0].getFrom() |
---|
961 | +'\n->To ' + returnService.getReturn()[0].getTo() |
---|
962 | +'\n->Subject ' + returnService.getReturn()[0].getSubject() |
---|
963 | +'\n->Date ' + returnService.getReturn()[0].getDate() |
---|
964 | +'\n->Date ' + returnService.getReturn()[0].getSize() |
---|
965 | +'\n->ID ' + returnService.getReturn()[0].getId()); |
---|
966 | */ |
---|
967 | for(var i=0; i< returnService.getReturn().length; i++){ |
---|
968 | //window.alert('quer deserializar:\n\n' + print_r(returnService.getReturn()[i])); |
---|
969 | var ExpSerialized = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]); |
---|
970 | //window.alert('expSerialized ' + i + '\n\n --\n\n' + print_r(ExpSerialized)); |
---|
971 | //var test = connector.unserialize(ExpSerialized); |
---|
972 | //window.alert('unserialized = \n\n' + test); |
---|
973 | msglist.push(connector.unserialize(ExpSerialized));//usando connector.unserialize sobre o header mapeado no layout abaixo |
---|
974 | expresso_mail_archive.ServiceReturnObject.push(returnService.getReturn()[i]); //add each one service return data into this embeded object array |
---|
975 | //window.alert('ServiceReturnObject.lenght = ' + expresso_mail_archive.ServiceReturnObject.length + '\n\n:' + expresso_mail_archive.ServiceReturnObject[i]); |
---|
976 | } |
---|
977 | msglist["num_msgs"] = returnService.getReturn().length; |
---|
978 | msglist["tot_unseen"] = expresso_mail_archive.folder.unseen; |
---|
979 | //window.alert('print_r\n\n' + print_r(msglist)); |
---|
980 | |
---|
981 | expresso_mail_archive.messageslisted = msglist; |
---|
982 | //window.alert('expresso_mail_archive.message_list.length = ' + expresso_mail_archive.message_list.length); |
---|
983 | //window.alert(print_r(expresso_mail_archive.message_list)); |
---|
984 | expresso_mail_archive.drawdata = {messagesList:msglist}; |
---|
985 | expresso_mail_archive.drawMessagesList(); |
---|
986 | } |
---|
987 | |
---|
988 | //listMessages callback Fail |
---|
989 | MailArchiver.prototype.listMessagesOperationFailure = function(ServiceFault){ |
---|
990 | window.alert('listmessages FALHOU!\n' + ServiceFault.getReturn()); |
---|
991 | } |
---|
992 | |
---|
993 | MailArchiver.prototype.getFolderMessagesNumber = function(){ |
---|
994 | var n = 0; |
---|
995 | for(var i=0; i < expresso_mail_archive.folders.length; i++){ |
---|
996 | if(expresso_mail_archive.folders[i]["id"] == expresso_mail_archive.currentfolder){ |
---|
997 | n = expresso_mail_archive.folders[i]["messages"]; |
---|
998 | } |
---|
999 | } |
---|
1000 | return(n); |
---|
1001 | } |
---|
1002 | |
---|
1003 | MailArchiver.prototype.drawMessagesList = function(){ |
---|
1004 | var data_to_draw = expresso_mail_archive.drawdata.messagesList; |
---|
1005 | //window.alert('data to draw = ' + data_to_draw.length + '\ndata_to_draw[0].from.full = ' + print_r(data_to_draw)); |
---|
1006 | //window.alert('Current folder = ' + expresso_mail_archive.currentfolder + ' com ' + expresso_mail_archive.folders.length + ' folders.'); |
---|
1007 | var fcaption = expresso_mail_archive.currentfolder; |
---|
1008 | |
---|
1009 | /*for (var w=0; w < expresso_mail_archive.folders.length; w++){ |
---|
1010 | //window.alert('comparando folder "' + expresso_mail_archive.folders[w]["id"] + '" com o corrente "' + expresso_mail_archive.currentfolder + '"\nEnquanto que o folder.name obtido do getfolderinfo é "' + expresso_mail_archive.folder.name + '"'); |
---|
1011 | if(expresso_mail_archive.folders[w]["id"] == expresso_mail_archive.currentfolder){ |
---|
1012 | fcaption = expresso_mail_archive.folders[w]["name"]; |
---|
1013 | window.alert('folder found!\n -> ' + fcaption); |
---|
1014 | break; |
---|
1015 | } |
---|
1016 | }*/ |
---|
1017 | |
---|
1018 | var fcaption = expresso_mail_archive.folder.name; |
---|
1019 | //var folder_num_msgs = expresso_mail_archive.getFolderMessagesNumber(); |
---|
1020 | var folder_num_msgs = expresso_mail_archive.folder.nummessages; |
---|
1021 | //window.alert('num = ' + folder_num_msgs); |
---|
1022 | alternate_border(0); |
---|
1023 | Element("border_id_0").innerHTML = " " + lang_folder(fcaption) + ' <font face="Verdana" size="1" color="#505050">[<span id="new_m"> </span> / <span id="tot_m"></span>]</font>'; |
---|
1024 | draw_box(data_to_draw, 'local_' + expresso_mail_archive.currentfolder, true); |
---|
1025 | //draw_paging(expresso_mail_archive.drawdata.messagesList.length); |
---|
1026 | //draw_paging(preferences.max_email_per_page); |
---|
1027 | draw_paging(folder_num_msgs); |
---|
1028 | Element("tot_m").innerHTML = folder_num_msgs; |
---|
1029 | Element('new_m').innerHTML = data_to_draw['tot_unseen'] ? '<font color="RED">'+data_to_draw['tot_unseen']+'</font>' : 0; |
---|
1030 | //update_menu(); |
---|
1031 | |
---|
1032 | } |
---|
1033 | |
---|
1034 | MailArchiver.prototype.getMessageHeaders = function(msgId){ |
---|
1035 | var msgfound = false; |
---|
1036 | var headerMsg; |
---|
1037 | |
---|
1038 | //Get message header info, from message list operation previously invoked |
---|
1039 | for (var w=0; w < expresso_mail_archive.messageslisted.length; w++){ |
---|
1040 | //window.alert('comparando messageslisted "' +expresso_mail_archive.messageslisted[w]["msg_number"]+ '" com o id parametrizado "' +msgId+ '"'); |
---|
1041 | if(expresso_mail_archive.messageslisted[w]["msg_number"] == msgId){ |
---|
1042 | headerMsg = expresso_mail_archive.messageslisted[w]; |
---|
1043 | msgfound = true; |
---|
1044 | break; |
---|
1045 | } |
---|
1046 | } |
---|
1047 | //Message does not exists at message list. it will not be loaded. |
---|
1048 | if(!msgfound){ |
---|
1049 | alert('ops... the message"'+msgId+'" was not found at messages list, so it cannot be readed!') |
---|
1050 | headerMsg = null; |
---|
1051 | return; |
---|
1052 | } |
---|
1053 | //window.alert('getMessageHeaders\n\n' + print_r(headerMsg)); |
---|
1054 | return(headerMsg); |
---|
1055 | } |
---|
1056 | |
---|
1057 | MailArchiver.prototype.getMessage = function(msgdata){ |
---|
1058 | try{ |
---|
1059 | if((msgdata.length <= 0) || (msgdata == null)){ |
---|
1060 | window.alert('no msgdata received. aborting local message load') |
---|
1061 | return; |
---|
1062 | } |
---|
1063 | |
---|
1064 | expresso_mail_archive.currentmessage = expresso_mail_archive.getMessageHeaders(msgdata)["msg_number"]; |
---|
1065 | //window.alert('current message guid = ' + expresso_mail_archive.currentmessage); |
---|
1066 | |
---|
1067 | //window.alert('vai invocar getMessageBody com msgid=' + expresso_mail_archive.currentmessage); |
---|
1068 | ArchiveServices.getMessageBody(expresso_mail_archive.getMessageOperationOK, expresso_mail_archive.getMessageOperationFailure, sessid, expresso_mail_archive.currentmessage); |
---|
1069 | } |
---|
1070 | catch(e){ |
---|
1071 | window.alert('Ops...getMessage fails at:\n' + e); |
---|
1072 | } |
---|
1073 | } |
---|
1074 | |
---|
1075 | MailArchiver.prototype.getMessageOperationOK = function(returnService){ |
---|
1076 | if(returnService.getReturn().length <= 0){ |
---|
1077 | window.alert('Oh no: service return data is zero length...'); |
---|
1078 | return; |
---|
1079 | } |
---|
1080 | |
---|
1081 | //window.alert('Get header info from message "' + expresso_mail_archive.currentmessage + '"'); |
---|
1082 | |
---|
1083 | |
---|
1084 | var msgBody = returnService.getReturn(); |
---|
1085 | //window.alert('getMessageOperationOK headers get..'); |
---|
1086 | var msgHeaders = expresso_mail_archive.getMessageHeaders(expresso_mail_archive.currentmessage); |
---|
1087 | //var expSerializedMessage = expresso_mail_archive.toExpressoMessage(msgHeaders, msgBody); |
---|
1088 | var expSerializedMessage = expresso_mail_archive.pattern.toExpressoMail(msgHeaders, msgBody); |
---|
1089 | //window.alert('Serialized data\n\n' + print_r(expSerializedMessage)); |
---|
1090 | show_msg(expSerializedMessage); |
---|
1091 | } |
---|
1092 | |
---|
1093 | MailArchiver.prototype.getMessageOperationFailure = function(ServiceFault){ |
---|
1094 | window.alert('Message fails do be loaded.'); |
---|
1095 | } |
---|
1096 | |
---|
1097 | |
---|
1098 | MailArchiver.prototype.getMessageServiceObject = function(msgid){ |
---|
1099 | for(var i=0; i < expresso_mail_archive.ServiceReturnObject.length; i++){ |
---|
1100 | if (expresso_mail_archive.ServiceReturnObject[i].getId() == msgid){ |
---|
1101 | return(expresso_mail_archive.ServiceReturnObject[i]); |
---|
1102 | } |
---|
1103 | } |
---|
1104 | return(null); |
---|
1105 | } |
---|
1106 | |
---|
1107 | MailArchiver.prototype.Query = function(offlow, offup, qdata){ |
---|
1108 | window.alert('Query offlow = ' + offlow + ' - offup= ' + offup); |
---|
1109 | var querystring = this.queryconfig.query(offlow, offup, qdata); |
---|
1110 | this.listMessages(); |
---|
1111 | } |
---|
1112 | |
---|
1113 | /* |
---|
1114 | *The all pourpose JavaScript variable, used by all related functionalityes at |
---|
1115 | *Expresso Mail to handle this object at user gui. |
---|
1116 | */ |
---|
1117 | |
---|
1118 | var expresso_mail_archive; |
---|
1119 | expresso_mail_archive = new MailArchiver(); |
---|
1120 | --> |
---|