Changeset 1622


Ignore:
Timestamp:
11/11/09 17:13:52 (14 years ago)
Author:
rafaelraymundo
Message:

Ticket #722 - Implementação da pesquisa avançada no expressoMail.

Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/inc/class.imap_functions.inc.php

    r1614 r1622  
    29552955        } 
    29562956 
     2957        function make_search_date($date){ 
     2958 
     2959            $months = array( 
     2960                1   => 'jan', 
     2961                2   => 'feb', 
     2962                3   => 'mar', 
     2963                4   => 'apr', 
     2964                5   => 'may', 
     2965                6   => 'jun', 
     2966                7   => 'jul', 
     2967                8   => 'aug', 
     2968                9   => 'sep', 
     2969                10  => 'oct', 
     2970                11  => 'nov', 
     2971                12  => 'dec' 
     2972            ); 
     2973 
     2974            //TODO: Adaptar a data de acordo com o locale do sistema. 
     2975            list($day,$month,$year) = explode("/", $date); 
     2976            $search_date = $day."-".$months[intval($month)]."-".$year; 
     2977            return $search_date; 
     2978 
     2979        } 
     2980 
    29572981        function search_msg($params = ''){ 
    29582982            $retorno = ""; 
     
    29803004                            $filter_array = explode("<=>",rawurldecode($criteria)); 
    29813005                            $filter .= " ".$filter_array[0]; 
    2982                             $filter .= '"'.$filter_array[1].'"'; 
     3006                            if (strlen($filter_array[1]) != 0){ 
     3007                                if (trim($filter_array[0]) != 'BEFORE' && 
     3008                                    trim($filter_array[0]) != 'SINCE' && 
     3009                                    trim($filter_array[0]) != 'ON') 
     3010                                { 
     3011                                    $filter .= '"'.$filter_array[1].'"'; 
     3012                                } 
     3013                                else 
     3014                                    { 
     3015                                        $filter .= '"'.$this->make_search_date($filter_array[1]).'"'; 
     3016                                    } 
     3017                            } 
    29833018                        } 
    29843019                    } 
  • trunk/expressoMail1_2/index.php

    r1615 r1622  
    1818        echo "<script src='js/globals.js?".$update_version."' type='text/javascript'></script>"; 
    1919        echo "<script src='js/sniff_browser.js?".$update_version."' type='text/javascript'></script>"; 
     20        echo "<style type='text/css'>@import url(/phpgwapi/js/jscalendar/calendar-win2k-1.css);</style>"; 
     21        echo "<script src='/phpgwapi/js/jscalendar/calendar.js?".$update_version."' type='text/javascript'></script>"; 
     22        echo "<script src='/phpgwapi/js/jscalendar/calendar-setup.js?".$update_version."' type='text/javascript'></script>"; 
     23        echo "<script src='/phpgwapi/js/jscalendar/lang/calendar-br.js?".$update_version."' type='text/javascript'></script>"; 
    2024        echo '<script type="text/javascript" src="../phpgwapi/js/wz_dragdrop/wz_dragdrop.js?'.$update_version.'"></script> 
    2125                <script type="text/javascript" src="../phpgwapi/js/dJSWin/dJSWin.js?'.$update_version.'"></script>'; 
  • trunk/expressoMail1_2/js/common_functions.js

    r1610 r1622  
    862862        } 
    863863} 
     864 
     865function validate_date(date){ 
     866    if (date.match(/^[0-3][0-9]\/[0-1][0-9]\/\d{4,4}$/)) 
     867    { 
     868        tmp = date.split('/'); 
     869 
     870        day = new Number(tmp[0]); 
     871        month = new Number(tmp[1]); 
     872        year = new Number(tmp[2]); 
     873        if (month >= 1 && month <= 12 && day >= 1 && day <= 31) 
     874        { 
     875            if (month == 02 && day <= 29) 
     876            { 
     877                return true; 
     878            } 
     879            return true; 
     880        } 
     881        else 
     882            { 
     883                return false; 
     884            } 
     885    } 
     886    else 
     887        { 
     888            return false; 
     889        } 
     890} 
  • trunk/expressoMail1_2/js/local_messages.js

    r1595 r1622  
    99                this.fileSubmitter = null; 
    1010        } 
     11 
     12        function HeaderFlags() 
     13        { 
     14            this.Answered = 0; 
     15            //this.Draft = 0; 
     16            this.Flagged = 0; 
     17            this.Recent = 0; 
     18        } 
     19 
     20        HeaderFlags.prototype.getAnswered = function() 
     21        { 
     22            return this.Answered; 
     23        } 
     24 
     25        HeaderFlags.prototype.setAnswered = function(answered) 
     26        { 
     27            this.Answered = answered; 
     28        } 
     29 
     30        //HeaderFlags.prototype.getDraft = function() 
     31        //{ 
     32        //    return this.Draft; 
     33        //} 
     34 
     35        HeaderFlags.prototype.setDraft = function(draft) 
     36        { 
     37            this.Draft = draft; 
     38        } 
     39 
     40        HeaderFlags.prototype.getFlagged = function() 
     41        { 
     42            return this.Flagged; 
     43        } 
     44 
     45        HeaderFlags.prototype.setFlagged = function(flagged) 
     46        { 
     47            this.Flagged = flagged; 
     48        } 
     49 
     50        HeaderFlags.prototype.getRecent = function() 
     51        { 
     52            return this.Recent; 
     53        } 
     54 
     55        HeaderFlags.prototype.setRecent = function(recent) 
     56        { 
     57            this.Recent = recent; 
     58        } 
     59 
     60        function FlagsParser(headerObj) 
     61        { 
     62            this.Header = headerObj; 
     63        } 
     64 
     65        FlagsParser.prototype.parse = function() 
     66        { 
     67            var tmp = null; 
     68            if (typeof this.Header == 'string') 
     69            { 
     70                tmp = connector.unserialize(this.Header); 
     71            } 
     72            else 
     73            { 
     74                tmp = this.Header; 
     75            } 
     76 
     77            flags = new HeaderFlags(); 
     78 
     79            if (tmp.Answered && tmp.Answered.match(/^A$/)) 
     80            { 
     81                flags.setAnswered(1); 
     82                //if (tmp.Draft && tmp.Draft.match(/^X$/)) 
     83                //{ 
     84                //    flags.setDraft(1); 
     85                //} 
     86            } 
     87 
     88            if (tmp.Flagged && tmp.Flagged.match(/^F$/)){ 
     89                flags.setFlagged(1); 
     90            } 
     91 
     92            if (tmp.Forwarded && tmp.Forwarded.match(/^F$/)){ 
     93                flags.setAnswered(1); 
     94                //flags.setDraft(1); 
     95            } 
     96 
     97            if (tmp.Recent && tmp.Recent.match(/^R$/)){ 
     98                flags.setRecent(1); 
     99            } 
     100 
     101            return flags; 
     102 
     103        } 
     104         
    11105        local_messages.prototype.installGears = function (){ 
    12106                temp = confirm(get_lang("To use local messages you have to install google gears. Would you like to install it now?")); 
     
    83177                } 
    84178                //end of temporary code 
     179 
     180                try { 
     181                    this.dbGears.execute('begin transaction'); 
     182                    this.dbGears.execute('alter table mail add column answered int'); 
     183                    //this.dbGears.execute('alter table mail add column draft int'); 
     184                    this.dbGears.execute('alter table mail add column flagged int'); 
     185                    this.dbGears.execute('alter table mail add column recent int'); 
     186                    //this.dbGears.execute('commit transaction'); 
     187                    //transaction_ended = true; 
     188                    //if (transaction_ended){ 
     189                    rs = null; 
     190                    rs = this.dbGears.execute('select rowid,header from mail'); 
     191 
     192                    // Popular os valores das novas colunas. 
     193                    var tmp = null; 
     194                    //this.dbGears.execute('begin transaction'); 
     195                    while(rs.isValidRow()) { 
     196                        //tmp = connector.unserialize(rs.field(1)); 
     197                        parser = new FlagsParser(rs.field(1)); 
     198                        flags = parser.parse(); 
     199 
     200                        this.dbGears.execute('update mail set answered='+flags.getAnswered()+ 
     201                            ',flagged='+flags.getFlagged()+',recent='+flags.getRecent()+ 
     202                            //',draft='+flags.getDraft()+' where rowid='+rs.field(0)); 
     203                            ' where rowid='+rs.field(0)); 
     204 
     205                        rs.next(); 
     206                    } 
     207                    this.dbGears.execute('commit transaction'); 
     208 
     209                    //tmp = null; 
     210 
     211                }catch(Exception) { 
     212                    this.dbGears.execute('rollback transaction'); 
     213                } 
     214 
    85215        } 
    86216         
     
    156286                        if(msg_info.Unseen=="U") 
    157287                                unseen = 1; 
    158             this.dbGears.execute("insert into mail (mail,original_id,original_folder,header,timestamp,uid_usuario,unseen,id_folder,ffrom,subject,fto,cc,body,size) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)",[mail,original_id,original_folder,header,timestamp,login,unseen,id_folder,from,subject,to,cc,body,size]); 
     288 
     289                        //parse header 
     290                        parser = new FlagsParser(msg_header); 
     291                        flags = parser.parse(); 
     292 
     293                        //insere o e-mail 
     294                        //this.dbGears.execute("insert into mail (mail,original_id,original_folder,header,timestamp,uid_usuario,unseen,id_folder,ffrom,subject,fto,cc,body,size) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)",[mail,original_id,original_folder,header,timestamp,login,unseen,id_folder,from,subject,to,cc,body,size]); 
     295                        this.dbGears.execute("insert into mail (mail,original_id,original_folder,header,timestamp,uid_usuario,unseen,id_folder,ffrom,subject,fto,cc,body,size,answered,flagged,recent) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",[mail,original_id,original_folder,header,timestamp,login,unseen,id_folder,from,subject,to,cc,body,size,flags.getAnswered(),flags.getFlagged(),flags.getRecent()]); 
    159296                        var call_back = function() { 
    160297                        } 
     
    571708        } 
    572709         
    573         local_messages.prototype.search = function(folders,filter) { 
    574                 this.init_local_messages(); 
    575                 var filters = filter.replace(/##/g," "); 
    576                 filters = filters.replace(/^ +| +$/g,""); 
    577                 filters = filters.split("<=>"); 
     710        local_messages.prototype.search = function(folders,sFilter) { 
     711                this.init_local_messages(); 
     712                var filters = sFilter.replace(/^##|##$/g,"").split('##'); 
    578713                var friendly_filters = new Array(); 
    579                 if (filters[0].indexOf('ALL') != -1) { //all filters... 
    580                         friendly_filters.push("SUBJECT"); 
    581                         friendly_filters.push(filters[1]); 
    582                         friendly_filters.push("BODY"); 
    583                         friendly_filters.push(filters[1]); 
    584                         friendly_filters.push("FROM"); 
    585                         friendly_filters.push(filters[1]); 
    586                         friendly_filters.push("TO"); 
    587                         friendly_filters.push(filters[1]); 
    588                         friendly_filters.push("CC"); 
    589                         friendly_filters.push(filters[1]);                       
     714 
     715                if (sFilter.indexOf('ALL') != -1) { //all filters... 
     716                    filters[0] = sFilter.replace(/##/g,""); 
     717                    tmp = filters[0].split("<=>"); 
     718 
     719                    searchKey = new Array(); 
     720                    searchKey.push("SUBJECT"); 
     721                    searchKey.push(tmp[1]); 
     722                    friendly_filters.push(searchKey); 
     723 
     724                    searchKey = new Array(); 
     725                    searchKey.push("BODY"); 
     726                    searchKey.push(tmp[1]); 
     727                    friendly_filters.push(searchKey); 
     728 
     729                    searchKey = new Array(); 
     730                    searchKey.push("FROM"); 
     731                    searchKey.push(tmp[1]); 
     732                    friendly_filters.push(searchKey); 
     733 
     734                    searchKey = new Array(); 
     735                    searchKey.push("TO"); 
     736                    searchKey.push(tmp[1]); 
     737                    friendly_filters.push(searchKey); 
     738 
     739                    searchKey = new Array(); 
     740                    searchKey.push("CC"); 
     741                    searchKey.push(tmp[1]); 
     742                    friendly_filters.push(searchKey); 
    590743                } 
    591744                else { 
    592                         friendly_filters[0] = filters[0]; 
    593                         for (var i in filters) { 
    594                                 if (i != 0) { 
    595                                         var temp = filters[i].split(" "); 
    596                                         friendly_filters.push(temp[0]); 
    597                                         friendly_filters.push(temp[1]); 
    598                                 } 
    599                         } 
     745                    for (var i=0; i<filters.length; i++) 
     746                    { 
     747                        if (filters[i] != ""){ 
     748                            //tmp[0] = tmp[0].replace(/^\s+|\s+$/g,""); 
     749                            //tmp[1] = tmp[1].replace(/^\s+|\s+$/g,""); 
     750                            friendly_filters.push(filters[i].split("<=>")); 
     751                        } 
     752                    } 
    600753                } 
    601754                var sql = "select mail.header,folder.folder,mail.rowid,size from mail inner join folder on mail.id_folder=folder.rowid where mail.uid_usuario="+account_id + " and folder.folder in ("; 
     
    607760                sql += ") and ("; 
    608761                for (var z=0;z<friendly_filters.length-1;z++) { 
    609                         if(z%2==0) { 
    610                                 if (z != 0) { 
    611                                         if (filters[0].indexOf('ALL') != -1)  
    612                                                 sql += " or"; 
    613                                         else  
    614                                                 sql += " and"; 
    615                                 } 
    616                                 sql+=" mail."+this.aux_convert_filter_field(friendly_filters[z])+" like '%"+url_decode(friendly_filters[z+1])+"%'"; 
    617                         } 
     762                    if (z != 0) { 
     763                        if (sFilter.indexOf('ALL') != -1) 
     764                            sql += " or"; 
     765                        else 
     766                            sql += " and"; 
     767                    } 
     768                    var cond = friendly_filters[z][0].replace(/^\s+|\s+$/g,""); 
     769                    if (cond == "SINCE" || cond == "BEFORE" | cond == "ON"){ 
     770 
     771                        tmpDate = url_decode(friendly_filters[z][1]).split('/'); 
     772 
     773                        // Date = url_decode(friendly_filters[z][1]); 
     774                        sql+=" mail.timestamp " + this.aux_convert_filter_field(friendly_filters[z][0], tmpDate); 
     775                    } 
     776                    else if (!friendly_filters[z][1]) 
     777                        { 
     778                            sql+=" mail."+this.aux_convert_filter_field(friendly_filters[z][0]); 
     779                        } 
     780                        else 
     781                            { 
     782                                sql+=" mail."+this.aux_convert_filter_field(friendly_filters[z][0])+" like '%"+url_decode(friendly_filters[z][1])+"%'"; 
     783                            } 
    618784                } 
    619785                sql += ")"; 
     
    621787                var retorno = ""; 
    622788                while(rs.isValidRow()) { 
    623                         var header = connector.unserialize(rs.field(0)); 
    624                         retorno+="##"+"local_"+rs.field(1)+"--"+header["from"]["name"]+"--"+header["subject"]+"--"+header["udate"]+"--"+this.aux_convert_size(rs.field(3))+"--"+header["Unseen"]+header["Recent"]+header["Flagged"]+header["Draft"]+"--"+rs.field(2)+"##"; 
    625                         rs.next(); 
     789                    var header = connector.unserialize(rs.field(0)); 
     790                    retorno+="##"+"local_"+rs.field(1)+"--"+"local_"+rs.field(1)+"--"+header["from"]["name"]+"--"+header["subject"]+"--"+header["udate"]+"--"+this.aux_convert_size(rs.field(3))+"--"+header["Unseen"]+header["Recent"]+header["Flagged"]+header["Draft"]+"--"+rs.field(2)+"##"; 
     791                    rs.next(); 
    626792                } 
    627793 
     
    641807        } 
    642808         
    643         local_messages.prototype.aux_convert_filter_field = function(filter) { 
     809        local_messages.prototype.aux_convert_filter_field = function(filter,date) { 
     810                if (typeof date != 'undefined'){ 
     811                    var dateObj=new Date(); 
     812                    dateObj.setFullYear(date[2],date[1]-1,date[0]); 
     813                } 
     814 
    644815                if((filter=="SUBJECT ") || (filter=="SUBJECT")) 
    645816                        return "subject"; 
     
    652823                else if((filter=="CC ") || (filter=="CC")) 
    653824                        return "cc"; 
     825                else if (filter.replace(/^\s+|\s+$/g,"") == "SINCE"){ 
     826                        dateObj.setHours(0, 0, 0, 0); 
     827                        return ">= " + dateObj.getTime().toString(10).substr(0, 10); 
     828                } 
     829                else if (filter.replace(/^\s+|\s+$/g,"") == "BEFORE"){ 
     830                        dateObj.setHours(23, 59, 59, 999); 
     831                        return "<= " + dateObj.getTime().toString(10).substr(0, 10); 
     832                } 
     833                else if (filter.replace(/^\s+|\s+$/g,"") == "ON"){ 
     834                        dateObj.setHours(0, 0, 0, 0); 
     835                        var ts1 = dateObj.getTime().toString(10).substr(0, 10); 
     836                        dateObj.setHours(23, 59, 59, 999); 
     837                        var ts2 = dateObj.getTime().toString(10).substr(0, 10); 
     838                        return ">= " + ts1 + ") and (timestamp <= " + ts2; 
     839                } 
     840                else if (filter.replace(/^\s+|\s+$/g,"") == "FLAGGED") 
     841                        return "flagged = 1"; 
     842                else if (filter.replace(/^\s+|\s+$/g,"") == "UNFLAGGED") 
     843                        return "flagged = 0"; 
     844                else if (filter.replace(/^\s+|\s+$/g,"") == "UNSEEN") 
     845                        return "unseen = 1"; 
     846                else if (filter.replace(/^\s+|\s+$/g,"") == "SEEN") 
     847                        return "unseen = 0"; 
     848                else if (filter.replace(/^\s+|\s+$/g,"") == "ANSWERED") 
     849                        return "answered = 1"; 
     850                else if (filter.replace(/^\s+|\s+$/g,"") == "UNANSWERED") 
     851                        return "answered = 0"; 
     852                else if (filter.replace(/^\s+|\s+$/g,"") == "RECENT") 
     853                        return "recent = 1"; 
     854                else if (filter.replace(/^\s+|\s+$/g,"") == "OLD") 
     855                        return "recent = 0"; 
     856 
    654857        } 
    655858         
  • trunk/expressoMail1_2/js/manifest

    r1564 r1622  
    4646          { "url": "TreeShow.js?1.222" }, 
    4747          { "url": "offline_access.js?1.222" }, 
    48            
     48 
     49        { "url": "../../phpgwapi/js/jscalendar/calendar-win2k-1.css?1.222" }, 
     50        { "url": "../../phpgwapi/js/jscalendar/calendar.js?1.222" }, 
     51        { "url": "../../phpgwapi/js/jscalendar/calendar-setup.js?1.222" }, 
     52        { "url": "../../phpgwapi/js/jscalendar/lang/calendar-br.js?1.222" }, 
    4953 
    5054          { "url": "../../phpgwapi/templates/celepar/js/cookieManager.js" }, 
  • trunk/expressoMail1_2/js/search.js

    r1614 r1622  
    88                this.all_boxes = new Array; 
    99                this.type = ""; 
    10                 this.fields = new Array("_ass","_de","_body","_para","_cc","_cco"); 
     10                this.txtfields = new Array("txt_ass","txt_de","txt_body","txt_para","txt_cc","txt_cco", 
     11                                        "since_date", "before_date", "on_date"); 
     12                this.selectFields = new Array("flagged", "seen", "answered", "recent"); 
    1113        } 
    1214         
     
    3032                        div_form_search.style.left = "10px"; 
    3133                        div_form_search.style.top  = "10px"; 
    32                         div_form_search.style.width = "770px"; 
    33                         div_form_search.style.height = "300px"; 
     34                        div_form_search.style.width = "784px"; 
     35                        div_form_search.style.height = "418px"; 
    3436                        div_form_search.style.overflow = "hidden"; 
    3537                        div_form_search.innerHTML = ""; 
     
    3739                        div_form_search.appendChild(call_form_search); 
    3840                        form_search.appendChild(div_form_search); 
     41 
     42                        Calendar._TT['WEEKEND'] = '0,6'; // hack 
     43                        Calendar._TT['DAY_FIRST'] = 'Mostrar %s primeiro'; 
     44                        Calendar.setup({ 
     45                            inputField  : 'since_date', 
     46                            button      : 'since_date-trigger', 
     47                            ifFormat    : '%d/%m/%Y', 
     48                            daFormat    : '%d/%m/%Y' 
     49                        }); 
     50 
     51                        Calendar.setup({ 
     52                            inputField  : 'before_date', 
     53                            button      : 'before_date-trigger', 
     54                            ifFormat    : '%d/%m/%Y', 
     55                            daFormat    : '%d/%m/%Y' 
     56                        }); 
     57 
     58                        Calendar.setup({ 
     59                            inputField  : 'on_date', 
     60                            button      : 'on_date-trigger', 
     61                            ifFormat    : '%d/%m/%Y', 
     62                            daFormat    : '%d/%m/%Y' 
     63                        }); 
    3964 
    4065                }        
     
    4469                                div_button_search.id = "div_button_search"; 
    4570                                div_button_search.style.position = "absolute"; 
    46                                 div_button_search.style.left = "10px"; 
     71                                div_button_search.style.marginLeft = "430px"; 
    4772                                div_button_search.style.top = "223px"; 
    48                                 div_button_search.style.width = "615px"; 
     73                                div_button_search.style.width = "350px"; 
    4974                                div_button_search.style.height = "25px"; 
    50                                 div_button_search.innerHTML = "<table border='0' width='50%' cellpadding='0' cellspacing='0' align='right'>"+ 
     75                                div_button_search.innerHTML = "<table style='width: 100%;' border='0' cellpadding='0' cellspacing='0' align='center'>"+ 
    5176                                                                                          "<tr>"+ 
    52                                                                                           "<td><input type='button' value=" + get_lang('Search') + " onclick='EsearchE.func_search()'></td>"+ 
    53                                                                                           "<td><input type='button' value=" + get_lang('Clean') + " onclick='EsearchE.func_clean()'></td>"+ 
    54                                                                                           "<td><input type='button' value=" + get_lang('Close') + " onclick='EsearchE.func_close(\"hidden\")'></td>"+ 
     77                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Search') + " onclick='EsearchE.func_search()'></td>"+ 
     78                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Clean') + " onclick='EsearchE.func_clean()'></td>"+ 
     79                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Close') + " onclick='EsearchE.func_close(\"hidden\")'></td>"+ 
    5580                                                                                          "</tr>"+ 
    5681                                                                                          "</table>"; 
     
    81106                form_sch.id  = "form_sch"; 
    82107 
    83                 form_sch.innerHTML =  '<fieldset style="width:266px; text-align:right; padding: 5px; position:absolute;">' 
     108                form_sch.innerHTML =  '<fieldset style="width:400px; text-align:right; padding: 5px; position:absolute;">' 
    84109                                                        + '     <legend>'+get_lang('Inform your search in the text fields')+'</legend>' 
    85110                                                        + '     <label>'+get_lang("From")+':</label>' 
    86                                                         + '     <input type="text" id="txt_de" size="19">' 
     111                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_de" size="39">' 
    87112                                                        + '     <br style="margin-bottom:15px"/>' 
    88113                                                        + '     <label>'+get_lang('To')+':</label>' 
    89                                                         + '     <input type="text" id="txt_para" size="19">' 
     114                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_para" size="39">' 
    90115                                                        + '     <br style="margin-bottom:15px"/>' 
    91116                                                        + '     <label>'+get_lang('Cc')+':</label>' 
    92                                                         + '     <input type="text" id="txt_cc" size="19">' 
     117                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_cc" size="39">' 
    93118                                                        + '     <br style="margin-bottom:15px"/>' 
    94119                                                        + '     <label>'+get_lang('Subject')+':</label>' 
    95                                                         + '     <input type="text" id="txt_ass" size="19">' 
     120                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_ass" size="39">' 
    96121                                                        + '     <br style="margin-bottom:15px"/>' 
    97122                                                        + '     <label>'+get_lang('Message body')+':</label>' 
    98                                                         + '     <input type="text" id="txt_body" size="19">' 
     123                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_body" size="39">' 
     124 
     125                                                        + '     <br style="margin-bottom:30px"/>' 
     126                                                        + '     <label>'+get_lang("Since Date")+':</label>' 
     127                                                        + '     <input style="margin-left: 6px;" type="text" id="since_date" size="8">' 
     128                                                        + '     <img id="since_date-trigger" src="/phpgwapi/templates/default/images/datepopup.gif" title="'+get_lang("Select Date")+'" style="cursor:pointer; cursor:hand;"/>' 
     129                                                        + '     <label style="margin-left: 20px;">'+get_lang('Before Date')+':</label>' 
     130                                                        + '     <input style="margin-left: 6px;" type="text" id="before_date" size="8">' 
     131                                                        + '     <img id="before_date-trigger" src="/phpgwapi/templates/default/images/datepopup.gif" title="'+get_lang("Select Date")+'" style="cursor:pointer; cursor:hand;"/>' 
     132                                                        + '     <br style="margin-bottom:15px"/>' 
     133 
     134                                                        + '     <label>'+get_lang('On Date')+':</label>' 
     135                                                        + '     <input style="margin-left: 6px;" type="text" id="on_date" size="8">' 
     136                                                        + '     <img style="margin-right: -8px" id="on_date-trigger" src="/phpgwapi/templates/default/images/datepopup.gif" title="'+get_lang("Select Date")+'" style="cursor:pointer; cursor:hand;"/>&nbsp;&nbsp;</spam>' 
     137                                                        + '     <br style="margin-bottom:30px"/>' 
     138 
     139                                                        + '     <label>'+get_lang('Flags')+':</label>' 
     140                                                        + '     <select style="width:15em; margin-left: 6px" name="flagged" id="flagged">' 
     141                                                        + '     <option value=""/>' 
     142                                                        + '     <option value="FLAGGED">'+ get_lang("Flagged") +'</option>' 
     143                                                        + '     <option value="UNFLAGGED">'+ get_lang("Unflagged") +'</option>' 
     144                                                        + '     </select>' 
     145                                                        + '     <br style="margin-bottom:15px"/>' 
     146                                                        + '     <select style="width:15em;" name="seen" id="seen">' 
     147                                                        + '     <option value=""/>' 
     148                                                        + '     <option value="SEEN">'+ get_lang("Seen") +'</option>' 
     149                                                        + '     <option value="UNSEEN">'+ get_lang("Unseen") +'</option>' 
     150                                                        + '     </select>' 
     151                                                        + '     <br style="margin-bottom:15px"/>' 
     152                                                        + '     <select style="width:15em;" name="answered" id="answered">' 
     153                                                        + '     <option value=""/>' 
     154                                                        + '     <option value="ANSWERED">'+ get_lang('Answered/Forwarded') +'</option>' 
     155                                                        + '     <option value="UNANSWERED">'+ get_lang('Unanswered/Unforwarded') +'</option>' 
     156                                                        + '     </select>' 
     157                                                        + '     <br style="margin-bottom:15px"/>' 
     158                                                        + '     <select style="width:15em;" name="recent" id="recent">' 
     159                                                        + '     <option value=""/>' 
     160                                                        + '     <option value="RECENT">'+ get_lang('Recent') +'</option>' 
     161                                                        + '     <option value="OLD">'+ get_lang('Old') +'</option>' 
     162                                                        + '     </select>' 
     163 
    99164                                                        + '     <br style="margin-bottom:60px"/>' 
    100165                                                        + '</fieldset>' 
    101                                                         + '<fieldset style="width:350px; padding: 5px; position:absolute; margin-left: 280px">' 
     166                                                        + '<fieldset style="width:350px; padding: 5px; position:absolute; margin-left: 414px">' 
    102167                                                        + '     <legend>'+get_lang('Search the messages in these folders')+'</legend>' 
    103168                                                        + '     <div id="folders" style="width:160px; height:150px;float:left;margin-bottom:10px;"></div>' 
     
    308373                } 
    309374                currentTab = border_id; 
     375                openTab.content_id[currentTab] = Element('content_id_search_' + numBox); 
    310376                openTab.type[currentTab] = 1; 
    311377                var table = document.createElement("TABLE"); 
     
    742808                                fields += "CC " + "<=>" + url_encode(Element("txt_cc").value) + "##"; 
    743809                        } 
     810                        if (trim(Element("since_date").value) != ""){ 
     811                            if (validate_date(Element("since_date").value)) 
     812                            { 
     813                                fields += "SINCE " + "<=>" + url_encode(Element("since_date").value) + "##"; 
     814                            } 
     815                            else 
     816                                { 
     817                                    alert(get_lang('Invalid date on field %1'), get_lang('Since Date')); 
     818                                    return false; 
     819                                } 
     820                        } 
     821                        if (trim(Element("before_date").value) != ""){ 
     822                            if (validate_date(Element("before_date").value)) 
     823                            { 
     824                                fields += "BEFORE " + "<=>" + url_encode(Element("before_date").value) + "##"; 
     825                            } 
     826                            else 
     827                                { 
     828                                    alert(get_lang('Invalid date on field %1'), get_lang('Before Date')); 
     829                                    return false; 
     830                                } 
     831                        } 
     832                        if(trim(Element("on_date").value) != ""){ 
     833                            if (validate_date(Element("on_date").value)) 
     834                            { 
     835                                fields += "ON " + "<=>" + url_encode(Element("on_date").value) + "##"; 
     836                            } 
     837                            else 
     838                                { 
     839                                    alert(get_lang('Invalid date on field %1'), get_lang('On Date')); 
     840                                    return false; 
     841                                } 
     842 
     843                        } 
     844                        if(trim(Element("flagged").options[Element("flagged").selectedIndex].value) != ""){ 
     845                            if (Element("flagged").options[Element("flagged").selectedIndex].value == "FLAGGED"){ 
     846                                fields += "FLAGGED##"; 
     847                            } 
     848                            else { 
     849                                fields += "UNFLAGGED##"; 
     850                            } 
     851                        } 
     852                        if(trim(Element("seen").options[Element("seen").selectedIndex].value) != ""){ 
     853                            if (Element("seen").options[Element("seen").selectedIndex].value == "SEEN"){ 
     854                                fields += "SEEN##"; 
     855                            } 
     856                            else { 
     857                                fields += "UNSEEN##"; 
     858                            } 
     859                        } 
     860                        if(trim(Element("answered").options[Element("answered").selectedIndex].value) != ""){ 
     861                            if (Element("answered").options[Element("answered").selectedIndex].value == "ANSWERED"){ 
     862                                fields += "ANSWERED##"; 
     863                            } 
     864                            else { 
     865                                fields += "UNANSWERED##"; 
     866                            } 
     867                        } 
     868                        if(trim(Element("recent").options[Element("recent").selectedIndex].value) != ""){ 
     869                            if (Element("answered").options[Element("answered").selectedIndex].value == "RECENT"){ 
     870                                fields += "RECENT##"; 
     871                            } 
     872                            else { 
     873                                fields += "OLD##"; 
     874                            } 
     875                        } 
    744876                        if(value) { 
    745877                                fields = "##ALL " +  "<=>" +url_encode(value) + "##"; 
     
    830962        searchE.prototype.func_clean = function(){ 
    831963                // Limpa os campos; 
    832                 for(var i=0; i < this.fields.length; i++){ 
    833                         if(Element("txt" + this.fields[i]) != null){Element("txt" + this.fields[i]).value = "";} 
    834                 } 
     964            for(var i=0; i < this.txtfields.length; i++){ 
     965                    if(Element(this.txtfields[i]) != null){Element(this.txtfields[i]).value = "";} 
     966            } 
     967 
     968            for(i = 0; i < this.selectFields.length; i++) 
     969            { 
     970                if (Element(this.selectFields[i])) 
     971                { 
     972                    Element(this.selectFields[i]).selectedIndex = 0; 
     973                } 
     974            } 
    835975            if(Element("check_all_msg") != null){Element("check_all_msg").checked = false;} 
    836976 
     
    850990        searchE.prototype.showWindow = function(div){ 
    851991                if(!this.searchW[div.id]) { 
    852                         div.style.width = "660px"; 
    853                         div.style.height = "255px"; 
     992                        div.style.width = "804px"; 
     993                        div.style.height = "440px"; 
    854994                        div.style.visibility = "hidden"; 
    855995                        div.style.position = "absolute"; 
  • trunk/expressoMail1_2/setup/phpgw_en.lang

    r1610 r1622  
    1919and save in     expressoMail1_2 en      and save in 
    2020Answered        expressoMail1_2 en      Answered 
     21Answered/Forwarded      expressoMail1_2 en      Answered/Forwarded 
    2122l_answered      expressoMail1_2 en      Answered 
    2223<b>Answer messages from:</b> %1 - <b>Status:</b><font color='red'> %2</font> - <b>message:</b> %3</a>   expressoMail1_2 en      <b>Answer messages from:</b> %1 - <b>Status:</b><font color='red'> %2</font> - <b>message:</b> %3</a> 
     
    2728Back    expressoMail1_2 en      Back 
    2829BCC     expressoMail1_2 en      BCC 
     30Before Date     expressoMail1_2 en      Before Date 
    2931Big     expressoMail1_2 en      Big 
    3032Bold    expressoMail1_2 en      Bold 
     
    123125First   expressoMail1_2 en      First 
    124126First Name      expressoMail1_2 en      First Name 
     127Flagged expressoMail1_2 en      Flagged 
     128Flags   expressoMail1_2 en      Flags 
    125129Folder  expressoMail1_2 en      Folder 
    126130Folder Management       expressoMail1_2 en      Folder Management 
     
    195199Mark as expressoMail1_2 en      Mark as 
    196200Mark as Spam    expressoMail1_2 en      Mark as Spam 
    197 What is the maximum number of messages per page?        expressoMail1_2 en      What is the maximum number of messages per page? 
    198 What is the maximum number of results in an e-mail search?      expressoMail1_2 en      What is the maximum number of results in an e-mail search? 
    199 What is the minimum number of characters in searching contacts? expressoMail1_2 en      What is the minimum number of characters in searching contacts? 
    200201Max size        expressoMail1_2 en      Max size 
    201202Medium  expressoMail1_2 en      Medium 
     
    240241No Subject      expressoMail1_2 en      No Subject 
    241242Not Spam        expressoMail1_2 en      Not Spam 
     243Old     expressoMail1_2 en      Old 
     244On Date expressoMail1_2 en      On Date 
    242245Open chat window        expressoMail1_2 en      Open chat window 
    243246Open in New Window      expressoMail1_2 en      Open in New Window 
     
    258261Public Lists    expressoMail1_2 en      Public Lists 
    259262Read    expressoMail1_2 en      Read 
     263Recent  expressoMail1_2 en      Recent 
    260264Redo    expressoMail1_2 en      Redo 
    261265Refresh expressoMail1_2 en      Refresh 
     
    325329Signed message  expressoMail1_2 en      Signed message 
    326330Simple Text     expressoMail1_2 en      Simple Text 
     331Since Date      expressoMail1_2 en      Since Date 
    327332Size    expressoMail1_2 en      Size 
    328333Small   expressoMail1_2 en      Small 
     
    362367Trash Folder name       admin   en      Trash Folder name 
    363368Type without spaces, dots or special characters!        expressoMail1_2 en      Type without spaces, dots or special characters! 
     369Unanswered/Unforwarded  expressoMail1_2 en      Unanswered/Unforwarded 
    364370underlined      expressoMail1_2 en      underlined 
    365371underline       expressoMail1_2 en      underline 
    366372Undo    expressoMail1_2 en      Undo 
     373Unflagged       expressoMail1_2 en      Unflagged 
    367374Unseen  expressoMail1_2 en      Unseen 
    368375l_unseen        expressoMail1_2 en      Unseen 
     
    383390 was succefully removed expressoMail1_2 en       was succefully removed 
    384391What is the height of the lines in the list of messages?        expressoMail1_2 en      What is the height of the lines in the list of messages? 
     392What is the maximum number of messages per page?        expressoMail1_2 en      What is the maximum number of messages per page? 
     393What is the maximum number of results in an e-mail search?      expressoMail1_2 en      What is the maximum number of results in an e-mail search? 
     394What is the minimum number of characters in searching contacts? expressoMail1_2 en      What is the minimum number of characters in searching contacts? 
    385395Who     expressoMail1_2 en      Who 
    386396With all        expressoMail1_2 en      With all 
     
    403413Your message was sent and save. expressoMail1_2 en      Your message was sent and save. 
    404414Your message was sent.  expressoMail1_2 en      Your message was sent. 
    405 Your search argument must be longer than 4 characters.  expressoMail1_2 en      Your search argument must be longer than 4 characters. 
     415Your search argument must be longer than %1 characters. expressoMail1_2 en      Your search argument must be longer than %1 characters. 
    406416your session could not be verified.     expressoMail1_2 en      your session could not be verified. 
    407417Your Trash folder was empty.    expressoMail1_2 en      Your Trash folder was empty. 
  • trunk/phpgwapi/js/jscalendar/calendar.js

    r754 r1622  
    749749                div.style.position = "absolute"; 
    750750                div.style.display = "none"; 
     751                //TODO: tornar zIndex uma das opções de inicialização 
     752                div.style.zIndex = "100000"; // hardcoded, 
    751753        } 
    752754        div.appendChild(table); 
     
    15631565                var EY2 = el.offsetHeight + EY1; 
    15641566 
     1567                var calendarDivs = getCalendarDivs(); 
     1568 
    15651569                for (var k = tags.length; k > 0; ) { 
    1566                         var ar = document.getElementsByTagName(tags[--k]); 
     1570                    for (var l = 0; l < calendarDivs.length; l++) 
     1571                    { 
     1572                        //var ar = document.getElementsByTagName(tags[--k]); 
     1573                        var ar = calendarDivs[l].getElementsByTagName(tags[--k]); 
    15671574                        var cc = null; 
    15681575 
     
    15881595                                } 
    15891596                        } 
     1597                    } 
    15901598                } 
    15911599        }; 
     
    17761784// END: DATE OBJECT PATCHES 
    17771785 
     1786function getCalendarDivs(){ 
     1787    var divs = document.getElementsByTagName('div'); 
     1788    var result = new Array(); 
     1789    for (var i = 0; i < divs.length; i++){ 
     1790        if (divs[i].className == 'calendar') 
     1791        { 
     1792            result.push(divs[i]); 
     1793        } 
     1794    } 
     1795    return result; 
     1796} 
     1797 
    17781798// global object that remembers the calendar 
    17791799window.calendar = null; 
Note: See TracChangeset for help on using the changeset viewer.