Changeset 5134 for trunk/expressoMail1_2/js/search.js
- Timestamp:
- 11/03/11 13:24:28 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/js/search.js
r4993 r5134 16 16 this.txtfields = new Array("txt_ass","txt_de","txt_body","txt_para","txt_cc","txt_cco", "since_date", "before_date", "on_date"); 17 17 this.selectFields = new Array("flagged", "seen", "answered", "recent"); 18 this.localResults = 0;19 18 } 20 19 … … 227 226 228 227 // Gears - local 229 if ( preferences.use_local_messages == 1 && EsearchE.localResults != 0)228 if ( preferences.use_local_messages == 1 ) 230 229 { 231 230 temp = expresso_local_messages.list_local_folders(); … … 234 233 local_folders.push(temp[x][0]); 235 234 } 235 } 236 236 237 if ( local_folders.length > 0 ) 237 238 _gears = expresso_local_messages.search( local_folders, expresso_local_messages.getFilter() ); 238 _data['gears_num_msgs'] = _gears.length;239 }else{240 _data['gears_num_msgs'] = 0;241 }242 239 243 240 _data['data'] = data['data']; 244 241 _data['num_msgs'] = data['num_msgs']; 245 242 _data['gears_num_msgs'] = _gears.length; 246 243 247 244 delete_border( data['currentTab'], false); … … 263 260 264 261 if(size > parseInt(preferences.max_email_per_page)) { 265 this.totalPages = parseInt(size/preferences.max_email_per_page);262 this.totalPages = Math.ceil(size/preferences.max_email_per_page); 266 263 if((size/preferences.max_email_per_page) > this.totalPages) 267 264 this.totalPages++; … … 270 267 if(this.page != 0) { 271 268 _link = document.createElement("A"); 269 if( this.value ) 270 _link.href = 'javascript:EsearchE.quickSearchMail( false, '+0+', false, "'+currentTab+'" )'; 271 else{ 272 272 _link.href = 'javascript:EsearchE.page=0;'; 273 273 _link.href += 'cExecute("$this.imap_functions.search_msg",openpage,"condition='+this.condition+'&sort_type='+this.sort_type+'&page=0¤t_tab='+currentTab+'");'; 274 } 274 275 } 275 276 else { … … 319 320 var _link = document.createElement('A'); 320 321 _link.innerHTML = ( _page + 1 ) + " "; 322 if( this.value ) 323 _link.href = 'javascript: EsearchE.quickSearchMail( false, '+i+', false, "'+currentTab+'" )'; 324 else{ 321 325 _link.href = 'javascript:EsearchE.page='+i+';'; 322 326 _link.href += 'cExecute("$this.imap_functions.search_msg",openpage,"condition='+this.condition+'&sort_type='+this.sort_type+'&page='+_page+'¤t_tab='+currentTab+'");'; 327 } 323 328 } 324 329 _link.innerHTML = " ... "; … … 339 344 if(this.page != (this.totalPages - 1)) { 340 345 _link = document.createElement("A"); 346 if( this.value ) 347 _link.href = 'javascript: EsearchE.quickSearchMail( false, '+(this.totalPages-1)+', false, "'+currentTab+'" )'; 348 else{ 341 349 _link.href = 'javascript:EsearchE.page='+(this.totalPages-1)+';'; 342 350 _link.href += 'cExecute("$this.imap_functions.search_msg",openpage,"condition='+this.condition+'&sort_type='+this.sort_type+'&page='+(this.totalPages-1)+'¤t_tab='+currentTab+'");'; 351 } 343 352 } 344 353 else { … … 360 369 var sort_type = sortType; 361 370 371 if( this.value ) 372 return this.quickSearchMail( false, false, sortType, border_id ); 373 362 374 var is_local = border_id.match('.*_local_.*'); 363 375 … … 383 395 if ( local_folders.length > 0 ){ 384 396 expresso_local_messages.setSortType(sortType); 385 gears = expresso_local_messages.search( expresso_local_messages.getFolders(), expresso_local_messages.getFilter() );397 gears = expresso_local_messages.search( local_folders, expresso_local_messages.getFilter() ); 386 398 } 387 399 } … … 396 408 if (gears.length > 0) 397 409 { 398 this.localResults = gears.length;399 410 allMsg['data_gears'] = gears; 400 }else{401 this.localResults = 0;402 411 } 403 412 … … 434 443 435 444 if ( local_folders.length > 0 ) 436 gears = expresso_local_messages.search( expresso_local_messages.getFolders(), expresso_local_messages.getFilter() );445 gears = expresso_local_messages.search( local_folders, expresso_local_messages.getFilter() ); 437 446 438 447 data['data_gears'] = gears; … … 473 482 { 474 483 var td = document.createElement("TD"); 484 add_className(td, 'td_msg'); 475 485 if (j == 0) 476 486 { … … 480 490 chk_onclick = "changeBgColor(window.event,"+uid_msg+");"; 481 491 else 482 chk_onclick = "changeBgColor(event,"+uid_msg+");"; 483 var td1 = '<input type="checkbox" onclick="' + chk_onclick + '" id=" check_box_message_'+tr.id+'"></input>';492 chk_onclick = "changeBgColor(event,"+uid_msg+");"; //'search_' + numBox 493 var td1 = '<input type="checkbox" onclick="' + chk_onclick + '" id="' + border_id + '_check_box_message_'+uid_msg+'"></input>'; 484 494 485 495 } … … 510 520 { 511 521 td.setAttribute("width", colSizes[1][3]); 512 td.id = "td_message_important_"+ tr.id;522 td.id = "td_message_important_"+uid_msg; 513 523 if (aux.flag.match("F")) 514 524 { … … 551 561 if( j == 6 ) 552 562 { 553 if ( aux.from.length > 29)563 if ( aux.from !== null && aux.from.length > 29) 554 564 aux.from = aux.from.substr(0,29) + "..."; 555 565 … … 634 644 635 645 // Form resultado 636 searchE.prototype.mount_result = function( Data, sort_type, keep_border )646 searchE.prototype.mount_result = function( Data, sort_type, keep_border, keep_filled, division ) 637 647 { 638 648 var data = ( Data['data'] ) ? Data['data'] : Data['data_gears']; … … 648 658 sort_type = this.sort_type; 649 659 650 var tab = numBox;651 652 660 if ( keep_border ) { 653 661 var border_id = currentTab; 654 662 } 655 663 else { 656 tab = count_borders() + 1;664 numBox++; 657 665 658 666 if( Data['data'] ) 659 var border_id = create_border(get_lang("Server Results"), "search_" + tab);667 var border_id = create_border(get_lang("Server Results"), "search_" + numBox); 660 668 661 669 if( Data['data_gears']) 662 var border_id = create_border(get_lang("Local Results"), "search_local_msg" + tab);670 var border_id = create_border(get_lang("Local Results"), "search_local_msg" + numBox); 663 671 } 664 672 … … 667 675 668 676 currentTab = border_id; 669 openTab.content_id[currentTab] = Element('content_id_search_' + tab);677 openTab.content_id[currentTab] = Element('content_id_search_' + numBox); 670 678 openTab.type[currentTab] = 1; 671 679 openTab.condition[currentTab] = this.condition; … … 673 681 if ( keep_border ) { 674 682 var content_search = Element('content_id_' + border_id); 675 var div_scroll_result = Element("divScrollMain_"+tab); 683 var div_scroll_result = Element("divScrollMain_"+numBox); 684 676 685 content_search.removeChild(div_scroll_result); 686 687 if( !keep_filled ) 688 div_scroll_result = false; 677 689 } 678 690 679 691 var table = document.createElement("TABLE"); 680 table.id = "table_resultsearch_" + tab;692 table.id = "table_resultsearch_" + numBox; 681 693 table.frame = "void"; 682 694 table.rules = "rows"; … … 686 698 687 699 var tbody = document.createElement("TBODY"); 688 tbody.id = "tbody_box_" + tab;700 tbody.id = "tbody_box_" + numBox; 689 701 690 702 for( var i=0; i < data.length; i++) 691 703 { 704 if(data[i] !== null){ 692 705 var tr = EsearchE.make_tr_message(data[i],border_id,i); 693 694 706 tbody.appendChild(tr); 695 707 } 708 } 696 709 697 710 //global_search++; //Tabs from search must not have the same id on its tr's // use numBox instead of this! … … 700 713 701 714 var colgr_element = buildColGroup(1); 702 colgr_element.setAttribute("id","colgroup_main_"+ tab);715 colgr_element.setAttribute("id","colgroup_main_"+numBox); 703 716 table.appendChild(colgr_element); 704 717 705 718 var content_search = Element('content_id_' + border_id); 719 720 if( !div_scroll_result ) 721 { 706 722 var div_scroll_result = document.createElement("DIV"); 707 div_scroll_result.id = "divScrollMain_"+tab;723 div_scroll_result.id = "divScrollMain_"+numBox; 708 724 div_scroll_result.style.overflowY = "scroll"; 709 725 div_scroll_result.style.overflowX = "hidden"; … … 714 730 div_scroll_result.style.width ="100%"; 715 731 } 732 } 733 if( division ) 734 { 735 var _div = document.createElement("div"); 736 _div.className = 'local-messages-search-warning'; 737 _div.innerHTML = division; 738 div_scroll_result.appendChild(_div); 739 } 716 740 717 741 if(is_ie) … … 730 754 table_element.addEventListener("mousedown",startColResize,false); 731 755 } 732 table_element.setAttribute("id", "table_message_header_box_"+ tab);756 table_element.setAttribute("id", "table_message_header_box_"+numBox); 733 757 table_element.className = "table_message_header_box"; 734 758 if (!is_ie) … … 772 796 773 797 // Ordernar Pasta 774 if ( sort_type == 'SORTBOX' )798 if ( sort_type == 'SORTBOX' /*|| sort_type == 'SORTBOX_REVERSE'*/ ) 775 799 { 776 800 if( Data['data'] ) … … 801 825 td_element2 = createTDElement(1,6,"th_resizable","left"); 802 826 803 if (sort_type == 'SORTFROM' )827 if (sort_type == 'SORTFROM' || sort_type == 'SORTWHO' /*|| sort_type == 'SORTWHO_REVERSE' || sort_type == 'SORTFROM_REVERSE'*/ ) 804 828 { 805 829 if(Data['data']) … … 830 854 td_element3 = createTDElement(1,7,"th_resizable","left"); 831 855 832 if (sort_type == 'SORTSUBJECT' )856 if (sort_type == 'SORTSUBJECT' /*|| sort_type == 'SORTSUBJECT_REVERSE'*/) 833 857 { 834 858 if( Data['data']) … … 859 883 td_element4 = createTDElement(1,8,"th_resizable","center"); 860 884 861 if ( sort_type == 'SORTDATE' )885 if ( sort_type == 'SORTDATE' /*|| sort_type == 'SORTDATE_REVERSE'*/ ) 862 886 { 863 887 if( Data['data'] ) … … 888 912 td_element5 = createTDElement(1,9,"th_resizable","center"); 889 913 890 if ( sort_type == 'SORTSIZE' )914 if ( sort_type == 'SORTSIZE' /*|| sort_type == 'SORTSIZE_REVERSE'*/ ) 891 915 { 892 916 if( Data['data'] ) … … 928 952 929 953 var colgr_element = buildColGroup(1); 930 colgr_element.setAttribute("id","colgroup_head_"+ tab);954 colgr_element.setAttribute("id","colgroup_head_"+numBox); 931 955 table_element.appendChild(colgr_element); 932 956 933 if( parseInt( Data['gears_num_msgs'] ) > 0 && ! Data['data_gears'])957 if( parseInt( Data['gears_num_msgs'] ) > 0 && !keep_filled) 934 958 { 935 959 var _div_gears = document.createElement("div"); … … 941 965 } 942 966 943 var _divScroll = document.getElementById("divScrollHead_"+tab); 944 945 if(!_divScroll){ 967 var _divScroll = document.getElementById("divScrollHead_"+numBox); 968 969 if( _divScroll ){ 970 content_search.removeChild(_divScroll); 971 _divScroll = false; 972 } 973 946 974 _divScroll = document.createElement("DIV"); 947 _divScroll.id = "divScrollHead_"+tab;975 _divScroll.id = "divScrollHead_"+numBox; 948 976 _divScroll.style.overflowY = "hidden"; 949 977 _divScroll.style.overflowX = "hidden"; … … 955 983 _divScroll.appendChild(table_element); 956 984 content_search.appendChild(_divScroll); 957 } 985 958 986 /*end of "put header"*/ 959 987 if ( !expresso_offline ) … … 1067 1095 1068 1096 // Search; 1069 searchE.prototype.func_search = function(value)1097 searchE.prototype.func_search_complex = function() 1070 1098 { 1071 1099 var fields = "##"; … … 1111 1139 } 1112 1140 } 1113 1141 if ((trim(Element("since_date").value) != "") && (trim(Element("before_date").value) != "")){ 1142 if(!(validate_date_order(trim(Element("since_date").value), trim(Element("before_date").value)))){ 1143 alert(get_lang('Invalid date on field %1', get_lang('Before Date'))); 1144 return false; 1145 } 1146 } 1114 1147 if(trim(Element("on_date").value) != "") 1115 1148 { … … 1171 1204 } 1172 1205 } 1173 1174 if ( value )1175 {1176 fields = "##ALL " + "<=>" +url_encode(value) + "##";1177 }1178 1206 1179 1207 if(fields == "##") … … 1234 1262 { 1235 1263 var allMsg = [3]; 1264 var count = ( data['num_msgs'] ) ? data['num_msgs'] : "0"; 1236 1265 var tmp = []; 1237 1266 … … 1241 1270 tmp = expresso_local_messages.search( local_folders, fields ); 1242 1271 } 1243 var count = data['num_msgs'] ? data['num_msgs'] : tmp.length > 0 ? tmp.length : "0"; 1244 EsearchE.localResults = tmp.length; 1272 1245 1273 if( data['num_msgs'] ) 1246 1274 { … … 1254 1282 } 1255 1283 1256 if( data['num_msgs'] == 0 && tmp.length < 0)1284 if( ( data['num_msgs'] ) == 0 ) 1257 1285 { 1258 1286 alert( get_lang("None result was found.") ); … … 1260 1288 else 1261 1289 { 1262 if(tmp.length > 0 && !data['num_msgs'])1290 if( (tmp.length > 0) && (!data['num_msgs']) ) 1263 1291 { 1264 allMsg['data_gears'] = tmp;1292 EsearchE.viewLocalMessage(); 1265 1293 } 1266 1294 else 1295 { 1296 if(count > 0) 1297 EsearchE.func_clean(); 1267 1298 write_msg( count + " " + get_lang("results found") ); 1268 1299 EsearchE.mount_result( allMsg, 'SORTDATE' ); 1269 1300 } 1270 1301 } 1271 1302 } 1272 1303 … … 1280 1311 else 1281 1312 cExecute( args, handler, params); 1313 } 1314 1315 searchE.prototype.func_search = function(value, page, sort, border_id) 1316 { 1317 if( !value ) 1318 this.func_search_complex(); 1319 else 1320 this.quickSearchMail( value, page, sort, border_id ); 1321 } 1322 1323 searchE.prototype.quickSearchMail = function(value, page, sort, border_id) 1324 { 1325 var local_folders = new Array(); 1326 var temp; 1327 var not_found_corrent_folder = true; 1328 1329 // if( Element("check_all_msg").checked ) 1330 // { 1331 this.all_mailboxes(); 1332 var nm_box = new Array; 1333 for(var i=0; i < EsearchE.all_boxes.length; i++) 1334 { 1335 nm_box[i] = EsearchE.all_boxes[i]/* + fields*/; 1336 } 1337 if (preferences.use_local_messages == 1) 1338 { 1339 temp = expresso_local_messages.list_local_folders(); 1340 for (var x in temp) 1341 { 1342 local_folders.push(temp[x][0]); 1343 } 1344 } 1345 this.sort = sort || this.sort || "SORTDATE"; 1346 this.page = isNaN(page) ? ( value ? 0 : this.page ) : page; 1347 this.value = value || this.value || false; 1348 1349 if( !this.value ) 1350 return alert( "Busca sem caracteres." ); 1351 1352 var args = "$this.imap_functions.quickSearchMail"; 1353 var params = { page: this.page, sort: this.sort, search: this.value }; 1354 1355 var selection1 = [], selection2 = []; 1356 1357 for( var i = 0; i < nm_box.length; i++ ) 1358 if( nm_box[i] === current_folder ) 1359 continue; 1360 else if( /^user/.test(nm_box[i]) ) 1361 selection2[selection2.length] = nm_box[i]; 1362 else 1363 selection1[selection1.length] = nm_box[i]; 1364 1365 if( expresso_offline ) 1366 handler('none'); 1367 else 1368 { 1369 var url = [], labels = []; 1370 1371 params['folder'] = current_folder; 1372 url[0] = args + "&" + $.param( params ); 1373 labels[0] = "mensagem na sua pasta atual"; 1374 1375 if(selection1.length) 1376 { 1377 params['folder'] = selection1; 1378 url[1] = args + "&" + $.param( params ); 1379 labels[1] = "mensagens nas suas outras pastas"; 1380 } 1381 if(selection2.length) 1382 { 1383 params['folder'] = selection2; 1384 url[2] = args + "&" + $.param( params ); 1385 labels[2] = "mensagens nas suas pastas compartilhadas"; 1386 } 1387 var link = ' <a href="#" onclick="connector.cancelRequest(); clean_msg(); return false;">cancelar<a/>'; 1388 1389 write_msg( "pesquisando " + labels[0] + link, true ); 1390 1391 var keepFilled = false; 1392 1393 var handler = function( data ) 1394 { 1395 data = $.parseJSON( Base64.decode(data) ); 1282 1396 1397 var allMsg = { 1398 num_msgs: ( data['num_msgs'] || 0 ), 1399 data: ( data['data'] || data['msgs'] || data ) 1400 }; 1401 1402 // Gears - local 1403 if ( local_folders.length > 0 ){ 1404 expresso_local_messages.setSortType('SORTDATE'); 1405 var tmp = expresso_local_messages.search( local_folders, "##ALL <=>" + url_encode(value) + "##" ); 1406 1407 if( tmp.length > 0 ) 1408 if( !allMsg['num_msgs'] ){ 1409 clean_msg(); 1410 not_found_corrent_folder = false; 1411 if(tmp.length) 1412 allMsg['gears_num_msgs'] = tmp.length; 1413 }else 1414 allMsg['gears_num_msgs'] = tmp.length; 1283 1415 } 1284 // clean; 1416 1417 if( !allMsg['num_msgs'] && !url.length && not_found_corrent_folder){ 1418 clean_msg(); 1419 //alert( get_lang("None result was found.") ); 1420 return EsearchE.viewLocalMessage(); 1421 } 1422 1423 if( allMsg['num_msgs'] ) 1424 EsearchE.total = allMsg['num_msgs'] = Math.max( (EsearchE.total || 0), allMsg['num_msgs'] ); 1425 1426 EsearchE.mount_result( allMsg, EsearchE.sort, ( keepFilled || border_id === currentTab ), keepFilled, "Foram encontradas " + data['msgs'].length + " "+labels.shift()+"." ); 1427 1428 keepFilled = true; 1429 1430 write_msg( "pesquisando " + labels[0] + link, true ); 1431 1432 if( url.length ) 1433 cExecute( url.shift(), handler ); 1434 else 1435 clean_msg(); 1436 } 1437 1438 cExecute( url.shift(), handler ); 1439 } 1440 } 1441 1442 // clean; 1285 1443 searchE.prototype.func_clean = function() 1286 1444 {
Note: See TracChangeset
for help on using the changeset viewer.