source: branches/2.2/expressoMail1_2/js/search.js @ 3223

Revision 3223, 37.6 KB checked in by amuller, 14 years ago (diff)

Ticket #428 - Implementação da paginação da busca

  • Property svn:eol-style set to native
  • Property svn:executable set to *
RevLine 
[2]1/**************************************************************************\
2 Início
3\**************************************************************************/
[832]4        function searchE()
5        {
[2]6                this.searchW   = new Array;
[3223]7                this.condition = "";
8                this.sort_type = "";
9                this.page = 0;
[2]10                this.name_box_search = "";
11                this.all_boxes = new Array;
12                this.type = "";
[1622]13                this.txtfields = new Array("txt_ass","txt_de","txt_body","txt_para","txt_cc","txt_cco",
14                                        "since_date", "before_date", "on_date");
15                this.selectFields = new Array("flagged", "seen", "answered", "recent");
[2]16        }
17       
18        //Monta os forms dentro da janela;
19        searchE.prototype.showForms = function(value){
20                // Principal
21                if(!Element("window_search")) {
22                        var form_search = document.createElement("DIV");
23                        form_search.style.visibility = 'hidden';
24                        form_search.style.top = '0px';
25                        form_search.style.left = '0px';
26                        form_search.id = "window_search";
27                        document.body.appendChild(form_search);                 
28                }
29               
30                // Pesquisa
31                if(!Element("div_form_search")){
32                        var div_form_search = document.createElement("DIV");
33                        div_form_search.id = "div_form_search";
34                        div_form_search.style.position = "absolute";
35                        div_form_search.style.left = "10px";
36                        div_form_search.style.top  = "10px";
[1622]37                        div_form_search.style.width = "784px";
38                        div_form_search.style.height = "418px";
[2]39                        div_form_search.style.overflow = "hidden";
40                        div_form_search.innerHTML = "";
41                        var call_form_search = EsearchE.mount_form();
42                        div_form_search.appendChild(call_form_search);
[156]43                        form_search.appendChild(div_form_search);
[2]44
[1622]45                        Calendar._TT['WEEKEND'] = '0,6'; // hack
46                        Calendar._TT['DAY_FIRST'] = 'Mostrar %s primeiro';
47                        Calendar.setup({
48                            inputField  : 'since_date',
49                            button      : 'since_date-trigger',
50                            ifFormat    : '%d/%m/%Y',
51                            daFormat    : '%d/%m/%Y'
52                        });
53
54                        Calendar.setup({
55                            inputField  : 'before_date',
56                            button      : 'before_date-trigger',
57                            ifFormat    : '%d/%m/%Y',
58                            daFormat    : '%d/%m/%Y'
59                        });
60
61                        Calendar.setup({
62                            inputField  : 'on_date',
63                            button      : 'on_date-trigger',
64                            ifFormat    : '%d/%m/%Y',
65                            daFormat    : '%d/%m/%Y'
66                        });
67
[2]68                }       
69               
70                if(!Element("div_button_search")){
71                        var div_button_search    = document.createElement("DIV");
72                                div_button_search.id = "div_button_search";
73                                div_button_search.style.position = "absolute";
[1622]74                                div_button_search.style.marginLeft = "430px";
[2]75                                div_button_search.style.top = "223px";
[1622]76                                div_button_search.style.width = "350px";
[2]77                                div_button_search.style.height = "25px";
[1622]78                                div_button_search.innerHTML = "<table style='width: 100%;' border='0' cellpadding='0' cellspacing='0' align='center'>"+
[2]79                                                                                          "<tr>"+
[1622]80                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Search') + " onclick='EsearchE.func_search()'></td>"+
81                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Clean') + " onclick='EsearchE.func_clean()'></td>"+
82                                                                                          "<td width='33%' align='center'><input type='button' value=" + get_lang('Close') + " onclick='EsearchE.func_close(\"hidden\")'></td>"+
[2]83                                                                                          "</tr>"+
84                                                                                          "</table>";
85                                form_search.appendChild(div_button_search);
86                }
87               
88                if(!Element("table_layer")){
[67]89                        var table_layer    = "";
[2]90                }
91               
[67]92                if(value == "")
[69]93                        EsearchE.showWindow(Element("window_search"));
94       
[2]95                // Cria as caixas postais;
96                EsearchE.mount_folders();
97
98                if(value){
99                        Element("check_all_msg").checked = true;
100                        EsearchE.all_mailboxes();
101                        EsearchE.func_search(value);
102                }
103
104        }
105       
106        //Form
107        searchE.prototype.mount_form = function(value){
108                var form_sch = document.createElement("FORM");
109                form_sch.id  = "form_sch";
[1415]110
[1622]111                form_sch.innerHTML =  '<fieldset style="width:400px; text-align:right; padding: 5px; position:absolute;">'
[1415]112                                                        + '     <legend>'+get_lang('Inform your search in the text fields')+'</legend>'
113                                                        + '     <label>'+get_lang("From")+':</label>'
[1622]114                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_de" size="39">'
[1415]115                                                        + '     <br style="margin-bottom:15px"/>'
116                                                        + '     <label>'+get_lang('To')+':</label>'
[1622]117                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_para" size="39">'
[1415]118                                                        + '     <br style="margin-bottom:15px"/>'
119                                                        + '     <label>'+get_lang('Cc')+':</label>'
[1622]120                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_cc" size="39">'
[1415]121                                                        + '     <br style="margin-bottom:15px"/>'
122                                                        + '     <label>'+get_lang('Subject')+':</label>'
[1622]123                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_ass" size="39">'
[1415]124                                                        + '     <br style="margin-bottom:15px"/>'
125                                                        + '     <label>'+get_lang('Message body')+':</label>'
[1622]126                                                        + '     <input style="margin-left: 6px;" type="text" id="txt_body" size="39">'
127
128                                                        + '     <br style="margin-bottom:30px"/>'
129                                                        + '     <label>'+get_lang("Since Date")+':</label>'
130                                                        + '     <input style="margin-left: 6px;" type="text" id="since_date" size="8">'
131                                                        + '     <img id="since_date-trigger" src="/phpgwapi/templates/default/images/datepopup.gif" title="'+get_lang("Select Date")+'" style="cursor:pointer; cursor:hand;"/>'
132                                                        + '     <label style="margin-left: 20px;">'+get_lang('Before Date')+':</label>'
133                                                        + '     <input style="margin-left: 6px;" type="text" id="before_date" size="8">'
134                                                        + '     <img id="before_date-trigger" src="/phpgwapi/templates/default/images/datepopup.gif" title="'+get_lang("Select Date")+'" style="cursor:pointer; cursor:hand;"/>'
135                                                        + '     <br style="margin-bottom:15px"/>'
136
137                                                        + '     <label>'+get_lang('On Date')+':</label>'
138                                                        + '     <input style="margin-left: 6px;" type="text" id="on_date" size="8">'
139                                                        + '     <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>'
140                                                        + '     <br style="margin-bottom:30px"/>'
141
142                                                        + '     <label>'+get_lang('Flags')+':</label>'
143                                                        + '     <select style="width:15em; margin-left: 6px" name="flagged" id="flagged">'
144                                                        + '     <option value=""/>'
145                                                        + '     <option value="FLAGGED">'+ get_lang("Flagged") +'</option>'
146                                                        + '     <option value="UNFLAGGED">'+ get_lang("Unflagged") +'</option>'
147                                                        + '     </select>'
148                                                        + '     <br style="margin-bottom:15px"/>'
149                                                        + '     <select style="width:15em;" name="seen" id="seen">'
150                                                        + '     <option value=""/>'
151                                                        + '     <option value="SEEN">'+ get_lang("Seen") +'</option>'
152                                                        + '     <option value="UNSEEN">'+ get_lang("Unseen") +'</option>'
153                                                        + '     </select>'
154                                                        + '     <br style="margin-bottom:15px"/>'
155                                                        + '     <select style="width:15em;" name="answered" id="answered">'
156                                                        + '     <option value=""/>'
157                                                        + '     <option value="ANSWERED">'+ get_lang('Answered/Forwarded') +'</option>'
158                                                        + '     <option value="UNANSWERED">'+ get_lang('Unanswered/Unforwarded') +'</option>'
159                                                        + '     </select>'
160                                                        + '     <br style="margin-bottom:15px"/>'
161                                                        + '     <select style="width:15em;" name="recent" id="recent">'
162                                                        + '     <option value=""/>'
163                                                        + '     <option value="RECENT">'+ get_lang('Recent') +'</option>'
164                                                        + '     <option value="OLD">'+ get_lang('Old') +'</option>'
165                                                        + '     </select>'
166
[1415]167                                                        + '     <br style="margin-bottom:60px"/>'
168                                                        + '</fieldset>'
[1622]169                                                        + '<fieldset style="width:350px; padding: 5px; position:absolute; margin-left: 414px">'
[1415]170                                                        + '     <legend>'+get_lang('Search the messages in these folders')+'</legend>'
171                                                        + '     <div id="folders" style="width:160px; height:150px;float:left;margin-bottom:10px;"></div>'
172                                                        + '     <div style="float:left;height:100px;padding-top:50px;margin: 0 3px;">'
173                                                        + '             <input type="button" id="incluir" name="incluir" value=">>" onclick="EsearchE.add_mailboxes()">'
174                                                        + '             <br style="margin-bottom:15px">'
175                                                        + '             <input type="button" id="excluir" name="excluir" value="<<" onclick="EsearchE.del_mailboxes()">'
176                                                        + '     </div>'
177                                                        + ' <div style="float:left;">' 
178                                                        + '      <select multiple id="sel_search_nm_box1" name="sel_search_nm_box1" style="width:140px;height:150px;"></select>'
179                                                        + ' </div>'
180                                                        + '     <br clear="both">'
181                                                        + '     <input type="checkBox" id="check_all_msg" name="check_all_msg" onclick="EsearchE.all_mailboxes()">'
182                                                        + '     <b>'+get_lang('In all the folders')+'</b>'
183                                                        + '</fieldset>';
184               
[2]185                return form_sch;
186        }
187
188        // Pastas;
189        searchE.prototype.mount_folders = function(){
190                connector.loadScript("TreeS");
191
[69]192                if( Element("div_folders_search") == null){
[2]193                        var div_folders = document.createElement("DIV");
194                                div_folders.id = "div_folders_search";
195                                div_folders.style.width = "155px";
196                                div_folders.style.height = "152px";
197                                div_folders.style.borderStyle = "outset";
198                                div_folders.style.borderColor = "black";
199                                div_folders.style.borderWidth = "1px";
200                                div_folders.style.background  = "#F7F7F7";
201                                div_folders.style.overflow = "auto";
202                                div_folders.innerHTML = "";
[69]203                                var dest_div = Element("folders");
[2]204                                dest_div.appendChild(div_folders);
205                }               
206                ttree.make_tree(folders,"div_folders_search","_folders_tree_search","","","","");
207        }
[3223]208        function openpage(data){
209                delete_border(currentTab,false);
210                EsearchE.mount_result(data);
211        }
[156]212
[3223]213        searchE.prototype.show_paging = function(size){
214                if (size > preferences.max_email_per_page)
215                {
216                        if (Element("span_paging"+currentTab)){
217                                Element("span_paging"+currentTab).style.display = '';
218                                Element("span_paging"+currentTab).innerHTML = "";
219                        }
220                        else{
221                                var span_paging = document.createElement('SPAN');
222                                span_paging.id = "span_paging"+currentTab;
223                                Element("div_menu_c3").appendChild(span_paging);
224                        }
225                        if(this.page > 1){
226                                var fLink = document.createElement('A');
227                                fLink.innerHTML = '&lt; &lt;';
228                                fLink.href = 'javascript:EsearchE.page=0;'+
229                                        'cExecute("$this.imap_functions.search_msg",openpage,'+
230                                        '"condition='+this.condition+'&sort_type='+this.sort_type+'&page=0");';
231                                Element("span_paging"+currentTab).appendChild(fLink);
232                        }
233                        if(this.page > 2){
234                                var prevLink = document.createElement('A');
235                                prevLink.innerHTML = '...';
236                                prevLink.href = 'javascript:EsearchE.page='+
237                                        (this.page-1)+';'+
238                                        'cExecute("$this.imap_functions.search_msg",openpage,'+
239                                        '"condition='+this.condition+'&sort_type='+this.sort_type+'&page='+(this.page-1)+'");';
240                                Element("span_paging"+currentTab).appendChild(prevLink);
241                        }
242                        for (var i=(this.page > 2 ? this.page-2 : 0); i <= parseInt(this.page)+4; i+= 1){
243                                if (i*preferences.max_email_per_page > size)
244                                        break;
245                                if (this.page == i)
246                                        Element("span_paging"+currentTab).innerHTML += "<b> "+(this.page+1)+" </b>";
247                                else
248                                {
249                                        var pageLink = document.createElement('A');
250                                        pageLink.innerHTML = (i+1)+" ";
251                                        pageLink.href = 'javascript:EsearchE.page='+i+';'+
252                                                'cExecute("$this.imap_functions.search_msg",openpage,'+
253                                                '"condition='+this.condition+'&sort_type='+this.sort_type+'&page='+this.page+'");';
254                                        Element("span_paging"+currentTab).appendChild(pageLink);
255                                }
256                        }
257                        if (size > preferences.max_email_per_page)
258                        {
259                                var lLink = document.createElement('A');
260                                lLink.innerHTML = '&gt; &gt;';
261                                lLink.href = 'javascript:EsearchE.page='+parseInt(size/preferences.max_email_per_page)+';'+
262                                        'cExecute("$this.imap_functions.search_msg",openpage,'+
263                                        '"condition='+this.condition+'&sort_type='+this.sort_type+'&page=0");';
264                                Element("span_paging"+currentTab).appendChild(lLink);
265                        }
266                }
267
268        }
[832]269        // Form resultado
[3223]270        searchE.prototype.mount_result = function(Rdata,sort_type){
271                var data = Rdata['data'];
[3018]272                if (data == undefined)
273                        return;
[3223]274                if(this.page == 0)
275                        write_msg(Rdata['num_msgs']+" "+get_lang("results found"));
[2]276                var cont = parseInt(0);
[3018]277
[3223]278                if (typeof(sort_type) != 'undefined')
279                        this.sort_type = sort_type;
280                else
281                        sort_type = this.sort_type;
[3018]282
[320]283                numBox++;
284                var border_id = create_border(get_lang("Search Results"), "search_" + numBox);
[1604]285                if (!border_id)
286                {
287                    return;
288                }
[832]289                currentTab = border_id;
[1622]290                openTab.content_id[currentTab] = Element('content_id_search_' + numBox);
[832]291                openTab.type[currentTab] = 1;
[3223]292
[2]293                var table = document.createElement("TABLE");
[320]294                table.id    = "table_resultsearch_" + numBox;
[271]295                table.frame = "void";
296                table.rules = "rows";
297                table.cellPadding = "0";
298                table.cellSpacing = "0";
[667]299                table.className = "table_box";
[72]300
[2]301                var tbody = document.createElement("TBODY");
[832]302                tbody.id    = "tbody_box_" + numBox;
[3018]303                for( var i=0; i < data.length; i++){
[2]304                        var tr = document.createElement("TR");
[645]305                        tr.style.height = preferences.line_height;
[3223]306                        var aux = data[i];
[3018]307                        var mailbox = aux.boxname;
308                        var uid_msg = aux.uid;
309                        var subject = aux.subject;
[1969]310                        tr.id = uid_msg+"_s"+global_search;
[1339]311
312                        // Keep the two lines together please
313                        tr.setAttribute('name',mailbox);
314                        tr.name = mailbox;
315
[3018]316                        if (aux.flag.match("U"))
[976]317                                add_className(tr,'tr_msg_unread');
318                        add_className(tr, i%2 != 0 ? 'tr_msg_read2' : 'tr_msg_read');
[1000]319            var _onclick = function () { proxy_mensagens.get_msg(this.parentNode.id,url_encode(this.parentNode.getAttribute('name')),false,show_msg);};
320            for(var j=0 ; j < 10 ; j++)
[645]321                        {
[832]322                                var td = document.createElement("TD");
[645]323                                if (j == 0)
324                                {
325                                        td.style.width = "1%";
326                                        var td1 = '<input type="checkbox" id="check_box_message_'+uid_msg+'"></input>';
[976]327                                       
[645]328                                }
329                                if (j == 1)
330                                {
331                                        td.style.width = "2%";
[3018]332                                        if (aux.flag.match('T'))
[832]333                                        {
[3018]334                                                attachNum = parseInt(aux.flag.substr(aux.flag.indexOf('T')+1));
[832]335                                                td1 = "<img src='templates/"+template+"/images/clip.gif' title='"+attachNum +' '+ get_lang('attachment(s)')+"'>";
336                                        }
337                                        else
338                                                td1 = '';
[645]339                                }
340                                if (j == 2)
341                                {
342                                        td.style.width = "1%";
343                                        td.id = "td_message_answered_"+uid_msg;
[3018]344                                        if (aux.flag.match('X'))
[832]345                                                td1 = '<img src=templates/'+template+'/images/forwarded.gif title=Forwarded>';
346                                        else
[3018]347                                                if (aux.flag.match('A'))
[832]348                                                        td1 = '<img src=templates/'+template+'/images/answered.gif>';
349                                                else
350                                                        td1 = '';
[645]351                                }
352                                if (j == 3)
353                                {
354                                        td.style.width = "1%";
355                                        td.id = "td_message_important_"+uid_msg;
[3018]356                                        if (aux.flag.match("F"))
[832]357                                        {
[976]358                                                add_className(tr, 'flagged_msg');
359                                                td.style.background = "url(templates/"+template+"/images/important.gif) no-repeat center";
[832]360                                        }
361                                        else
362                                                td1 = '';
[645]363                                }
364                                if (j == 4)
365                                {
366                                        td.style.width = "1%";
367                                        td.id = "td_message_sent_"+uid_msg;
368                                        td1 = '';
369                                }
370                                if (j == 5)
371                                {
[1339]372                                        td.style.width = "14%";
[832]373                                        td.onclick = _onclick;
[3018]374                                        var nm_box = aux.boxname.split(cyrus_delimiter);
[645]375                                        var td1 = nm_box.pop();
376                                        td.setAttribute("NoWrap","true");
377                                        td.style.overflow = "hidden";
378                                        td.style.color = "#42795b";
379                                        td.style.fontWeight = "bold";
[1631]380                                       
381                                        var td1  = get_lang(td1).substr(get_lang(td1).length-1) == "*"?td1:get_lang(td1);
[1747]382                                        if ((tmp = translatedFolders.get(td1)))
383                                        {
384                                            td1 = tmp;
385                                        }
[1339]386
[832]387                                        if(proxy_mensagens.is_local_folder(td1)) {
388                                                var td1 = this.aux_local_folder_display(td1);
[689]389                                        }
[645]390                                }
391                                if( j == 6)
392                                {
[3018]393                                        if (aux.from.length > 29)
394                                                aux.from = aux.from.substr(0,29) + "...";
[832]395                                        td.style.width = "20%";
396                                        td.onclick = _onclick;
397                                        td.setAttribute("NoWrap","true");
398                                        td.style.overflow = "hidden";
[3018]399                                        var td1  =  '<div style="width:100%;overflow:hidden">'+aux.from+"</div>";
[645]400                                }
401                                if( j == 7)
402                                {
403                                        var subject_encode = url_encode(subject);
404                                        if (! subject_encode)
[3018]405                                                aux.subject = get_lang("no subject") + "...";
406                                        if (aux.subject.length > 70)
407                                                aux.subject = aux.subject.substr(0,70) + "...";
[832]408                                        td.style.width = "35%";
409                                        td.onclick = _onclick;
410                                        td.setAttribute("NoWrap","true");
411                                        td.style.overflow = "hidden";
[3018]412                                        var td1  = aux.subject;
[67]413
[2]414                                }
[645]415                                if( j == 8)
416                                {
[832]417                                        td.style.width = "15%";
[645]418                                        td.align = "center";
[832]419                                        td.onclick = _onclick;
[3018]420                                        var _dat = new Date(aux.udate*1000);
421                                        var td1 = _dat.getDate()+"/"+(_dat.getMonth()+1)+"/"+_dat.getFullYear();
[645]422                                }
423                                if( j == 9)
424                                {
425                                        td.style.width = "10%";
426                                        td.align = "center";
[832]427                                        td.onclick = _onclick;
[3018]428                                        var td1  = borkb(aux.size);
[645]429                                }
430                                if (j == 10)
431                                {
[3018]432                                        if (aux.flag.match("U"))
[976]433                                                add_className(tr, 'tr_msg_unread');
[3018]434                                        if (aux.flag.match("F"))
[976]435                                                add_className(tr, 'flagged_msg');
[645]436                                        var td1 = '';
437                                }
438                                td.innerHTML = td1;
439                                tr.appendChild(td);
[2]440                        }
[569]441                        aux.splice(0,(aux.length));
[271]442
[1339]443                _dragArea.makeDragged(tr, uid_msg, subject, true, mailbox);
[271]444                tbody.appendChild(tr);
[2]445                }
[1969]446                global_search++; //Tabs from search must not have the same id on its tr's
447               
[2]448                table.appendChild(tbody);
[832]449
450        var content_search =  Element('content_id_search_' + numBox);
[163]451        var div_scroll_result = document.createElement("DIV");
[320]452        div_scroll_result.id = "divScrollMain_"+numBox;
[163]453        div_scroll_result.style.overflow = "auto";
454       
[67]455                if(is_ie)
[72]456                        Element("border_table").width = "99.5%";
[67]457               
[832]458                // Put header
[67]459                var table_element = document.createElement("TABLE");
460                var tbody_element = document.createElement("TBODY");
461                table_element.setAttribute("id", "table_message_header_box");
462                table_element.className = "table_message_header_box";
463                tr_element = document.createElement("TR");
464                tr_element.className = "message_header";
[156]465                td_element0 = document.createElement("TD");
[1339]466                td_element0.setAttribute("width", "1%");
[156]467                chk_box_element = document.createElement("INPUT");
468                chk_box_element.id  = "chk_box_select_all_messages";
469                chk_box_element.setAttribute("type", "checkbox");
470                chk_box_element.className = "checkbox";
[163]471                chk_box_element.onclick = function(){select_all_search_messages(this.checked,content_search.id);};
[156]472                chk_box_element.onmouseover = function () {this.title=get_lang('Select all messages.')};
473                chk_box_element.onkeydown = function (e){
474                        if (is_ie)
475                        {
476                                if ((window.event.keyCode) == 46)
[832]477                                        delete_msgs(current_folder,'selected','null');
[156]478                        }
479                        else
480                        {
481                                if ((e.keyCode) == 46)
[832]482                                        delete_msgs(current_folder,'selected','null');
[156]483                        }
484                };
485               
486                td_element0.appendChild(chk_box_element);
[67]487                td_element1 = document.createElement("TD");
[163]488                td_element1.setAttribute("width", "20%");
[67]489                td_element1.align = "left";
[832]490                if (sort_type == 'SORTBOX')
491                {
[3223]492                        td_element1.onclick = function () {
493                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTBOX_REVERSE'); };
494                                var args   = "$this.imap_functions.search_msg";
495                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTBOX_REVERSE";
496                                cExecute(args,handler,params);
497                        };
[832]498                        td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
499                }
500                else
501                {
[3223]502                        td_element1.onclick = function () {
503                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTBOX'); };
504                                var args   = "$this.imap_functions.search_msg";
505                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTBOX";
506                                cExecute(args,handler,params);
507                        };
[832]508                        if  (sort_type == 'SORTBOX_REVERSE')
509                                td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
510                        else
511                                td_element1.innerHTML = get_lang("Folder");
512                }
[67]513                td_element2 = document.createElement("TD");
[73]514                td_element2.setAttribute("width", "20%");
[67]515                td_element2.align = "left";
[832]516                if (sort_type == 'SORTWHO')
517                {
[3223]518                        td_element2.onclick = function () {
519                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTWHO_REVERSE'); };
520                                var args   = "$this.imap_functions.search_msg";
521                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTWHO_REVERSE";
522                                cExecute(args,handler,params);
523                        };
[832]524                        td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
525                }
526                else
527                {
[3223]528                        td_element2.onclick = function () {
529                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTWHO'); };
530                                var args   = "$this.imap_functions.search_msg";
531                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTWHO";
532                                cExecute(args,handler,params);
533                        };
[832]534                        if  (sort_type == 'SORTWHO_REVERSE')
535                                td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
536                        else
537                                td_element2.innerHTML = get_lang("who");
538                }
[67]539                td_element3 = document.createElement("TD");
[645]540                td_element3.setAttribute("width", "35%");
[67]541                td_element3.align = "left";
[832]542                if (sort_type == 'SORTSUBJECT')
543                {
[3223]544                        td_element3.onclick = function () {
545                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSUBJECT_REVERSE'); };
546                                var args   = "$this.imap_functions.search_msg";
547                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSUBJECT_REVERSE";
548                                cExecute(args,handler,params);
549                        };
[832]550                        td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
551                }
552                else
553                {
[3223]554                        td_element3.onclick = function () {
555                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSUBJECT'); };
556                                var args   = "$this.imap_functions.search_msg";
557                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSUBJECT";
558                                cExecute(args,handler,params);
559                        };
[832]560                        if  (sort_type == 'SORTSUBJECT_REVERSE')
561                                td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
562                        else
563                                td_element3.innerHTML = get_lang("subject");
564                }
[67]565                td_element4 = document.createElement("TD");
[645]566                td_element4.setAttribute("width", "15%");
[67]567                td_element4.align = "center";
[832]568                if (sort_type == 'SORTDATE')
569                {
[3223]570                        td_element4.onclick = function () {
571                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTDATE_REVERSE'); };
572                                var args   = "$this.imap_functions.search_msg";
573                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTDATE_REVERSE";
574                                cExecute(args,handler,params);
575                        };
[832]576                        td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
577                }
578                else
579                {
[3223]580                        td_element4.onclick = function () {
581                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTDATE'); };
582                                var args   = "$this.imap_functions.search_msg";
583                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTDATE";
584                                cExecute(args,handler,params);
585                        };
[832]586                        if  (sort_type == 'SORTDATE_REVERSE')
587                                td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
588                        else
589                                td_element4.innerHTML = get_lang("Date");
590                }
[67]591                td_element5 = document.createElement("TD");
[645]592                td_element5.setAttribute("width", "10%");
[72]593                td_element5.align = "center";
[832]594                if (sort_type == 'SORTSIZE')
595                {
[3223]596                        td_element5.onclick = function () {
597                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSIZE_REVERSE'); };
598                                var args   = "$this.imap_functions.search_msg";
599                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSIZE_REVERSE";
600                                cExecute(args,handler,params);
601                        };
[832]602                        td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>";
603                }
604                else
605                {
[3223]606                        td_element5.onclick = function () {
607                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSIZE'); };
608                                var args   = "$this.imap_functions.search_msg";
609                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSIZE";
610                                cExecute(args,handler,params);
611                        };
[832]612                        if  (sort_type == 'SORTSIZE_REVERSE')
613                                td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>";
614                        else
615                                td_element5.innerHTML = get_lang("Size");
616                }
[156]617                tr_element.appendChild(td_element0);
[67]618                tr_element.appendChild(td_element1);
619                tr_element.appendChild(td_element2);
620                tr_element.appendChild(td_element3);
621                tr_element.appendChild(td_element4);
622                tr_element.appendChild(td_element5);
623                tbody_element.appendChild(tr_element);
624                table_element.appendChild(tbody_element);
[163]625                content_search.appendChild(table_element);
[1121]626                /*end of "put header"*/
627               
628                if (!expresso_offline) {
[1294]629/*                      var span_options = document.createElement("SPAN");
[1121]630                        if (span_options)
631                                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> | ' +
632                                '<span title="' +
633                                get_lang("Move") +
634                                '" class="message_options" onclick=wfolders.makeWindowNew(\"' +
635                                content_search.id +
636                                '\",\"move_to\",true)>' +
637                                get_lang("Move") +
[1294]638                                '</span>';*/
[1121]639                        div_scroll_result.appendChild(table);
640                        content_search.appendChild(div_scroll_result);
[1294]641                        /*if (span_options)
642                                content_search.appendChild(span_options);*/
[1121]643                }
644                else {
645                        div_scroll_result.appendChild(table);
646                        content_search.appendChild(div_scroll_result);
647                }
[3223]648                resizeWindow();
649                EsearchE.show_paging(Rdata['num_msgs']);
650
[2]651        }
652
[1339]653        searchE.prototype.open_msg = function(mailbox, uid_msg, subject){
[2]654                var handler_get_msg = function(data){
655                        if(Element("border_id_" + uid_msg + "_r")){alert(get_lang("This message is already opened!"));}
656                        else{draw_message(data,create_border(url_decode(subject), uid_msg + "_r"));}
[673]657                        //set_msg_as_read(msgs_to_set[i], false);
[2]658                }
[1339]659                proxy_mensagens.get_msg(uid_msg,mailbox,false,handler_get_msg);
[689]660                /*var args   = "$this.imap_functions.get_info_msg";
661                var params = "msg_number=" + uid_msg + "&msg_folder=" + mailbox;
662                cExecute(args,handler_get_msg,params);*/
[2]663
664        }
665
666        // Adiciona caixas postais na busca;
667        searchE.prototype.add_mailboxes = function(){
[69]668                var sel = Element("sel_search_nm_box1");
[689]669                if (!proxy_mensagens.is_local_folder(this.name_box_search)) {
670                        var name_box     = this.name_box_search.split(cyrus_delimiter);
671                        if(this.name_box_search == "")
672                                return false;
673                        var name_box_def = "";
674                        if(name_box.length != 1){
675                                name_box_def = name_box[(name_box.length-1)];
676                        }else{
677                                name_box_def = get_lang("Inbox");               
678                        }
[2]679                }
[689]680                else {
681                        if(this.name_box_search=='local_root')
682                                return;
683                        if(this.name_box_search=='local_Inbox')
684                                name_box_def = get_lang("Inbox");
[1477]685                        else if(this.name_box_search.indexOf("/")!="-1") {
686                                final_pos = this.name_box_search.lastIndexOf("/");
687                                name_box_def = this.name_box_search.substr(final_pos+1);
688                        }
[689]689                        else
690                                name_box_def = this.name_box_search.substr(6);//Retira o 'local_'
691                }
[2]692                if( sel.length > 0){
693                        for(var i=0; i < sel.options.length; i++){
694                                if(sel.options[i].value == this.name_box_search){
695                                        alert(get_lang('This message is already selected!'));
696                                        return false;
697                                }
698                        }
699                }
[96]700                var opt = new Option(lang_folder(name_box_def),this.name_box_search,false,true);
[2]701                sel[sel.length] = opt;
702        }
703        // Remove as caixas postais na busca;
704        searchE.prototype.del_mailboxes = function(){
[69]705                var sel = Element("sel_search_nm_box1");
[2]706                if(sel.length > 0){
707                        for(var i=0; i < sel.options.length; i++){
708                                if(sel.options[i].selected == true){
709                                        sel.options[i] = null;
710                                        i--;
711                                }
712                        }
713                }
714       
715        }
716        // todas as caixas
717        searchE.prototype.all_mailboxes = function(){
[69]718                var value = Element("check_all_msg").checked;
[2]719                var cont = parseInt(0);
720                if(value){
721                        if(EsearchE.all_boxes.length > 0){
722                                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));                       
723                        }
724                        for(var i=0; i < folders.length; i++){
725                                EsearchE.all_boxes[cont] = folders[i].folder_id;
726                                cont++;
727                        }
728                }else{
729                        EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
730                }
731        }
732
733        // Search;
734        searchE.prototype.func_search = function(value){
735                var fields = "##";
736                        // Verifica se os campos estão preenchidos;
[69]737                        if(trim(Element("txt_ass").value) != ""){
[372]738                                fields += "SUBJECT " +  "<=>" +url_encode(Element("txt_ass").value) + "##";
[2]739                        }
[69]740                        if(trim(Element("txt_body").value) != ""){
[372]741                                fields += "BODY " + "<=>" + url_encode(Element("txt_body").value) + "##";
[2]742                        }
[69]743                        if(trim(Element("txt_de").value) != ""){
[372]744                                fields += "FROM " + "<=>" + url_encode(Element("txt_de").value) + "##";
[2]745                        }
[69]746                        if(trim(Element("txt_para").value) != ""){
[372]747                                fields += "TO " + "<=>" + url_encode(Element("txt_para").value) + "##";
[2]748                        }
[69]749                        if(trim(Element("txt_cc").value) != ""){
[372]750                                fields += "CC " + "<=>" + url_encode(Element("txt_cc").value) + "##";
[2]751                        }
[1622]752                        if (trim(Element("since_date").value) != ""){
753                            if (validate_date(Element("since_date").value))
754                            {
755                                fields += "SINCE " + "<=>" + url_encode(Element("since_date").value) + "##";
756                            }
757                            else
758                                {
759                                    alert(get_lang('Invalid date on field %1'), get_lang('Since Date'));
760                                    return false;
761                                }
762                        }
763                        if (trim(Element("before_date").value) != ""){
764                            if (validate_date(Element("before_date").value))
765                            {
766                                fields += "BEFORE " + "<=>" + url_encode(Element("before_date").value) + "##";
767                            }
768                            else
769                                {
770                                    alert(get_lang('Invalid date on field %1'), get_lang('Before Date'));
771                                    return false;
772                                }
773                        }
774                        if(trim(Element("on_date").value) != ""){
775                            if (validate_date(Element("on_date").value))
776                            {
777                                fields += "ON " + "<=>" + url_encode(Element("on_date").value) + "##";
778                            }
779                            else
780                                {
781                                    alert(get_lang('Invalid date on field %1'), get_lang('On Date'));
782                                    return false;
783                                }
784
785                        }
786                        if(trim(Element("flagged").options[Element("flagged").selectedIndex].value) != ""){
787                            if (Element("flagged").options[Element("flagged").selectedIndex].value == "FLAGGED"){
788                                fields += "FLAGGED##";
789                            }
790                            else {
791                                fields += "UNFLAGGED##";
792                            }
793                        }
794                        if(trim(Element("seen").options[Element("seen").selectedIndex].value) != ""){
795                            if (Element("seen").options[Element("seen").selectedIndex].value == "SEEN"){
796                                fields += "SEEN##";
797                            }
798                            else {
799                                fields += "UNSEEN##";
800                            }
801                        }
802                        if(trim(Element("answered").options[Element("answered").selectedIndex].value) != ""){
803                            if (Element("answered").options[Element("answered").selectedIndex].value == "ANSWERED"){
804                                fields += "ANSWERED##";
805                            }
806                            else {
807                                fields += "UNANSWERED##";
808                            }
809                        }
810                        if(trim(Element("recent").options[Element("recent").selectedIndex].value) != ""){
811                            if (Element("answered").options[Element("answered").selectedIndex].value == "RECENT"){
812                                fields += "RECENT##";
813                            }
814                            else {
815                                fields += "OLD##";
816                            }
817                        }
[2]818                        if(value) {
[372]819                                fields = "##ALL " +  "<=>" +url_encode(value) + "##";
[2]820                        }
[69]821
[372]822                if(fields == "##"){
[128]823                        alert(get_lang("Define some search parameters!"));
[2]824                        return false;
825                }
[689]826                var local_folders = new Array();
827                var temp;
[2]828               
[69]829                if(Element("check_all_msg").checked){
[689]830                        this.all_mailboxes();
[2]831                        var nm_box = new Array;
832                        for(var i=0; i < EsearchE.all_boxes.length; i++){
833                                nm_box[i] = EsearchE.all_boxes[i] + fields;
834                        }
[689]835                        if (preferences.use_local_messages == 1) {
836                                temp = expresso_local_messages.list_local_folders();
837                                for (var x in temp) {
838                                        local_folders.push(temp[x][0]);
839                                }
840                        }
[2]841                }else{
842                        var nm_box = new Array;
[69]843                        var sel_combo = Element("sel_search_nm_box1");
[2]844                        if( sel_combo.options.length <= 0){
[118]845                                alert(get_lang("Define the boxes to search!"));
[2]846                                return false;
847                        }
848                       
849                        for(var i=0; i < sel_combo.options.length; i++){
850                                sel_combo.options[i].selected = true;
851                        }
852                        for(var i=0; i < sel_combo.options.length; i++){
853                                if(sel_combo.options[i].selected == true){
[689]854                                        if(!proxy_mensagens.is_local_folder(sel_combo.options[i].value))
855                                                nm_box[nm_box.length] = sel_combo.options[i].value + fields;
856                                        else
857                                                local_folders.push(sel_combo.options[i].value.substr(6));
[2]858                                }
859                        }
860                }
861                var handler = function(data){
[3223]862                        if (data == "none")
863                                alert(get_lang('no results found'));
864                        else
865                                EsearchE.mount_result(data,'SORTDATE');
[1614]866
[2]867                }
868                var args   = "$this.imap_functions.search_msg";
[3223]869                this.condition = nm_box;
870                var params = "condition=" + nm_box+
871                        "&page=0"+
872                        "&sort_type=SORTDATE";
873                this.page = 0;
[1121]874                if(expresso_offline)
875                        handler('none');
876                else
877                        cExecute(args,handler,params);
[2]878        }
879        // clean;
880        searchE.prototype.func_clean = function(){
881                // Limpa os campos;
[1622]882            for(var i=0; i < this.txtfields.length; i++){
883                    if(Element(this.txtfields[i]) != null){Element(this.txtfields[i]).value = "";}
884            }
885
886            for(i = 0; i < this.selectFields.length; i++)
887            {
888                if (Element(this.selectFields[i]))
889                {
890                    Element(this.selectFields[i]).selectedIndex = 0;
891                }
892            }
[2]893            if(Element("check_all_msg") != null){Element("check_all_msg").checked = false;}
894
895            EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
[75]896                EsearchE.del_mailboxes();
[69]897        }
[2]898
899        // close
900        searchE.prototype.func_close = function(type){
901                var _this = this;
902                _this.name_box_search = "";
903                EsearchE.all_boxes.splice(0,(EsearchE.all_boxes.length));
904                _this.type = type;
905                _this.searchW['window_search'].close();
906        }
907        // Monta a janela em tela;
908        searchE.prototype.showWindow = function(div){
909                if(!this.searchW[div.id]) {
[1622]910                        div.style.width = "804px";
911                        div.style.height = "440px";
[2]912                        div.style.visibility = "hidden";
913                        div.style.position = "absolute";
[832]914                        div.style.zIndex = "10003";
[128]915                        var title = ":: "+ get_lang("Search")+" ::";
[2]916                        var wHeight = div.offsetHeight + "px";
917                        var wWidth =  div.offsetWidth   + "px";
[832]918
919                        win = new dJSWin({
[2]920                                id: 'ccList'+div.id,
921                                content_id: div.id,
922                                width: wWidth,
923                                height: wHeight,
924                                title_color: '#3978d6',
925                                bg_color: '#eee',
[832]926                                title: title,
[2]927                                title_text_color: 'white',
928                                button_y_img: '../phpgwapi/images/win_min.gif',
929                                button_x_img: '../phpgwapi/images/winclose.gif',
930                                border: true });
931                        this.searchW[div.id] = win;
932                        win.draw();
933                }else{
934                        var _this = this;
935                        win = this.searchW[div.id];
936                        if((_this.type == "close" && win.state == 0) || win.state == 2){EsearchE.func_clean();}
937                        win.draw();
938                }
939                win.open();     
940        }
[689]941       
942        searchE.prototype.aux_local_folder_display = function(folder) {
[1121]943                if(!expresso_offline)
944                        return "(Local) " + lang_folder(folder.substr(6));
945                else
946                        return lang_folder(folder.substr(6));
[689]947        }
948       
[2]949// Cria o objeto
950        var EsearchE;
[569]951        EsearchE = new searchE();
Note: See TracBrowser for help on using the repository browser.