Changeset 1121


Ignore:
Timestamp:
07/14/09 16:24:34 (15 years ago)
Author:
eduardoalex
Message:

Ticket #548 - Implementação do Expresso (Mail) Offline

Location:
trunk
Files:
25 added
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/inc/hook_preferences.inc.php

    r1040 r1121  
    1212        $title = $appname; 
    1313        $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') 
    1516        ); 
    1617        //Do not modify below this line 
  • trunk/expressoMail1_2/inc/load_lang.php

    r1059 r1121  
    11<?php 
    2  
    32// 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         
    47        if(!$_SESSION['phpgw_info']['expressomail']['lang'])  
    58        { 
  • trunk/expressoMail1_2/index.php

    r1057 r1121  
    1515        echo '<link rel="stylesheet" type="text/css" href="../phpgwapi/js/dftree/dftree.css">'; 
    1616        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>"; 
    1718        echo "<script src='js/globals.js?".$update_version."' type='text/javascript'></script>"; 
    1819        echo "<script src='js/sniff_browser.js?".$update_version."' type='text/javascript'></script>"; 
     
    146147    // End Set Imap Folder names options 
    147148        //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>"; 
    149150 
    150151        $obj = createobject("expressoMail1_2.functions"); 
     
    177178        // Get Preferences or redirect to preferences page. 
    178179        $GLOBALS['phpgw']->preferences->read_repository(); 
     180        //print_r($_SESSION['phpgw_info']['user']['preferences']['expressoMail']); 
    179181?> 
    180182 
  • trunk/expressoMail1_2/js/TreeS.js

    r1000 r1121  
    6969                tree.appendChild(jo); 
    7070 
    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); 
    7275                _this.showWindow(tree); 
    7376 
     
    129132                 
    130133                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>&nbsp(</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}); 
    149137                        }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>&nbsp(</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}); 
    159155                                } 
    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                        } 
    162167                } 
    163168                //Pastas locais 
     
    189194                } 
    190195                folders_tree.draw(Element(destination)); 
    191                 n_root.changeState(); 
     196                if(!expresso_offline) 
     197                        n_root.changeState(); 
     198                else 
     199                        n_root_local.changeState(); 
    192200                if(opentomb != ""){folders_tree.openTo(opentomb);} 
    193201                if(selected != "" && folders_tree.getNodeById(selected)){folders_tree.getNodeById(selected)._select();} 
  • trunk/expressoMail1_2/js/TreeShow.js

    r689 r1121  
    2929                                tree_folders.getNodeById(get_current_folder())._select(); 
    3030                } 
    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(''); 
    3235        } 
    3336 
  • trunk/expressoMail1_2/js/common_functions.js

    r1005 r1121  
    11// BEGIN: FUNCTION RESIZE WINDOW 
    2 var _showBar = showBar; 
    3 var _hideBar = hideBar; 
     2if (!expresso_offline) { 
     3        var _showBar = showBar; 
     4        var _hideBar = hideBar; 
     5} 
    46 
    57function __showBar(){ 
     
    236238         
    237239 
    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                } 
    240267                 
    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); 
    252268        } 
    253269        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); 
    266275 
    267276        var a_tmp = new Array(); 
     
    288297        divFiles.appendChild(divFile); 
    289298 
    290         divFile.id = "divFile_"+id_border+"_"+countDivFiles;     
    291         divFiles.appendChild(divFile); 
    292299        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... 
    293300        return inputFile; 
     
    308315        divFile = document.createElement('DIV'); 
    309316         
    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 
    324320         
    325321        var linkFile = document.createElement("A"); 
     
    333329        divFiles.appendChild(divFile); 
    334330 
    335         return inputFile; 
     331         
     332 
     333        return document.getElementById("inputFile_"+id_border+"_"+countDivFiles); 
    336334} 
    337335//      Remove Input File Dynamically. 
     
    472470        var quickSearchKeyBegin; 
    473471        var quickSearchKeyEnd; 
    474          
     472        if(expresso_offline) { 
     473                alert(get_lang('Not allowed in offline mode')); 
     474                return; 
     475        } 
     476                 
    475477        var handler_emQuickSearch = function(data) 
    476478        { 
     
    703705        } 
    704706        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(); 
    707713} 
    708714function decrement_folder_unseen(){ 
     
    758764                //      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")}); 
    759765                //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(); 
    762772        } 
    763773} 
  • trunk/expressoMail1_2/js/doiMenuData.js

    r1000 r1121  
    88        var _option1 = preferences.hide_folders == "1" ? false : true; 
    99                                                                 
    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        } 
    1827 
    1928        var _link = Element('link_tools'); 
  • trunk/expressoMail1_2/js/draw_api.js

    r1108 r1121  
    2222        // Check if the tree folders alredy exist. 
    2323        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>&nbsp(</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 ) 
    3073                                { 
    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(); 
    3479                                } 
    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>&nbsp(</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                } 
    8283 
    8384                /** 
    8485                 * Pastas locais 
    8586                 */ 
    86                 if(preferences.use_local_messages==1) { 
     87                if(preferences.use_local_messages==1 || expresso_offline) { 
    8788                        var local_folders = expresso_local_messages.list_local_folders(); 
    8889                        var has_changes = false; 
     
    126127        } 
    127128        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>&nbsp(</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>&nbsp(</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});  
    143145                                 
    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>'; 
    156148                                } 
    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                        } 
    159162                } 
    160163                //tree_local_folders = new dFTree({name: 'tree_local_folders'}); 
     
    162165                 * Pastas locais 
    163166                 */ 
    164                 if (preferences.use_local_messages==1) { 
     167                if (preferences.use_local_messages==1 || expresso_offline) { 
    165168                        if (!window.google || !google.gears) { 
    166169                                temp = confirm(get_lang("To use local messages you have to install google gears. Would you like to be redirected to gears installation page?")); 
     
    174177                        } 
    175178                        else{ 
     179                                if (expresso_offline)  
     180                                        tree_folders = new dFTree({name: 'tree_folders'}); 
    176181                                var root_local = new dNode({ 
    177182                                        id: "local_root", 
     
    201206 
    202207                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                } 
    204216 
    205217                var trash_span=document.getElementById('lINBOX/'+trashfolder+'tree_folders'); 
     
    220232                        spam_span.style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_spam.png)"; 
    221233 
    222                 tree_folders.getNodeById('INBOX')._select(); 
     234 
    223235                draw_paging(Element('tot_m').innerHTML); 
    224236                // Draw right menu folders. 
     
    229241                */ 
    230242 
    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' ); 
    232247                //if ( unseen_in_mailbox ) 
    233248                //      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")}); 
     
    247262        } 
    248263 
    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 == ""){ 
    262273                                                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                                                } 
    263280                                        } 
    264281                                } 
    265282                        } 
    266283                } 
    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                        } 
    276293                } 
    277294        } 
     
    18511868                //var option_send = '<span class="message_options" onclick=send_message("'+ID+'","null","null");>'+get_lang("Send")+'</span> | '; 
    18521869                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=''; 
    18541874        } 
    18551875        else{ 
     
    18601880        } 
    18611881//      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        } 
    18641890        td_menu_new_message.innerHTML = option_send + option_send_and_file + option_save + option_search; 
    18651891         
     
    19611987        td_to.appendChild(forwarded_local_message); 
    19621988         
    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         
    19671999        var span_search = document.createElement("SPAN"); 
    19682000        span_search.innerHTML = get_lang('Search'); 
     
    23362368        RichTextEditor.loadEditor(ID); 
    23372369////////////////////////////////////////////////////////////////////////////////////////////////////// 
    2338         draw_from_field(sel_from,tr1_1); 
     2370        if(!expresso_offline) 
     2371                draw_from_field(sel_from,tr1_1); 
    23392372        return ID; 
    23402373} 
     
    27982831                '<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>'+ 
    27992832                '<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>'+ 
    28012835        '<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>' + 
    28022836                '<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) 
    28042838                if(proxy_mensagens.is_local_folder(current_folder)) 
    28052839                        span_options.innerHTML += '&nbsp; <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  
    33_bTime = _bTime.getTime(); 
    44var hold_session = false; 
     5var queue_send_errors = false; 
    56var current_page = 1; 
    67var current_folder = ''; 
  • trunk/expressoMail1_2/js/local_messages.js

    r1035 r1121  
    1616                        this.localServer = google.gears.factory.create('beta.localserver'); 
    1717                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');                         
    2219                this.dbGears.open('database-test'); 
    2320                this.dbGears.execute('create table if not exists folder (folder text,uid_usuario int,unique(folder,uid_usuario))'); 
     
    303300        local_messages.prototype.getInputFileFromAnexo = function (element,url) {  
    304301                this.init_local_messages(); 
    305                 this.fileSubmitter.setFileInputElement(element,url); 
     302                fileSubmitter = this.store.createFileSubmitter(); 
     303                fileSubmitter.setFileInputElement(element,url); 
    306304                this.finalize(); 
    307305        } 
     
    377375                        header = connector.unserialize(rs.field(0)); 
    378376                        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                         else  
    385                                 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": 
    386384                                        set_msg_as_flagged(msgs_to_set[i]); 
    387385                                        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                 
    403412                        rs.close(); 
    404413                         
     
    412421                this.finalize(); 
    413422 
     423        } 
     424         
     425        local_messages.prototype.set_message_flag = function(msg_number,flag) { 
     426                this.set_messages_flag(msg_number,flag); 
    414427        } 
    415428         
     
    821834 
    822835         
     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 
    8231236        var expresso_local_messages; 
    8241237        expresso_local_messages = new local_messages(); 
  • trunk/expressoMail1_2/js/main.js

    r1035 r1121  
    5151        cExecute ("$this.functions.get_preferences", save_preferences); 
    5252        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 
     58function 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} 
    5586/** 
    5687 * Carrega a applet java no objeto search_div 
     
    406437                 
    407438        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); 
    409441} 
    410442 
     
    11051137                                                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. 
    11061138                                                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; 
    11071143                                                 
    1108                                                 expresso_local_messages.getInputFileFromAnexo(campo_arquivo, tmp); 
    11091144                                        } 
    11101145                                        else { 
     
    13401375    var sign = false; 
    13411376        var crypt = false; 
    1342  
    13431377    if ((preferences.use_assinar_criptografar != '0') && (preferences.use_signature_digital_cripto != '0')){ 
    13441378                var checkSign = document.getElementById('return_digital_'+ID) 
     
    13781412                return; 
    13791413    } 
    1380  
    13811414        if(data && data.success == true ){ 
    13821415                // if send ok, set a flag as answered or forwarded 
     
    13851418 
    13861419                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'); 
    13881421                } 
    13891422                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; 
    13951429                }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                        } 
    13971437                } 
    13981438                // If new dynamic contacts were added, update the autocomplete .... 
     
    14171457                        write_msg(get_lang("Connection failed with %1 Server. Try later.", "Web")); 
    14181458        } 
     1459        if(!expresso_offline) 
     1460                connector.hideProgressBar(); 
    14191461} 
    14201462 
     
    15231565        } 
    15241566         
    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); 
    15261587} 
    15271588 
     
    20482109                        set_messages_flag("unseen", "get_selected_messages"); 
    20492110                else 
    2050                         set_message_flag(msgs_number, "unseen"); 
     2111                        proxy_mensagens.proxy_set_message_flag(msgs_number, "unseen"); 
    20512112            proxy_mensagens.proxy_move_messages(folder, msgs_number, border_ID, new_folder, new_folder_name); 
    20522113        } 
     
    22212282        } 
    22222283} 
     2284function 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 
     2301function 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 
     2328function 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 
     2342function force_check_queue() { 
     2343        if(!check_mail_in_queue()) { 
     2344                write_msg(get_lang("No messages to send")); 
     2345        } 
     2346} 
     2347 
     2348function 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  
    1212                if(this.is_local_folder(folder)) { 
    1313                        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); 
    1515                        eval('call_back(msgs)'); 
    1616                }else { 
     
    7171                else { 
    7272                        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); 
    7384                } 
    7485        } 
  • trunk/expressoMail1_2/js/search.js

    r1000 r1121  
    617617                table_element.appendChild(tbody_element); 
    618618                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                } 
    623641        } 
    624642 
     
    778796                var args   = "$this.imap_functions.search_msg"; 
    779797                var params = "condition=" + nm_box; 
    780                 cExecute(args,handler,params); 
     798                if(expresso_offline) 
     799                        handler('none'); 
     800                else 
     801                        cExecute(args,handler,params); 
    781802        } 
    782803        // clean; 
     
    836857         
    837858        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)); 
    839863        } 
    840864         
  • trunk/expressoMail1_2/js/wfolders.js

    r689 r1121  
    8888 
    8989                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")}); 
    9194                wfolders_tree.add(n_root,'anything'); //Places the root; second argument can be anything. 
    9295 
     
    108111                wfolders_tree.draw(Element('wfolders_content_tree')); 
    109112                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(); 
    111117                _this.showWindow(el, type); 
    112118        } 
  • trunk/expressoMail1_2/preferences.php

    r1040 r1121  
    320320                 
    321321                // Back to preferences. 
    322                 $url = ($GLOBALS['phpgw']->link('/'.'expressoMail1_2'.'/index.php')); 
     322                $url = ($GLOBALS['phpgw']->link('/'.'expressoMail1_2'.'/save_preferences.php')); 
    323323                $GLOBALS['phpgw']->redirect($url); 
    324324        } 
     
    371371        $GLOBALS['phpgw']->template->set_var('lang_Would_you_like_to_use_local_messages_?',lang('Would you like to use local messages?')); 
    372372 
     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         
    373386        $boemailadmin   = CreateObject('emailadmin.bo'); 
    374387        $emailadmin_profile = $boemailadmin->getProfileList(); 
  • trunk/expressoMail1_2/templates/default/index.tpl

    r1035 r1121  
    9090        </tbody> 
    9191</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> 
    92102<!-- END list --> 
  • trunk/expressoMail1_2/templates/default/preferences.tpl

    r1035 r1121  
    1  
    21<script src="js/main.js"></script> 
    32<center> 
Note: See TracChangeset for help on using the changeset viewer.