Changeset 1121
- Timestamp:
- 07/14/09 16:24:34 (15 years ago)
- Location:
- trunk
- Files:
-
- 25 added
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/inc/hook_preferences.inc.php
r1040 r1121 12 12 $title = $appname; 13 13 $file = array( 14 'Preferences' => $GLOBALS['phpgw']->link('/preferences/preferences.php','appname='.$appname) 14 'Preferences' => $GLOBALS['phpgw']->link('/preferences/preferences.php','appname='.$appname), 15 'Expresso Offline' => $GLOBALS['phpgw']->link('/expressoMail1_2/offline_preferences.php') 15 16 ); 16 17 //Do not modify below this line -
trunk/expressoMail1_2/inc/load_lang.php
r1059 r1121 1 1 <?php 2 3 2 // Load the lang of the module. 3 if(isset($offline_language)) { //Expresso offline, quando o gears sincroniza com uma nova versão, não é dado acesso as sessões do usuário, e é preciso o nome do arquivo de linguagens na session abaixo. 4 $_SESSION['phpgw_info']['expressomail']['user']['preferences']['common']['lang'] = $offline_language; 5 } 6 4 7 if(!$_SESSION['phpgw_info']['expressomail']['lang']) 5 8 { -
trunk/expressoMail1_2/index.php
r1057 r1121 15 15 echo '<link rel="stylesheet" type="text/css" href="../phpgwapi/js/dftree/dftree.css">'; 16 16 echo "<script type='text/javascript'>var template = '".$_SESSION['phpgw_info']['expressoMail1_2']['user']['preferences']['common']['template_set']."';</script>"; 17 echo "<script src='js/modal/modal.js'></script>"; 17 18 echo "<script src='js/globals.js?".$update_version."' type='text/javascript'></script>"; 18 19 echo "<script src='js/sniff_browser.js?".$update_version."' type='text/javascript'></script>"; … … 146 147 // End Set Imap Folder names options 147 148 //User info 148 echo "<script language='javascript'> var account_id = ".$GLOBALS['phpgw_info']['user']['account_id']."; </script>";149 echo "<script language='javascript'> var account_id = ".$GLOBALS['phpgw_info']['user']['account_id'].";var expresso_offline = false;</script>"; 149 150 150 151 $obj = createobject("expressoMail1_2.functions"); … … 177 178 // Get Preferences or redirect to preferences page. 178 179 $GLOBALS['phpgw']->preferences->read_repository(); 180 //print_r($_SESSION['phpgw_info']['user']['preferences']['expressoMail']); 179 181 ?> 180 182 -
trunk/expressoMail1_2/js/TreeS.js
r1000 r1121 69 69 tree.appendChild(jo); 70 70 71 ttree.make_tree(folders,"div_tree","folders_tree","ttree.get_folder(\"root\")","","root",false); 71 if(!expresso_offline) 72 ttree.make_tree(folders,"div_tree","folders_tree","ttree.get_folder(\"root\")","","root",false); 73 else 74 ttree.make_tree(folders,"div_tree","folders_tree","ttree.get_folder(\"local_root\")","","local_root",false); 72 75 _this.showWindow(tree); 73 76 … … 129 132 130 133 folders_tree = new dFTree({name: name_tree}); 131 if(click_root != ""){ 132 var n_root = new dNode({id:'root', caption:get_lang("My Folders"), onClick:click_root}); 133 }else{ 134 var n_root = new dNode({id:'root', caption:get_lang("My Folders")}); 135 } 136 folders_tree.add(n_root,'root'); //Places the root; second argument can be anything. 137 138 if(data.length == 0){ 139 alert("sem dados"); 140 return false; 141 } 142 143 for (var i=0; i<data.length; i++){ 144 if(menu_folder){ 145 if (data[i].folder_unseen > 0) 146 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}); 147 else 148 var nn = new dNode({id:data[i].folder_id, caption:lang_folder(data[i].folder_name), onClick:"change_folder('"+data[i].folder_id+"','"+data[i].folder_name+"')", plusSign:data[i].folder_hasChildren}); 134 if (!expresso_offline) { 135 if(click_root != ""){ 136 var n_root = new dNode({id:'root', caption:get_lang("My Folders"), onClick:click_root}); 149 137 }else{ 150 var nn = new dNode({id:data[i].folder_id, caption:lang_folder(data[i].folder_name), plusSign:data[i].folder_hasChildren}); 151 } 152 153 if (data[i].folder_parent == '') 154 data[i].folder_parent = 'root'; 155 else if (data[i].folder_parent == 'user'){ 156 if (!tree_folders.getNodeById('user')){ 157 var n_root_shared_folders = new dNode({id:'user', caption:get_lang("Shared Folders"), plusSign:true}); 158 folders_tree.add(n_root_shared_folders,'root'); 138 var n_root = new dNode({id:'root', caption:get_lang("My Folders")}); 139 } 140 folders_tree.add(n_root,'root'); //Places the root; second argument can be anything. 141 142 if(data.length == 0){ 143 alert("sem dados"); 144 return false; 145 } 146 147 for (var i=0; i<data.length; i++){ 148 if(menu_folder){ 149 if (data[i].folder_unseen > 0) 150 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}); 151 else 152 var nn = new dNode({id:data[i].folder_id, caption:lang_folder(data[i].folder_name), onClick:"change_folder('"+data[i].folder_id+"','"+data[i].folder_name+"')", plusSign:data[i].folder_hasChildren}); 153 }else{ 154 var nn = new dNode({id:data[i].folder_id, caption:lang_folder(data[i].folder_name), plusSign:data[i].folder_hasChildren}); 159 155 } 160 } 161 folders_tree.add(nn,data[i].folder_parent); 156 157 if (data[i].folder_parent == '') 158 data[i].folder_parent = 'root'; 159 else if (data[i].folder_parent == 'user'){ 160 if (!tree_folders.getNodeById('user')){ 161 var n_root_shared_folders = new dNode({id:'user', caption:get_lang("Shared Folders"), plusSign:true}); 162 folders_tree.add(n_root_shared_folders,'root'); 163 } 164 } 165 folders_tree.add(nn,data[i].folder_parent); 166 } 162 167 } 163 168 //Pastas locais … … 189 194 } 190 195 folders_tree.draw(Element(destination)); 191 n_root.changeState(); 196 if(!expresso_offline) 197 n_root.changeState(); 198 else 199 n_root_local.changeState(); 192 200 if(opentomb != ""){folders_tree.openTo(opentomb);} 193 201 if(selected != "" && folders_tree.getNodeById(selected)){folders_tree.getNodeById(selected)._select();} -
trunk/expressoMail1_2/js/TreeShow.js
r689 r1121 29 29 tree_folders.getNodeById(get_current_folder())._select(); 30 30 } 31 cExecute ("$this.imap_functions.get_folders_list&folder="+current_folder, handler_update_folders); 31 if(!expresso_offline) 32 cExecute ("$this.imap_functions.get_folders_list&folder="+current_folder, handler_update_folders); 33 else 34 handler_update_folders(''); 32 35 } 33 36 -
trunk/expressoMail1_2/js/common_functions.js
r1005 r1121 1 1 // BEGIN: FUNCTION RESIZE WINDOW 2 var _showBar = showBar; 3 var _hideBar = hideBar; 2 if (!expresso_offline) { 3 var _showBar = showBar; 4 var _hideBar = hideBar; 5 } 4 6 5 7 function __showBar(){ … … 236 238 237 239 238 if (!is_ie) { 239 var inputFile = document.createElement("INPUT"); 240 if (!expresso_offline) { 241 if (!is_ie) { 242 var inputFile = document.createElement("INPUT"); 243 244 var tmp_id_border = document.createAttribute('id_border'); 245 tmp_id_border.value = id_border; 246 247 inputFile.setAttributeNode(tmp_id_border); 248 inputFile.id = "inputFile_" + id_border + "_" + countDivFiles; 249 inputFile.type = 'file'; 250 inputFile.size = 50; 251 inputFile.maxLength = 255; 252 inputFile.name = 'file_' + countDivFiles; 253 inputFile.style.display = "none"; 254 } 255 else { 256 var inputFile = document.createElement("link"); 257 258 var tmp_id_border = document.createAttribute('id_border'); 259 tmp_id_border.value = id_border; 260 261 inputFile.setAttributeNode(tmp_id_border); 262 inputFile.id = "inputFile_" + id_border + "_" + countDivFiles; 263 inputFile.name = 'file_' + countDivFiles; 264 265 266 } 240 267 241 var tmp_id_border = document.createAttribute('id_border');242 tmp_id_border.value = id_border;243 244 inputFile.setAttributeNode(tmp_id_border);245 inputFile.id = "inputFile_" + id_border + "_" + countDivFiles;246 inputFile.type = 'file';247 inputFile.size = 50;248 inputFile.maxLength = 255;249 inputFile.name = 'file_' + countDivFiles;250 inputFile.style.display = "none";251 divFile.appendChild(inputFile);252 268 } 253 269 else { 254 var inputFile = document.createElement("link"); 255 256 var tmp_id_border = document.createAttribute('id_border'); 257 tmp_id_border.value = id_border; 258 259 inputFile.setAttributeNode(tmp_id_border); 260 inputFile.id = "inputFile_" + id_border + "_" + countDivFiles; 261 inputFile.name = 'file_' + countDivFiles; 262 263 264 divFile.appendChild(inputFile); 265 } 270 var inputFile = document.createElement("input"); 271 inputFile.type = 'hidden'; 272 inputFile.name = 'offline_forward_' + countDivFiles; 273 } 274 divFile.appendChild(inputFile); 266 275 267 276 var a_tmp = new Array(); … … 288 297 divFiles.appendChild(divFile); 289 298 290 divFile.id = "divFile_"+id_border+"_"+countDivFiles;291 divFiles.appendChild(divFile);292 299 checkbox.checked = true; //IncrÃvel, mas no Internet Explorer o checked só funciona efetivamente se o elemente já estiver renderizado... por isso só aqui eu seleciono ele... 293 300 return inputFile; … … 308 315 divFile = document.createElement('DIV'); 309 316 310 var inputFile = document.createElement("INPUT"); 311 312 var tmp_id_border = document.createAttribute('id_border'); 313 tmp_id_border.value = id_border; 314 315 inputFile.setAttributeNode(tmp_id_border); 316 inputFile.id = "inputFile_"+id_border+"_"+countDivFiles; 317 inputFile.onchange = function () {validateFileExtension(this.value, this.id.replace("input","div"), this.getAttribute('id_border'));}; 318 inputFile.type = 'file'; 319 inputFile.size = 50; 320 inputFile.maxLength = 255; 321 inputFile.name='file_'+countDivFiles; 322 323 divFile.appendChild(inputFile); 317 318 divFile.innerHTML = "<input type='file' id_border='"+id_border+"' size='50' maxLength='255' onchange=\"function () {validateFileExtension(this.value, this.id.replace('input','div'), this.getAttribute('id_border'));};\" id='"+"inputFile_"+id_border+"_"+countDivFiles+"' name='file_"+countDivFiles+"'>"; 319 324 320 325 321 var linkFile = document.createElement("A"); … … 333 329 divFiles.appendChild(divFile); 334 330 335 return inputFile; 331 332 333 return document.getElementById("inputFile_"+id_border+"_"+countDivFiles); 336 334 } 337 335 // Remove Input File Dynamically. … … 472 470 var quickSearchKeyBegin; 473 471 var quickSearchKeyEnd; 474 472 if(expresso_offline) { 473 alert(get_lang('Not allowed in offline mode')); 474 return; 475 } 476 475 477 var handler_emQuickSearch = function(data) 476 478 { … … 703 705 } 704 706 var display_unseen_in_mailbox = Element('dftree_root_unseen'); 705 tree_folders.getNodeById( 'root' ).alter({caption:'<font style=color:red>[</font><span id="dftree_root_unseen" style="color:red">1</span><font style=color:red>]</font>' + get_lang("My Folders")}); 706 tree_folders.getNodeById( 'root' )._refresh(); 707 if(!expresso_offline) 708 var node_to_refresh = 'root'; 709 else 710 var node_to_refresh = 'local_root'; 711 tree_folders.getNodeById( node_to_refresh ).alter({caption:'<font style=color:red>[</font><span id="dftree_root_unseen" style="color:red">1</span><font style=color:red>]</font>' + get_lang("My Folders")}); 712 tree_folders.getNodeById( node_to_refresh )._refresh(); 707 713 } 708 714 function decrement_folder_unseen(){ … … 758 764 // tree_folders.getNodeById( 'root' ).alter({caption:'<font style=color:red>[</font><span id="dftree_root_unseen" style="color:red">' + unseen_in_mailbox + '</span><font style=color:red>]</font>' + get_lang("My Folders")}); 759 765 //else 760 tree_folders.getNodeById( 'root' ).alter({caption:get_lang("My Folders")}); 761 tree_folders.getNodeById( 'root' )._refresh(); 766 if(!expresso_offline) 767 var node_to_refresh = 'root'; 768 else 769 var node_to_refresh = 'local_root'; 770 tree_folders.getNodeById( node_to_refresh ).alter({caption:get_lang("My Folders")}); 771 tree_folders.getNodeById( node_to_refresh )._refresh(); 762 772 } 763 773 } -
trunk/expressoMail1_2/js/doiMenuData.js
r1000 r1121 8 8 var _option1 = preferences.hide_folders == "1" ? false : true; 9 9 10 var itens = new Array ( 11 "preferences_mail()|"+get_lang("Preferences")+"|preferences.png", 12 "search_emails(\"\")|"+get_lang("Search")+"|search.png", 13 "filterbox()|"+get_lang("Edit filters")+"|filters.png", 14 "folderbox()|"+get_lang("Edit folders")+"|editfolders.png", 15 "sharebox()|"+get_lang("Share mailbox")+"|usersfolders.png", 16 "empty_trash_imap()|"+get_lang("Empty trash")+"|trash.png" 17 ); 10 if (!expresso_offline) { 11 var itens = new Array("preferences_mail()|" + get_lang("Preferences") + "|preferences.png", 12 "search_emails(\"\")|" + get_lang("Search") + "|search.png", 13 "filterbox()|" + get_lang("Edit filters") + "|filters.png", 14 "folderbox()|" + get_lang("Edit folders") + "|editfolders.png", 15 "sharebox()|" + get_lang("Share mailbox") + "|usersfolders.png", 16 "empty_trash_imap()|" + get_lang("Empty trash") + "|trash.png"); 17 if(window.google && google.gears) { 18 if(expresso_local_messages.is_offline_installed()) { 19 itens.push("force_check_queue()|" + get_lang("Send from queue") + "|queue.jpg"); 20 } 21 } 22 } 23 else { 24 var itens = new Array("search_emails(\"\")|" + get_lang("Search") + "|search.png", 25 "folderbox()|" + get_lang("Edit folders") + "|editfolders.png"); 26 } 18 27 19 28 var _link = Element('link_tools'); -
trunk/expressoMail1_2/js/draw_api.js
r1108 r1121 22 22 // Check if the tree folders alredy exist. 23 23 if (Element('dftree_tree_folders')){ 24 var update_tree_folders = function(data){ 25 build_quota(data); 26 var unseen_in_mailbox = 0; 27 var unseen_in_shared_folders = 0; 28 for (var i=0; i<data.length; i++){ 29 if ( data[i].folder_unseen > 0 ) 24 if (!expresso_offline) { 25 var update_tree_folders = function(data){ 26 build_quota(data); 27 var unseen_in_mailbox = 0; 28 var unseen_in_shared_folders = 0; 29 for (var i=0; i<data.length; i++){ 30 if ( data[i].folder_unseen > 0 ) 31 { 32 unseen_in_mailbox = parseInt( unseen_in_mailbox + data[ i ].folder_unseen ); 33 if ( data[i].folder_id.indexOf( 'INBOX' ) !== 0 ) 34 unseen_in_shared_folders = parseInt( unseen_in_shared_folders + data[ i ].folder_unseen ); 35 } 36 37 var folder_unseen = Element('dftree_'+data[i].folder_id+'_unseen'); 38 39 if ((folder_unseen) && (data[i].folder_unseen > 0)) 40 { 41 folder_unseen.innerHTML = data[i].folder_unseen; 42 } 43 else if (data[i].folder_unseen > 0) 44 { 45 tree_folders.getNodeById(data[i].folder_id).alter({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>'}); 46 tree_folders.getNodeById(data[i].folder_id)._refresh(); 47 } 48 else if (data[i].folder_unseen <= 0) 49 { 50 tree_folders.getNodeById(data[i].folder_id).alter({caption:lang_folder(data[i].folder_name)}); 51 tree_folders.getNodeById(data[i].folder_id)._refresh(); 52 } 53 54 if(data[i].folder_id == current_folder){ 55 var old_new_m = isNaN(parseInt(Element('new_m').innerHTML)) ? parseInt(Element('new_m').firstChild.innerHTML) : parseInt(Element('new_m').innerHTML); 56 // if(!isNaN(old_new_m) && old_new_m < data[i].folder_unseen){ 57 // Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) + (parseInt(data[i].folder_unseen)-old_new_m); 58 // } 59 Element('new_m').innerHTML = data[i].folder_unseen ? '<font color="RED">'+data[i].folder_unseen+'</font>' : 0; 60 draw_paging(Element('tot_m').innerHTML); 61 } 62 } 63 64 var display_unseen_in_mailbox = tree_folders.getNodeById( 'root' ); 65 //if ( unseen_in_mailbox ) 66 // display_unseen_in_mailbox.alter({caption:'<font style=color:red>[</font><span id="dftree_root_unseen" style="color:red">' + unseen_in_mailbox +'</span><font style=color:red>]</font> ' + get_lang("My Folders")}); 67 //else 68 display_unseen_in_mailbox.alter({caption:get_lang("My Folders")}); 69 display_unseen_in_mailbox._refresh(); 70 71 var display_unseen_in_shared_folders = tree_folders.getNodeById( 'user' ); 72 if ( display_unseen_in_shared_folders ) 30 73 { 31 unseen_in_mailbox = parseInt( unseen_in_mailbox + data[ i ].folder_unseen ); 32 if ( data[i].folder_id.indexOf( 'INBOX' ) !== 0 ) 33 unseen_in_shared_folders = parseInt( unseen_in_shared_folders + data[ i ].folder_unseen ); 74 if ( unseen_in_shared_folders ) 75 display_unseen_in_shared_folders.alter({caption:'<font style=color:red>[</font><span id="dftree_user_unseen" style="color:red">' + unseen_in_shared_folders +'</span><font style=color:red>]</font> ' + get_lang("Shared folders")}); 76 else 77 display_unseen_in_shared_folders.alter({caption:get_lang("Shared folders")}); 78 display_unseen_in_shared_folders._refresh(); 34 79 } 35 36 var folder_unseen = Element('dftree_'+data[i].folder_id+'_unseen'); 37 38 if ((folder_unseen) && (data[i].folder_unseen > 0)) 39 { 40 folder_unseen.innerHTML = data[i].folder_unseen; 41 } 42 else if (data[i].folder_unseen > 0) 43 { 44 tree_folders.getNodeById(data[i].folder_id).alter({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>'}); 45 tree_folders.getNodeById(data[i].folder_id)._refresh(); 46 } 47 else if (data[i].folder_unseen <= 0) 48 { 49 tree_folders.getNodeById(data[i].folder_id).alter({caption:lang_folder(data[i].folder_name)}); 50 tree_folders.getNodeById(data[i].folder_id)._refresh(); 51 } 52 53 if(data[i].folder_id == current_folder){ 54 var old_new_m = isNaN(parseInt(Element('new_m').innerHTML)) ? parseInt(Element('new_m').firstChild.innerHTML) : parseInt(Element('new_m').innerHTML); 55 // if(!isNaN(old_new_m) && old_new_m < data[i].folder_unseen){ 56 // Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) + (parseInt(data[i].folder_unseen)-old_new_m); 57 // } 58 Element('new_m').innerHTML = data[i].folder_unseen ? '<font color="RED">'+data[i].folder_unseen+'</font>' : 0; 59 draw_paging(Element('tot_m').innerHTML); 60 } 61 } 62 63 var display_unseen_in_mailbox = tree_folders.getNodeById( 'root' ); 64 //if ( unseen_in_mailbox ) 65 // display_unseen_in_mailbox.alter({caption:'<font style=color:red>[</font><span id="dftree_root_unseen" style="color:red">' + unseen_in_mailbox +'</span><font style=color:red>]</font> ' + get_lang("My Folders")}); 66 //else 67 display_unseen_in_mailbox.alter({caption:get_lang("My Folders")}); 68 display_unseen_in_mailbox._refresh(); 69 70 var display_unseen_in_shared_folders = tree_folders.getNodeById( 'user' ); 71 if ( display_unseen_in_shared_folders ) 72 { 73 if ( unseen_in_shared_folders ) 74 display_unseen_in_shared_folders.alter({caption:'<font style=color:red>[</font><span id="dftree_user_unseen" style="color:red">' + unseen_in_shared_folders +'</span><font style=color:red>]</font> ' + get_lang("Shared folders")}); 75 else 76 display_unseen_in_shared_folders.alter({caption:get_lang("Shared folders")}); 77 display_unseen_in_shared_folders._refresh(); 78 } 79 } 80 cExecute ("$this.imap_functions.get_folders_list&folder="+current_folder, update_tree_folders); 81 80 } 81 cExecute ("$this.imap_functions.get_folders_list&folder="+current_folder, update_tree_folders); 82 } 82 83 83 84 /** 84 85 * Pastas locais 85 86 */ 86 if(preferences.use_local_messages==1 ) {87 if(preferences.use_local_messages==1 || expresso_offline) { 87 88 var local_folders = expresso_local_messages.list_local_folders(); 88 89 var has_changes = false; … … 126 127 } 127 128 else{ 128 tree_folders = new dFTree({name: 'tree_folders'}); 129 130 var n_root = new dNode({id:'root', caption: get_lang("My Folders")}); 131 tree_folders.add(n_root,'anything'); //Places the root; second argument can be anything. 132 133 var unseen_in_mailbox = 0; 134 var unseen_in_shared_folders = 0; 135 for (var i=0; i<folders.length; i++){ 136 if (folders[i].folder_unseen > 0) 137 { 138 unseen_in_mailbox = parseInt( unseen_in_mailbox + folders[ i ].folder_unseen ); 139 if ( folders[i].folder_id.indexOf( 'INBOX' ) !== 0 ) 140 unseen_in_shared_folders = parseInt( unseen_in_shared_folders + folders[ i ].folder_unseen ); 141 142 var nn = new dNode({id:folders[i].folder_id, caption:lang_folder(folders[i].folder_name) + '<font style=color:red> (</font><span id="dftree_'+folders[i].folder_id+'_unseen" style=color:red>'+folders[i].folder_unseen+'</span><font style=color:red>)</font>', onClick:"change_folder('"+folders[i].folder_id+"','"+folders[i].folder_name+"')", plusSign:folders[i].folder_hasChildren}); 129 if (!expresso_offline) { 130 tree_folders = new dFTree({name: 'tree_folders'}); 131 132 var n_root = new dNode({id:'root', caption: get_lang("My Folders")}); 133 tree_folders.add(n_root,'anything'); //Places the root; second argument can be anything. 134 135 var unseen_in_mailbox = 0; 136 var unseen_in_shared_folders = 0; 137 for (var i=0; i<folders.length; i++){ 138 if (folders[i].folder_unseen > 0) 139 { 140 unseen_in_mailbox = parseInt( unseen_in_mailbox + folders[ i ].folder_unseen ); 141 if ( folders[i].folder_id.indexOf( 'INBOX' ) !== 0 ) 142 unseen_in_shared_folders = parseInt( unseen_in_shared_folders + folders[ i ].folder_unseen ); 143 144 var nn = new dNode({id:folders[i].folder_id, caption:lang_folder(folders[i].folder_name) + '<font style=color:red> (</font><span id="dftree_'+folders[i].folder_id+'_unseen" style=color:red>'+folders[i].folder_unseen+'</span><font style=color:red>)</font>', onClick:"change_folder('"+folders[i].folder_id+"','"+folders[i].folder_name+"')", plusSign:folders[i].folder_hasChildren}); 143 145 144 if( folders[i].folder_name.toLowerCase() == 'inbox' ) 145 Element('new_m').innerHTML = '<font style="color:red">' + folders[i].folder_unseen + '</font>'; 146 } 147 else 148 var nn = new dNode({id:folders[i].folder_id, caption:lang_folder(folders[i].folder_name), onClick:"change_folder('"+folders[i].folder_id+"','"+folders[i].folder_name+"')", plusSign:folders[i].folder_hasChildren}); 149 150 if (folders[i].folder_parent == '') 151 folders[i].folder_parent = 'root'; 152 else if (folders[i].folder_parent == 'user'){ 153 if (!tree_folders.getNodeById('user')){ 154 var n_root_shared_folders = new dNode({id:'user', caption:get_lang("Shared folders"), plusSign:true}); 155 tree_folders.add(n_root_shared_folders,'root'); 146 if( folders[i].folder_name.toLowerCase() == 'inbox' ) 147 Element('new_m').innerHTML = '<font style="color:red">' + folders[i].folder_unseen + '</font>'; 156 148 } 157 } 158 tree_folders.add(nn,folders[i].folder_parent); 149 else 150 var nn = new dNode({id:folders[i].folder_id, caption:lang_folder(folders[i].folder_name), onClick:"change_folder('"+folders[i].folder_id+"','"+folders[i].folder_name+"')", plusSign:folders[i].folder_hasChildren}); 151 152 if (folders[i].folder_parent == '') 153 folders[i].folder_parent = 'root'; 154 else if (folders[i].folder_parent == 'user'){ 155 if (!tree_folders.getNodeById('user')){ 156 var n_root_shared_folders = new dNode({id:'user', caption:get_lang("Shared folders"), plusSign:true}); 157 tree_folders.add(n_root_shared_folders,'root'); 158 } 159 } 160 tree_folders.add(nn,folders[i].folder_parent); 161 } 159 162 } 160 163 //tree_local_folders = new dFTree({name: 'tree_local_folders'}); … … 162 165 * Pastas locais 163 166 */ 164 if (preferences.use_local_messages==1 ) {167 if (preferences.use_local_messages==1 || expresso_offline) { 165 168 if (!window.google || !google.gears) { 166 169 temp = confirm(get_lang("To use local messages you have to install google gears. Would you like to be redirected to gears installation page?")); … … 174 177 } 175 178 else{ 179 if (expresso_offline) 180 tree_folders = new dFTree({name: 'tree_folders'}); 176 181 var root_local = new dNode({ 177 182 id: "local_root", … … 201 206 202 207 tree_folders.draw(Element('content_folders')); 203 n_root.changeState(); 208 if (!expresso_offline) { 209 n_root.changeState(); 210 tree_folders.getNodeById('INBOX')._select(); 211 } 212 else { 213 root_local.changeState(); 214 tree_folders.getNodeById('local_Inbox')._select(); 215 } 204 216 205 217 var trash_span=document.getElementById('lINBOX/'+trashfolder+'tree_folders'); … … 220 232 spam_span.style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_spam.png)"; 221 233 222 tree_folders.getNodeById('INBOX')._select(); 234 223 235 draw_paging(Element('tot_m').innerHTML); 224 236 // Draw right menu folders. … … 229 241 */ 230 242 231 var display_unseen_in_mailbox = tree_folders.getNodeById( 'root' ); 243 if(!expresso_offline) 244 var display_unseen_in_mailbox = tree_folders.getNodeById( 'root' ); 245 else 246 var display_unseen_in_mailbox = tree_folders.getNodeById( 'local_root' ); 232 247 //if ( unseen_in_mailbox ) 233 248 // display_unseen_in_mailbox.alter({caption:'<font style=color:red>[</font><span id="dftree_root_unseen" style="color:red">' + unseen_in_mailbox +'</span><font style=color:red>]</font> ' + get_lang("My Folders")}); … … 247 262 } 248 263 249 var folder_create = ""; 250 var nm1 = ""; 251 if(tree_folders._folderPr.length > 0){ 252 var nm_folder = ""; 253 for(var i=0; i < tree_folders._folderPr.length; i++){ 254 nm_folder = tree_folders._folderPr[i].split(cyrus_delimiter); 255 if(nm_folder[0] == "INBOX"){ 256 if(nm1 == ""){ 257 nm1 = nm_folder[1]; 258 folder_create = "INBOX" + cyrus_delimiter + nm_folder[1] + ";"; 259 }else{ 260 if( nm1 != nm_folder[1]){ 261 folder_create += "INBOX" + cyrus_delimiter + nm_folder[1] + ";"; 264 if (!expresso_offline) { 265 var folder_create = ""; 266 var nm1 = ""; 267 if(tree_folders._folderPr.length > 0){ 268 var nm_folder = ""; 269 for(var i=0; i < tree_folders._folderPr.length; i++){ 270 nm_folder = tree_folders._folderPr[i].split(cyrus_delimiter); 271 if(nm_folder[0] == "INBOX"){ 272 if(nm1 == ""){ 262 273 nm1 = nm_folder[1]; 274 folder_create = "INBOX" + cyrus_delimiter + nm_folder[1] + ";"; 275 }else{ 276 if( nm1 != nm_folder[1]){ 277 folder_create += "INBOX" + cyrus_delimiter + nm_folder[1] + ";"; 278 nm1 = nm_folder[1]; 279 } 263 280 } 264 281 } 265 282 } 266 283 } 267 }268 if(folder_create != ""){269 if(confirm(get_lang("There are folders with invalid format. Do you want to fix them?"))){270 var handler_correct_folders = function(data){271 //Timeout to release HTTPRequest , loadScript and update tree folders.272 if(data)273 setTimeout("connector.loadScript('TreeShow');ttreeBox.update_folder();",500);274 }275 cExecute("$this.imap_functions.create_extra_mailbox",handler_correct_folders,"nw_folders="+folder_create);284 if(folder_create != ""){ 285 if(confirm(get_lang("There are folders with invalid format. Do you want to fix them?"))){ 286 var handler_correct_folders = function(data){ 287 //Timeout to release HTTPRequest , loadScript and update tree folders. 288 if(data) 289 setTimeout("connector.loadScript('TreeShow');ttreeBox.update_folder();",500); 290 } 291 cExecute("$this.imap_functions.create_extra_mailbox",handler_correct_folders,"nw_folders="+folder_create); 292 } 276 293 } 277 294 } … … 1851 1868 //var option_send = '<span class="message_options" onclick=send_message("'+ID+'","null","null");>'+get_lang("Send")+'</span> | '; 1852 1869 var option_send = '<input type="button" id="send_button_'+ID+'" class="em_button_like_span" tabindex="1" value="'+get_lang("Send")+'" onclick=send_message("'+ID+'","null","null");>' + ' | '; 1853 var option_send_and_file= '<span class="message_options" onclick=wfolders.makeWindow("'+ID+'","send_and_file");>'+get_lang("Send and file")+'</span> | '; 1870 if(!expresso_offline) 1871 var option_send_and_file= '<span class="message_options" onclick=wfolders.makeWindow("'+ID+'","send_and_file");>'+get_lang("Send and file")+'</span> | '; 1872 else 1873 var option_send_and_file=''; 1854 1874 } 1855 1875 else{ … … 1860 1880 } 1861 1881 // var option_save_as = '<span class="message_options" onclick=wfolders.makeWindow("'+ID+'","save");>'+get_lang("Save as")+'</span> | '; 1862 var option_save = '<span id="save_message_options_'+ID+'" class="message_options" onclick="openTab.toPreserve['+ID+'] = true; save_msg('+ID+');">'+get_lang("Save")+'</span> | '; 1863 var option_search = '<span class="message_options" onclick=openListUsers("'+ID+'");>'+get_lang("Search")+'</span>'; 1882 if (!expresso_offline) { 1883 var option_save = '<span id="save_message_options_'+ID+'" class="message_options" onclick="openTab.toPreserve['+ID+'] = true; save_msg('+ID+');">'+get_lang("Save")+'</span> | '; 1884 var option_search = '<span class="message_options" onclick=openListUsers("'+ID+'");>'+get_lang("Search")+'</span>'; 1885 } 1886 else { 1887 var option_save = '<input type="hidden" id="save_message_options_'+ID+'">'; 1888 var option_search = ''; 1889 } 1864 1890 td_menu_new_message.innerHTML = option_send + option_send_and_file + option_save + option_search; 1865 1891 … … 1961 1987 td_to.appendChild(forwarded_local_message); 1962 1988 1963 var img_search = document.createElement("IMG"); 1964 img_search.src = "./templates/"+template+"/images/search.gif"; 1965 img_search.title = get_lang('Search') + " | " + get_lang('Use F9 Key as shortcut.'); 1966 img_search.onclick = function () {emQuickSearch(document.getElementById('to_'+ID).value, 'to', ID);}; 1989 if (!expresso_offline) { 1990 var img_search = document.createElement("IMG"); 1991 img_search.src = "./templates/"+template+"/images/search.gif"; 1992 img_search.title = get_lang('Search') + " | " + get_lang('Use F9 Key as shortcut.'); 1993 img_search.onclick = function () {emQuickSearch(document.getElementById('to_'+ID).value, 'to', ID);}; 1994 } 1995 else { 1996 var img_search = document.createElement("SPAN"); 1997 } 1998 1967 1999 var span_search = document.createElement("SPAN"); 1968 2000 span_search.innerHTML = get_lang('Search'); … … 2336 2368 RichTextEditor.loadEditor(ID); 2337 2369 ////////////////////////////////////////////////////////////////////////////////////////////////////// 2338 draw_from_field(sel_from,tr1_1); 2370 if(!expresso_offline) 2371 draw_from_field(sel_from,tr1_1); 2339 2372 return ID; 2340 2373 } … … 2798 2831 '<span class="message_options_trash"><span ' + change_font_color + ' title="'+get_lang("Delete")+'" class="message_options" onclick=proxy_mensagens.delete_msgs(\'null\',\'selected\',\'null\')>'+get_lang("Delete")+'</span></span>'+ 2799 2832 '<span class="message_options_move"><span ' + change_font_color + ' title="'+get_lang("Move")+'" class="message_options" onclick=wfolders.makeWindow(\"\",\"move_to\")>'+get_lang("Move")+'</span></span>'+ 2800 '<span class="message_options_print"><span ' + change_font_color + ' title="'+get_lang("Print")+'" class="message_options" onclick=print_all()>'+get_lang("Print")+'</span></span>'+ 2833 (expresso_offline)?" ":' | <span class="message_options_print"><span ' + change_font_color + ' title="'+get_lang("Print")+'" class="message_options" onclick=print_all()>'+get_lang("Print")+'</span></span>'+ 2834 // '<span class="message_options_print"><span ' + change_font_color + ' title="'+get_lang("Print")+'" class="message_options" onclick=print_all()>'+get_lang("Print")+'</span></span>'+ 2801 2835 '<span class="message_options_export"><span ' + change_font_color + ' title="'+get_lang("Export")+'" class="message_options" onclick="proxy_mensagens.export_all_messages()">'+get_lang("Export")+'</span></span>' + 2802 2836 '<span class="message_options_import"><span ' + change_font_color + ' title="'+get_lang("Import")+'" class="message_options" onclick="import_window()">'+get_lang("Import")+'</span></span>'; 2803 if(preferences.use_local_messages==1 )2837 if(preferences.use_local_messages==1 && !expresso_offline) 2804 2838 if(proxy_mensagens.is_local_folder(current_folder)) 2805 2839 span_options.innerHTML += ' <span title="'+get_lang("Unarchive")+'" class="message_options" onclick="expresso_local_messages.unarchive_msgs(\''+folder+'\',null)">'+get_lang("Unarchive")+'</span>'; -
trunk/expressoMail1_2/js/globals.js
r1054 r1121 3 3 _bTime = _bTime.getTime(); 4 4 var hold_session = false; 5 var queue_send_errors = false; 5 6 var current_page = 1; 6 7 var current_folder = ''; -
trunk/expressoMail1_2/js/local_messages.js
r1035 r1121 16 16 this.localServer = google.gears.factory.create('beta.localserver'); 17 17 if(this.store==null) 18 this.store = this.localServer.createStore('test-store'); 19 if(this.fileSubmitter == null) 20 this.fileSubmitter = this.store.createFileSubmitter(); 21 18 this.store = this.localServer.createStore('test-store'); 22 19 this.dbGears.open('database-test'); 23 20 this.dbGears.execute('create table if not exists folder (folder text,uid_usuario int,unique(folder,uid_usuario))'); … … 303 300 local_messages.prototype.getInputFileFromAnexo = function (element,url) { 304 301 this.init_local_messages(); 305 this.fileSubmitter.setFileInputElement(element,url); 302 fileSubmitter = this.store.createFileSubmitter(); 303 fileSubmitter.setFileInputElement(element,url); 306 304 this.finalize(); 307 305 } … … 377 375 header = connector.unserialize(rs.field(0)); 378 376 unseen = rs.field(1); 379 if (flag == "unseen") {380 set_msg_as_unread(msgs_to_set[i]);381 header["Unseen"] = "U";382 unseen = 1;383 }384 else385 if (flag == "flagged") {377 switch(flag) { 378 case "unseen": 379 set_msg_as_unread(msgs_to_set[i]); 380 header["Unseen"] = "U"; 381 unseen = 1; 382 break; 383 case "flagged": 386 384 set_msg_as_flagged(msgs_to_set[i]); 387 385 header["Flagged"] = "F"; 388 } 389 else 390 if (flag == "unflagged") 391 if (header["Importance"].indexOf("High") != -1) 392 write_msg(get_lang("At least one of selected message cant be marked as normal")); 393 else { 394 set_msg_as_unflagged(msgs_to_set[i]); 395 header["Flagged"] = "N"; 396 } 397 else 398 if (flag == "seen") { 399 header["Unseen"] = "N"; 400 set_msg_as_read(msgs_to_set[i],true); 401 unseen = 0; 402 } 386 break; 387 case "unflagged": 388 if (header["Importance"].indexOf("High") != -1) 389 write_msg(get_lang("At least one of selected message cant be marked as normal")); 390 else { 391 set_msg_as_unflagged(msgs_to_set[i]); 392 header["Flagged"] = "N"; 393 } 394 break; 395 case "seen": 396 header["Unseen"] = "N"; 397 set_msg_as_read(msgs_to_set[i],true); 398 unseen = 0; 399 break; 400 case "answered": 401 header["Draft"]=""; 402 header["Answered"]="A"; 403 Element("td_message_answered_"+msgs_to_set[i]).innerHTML = '<img src=templates/default/images/answered.gif title=Respondida>'; 404 break; 405 case "forwarded": 406 header["Draft"]="X"; 407 header["Answered"]="A"; 408 Element("td_message_answered_"+msgs_to_set[i]).innerHTML = '<img src=templates/default/images/forwarded.gif title=Encaminhada>'; 409 break; 410 } 411 403 412 rs.close(); 404 413 … … 412 421 this.finalize(); 413 422 423 } 424 425 local_messages.prototype.set_message_flag = function(msg_number,flag) { 426 this.set_messages_flag(msg_number,flag); 414 427 } 415 428 … … 821 834 822 835 836 /****************************************************************** 837 Offline Part 838 ******************************************************************/ 839 840 local_messages.prototype.is_offline_installed = function() { 841 this.init_local_messages(); 842 var check = this.localServer.openManagedStore('expresso-offline'); 843 this.finalize(); 844 if(check==null) 845 return false; 846 else 847 return true; 848 849 } 850 851 local_messages.prototype.update_offline = function(redirect) { 852 this.init_local_messages(); 853 var managedStore = this.localServer.openManagedStore('expresso-offline'); 854 855 if(managedStore!=null){ 856 857 managedStore.oncomplete = function(details){ 858 if(redirect!=null) 859 location.href=redirect; 860 } 861 862 managedStore.checkForUpdate(); 863 } else if(redirect!=null) { 864 location.href=redirect; 865 } 866 this.finalize(); 867 } 868 869 local_messages.prototype.uninstall_offline = function() { 870 if (!window.google || !google.gears) { 871 temp = confirm(document.getElementById('lang_gears_redirect').value); 872 if (temp) { 873 location.href = "http://gears.google.com/?action=install&message="+ 874 "Para utilizar o recurso de mensagens locais, instale o google gears&return=" + document.location.href; 875 } 876 return; 877 878 } 879 this.init_local_messages(); 880 this.localServer.removeManagedStore('expresso-offline'); 881 alert(document.getElementById('lang_offline_uninstalled').value); 882 //this.dbGears.execute('drop table user'); 883 //this.dbGears.execute('drop table queue'); 884 //this.dbGears.execute('drop table attachments_queue'); 885 this.finalize(); 886 } 887 888 local_messages.prototype.install_offline = function(urlOffline,urlIcone,uid_usuario,login,pass,redirect) { 889 if (!window.google || !google.gears) { 890 temp = confirm(document.getElementById('lang_gears_redirect').value); 891 if (temp) { 892 location.href = "http://gears.google.com/?action=install&message="+ 893 "Para utilizar o recurso de mensagens locais, instale o google gears&return=" + document.location.href; 894 } 895 return; 896 897 } 898 899 if(pass.length>0) { 900 only_spaces = true; 901 for(cont=0;cont<pass.length;cont++) { 902 if(pass.charAt(cont)!=" ") 903 only_spaces = false; 904 } 905 if(only_spaces) { 906 alert(document.getElementById('lang_only_spaces_not_allowed').value); 907 return false; 908 } 909 } 910 911 modal('loading'); 912 var desktop = google.gears.factory.create('beta.desktop'); 913 desktop.createShortcut('ExpressoMail Offline', 914 urlOffline, 915 {'32x32': urlIcone}, 916 'ExpressoMail Offline'); 917 918 919 this.init_local_messages(); 920 921 //user with offline needs to have at least the folder Inbox already created. 922 tmp_rs = this.dbGears.execute("select rowid from folder where folder='Inbox' and uid_usuario=?",[uid_usuario]); 923 if(!tmp_rs.isValidRow()) 924 this.dbGears.execute("insert into folder (folder,uid_usuario) values (?,?)",['Inbox',uid_usuario]); 925 926 this.localServer.removeManagedStore('expresso-offline'); 927 928 var managedStore = this.localServer.createManagedStore('expresso-offline'); 929 managedStore.manifestUrl = 'js/manifest'; 930 931 managedStore.onerror = function (error) { 932 alert(error); 933 } 934 935 managedStore.oncomplete = function(details) { 936 if (close_lightbox_div) { 937 close_lightbox(); 938 close_lightbox_div = false; 939 alert(document.getElementById('lang_offline_installed').value); 940 location.href=redirect; 941 } 942 } 943 944 //create structure to user in db 945 this.dbGears.execute('create table if not exists user (uid_usuario int,login text,pass text, logged int,unique(uid_usuario))'); 946 this.dbGears.execute('create table if not exists queue (ffrom text, fto text, cc text, cco text,'+ 947 'subject text, conf_receipt int, important int,body text,sent int,user int)'); 948 this.dbGears.execute('create table if not exists attachments_queue ('+ 949 'id_queue int, url_attach text)'); 950 this.dbGears.execute('create table if not exists sent_problems (' + 951 'id_queue int,message text)'); 952 953 //d = new Date(); 954 955 try { 956 var rs = this.dbGears.execute("select uid_usuario from user where uid_usuario=?",[uid_usuario]); 957 if(!rs.isValidRow()) 958 this.dbGears.execute("insert into user (uid_usuario,login,pass) values (?,?,?)",[uid_usuario,login,pass]); 959 else 960 this.dbGears.execute("update user set pass=? where uid_usuario=?",[pass,uid_usuario]); 961 } catch (error) { 962 this.finalize(); 963 alert(error); 964 return false; 965 } 966 managedStore.checkForUpdate(); 967 968 this.finalize(); 969 } 970 971 /** 972 * Return all users in an array following the structure below. 973 * 974 * key: uid 975 * value: user login 976 */ 977 local_messages.prototype.get_all_users = function() { 978 this.init_local_messages(); 979 var users = new Array(); 980 var rs = this.dbGears.execute("select uid_usuario,login from user"); 981 while(rs.isValidRow()) { 982 users[rs.field(0)] = rs.field(1); 983 rs.next(); 984 } 985 this.finalize(); 986 return users; 987 } 988 989 local_messages.prototype.set_as_logged = function(uid_usuario,pass) { 990 this.init_local_messages(); 991 var rs = this.dbGears.execute("select pass from user where uid_usuario=?",[uid_usuario]); 992 if(!rs.isValidRow() || (pass!=rs.field(0) && pass!=MD5(rs.field(0))) ) { 993 this.finalize(); 994 return false; 995 } 996 d = new Date(); 997 998 this.dbGears.execute("update user set logged=null"); //Logoff in everybody 999 this.dbGears.execute("update user set logged=? where uid_usuario=?",[d.getTime(),uid_usuario]); //Login just in one... 1000 this.finalize(); 1001 return true; 1002 } 1003 1004 local_messages.prototype.unset_as_logged = function() { 1005 this.init_local_messages(); 1006 this.dbGears.execute("update user set logged=null"); //Logoff in everybody 1007 this.finalize(); 1008 } 1009 1010 local_messages.prototype.user_logged = function() { 1011 this.init_local_messages(); 1012 var user_logged = new Array(); 1013 var rs = this.dbGears.execute("select uid_usuario,logged from user where logged is not null"); 1014 if(!rs.isValidRow()) { 1015 this.finalize(); 1016 return null; 1017 } 1018 user_logged[0] = rs.field(0); 1019 user_logged[1] = rs.field(1); 1020 this.finalize(); 1021 return user_logged; 1022 } 1023 1024 local_messages.prototype.send_to_queue = function (form) { 1025 this.init_local_messages(); 1026 var mail_values = new Array(); 1027 1028 for (var i=0;i<form.length;i++) { 1029 if (form.elements[i].name != '') { //I.E made me to do that... 1030 if(form.elements[i].name=='folder' || form.elements[i].name=='msg_id' || form.elements[i].name=='' || form.elements[i].name==null) 1031 continue; 1032 else if (form.elements[i].name == 'input_return_receipt' ) 1033 mail_values['conf_receipt'] = form.elements[i].checked ? 1 : 0; 1034 else if(form.elements[i].name == 'input_important_message') 1035 mail_values['important'] = form.elements[i].checked ? 1 : 0; 1036 else 1037 if (form.elements[i].name == 'body') 1038 mail_values['body'] = form.elements[i].value; 1039 else 1040 if (form.elements[i].name == 'input_from') 1041 mail_values['ffrom'] = form.elements[i].value; 1042 else 1043 if (form.elements[i].name == 'input_to') 1044 mail_values['fto'] = form.elements[i].value; 1045 else 1046 if (form.elements[i].name == 'input_cc') 1047 mail_values['cc'] = form.elements[i].value; 1048 else 1049 if (form.elements[i].name == 'input_cco') 1050 mail_values['cco'] = form.elements[i].value; 1051 else 1052 if (form.elements[i].name == 'input_subject') 1053 mail_values['subject'] = form.elements[i].value; 1054 } 1055 } 1056 //mail_values['fto'] = input_to; 1057 //mail_values['cc'] = input_cc; 1058 //mail_values['cco'] = input_cco; 1059 //mail_values['subject'] = input_subject; 1060 //mail_values['conf_receipt'] = input_return_receipt; 1061 //mail_values['important'] = input_important_message; 1062 1063 try { 1064 this.dbGears.execute("insert into queue (ffrom,fto,cc,cco,subject,conf_receipt,important,body,sent,user) values (?,?,?,?,?,?,?,?,0,?)", [mail_values['ffrom'], mail_values['fto'], mail_values['cc'], mail_values['cco'], mail_values['subject'], mail_values['conf_receipt'], mail_values['important'], mail_values['body'], account_id]); 1065 this.send_attach_to_queue(this.dbGears.lastInsertRowId,form); 1066 }catch(error) { 1067 alert(error); 1068 return get_lang('Error sending a mail to queue. Verify if you have installed ExpressoMail Offline'); 1069 } 1070 this.finalize(); 1071 return true; 1072 } 1073 1074 local_messages.prototype.send_attach_to_queue = function(id_queue,form) { 1075 1076 for(i=0;i<form.elements.length;i++) { 1077 1078 if(form.elements[i].name.indexOf("file_")!=-1) { 1079 var tmp_input = form.elements[i]; 1080 var d = new Date(); 1081 var url_local = 'local_attachs/'+d.getTime(); 1082 this.store.captureFile(tmp_input, url_local); 1083 this.dbGears.execute("insert into attachments_queue (id_queue,url_attach) values (?,?)",[id_queue,url_local]); 1084 } 1085 else if(form.elements[i].name.indexOf("offline_forward_")!=-1){ 1086 //alert(); 1087 this.dbGears.execute("insert into attachments_queue (id_queue,url_attach) values (?,?)",[id_queue,form.elements[i].value]); 1088 } 1089 } 1090 } 1091 1092 1093 local_messages.prototype.get_num_msgs_to_send = function() { 1094 this.init_local_messages(); 1095 1096 var rs = this.dbGears.execute("select count(*) from queue where user=? and sent=0",[account_id]); 1097 var to_return = rs.field(0); 1098 1099 this.finalize(); 1100 return to_return; 1101 } 1102 1103 local_messages.prototype.set_problem_on_sent = function(rowid_message,msg) { 1104 this.init_local_messages(); 1105 this.dbGears.execute("update queue set sent = 2 where rowid=?",[rowid_message]); 1106 this.dbGears.execute("insert into sent_problems (id_queue,message) values (?,?)"[rowid_message,msg]); 1107 this.finalize(); 1108 } 1109 1110 local_messages.prototype.set_as_sent = function(rowid_message) { 1111 this.init_local_messages(); 1112 this.dbGears.execute("update queue set sent = 1 where rowid=?",[rowid_message]); 1113 this.finalize(); 1114 } 1115 1116 local_messages.prototype.get_form_msg_to_send = function() { 1117 this.init_local_messages(); 1118 var rs = this.dbGears.execute('select ffrom,fto,cc,cco,subject,conf_receipt,important,body,rowid from queue where sent=0 and user = ? limit 0,1',[account_id]); 1119 if(!rs.isValidRow()) 1120 return false; 1121 1122 var form = document.createElement('form'); 1123 form.method = 'POST'; 1124 form.name = 'form_queue_'+rs.field(8); 1125 form.style.display = 'none'; 1126 form.onsubmit = function(){return false;} 1127 if(!is_ie) 1128 form.enctype="multipart/form-data"; 1129 else 1130 form.encoding="multipart/form-data"; 1131 1132 var ffrom = document.createElement('TEXTAREA'); 1133 ffrom.name = "input_from"; 1134 ffrom.value = rs.field(0); 1135 form.appendChild(ffrom); 1136 1137 var fto = document.createElement('TEXTAREA'); 1138 fto.name = "input_to"; 1139 fto.value = rs.field(1); 1140 form.appendChild(fto); 1141 1142 var cc = document.createElement('TEXTAREA'); 1143 cc.name = "input_cc"; 1144 cc.value = rs.field(2); 1145 form.appendChild(cc); 1146 1147 var cco = document.createElement('TEXTAREA'); 1148 cco.name = "input_cco"; 1149 cco.value = rs.field(3); 1150 form.appendChild(cco); 1151 1152 var subject = document.createElement('TEXTAREA'); 1153 subject.name = "input_subject"; 1154 subject.value = rs.field(4); 1155 form.appendChild(subject); 1156 1157 var folder = document.createElement('input'); 1158 folder.name='folder'; 1159 folder.value=preferences.save_in_folder; 1160 form.appendChild(folder); 1161 1162 if (rs.field(5) == 1) { 1163 var conf_receipt = document.createElement('input'); 1164 conf_receipt.type='text'; 1165 conf_receipt.name = "input_return_receipt"; 1166 conf_receipt.value = 'on'; 1167 form.appendChild(conf_receipt); 1168 } 1169 1170 if (rs.field(6) == 1) { 1171 var important = document.createElement('input'); 1172 important.type='text'; 1173 important.name = "input_important_message"; 1174 important.value = 'on'; 1175 form.appendChild(important); 1176 } 1177 1178 var body = document.createElement('TEXTAREA'); 1179 body.name = "body"; 1180 body.value = rs.field(7); 1181 form.appendChild(body); 1182 1183 var rowid = document.createElement('input'); 1184 rowid.type = 'hidden'; 1185 rowid.name = 'rowid'; 1186 rowid.value = rs.field(8); 1187 form.appendChild(rowid); 1188 1189 //Mounting the attachs 1190 var divFiles = document.createElement("div"); 1191 divFiles.id = 'divFiles_queue_'+rs.field(8); 1192 1193 form.appendChild(divFiles); 1194 1195 document.getElementById('forms_queue').appendChild(form); 1196 1197 var is_local_forward = false; 1198 try { 1199 1200 var rs_attach = this.dbGears.execute('select url_attach from attachments_queue where id_queue=?', [rs.field(8)]); 1201 while (rs_attach.isValidRow()) { 1202 if(rs_attach.field(0).indexOf('../tmpLclAtt/')==-1) { 1203 tmp_field = addForwardedFile('queue_' + rs.field(8), this.store.getCapturedFileName(rs_attach.field(0)), 'nothing'); 1204 } 1205 else { 1206 var tempNomeArquivo = rs_attach.field(0).split("/"); 1207 var nomeArquivo = tempNomeArquivo[tempNomeArquivo.length-1]; 1208 nomeArquivo = nomeArquivo.substring(0,nomeArquivo.length - 4); //Anexos no gears são todos com extensão .php. tenho que tirar a extensão para ficar o nome real do arquivo. 1209 is_local_forward = true; 1210 tmp_field = addForwardedFile('queue_' + rs.field(8), nomeArquivo, 'nothing'); 1211 } 1212 fileSubmitter = this.store.createFileSubmitter(); 1213 fileSubmitter.setFileInputElement(tmp_field,rs_attach.field(0)); 1214 // alert(form.innerHTML); 1215 // div.appendChild(tmp_field); 1216 rs_attach.next(); 1217 } 1218 1219 if(is_local_forward) { 1220 var is_lcl_fw = document.createElement('input'); 1221 is_lcl_fw.type = 'hidden'; 1222 is_lcl_fw.name = 'is_local_forward'; 1223 is_lcl_fw.value = "1"; 1224 form.appendChild(is_lcl_fw); 1225 } 1226 1227 } 1228 catch(exception) { 1229 alert(exception); 1230 } 1231 1232 this.finalize(); 1233 return form; 1234 } 1235 823 1236 var expresso_local_messages; 824 1237 expresso_local_messages = new local_messages(); -
trunk/expressoMail1_2/js/main.js
r1035 r1121 51 51 cExecute ("$this.functions.get_preferences", save_preferences); 52 52 setTimeout('auto_refresh()', time_refresh); 53 } 54 53 if(window.google && google.gears) 54 if(expresso_local_messages.is_offline_installed()) 55 check_mail_in_queue(); 56 } 57 58 function init_offline(){ 59 if (account_id != null) { 60 if (!is_ie) 61 Element('tableDivAppbox').width = '100%'; 62 else 63 connector.createXMLHTTP(); 64 Element('divStatusBar').innerHTML = '<table height="16px" border=0 width=100% cellspacing=0 cellpadding=2>' + 65 '<tr>' + 66 '<td style="padding-left:17px" width=33% id="content_quota" align=left></td>' + 67 '<td width=33% height=16px align=center nowrap><font face=Verdana, Arial, Helvetica, sans-serif color=#000066 size=2>' + 68 '<b>ExpressoMail Offline</b><font size=1><b> - Versão 1.0</b></font></td>' + 69 '<td width=33% id="div_menu_c3" align=right></td>' + 70 '</tr></table>'; 71 72 ConstructMenuTools(); 73 74 draw_tree_folders(); 75 76 proxy_mensagens.messages_list('local_Inbox', 1, preferences.max_email_per_page, 'SORTARRIVAL', null, 1, function handler(data){ 77 draw_box(data, 'local_Inbox'); 78 }) 79 80 // Get cyrus delimiter 81 cyrus_delimiter = Element('cyrus_delimiter').value; 82 83 //cExecute ("$this.functions.get_preferences", save_preferences); 84 } 85 } 55 86 /** 56 87 * Carrega a applet java no objeto search_div … … 406 437 407 438 string_msgs_in_main = tmp.substring(0,(tmp.length-1)); 408 cExecute ("$this.imap_functions.refresh&folder="+current_folder+"&msgs_existent="+string_msgs_in_main+"&msg_range_begin="+msg_range_begin+"&msg_range_end="+msg_range_end+"&sort_box_type="+sort_box_type+"&search_box_type="+search_box_type+"&sort_box_reverse="+sort_box_reverse, handler_refresh); 439 if(!expresso_offline) 440 cExecute ("$this.imap_functions.refresh&folder="+current_folder+"&msgs_existent="+string_msgs_in_main+"&msg_range_begin="+msg_range_begin+"&msg_range_end="+msg_range_end+"&sort_box_type="+sort_box_type+"&search_box_type="+search_box_type+"&sort_box_reverse="+sort_box_reverse, handler_refresh); 409 441 } 410 442 … … 1105 1137 nomeArquivo = nomeArquivo.substring(0,nomeArquivo.length - 4); //Anexos no gears são todos com extensão .php. tenho que tirar a extensão para ficar o nome real do arquivo. 1106 1138 campo_arquivo = addForwardedFile(new_border_ID,nomeArquivo,link_attachment.href); 1139 if(!expresso_offline) 1140 expresso_local_messages.getInputFileFromAnexo(campo_arquivo, tmp); 1141 else //To offline, you just set the url on value of a hidden input. 1142 campo_arquivo.value = tmp; 1107 1143 1108 expresso_local_messages.getInputFileFromAnexo(campo_arquivo, tmp);1109 1144 } 1110 1145 else { … … 1340 1375 var sign = false; 1341 1376 var crypt = false; 1342 1343 1377 if ((preferences.use_assinar_criptografar != '0') && (preferences.use_signature_digital_cripto != '0')){ 1344 1378 var checkSign = document.getElementById('return_digital_'+ID) … … 1378 1412 return; 1379 1413 } 1380 1381 1414 if(data && data.success == true ){ 1382 1415 // if send ok, set a flag as answered or forwarded … … 1385 1418 1386 1419 if (msg_number_replied){ 1387 set_message_flag(msg_number_replied.value, 'answered');1420 proxy_mensagens.proxy_set_message_flag(msg_number_replied.value, 'answered'); 1388 1421 } 1389 1422 else if (msg_number_forwarded){ 1390 set_message_flag(msg_number_forwarded.value, 'forwarded'); 1391 } 1392 if(wfolders.alert){ 1393 write_msg(get_lang('Your message was sent and save.')); 1394 wfolders.alert = false; 1423 proxy_mensagens.proxy_set_message_flag(msg_number_forwarded.value, 'forwarded'); 1424 } 1425 if(expresso_offline){ 1426 write_msg(get_lang('Your message was sent to queue')); 1427 delete_border(ID,'true'); 1428 return; 1395 1429 }else{ 1396 write_msg(get_lang('Your message was sent.')); 1430 if (wfolders.alert) { 1431 write_msg(get_lang('Your message was sent and save.')); 1432 wfolders.alert = false; 1433 } 1434 else { 1435 write_msg(get_lang('Your message was sent.')); 1436 } 1397 1437 } 1398 1438 // If new dynamic contacts were added, update the autocomplete .... … … 1417 1457 write_msg(get_lang("Connection failed with %1 Server. Try later.", "Web")); 1418 1458 } 1459 if(!expresso_offline) 1460 connector.hideProgressBar(); 1419 1461 } 1420 1462 … … 1523 1565 } 1524 1566 1525 cExecuteForm ("$this.imap_functions.send_mail", form, handler_send_message, ID); 1567 if (expresso_offline) { 1568 stringEmail = Element("to_"+ID).value; 1569 stringEmail += Element("cco_"+ID).value =='' ? "":", "+Element("cco_"+ID).value; 1570 stringEmail += Element("cc_"+ID).value =='' ? "":", "+Element("cc_"+ID).value; 1571 var invalidEmail = validateEmail(stringEmail); 1572 if(Element("to_"+ID).value=="" && Element("cco_"+ID).value=="" && Element("cc_"+ID).value=="") { 1573 write_msg(get_lang("message without receiver.")); 1574 return; 1575 }else if(invalidEmail[0] == true){ 1576 write_msg("Os endereços de destinatário a seguir estão incorretos: "+invalidEmail[1]); 1577 return; 1578 } 1579 1580 sucess = expresso_local_messages.send_to_queue(form); 1581 var data_return = new Array(); 1582 data_return.success = sucess; 1583 handler_send_message(data_return,ID); 1584 } 1585 else 1586 cExecuteForm("$this.imap_functions.send_mail", form, handler_send_message, ID); 1526 1587 } 1527 1588 … … 2048 2109 set_messages_flag("unseen", "get_selected_messages"); 2049 2110 else 2050 set_message_flag(msgs_number, "unseen");2111 proxy_mensagens.proxy_set_message_flag(msgs_number, "unseen"); 2051 2112 proxy_mensagens.proxy_move_messages(folder, msgs_number, border_ID, new_folder, new_folder_name); 2052 2113 } … … 2221 2282 } 2222 2283 } 2284 function hack_sent_queue(data,rowid_message) { 2285 2286 if (data.success != true) { 2287 queue_send_errors = true; 2288 expresso_local_messages.set_problem_on_sent(rowid_message,data); 2289 } 2290 else { 2291 expresso_local_messages.set_as_sent(rowid_message); 2292 if(document.getElementById('_action')) { //Não posso manter esse elemento, pois o connector irá criar outro com o mesmo id para a próxima mensagem. 2293 el =document.getElementById('_action'); 2294 father = el.parentNode; 2295 father.removeChild(el); 2296 } 2297 send_mail_from_queue(false); 2298 } 2299 } 2300 2301 function send_mail_from_queue(first_pass) { 2302 if(first_pass) 2303 modal('send_queue'); 2304 var num_msgs = expresso_local_messages.get_num_msgs_to_send(); 2305 if (num_msgs <= 0) { 2306 close_lightbox(); 2307 return; 2308 } 2309 document.getElementById('text_send_queue').innerHTML = get_lang('Number of messages to send:')+' '+num_msgs; 2310 var handler_send_queue_message = function(data,rowid_message) { 2311 hack_sent_queue(data,this.ID_tmp); 2312 } 2313 var msg_to_send = expresso_local_messages.get_form_msg_to_send(); 2314 if(!is_ie) 2315 ID_tmp = msg_to_send.rowid.value; 2316 else {//I.E kills me of shame... 2317 for (var i=0;i<msg_to_send.length;i++) { 2318 if(msg_to_send.elements[i].name=='rowid') { 2319 ID_tmp = msg_to_send.elements[i].value; 2320 break; 2321 } 2322 } 2323 } 2324 2325 cExecuteForm("$this.imap_functions.send_mail", msg_to_send, handler_send_queue_message,"queue_"+ID_tmp); 2326 } 2327 2328 function check_mail_in_queue() { 2329 var num_msgs = expresso_local_messages.get_num_msgs_to_send(); 2330 if(num_msgs>0) { 2331 control = confirm(get_lang('You have messages to send. Want you to send them now?')); 2332 if(control) { 2333 send_mail_from_queue(true); 2334 } 2335 return true; 2336 } 2337 else { 2338 return false; 2339 } 2340 } 2341 2342 function force_check_queue() { 2343 if(!check_mail_in_queue()) { 2344 write_msg(get_lang("No messages to send")); 2345 } 2346 } 2347 2348 function validateEmail(emailString){ 2349 var arrayInvalidEmails = new Array(); 2350 arrayInvalidEmails[1] = ''; 2351 var email; 2352 var arrayEmailsFull = new Array(); 2353 arrayEmailsFull = emailString.split(','); 2354 var er_Email = new RegExp("<(.*?)>"); 2355 var er_ValidaEmail = new RegExp("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"); 2356 2357 for (i=0; i < arrayEmailsFull.length; i++){ 2358 email = er_Email.exec(arrayEmailsFull[i]); 2359 tempEmail = email == null ? arrayEmailsFull[i]:email[1]; 2360 tempEmail = tempEmail.replace(/^\s+|\s+$/g,""); 2361 if (tempEmail != '') { 2362 singleEmail = er_ValidaEmail.exec(tempEmail); 2363 2364 if (singleEmail == null) { 2365 arrayInvalidEmails[0] = true; 2366 arrayInvalidEmails[1] += (email == null ? arrayEmailsFull[i] : email[1]) + "; "; 2367 } 2368 } 2369 } 2370 2371 return arrayInvalidEmails; 2372 } -
trunk/expressoMail1_2/js/messages_proxy.js
r1005 r1121 12 12 if(this.is_local_folder(folder)) { 13 13 var real_folder = folder.substr(6); 14 var msgs = expresso_local_messages.get_local_range_msgs(real_folder,msg_range_begin, emails_per_page,sort_box_type,sort_box_reverse,search_box_type);14 var msgs = expresso_local_messages.get_local_range_msgs(real_folder,msg_range_begin,preferences.max_email_per_page,sort_box_type,sort_box_reverse,search_box_type); 15 15 eval('call_back(msgs)'); 16 16 }else { … … 71 71 else { 72 72 set_messages_flag(flag,msg_number); 73 } 74 } 75 76 messages_proxy.prototype.proxy_set_message_flag = function (msg_number,flag){ 77 var msg_number_folder = Element("new_input_folder_"+msg_number+"_r"); 78 var folder = msg_number_folder ? msg_number_folder.value : get_current_folder() 79 if(this.is_local_folder(folder)) { 80 expresso_local_messages.set_message_flag(msg_number,flag); 81 } 82 else { 83 set_message_flag(msg_number,flag); 73 84 } 74 85 } -
trunk/expressoMail1_2/js/search.js
r1000 r1121 617 617 table_element.appendChild(tbody_element); 618 618 content_search.appendChild(table_element); 619 // end of put header 620 621 div_scroll_result.appendChild(table); 622 content_search.appendChild(div_scroll_result); 619 /*end of "put header"*/ 620 621 if (!expresso_offline) { 622 var span_options = document.createElement("SPAN"); 623 if (span_options) 624 span_options.innerHTML = '<span title="' + get_lang("Delete") + '" style="margin-top:3px;margin-left:8px" class="message_options" onclick="javascript:move_search_msgs(\'' + content_search.id + '\');">' + get_lang("Delete") + '</span> | ' + 625 '<span title="' + 626 get_lang("Move") + 627 '" class="message_options" onclick=wfolders.makeWindowNew(\"' + 628 content_search.id + 629 '\",\"move_to\",true)>' + 630 get_lang("Move") + 631 '</span>'; 632 div_scroll_result.appendChild(table); 633 content_search.appendChild(div_scroll_result); 634 if (span_options) 635 content_search.appendChild(span_options); 636 } 637 else { 638 div_scroll_result.appendChild(table); 639 content_search.appendChild(div_scroll_result); 640 } 623 641 } 624 642 … … 778 796 var args = "$this.imap_functions.search_msg"; 779 797 var params = "condition=" + nm_box; 780 cExecute(args,handler,params); 798 if(expresso_offline) 799 handler('none'); 800 else 801 cExecute(args,handler,params); 781 802 } 782 803 // clean; … … 836 857 837 858 searchE.prototype.aux_local_folder_display = function(folder) { 838 return "(Local) " + lang_folder(folder.substr(6)); 859 if(!expresso_offline) 860 return "(Local) " + lang_folder(folder.substr(6)); 861 else 862 return lang_folder(folder.substr(6)); 839 863 } 840 864 -
trunk/expressoMail1_2/js/wfolders.js
r689 r1121 88 88 89 89 wfolders_tree = new dFTree({name: 'wfolders_tree'}); 90 var n_root = new dNode({id:'root', caption:get_lang("My Folders")}); 90 if(!expresso_offline) 91 var n_root = new dNode({id:'root', caption:get_lang("My Folders")}); 92 else 93 var n_root = new dNode({id:'local_root', caption:get_lang("local messages")}); 91 94 wfolders_tree.add(n_root,'anything'); //Places the root; second argument can be anything. 92 95 … … 108 111 wfolders_tree.draw(Element('wfolders_content_tree')); 109 112 n_root.changeState(); 110 wfolders_tree.getNodeById('INBOX')._select(); 113 if(!expresso_offline) 114 wfolders_tree.getNodeById('INBOX')._select(); 115 else 116 wfolders_tree.getNodeById('local_Inbox')._select(); 111 117 _this.showWindow(el, type); 112 118 } -
trunk/expressoMail1_2/preferences.php
r1040 r1121 320 320 321 321 // Back to preferences. 322 $url = ($GLOBALS['phpgw']->link('/'.'expressoMail1_2'.'/ index.php'));322 $url = ($GLOBALS['phpgw']->link('/'.'expressoMail1_2'.'/save_preferences.php')); 323 323 $GLOBALS['phpgw']->redirect($url); 324 324 } … … 371 371 $GLOBALS['phpgw']->template->set_var('lang_Would_you_like_to_use_local_messages_?',lang('Would you like to use local messages?')); 372 372 373 $GLOBALS['phpgw']->template->set_var('url_offline','offline.php'); 374 $GLOBALS['phpgw']->template->set_var('url_icon','templates/default/images/offline.png'); 375 $GLOBALS['phpgw']->template->set_var('user_uid',$GLOBALS['phpgw_info']['user']['account_id']); 376 $GLOBALS['phpgw']->template->set_var('user_login',$GLOBALS['phpgw_info']['user']['account_lid']); 377 $GLOBALS['phpgw']->template->set_var('lang_install_offline',lang('Install Offline')); 378 $GLOBALS['phpgw']->template->set_var('lang_pass_offline',lang('Offline Pass')); 379 $GLOBALS['phpgw']->template->set_var('lang_expresso_offline',lang('Expresso Offline')); 380 $GLOBALS['phpgw']->template->set_var('lang_uninstall_offline',lang('Uninstall Offline')); 381 $GLOBALS['phpgw']->template->set_var('lang_gears_redirect',lang('To use local messages you have to install google gears. Would you like to be redirected to gears installation page?')); 382 $GLOBALS['phpgw']->template->set_var('lang_offline_installed',lang('Offline success installed')); 383 $GLOBALS['phpgw']->template->set_var('lang_offline_uninstalled',lang('Offline success uninstalled')); 384 $GLOBALS['phpgw']->template->set_var('lang_only_spaces_not_allowed',lang('The password cant have only spaces')); 385 373 386 $boemailadmin = CreateObject('emailadmin.bo'); 374 387 $emailadmin_profile = $boemailadmin->getProfileList(); -
trunk/expressoMail1_2/templates/default/index.tpl
r1035 r1121 90 90 </tbody> 91 91 </table> 92 <div id='forms_queue'></div> 93 <div style="display:none" id="send_queue"> 94 <table width="100%" height="100%"> 95 <tr> 96 <td background="js/modal/images/fundo_exp.png" valign="top" align="center"> 97 <font color="#006699"><b><div id="text_send_queue"></div></b></font> 98 </td> 99 </tr> 100 </table> 101 </div> 92 102 <!-- END list --> -
trunk/expressoMail1_2/templates/default/preferences.tpl
r1035 r1121 1 2 1 <script src="js/main.js"></script> 3 2 <center>
Note: See TracChangeset
for help on using the changeset viewer.