Changeset 5134 for trunk/expressoMail1_2/js/QuickCatalogSearch.js
- Timestamp:
- 11/03/11 13:24:28 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/js/QuickCatalogSearch.js
r5075 r5134 7 7 } 8 8 9 /* showlist */ 9 10 emQuickCatalogSearch.prototype.showList = function(data, begin, end, ID, field) 10 11 { … … 16 17 17 18 keypress_read(data); 18 init_results(data);19 19 configure_slider(data); 20 create_list(data, true); 20 21 details_results(data); 21 22 22 connector.loadScript("ccQuickAdd");23 24 if(preferences.use_shortcuts == '0'){25 connector.loadScript("shortcut");26 }27 28 23 id = '1'; 29 24 _this = this; … … 46 41 47 42 48 function keypress_read(data) 49 { 50 $("#dialog-modal").keypress(function (e) 51 { 52 var keyCode = e.keyCode || e.which, 53 arrow = {left: 37, up: 38, right: 39, down: 40, enter: 13, esc: 27 }; 43 /* Leitura das teclas de atalho */ 44 function keypress_read(data) { 45 $("#dialog-modal").keydown(function (e) { 46 var keyCode = e.keyCode; 47 arrow = {left: 37, up: 38, right: 39, down: 40, enter: 13, esc: 27}; 54 48 var slider = $( "#slider" ); 55 49 switch (keyCode) 56 50 { 57 51 case arrow.enter: 58 add_contact_field(document.getElementsByClassName("ui-selected")[0].getElementsByClassName("name_contact")[0].innerHTML); 52 if(!search_focus){ 53 i = $(".ui-selected:last").attr("value") + 1; 54 add_contact_field($("#contact_" + i).html()); 55 document.getElementById("busca").value = ""; 56 $("#dialog-modal").unbind('keydown'); 59 57 $("#dialog-modal").dialog("close"); 58 } 60 59 break; 61 62 60 case arrow.left: 63 slider.slider( 64 create_list(data_ );61 slider.slider("value", $( "#slider" ).slider( "value" ) - 1); 62 create_list(data_, false); 65 63 break; 66 67 64 case arrow.right: 68 if( (($( "#slider" ).slider( "value" ))) == Math.ceil(data_.length/7) ) 69 { 70 alert("Não há mais páginas"); 65 if((($( "#slider" ).slider( "value" ))) == Math.ceil(data_.length/6)) 71 66 break; 72 }73 67 slider.slider( "value", $( "#slider" ).slider( "value" ) + 1); 74 create_list(data_ );68 create_list(data_, false); 75 69 break; 76 77 70 case arrow.up: 78 id_contact = document.getElementsByClassName("ui-selected")[0].value; 79 if(id_contact == (($( "#slider" ).slider( "value" ) -1)*7)) 71 show_detail(data_, "up"); 72 break; 73 case arrow.down: 74 show_detail(data_, "down"); 80 75 break; 81 var line_contact = $('li.ui-selected');82 $('li.ui-selected').prev().removeClass("ui-selectee").addClass("ui-selected"); //css('background-color', '#72A9D3');83 line_contact.removeClass("ui-selected").addClass("ui-selectee");84 var details = $("#detalhes_contato").empty();85 $( ".ui-selected", this ).each(function() {86 if(data_['type_catalog'] == 'G')87 {88 var extra_fields = (data_['extra_ldap_fields']).split("#");89 /* Default fields */90 details.append("<strong>" + utf8_decoder(data_[this.value].cn[0]));91 details.append("<br />" + data_[this.value].mail[0]);92 details.append("<br /><br /><strong>Matrícula<br />");93 details.append(data_[this.value].employeenumber[0] + "<br />");94 details.append("<br /><strong> Telefone <br />");95 details.append(data_[this.value].telephonenumber[0] + "<br />");96 details.append(data_[this.value].telephonenumber[0]);97 for (var i=0; i<extra_fields.length-1; i++)98 {99 var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);100 var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));101 if(data_[this.value][valor] != undefined)102 {103 details.append("<br /><br /><strong>" + campo);104 details.append("<br />" + data_[this.value][valor][0]);105 }106 76 } 77 }); 107 78 } 108 else 109 { 110 if(data_['type_catalog'] == 'P') 111 112 /* Default fields */ 113 details.append("<strong>" + utf8_decoder(data_[this.value].cn)); 114 details.append("<br />" + data_[this.value].mail); 115 if(data_[this.value].telephonenumber != "") 116 { 117 details.append("<br /><br /><br /><strong> Telefone <br />"); 118 details.append(data_[this.value].telephonenumber + "<br />"); 79 80 81 /* Mostra os detalhes do contato selecionado */ 82 function show_detail(data_, direction) { 83 id_contact = $(".ui-selected:last").attr("value"); 84 if(direction == "down") { 85 if((id_contact == (((((parseInt($( "#slider" ).slider( "value" )) - 1)*6))+6)-1)) || id_contact == data_.length - 1 || data_.length == 1) 86 return; 87 var line_contact = $('li.ui-selected'); 88 $('li.ui-selected').next().addClass("ui-selected"); 89 id_contact++; 119 90 } 91 else { 92 if(id_contact == (($( "#slider" ).slider( "value" ) -1)*6)) 93 return; 94 var line_contact = $('li.ui-selected'); 95 $('li.ui-selected').prev().addClass("ui-selected"); 96 id_contact--; 120 97 } 121 else 122 { 98 line_contact.removeClass("ui-selected").addClass("ui-selectee"); 99 var details = $("#detalhes_contato").empty(); 100 switch(data_['type_catalog']) { 101 case 'G': 123 102 var extra_fields = (data_['extra_ldap_fields']).split("#"); 124 /* Default fields */ 125 details.append("<strong>" + utf8_decoder(data_[this.value].cn)); 126 details.append("<br />" + data_[this.value].mail); 127 if(data_[this.value].telephonenumber != "") 128 { 129 details.append("<br /><br /><br /><strong> Telefone <br />"); 130 details.append(data_[this.value].telephonenumber + "<br />"); 103 if(preferences.default_fields_quick_search != 0) { 104 details.append('<p><label class="attribute">' + utf8_decoder(data_[id_contact].cn[0]) + "</label>" + '<span class="value">' + data_[id_contact].mail[0] + '</span></p>'); 105 details.append('<p><label class="attribute">Telefone </label>' + '<span class="value">' + data_[id_contact].telephonenumber[0] + '</span></p>'); 131 106 } 132 if(data_[this.value].mail[0].length > 1) 133 { 134 for (var i=0; i<extra_fields.length-1; i++) 107 for (var i=0; i<=extra_fields.length-1; i++) 135 108 { 136 109 var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1); 137 110 var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|"))); 138 if(data_[this.value][valor] != undefined) 139 { 140 details.append("<br /><br /><strong>" + campo); 141 details.append("<br />" + data_[this.value][valor][0]); 111 if(data_[id_contact][valor.toLowerCase()] != undefined) { 112 var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ; 113 for(j=0; j<data_[id_contact][valor.toLowerCase()].length; j++) { 114 details.append(tmp_campo + '<span class="value">' + data_[id_contact][valor.toLowerCase()][j] + "</span></p>"); 115 tmp_campo = ""; 116 } 117 } 118 } 119 break; 120 case 'P': 121 details.append('<p><label class="attribute">' + utf8_decoder(data_[id_contact].cn) + '</label>' + '<span class="value">' + data_[id_contact].mail + '</span></p>'); 122 if(data_[id_contact].telephonenumber != null) 123 details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data_[id_contact].telephonenumber + '</span></p>'); 124 break; 125 default: 126 var extra_fields = (data_['extra_ldap_fields']).split("#"); 127 if(preferences.default_fields_quick_search != 0 || data_[id_contact].type_contact == "P") { 128 details.append('<p><label class="attribute">' + utf8_decoder(data_[id_contact].cn) + '</label>' + '<span class="value">' + data_[id_contact].mail + '</span></p>'); 129 if(data_[id_contact].telephonenumber != null) 130 details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data_[id_contact].telephonenumber + '</span></p>'); 131 } 132 if(data_[id_contact].mail[0].length > 1) { 133 for (var i=0; i<=extra_fields.length-1; i++) { 134 var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1); 135 var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|"))); 136 if(data_[id_contact][valor.toLowerCase()] != undefined) { 137 var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ; 138 for(j=0; j<data_[id_contact][valor.toLowerCase()].length; j++) { 139 details.append(tmp_campo + '<span class="value">' + data_[id_contact][valor.toLowerCase()][j] + "</span></p>"); 140 tmp_campo = ""; 142 141 } 143 142 } 144 143 } 145 144 } 146 }147 });148 break;149 150 case arrow.down:151 id_contact = document.getElementsByClassName("ui-selected")[0].value;152 if((id_contact == (((((parseInt($( "#slider" ).slider( "value" )) - 1)*7))+7)-1)) || id_contact == data_.length - 2 || data_.length == 1)153 break;154 var line_contact = $('li.ui-selected');155 $('li.ui-selected').next().removeClass("ui-selectee").addClass("ui-selected");156 line_contact.removeClass("ui-selected").addClass("ui-selectee");157 var details = $("#detalhes_contato").empty();158 $( ".ui-selected", this ).each(function() {159 if(data_['type_catalog'] == 'G')160 {161 var extra_fields = (data_['extra_ldap_fields']).split("#");162 /* Default fields */163 details.append("<strong>" + utf8_decoder(data_[this.value].cn[0]));164 details.append("<br />" + data_[this.value].mail[0]);165 details.append("<br /><br /><strong>Matrícula<br />");166 details.append(data_[this.value].employeenumber[0] + "<br />");167 details.append("<br /><strong> Telefone <br />");168 details.append(data_[this.value].telephonenumber[0] + "<br />");169 details.append(data_[this.value].telephonenumber[0]);170 for (var i=0; i<extra_fields.length-1; i++)171 {172 var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);173 var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));174 if(data_[this.value][valor] != undefined)175 {176 details.append("<br /><br /><strong>" + campo);177 details.append("<br />" + data_[this.value][valor][0]);178 }179 }180 }181 else182 {183 if(data_['type_catalog'] == 'P')184 {185 /* Default fields */186 details.append("<strong>" + utf8_decoder(data_[this.value].cn));187 details.append("<br />" + data_[this.value].mail);188 if(data_[this.value].telephonenumber != "")189 {190 details.append("<br /><br /><br /><strong> Telefone <br />");191 details.append(data_[this.value].telephonenumber + "<br />");192 }193 }194 else195 {196 var extra_fields = (data_['extra_ldap_fields']).split("#");197 /* Default fields */198 details.append("<strong>" + utf8_decoder(data_[this.value].cn));199 details.append("<br />" + data_[this.value].mail);200 if(data_[this.value].telephonenumber != "")201 {202 details.append("<br /><br /><br /><strong> Telefone <br />");203 details.append(data_[this.value].telephonenumber + "<br />");204 }205 if(data_[this.value].mail[0].length > 1)206 {207 for (var i=0; i<extra_fields.length-1; i++)208 {209 var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);210 var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|")));211 if(data_[this.value][valor] != undefined)212 {213 details.append("<br /><br /><strong>" + campo);214 details.append("<br />" + data_[this.value][valor][0]);215 }216 }217 }218 }219 }220 });221 145 break; 222 146 } 223 });224 147 } 225 148 … … 229 152 * Método que cria a lista de contatos 230 153 */ 231 function create_list(data) 232 { 154 function create_list(data, begin, uiValue) { 155 var sliderValue = 1; 156 if(typeof($( "#slider" ).slider( "value" )) != "object") 157 sliderValue = $( "#slider" ).slider( "value" ); 158 if(uiValue) 159 sliderValue = uiValue; 233 160 $("#detalhes_contato").empty(); 234 var paginas = Math.ceil(data.length/7) - 1;161 var paginas = Math.ceil(data.length/6); 235 162 $("#title_usuarios").html( get_lang("Results") ); 236 var string_results = $( "#slider" ).slider( "value" ) + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")";237 163 var selectable = $("#selectable"); 238 164 selectable.empty(); 239 165 var Ul = document.createElement("ul"); 166 for (i=((sliderValue -1)*6)+1; i<(((sliderValue -1)*6)+1)+6; i++) { 240 167 var Op = document.createElement("li"); 241 for (i=(($( "#slider" ).slider( "value" ) -1)*7)+1; i<((($( "#slider" ).slider( "value" ) -1)*7)+1)+7; i++) 242 { 243 if(i >= data.length) 168 if(i > data.length) 244 169 break; 245 170 if (data['type_catalog'] != 'G' && (data[i-1].mail == null || data[i-1].mail == "")) 246 171 data[i-1].mail = "No mail"; 247 if(i == ((($( "#slider" ).slider( "value" ) -1)*7)+1)){ 172 173 if(i == (((sliderValue -1)*6)+1)) { 248 174 Op.setAttribute("class", "ui-selected"); 175 Op.setAttribute("className", "ui-selected"); 249 176 } 250 177 else { 251 178 Op.setAttribute("class", "ui-selectee"); 179 Op.setAttribute("className", "ui-selectee"); 252 180 } 253 181 var contact_name = utf8_decoder(data[i-1].cn); 254 if(contact_name.substring(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase())) != -1)182 if(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()) != -1 && data.search_for.indexOf(" ") == -1 && data.search_for.indexOf("@") == -1) 255 183 contact_name = contact_name.substring(0, contact_name.toLowerCase().indexOf(data.search_for.toLowerCase())) + "<u>" + contact_name.substr(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()), data.search_for.length) + "</u>" + contact_name.substring(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()) + data.search_for.length); 256 Op.innerHTML = '<span style="float:right; left:335px; position: absolute; z-index: 100; background-color: #EEE; padding:0"><button onClick="add_contact_field(contact_' + i + '.innerHTML)">+</button><button onClick="remove_contact_field(contact_' + i + '.innerHTML)">x</button></span><div id=contact_' + i + 'onDblClick="add_contact_field(this.innerHTML)"><div class="name_contact"><strong>' + contact_name + '</strong><em>' + utf8_decoder(data[i-1].mail) + '</em></div></div>';184 Op.innerHTML = '<span class="menu-control"><button onClick="add_contact_field(document.getElementById(\'contact_' + i + '\').innerHTML)">+</button><button onClick="remove_contact_field(document.getElementById(\'contact_' + i + '\').innerHTML)">x</button></span><div id="contact_' + i + '" onDblClick="add_contact_field(this.innerHTML)"><div class="name_contact"><strong>' + contact_name + '</strong><em>' + utf8_decoder(data[i-1].mail) + '</em></div></div>'; 257 185 $(Op).val(i - 1); 258 Ul.appendChild(Op); 259 selectable.append(Ul.innerHTML); 186 selectable.append(Op); 260 187 } 261 $( "#amount" ).val( string_results ); 262 $( "#amount" ).val( $( "#slider" ).slider( "value" ) + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")"); 263 document.getElementById("amount").focus(); 188 selectable.append(Ul); 189 var first_contact; 190 begin ? first_contact = 0 : first_contact = ((sliderValue* 6) -6); 191 if(first_contact == 0) { 192 $(document).ready(function(){ 193 $('#combobox option').each(function(){ 194 if($(this).val() == preferences.catalog_search){ 195 $(this).attr('selected',true); 196 } 197 }); 198 }); 199 } 200 var details = $("#detalhes_contato").empty(); 201 switch (data['type_catalog']) { 202 case 'G': 203 var extra_fields = (data['extra_ldap_fields']).split("#"); 204 if(preferences.default_fields_quick_search != 0) { 205 details.append('<p><label class="attribute">' + utf8_decoder(data[first_contact].cn[0]) + "</label>" + '<span class="value">' + data[first_contact].mail[0] + "</span></p>"); 206 details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[first_contact].telephonenumber[0] + '</span></p>'); 207 } 208 for (var i=0; i<=extra_fields.length-1; i++) { 209 var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1); 210 var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|"))); 211 if(data[0][valor.toLowerCase()] != undefined) 212 { 213 var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ; 214 for(j=0; j<data[first_contact][valor.toLowerCase()].length; j++) { 215 details.append(tmp_campo + '<span class="value">' + data[first_contact][valor.toLowerCase()][j] + "</span></p>"); 216 tmp_campo = ""; 217 } 218 } 219 } 220 break; 221 case 'P': 222 details.append('<p><label class="attribute">' + utf8_decoder(data[first_contact].cn) + '</label>' + '<span class="value">' + data[first_contact].mail + '</span></p>'); 223 if(data[first_contact].telephonenumber != null) 224 details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[first_contact].telephonenumber + '</span></p>'); 225 break; 226 default: 227 var extra_fields = (data['extra_ldap_fields']).split("#"); 228 if(preferences.default_fields_quick_search != 0 || data[first_contact].type_contact == "P") { 229 details.append('<p><label class="attribute">' + utf8_decoder(data[first_contact].cn) + "</label>" + '<span class="value">' + data[first_contact].mail + "</span></p>"); 230 if(data[first_contact].telephonenumber != null) 231 details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[first_contact].telephonenumber + "</span></p>"); 232 } 233 if(data[first_contact].mail != "No mail") { 234 if(data[first_contact].mail[0].length > 1) { 235 for (var i=0; i<=extra_fields.length-1; i++) { 236 var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1); 237 var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|"))); 238 if(data[first_contact][valor.toLowerCase()] != undefined) { 239 var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ; 240 for(j=0; j<data[first_contact][valor.toLowerCase()].length; j++) { 241 details.append(tmp_campo + '<span class="value">' + data[first_contact][valor.toLowerCase()][j] + "</span></p>"); 242 tmp_campo = ""; 243 } 244 } 245 } 246 } 247 } 248 break; 249 } 250 var string_results = sliderValue + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")"; 251 $( "#amount-text" ).val( string_results ); 252 $("button").button(); 253 if(!is_ie) 254 document.getElementById("amount-text").focus(); 255 $("#selectable li:first button:first").focus(); 256 removeFocus(); 264 257 } 265 258 266 259 267 268 269 270 271 function details_results(data) 272 { 260 /* Método que configura os detalhes do resultado da busca */ 261 function details_results(data) { 273 262 $(function() { 274 263 $( "#selectable" ).selectable({ … … 276 265 var details = $("#detalhes_contato").empty(); 277 266 $( ".ui-selected", this ).each(function() { 278 if(data['type_catalog'] == 'G')279 { 267 switch(data['type_catalog']) { 268 case 'G': 280 269 var extra_fields = (data['extra_ldap_fields']).split("#"); 281 /* Default fields */ 282 details.append("<strong>" + utf8_decoder(data[this.value].cn[0])); 283 details.append("<br />" + data[this.value].mail[0]); 284 details.append("<br /><br /><strong>Matrícula<br />"); 285 details.append(data[this.value].employeenumber[0] + "<br />"); 286 details.append("<br /><strong> Telefone <br />"); 287 details.append(data[this.value].telephonenumber[0] + "<br />"); 288 details.append(data[this.value].telephonenumber[0]); 289 for (var i=0; i<extra_fields.length-1; i++) 290 { 270 if(preferences.default_fields_quick_search != 0) { 271 details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].cn[0]) + "</label>" + '<span class="value">' + data[this.value].mail[0] + "</span></p>"); 272 details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[this.value].telephonenumber[0] + "</span></p>"); 273 } 274 for (var i=0; i<=extra_fields.length-1; i++) { 291 275 var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1); 292 276 var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|"))); 293 if(data[this.value][valor] != undefined) 294 { 295 details.append("<br /><br /><strong>" + campo); 296 details.append("<br />" + data[this.value][valor][0]); 277 if(data[this.value][valor.toLowerCase()] != undefined) { 278 var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ; 279 for(j=0; j<data[this.value][valor.toLowerCase()].length; j++) { 280 details.append(tmp_campo + '<span class="value">' + data[this.value][valor.toLowerCase()][j] + "</span></p>"); 281 tmp_campo = ""; 297 282 } 298 283 } 299 284 } 300 else 301 { 302 if(data['type_catalog'] == 'P') 303 { 304 /* Default fields */ 305 details.append("<strong>" + utf8_decoder(data[this.value].cn)); 306 details.append("<br />" + data[this.value].mail); 307 if(data[this.value].telephonenumber != "") 308 { 309 details.append("<br /><br /><br /><strong> Telefone <br />"); 310 details.append(data[this.value].telephonenumber + "<br />"); 311 } 312 } 313 else 314 { 285 break; 286 case 'P': 287 details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].cn) + "</label>" + '<span class="value">' + data[this.value].mail + "</span></p>"); 288 if(data[this.value].telephonenumber != null) 289 details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[this.value].telephonenumber + "</span></p>"); 290 break; 291 default: 315 292 var extra_fields = (data['extra_ldap_fields']).split("#"); 316 /* Default fields */ 317 details.append("<strong>" + utf8_decoder(data[this.value].cn)); 318 details.append("<br />" + data[this.value].mail); 319 if(data[this.value].telephonenumber != "") 320 { 321 details.append("<br /><br /><br /><strong> Telefone <br />"); 322 details.append(data[this.value].telephonenumber + "<br />"); 293 if(preferences.default_fields_quick_search != 0 || data[this.value].type_contact == "P") { 294 details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].cn) + "</label>" + '<span class="value">' + data[this.value].mail + "</span></p>"); 295 if(data[this.value].telephonenumber != null) 296 details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[this.value].telephonenumber + "</span></p>"); 323 297 } 324 if(data[this.value].mail[0].length > 1) 325 { 326 for (var i=0; i<extra_fields.length-1; i++) 327 { 298 if(data[this.value].mail[0].length > 1) { 299 for (var i=0; i<=extra_fields.length-1; i++) { 328 300 var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1); 329 301 var valor = extra_fields[i].substr(0, (extra_fields[i].indexOf("|"))); 330 if(data[this.value][valor] != undefined) 331 { 332 details.append("<br /><br /><strong>" + campo); 333 details.append("<br />" + data[this.value][valor][0]); 302 if(data[this.value][valor.toLowerCase()] != undefined) { 303 var tmp_campo = '<p><label class="attribute">' + campo + "</label>" ; 304 for(j=0; j<data[this.value][valor.toLowerCase()].length; j++) { 305 details.append(tmp_campo + '<span class="value">' + data[this.value][valor.toLowerCase()][j] + "</span></p>"); 306 tmp_campo = ""; 334 307 } 335 308 } 336 309 } 337 310 } 311 break; 338 312 } 339 313 }); … … 345 319 346 320 /* 347 * Método que inicializa a tela de contatos348 */349 function init_results(data)350 {351 var Op = null;352 var Ul = null;353 var selectable = $("#selectable");354 selectable.empty();355 Ul = document.createElement("ul");356 Op = document.createElement("li");357 var limit = data.length < 7 ? data.length : 7;358 for (i=1; i<=limit; i++)359 {360 Op.setAttribute("class", "ui-selectee");361 if(i == 1)362 Op.setAttribute("class", "ui-selected");363 var contact_name = utf8_decoder(data[i-1].cn);364 if(data['type_catalog'] != 'G' && (data[i-1].mail == null || data[i-1].mail == ""))365 {366 data[i-1].mail = "No mail";367 }368 369 if(contact_name.substring(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase())) != -1)370 contact_name = contact_name.substring(0, contact_name.toLowerCase().indexOf(data.search_for.toLowerCase())) + "<u>" + contact_name.substr(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()), data.search_for.length) + "</u>" + contact_name.substring(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()) + data.search_for.length);371 Op.innerHTML = '<span style="float:right; left:335px; position: absolute; z-index: 100; background-color: #EEE; padding:0"><button onClick="add_contact_field(contact_' + i + '.innerHTML)">+</button><button onClick="remove_contact_field(contact_' + i + '.innerHTML)">x</button></span><div class="id_contact_field" id=contact_' + i + ' onDblClick="add_contact_field(this.innerHTML)"><div class="name_contact"><strong>' + contact_name + '</strong><em>' + utf8_decoder(data[i-1].mail) + '</em></div></div>';372 $(Op).val(i - 1);373 Ul.appendChild(Op);374 selectable.append(Ul.innerHTML);375 }376 $("#adds").html("Foram adicionados " + quantidade_contatos + " contatos.");377 }378 379 380 /*381 321 * Método que configura o slider e os resultados 382 322 */ 383 function configure_slider(data) 384 { 385 $("#detalhes_contato").empty(); 386 var paginas = Math.ceil(data.length/7); 323 function configure_slider(data) { 324 var paginas = (Math.ceil(data.length/6)); 387 325 $("#title_usuarios").html( get_lang("Results") ); 388 326 $(function() { … … 392 330 max: paginas, 393 331 step: 1, 394 slide: function( event, ui ) 395 { 332 slide: function( event, ui ) { 333 create_list(data, false, ui.value); 396 334 var string_results = ui.value + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")"; 397 var selectable = $("#selectable"); 398 selectable.empty(); 399 var Ul = document.createElement("ul"); 400 var Op = document.createElement("li"); 401 for (i=((ui.value-1)*7)+1; i<(((ui.value-1)*7)+1)+7; i++) 402 { 403 if(data['type_catalog'] != 'G' && (data[i-1].mail == null || data[i-1].mail == "")) 404 { 405 data[i-1].mail = "No mail"; 406 } 407 var contact_name = utf8_decoder(data[i].cn); 408 if(contact_name.substring(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase())) != -1) 409 contact_name = contact_name.substring(0, contact_name.toLowerCase().indexOf(data.search_for.toLowerCase())) + "<u>" + contact_name.substr(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()), data.search_for.length) + "</u>" + contact_name.substring(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()) + data.search_for.length); 410 411 Op.setAttribute("class", "ui-selectee"); 412 Op.innerHTML = '<span style="float:right; left:335px; position: absolute; z-index: 100; background-color: #EEE; padding:0"><button onClick="add_contact_field(contact_' + i + '.innerHTML)">+</button><button onClick="remove_contact_field(contact_' + i + '.innerHTML)">x</button></span><div class="id_contact_field" id=contact_' + i + ' onDblClick="add_contact_field(this.innerHTML)"><div class="name_contact"><strong>' + contact_name + '</strong><em>' + utf8_decoder(data[i].mail) + '</em></div></div>'; 413 $(Op).val(i); 414 Ul.appendChild(Op); 415 selectable.append(Ul.innerHTML); 416 } 417 $( "#amount" ).val( string_results ); 418 $(this).unbind('keypress'); 419 document.getElementById("amount").focus(); 335 $( "#amount-text" ).val( string_results ); 420 336 } 421 337 }); 422 $( "#amount" ).val( $( "#slider" ).slider( "value" ) + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")"); 338 $("#selectable li:first button:first").focus(); 423 339 }); 424 340 } 425 341 342 var search_focus = false; 426 343 427 428 function checkEnter(e) 429 { 344 function setFocus() {search_focus = true;return;} 345 346 function removeFocus() {search_focus = false;return;} 347 348 function checkEnter(e) { 430 349 var kC = window.event ? event.keyCode : 431 350 e && e.keyCode ? e.keyCode : 432 351 e && e.which ? e.which : null; 433 if (kC) { 434 //$("#dialog-modal").unbind('keypress'); 352 if (kC) 435 353 return kC == 13; 436 } 437 else{ 354 else 438 355 return false; 439 356 } 440 } 357 441 358 442 359 /* 443 360 * Faz a busca direto da tela modal 444 361 */ 445 function buscaContato(param) 446 { 447 $("#busca").empty(); 448 if(param.length == 0) 449 { 450 alert(get_lang("Please enter a parameter to search.")); 451 return false; 362 function buscaContato(param) { 363 $("#busca, #detalhes_contato, #selectable").empty(); 364 if(param.length == 0) { 365 alert(get_lang("Please enter a parameter to search")); 366 return; 452 367 } 453 if(param.length < preferences.search_characters_number) 454 { 368 if(param.length < preferences.search_characters_number) { 455 369 alert(get_lang("parameter must be at least") + " " + preferences.search_characters_number + " " + get_lang("characters")); 456 370 return false; 457 371 } 458 372 var catalog = $("#combobox").val(); 459 var handler_emQuickSearch = function(data) 460 { 373 var handler_emQuickSearch = function(data) { 461 374 data_ = data; 462 if(data_.length > 0) 463 { 464 init_results(data_); 375 if(data_.length > 0) { 465 376 configure_slider(data_); 377 create_list(data_, true); 466 378 details_results(data_); 467 379 } 468 else 469 { 380 else { 470 381 $("#detalhes_contato, #selectable").empty(); 471 382 configure_slider(data); … … 476 387 477 388 478 quantidade_contatos = 0;479 389 /* 480 390 * Método que adiciona o contato selecionado no campo do email (To, CC, CCo) 481 391 */ 482 function add_contact_field(contact) 483 { 484 quantidade_contatos++; 485 $("#adds").html("Foram adicionados " + quantidade_contatos + " contatos."); 392 function add_contact_field(contact) { 486 393 var emailList = document.getElementById(field_ + "_" + id_).value; 487 var contact_parsed = contact.replace(/<\/?[^>]+>/gi, ' '); 394 var contact_parsed = contact.replace(/<[\/]*u>/gi, ''); 395 contact_parsed = contact_parsed.replace(/<u[^>]*>/gi, ''); 396 contact_parsed = contact_parsed.replace(/<\/?[^>]+>/gi, ' '); 488 397 contact_parsed = contact_parsed.replace(/^\s+|\s+$/gi, "").replace(/\s{2,}/gi, "|"); 489 398 var tokens_contact = contact_parsed.split("|"); 490 491 399 if (tokens_contact[1].indexOf("(") > 0) 492 400 tokens_contact[1] = tokens_contact[1].substr(0, (tokens_contact[1].indexOf("("))-2); … … 494 402 var final_contact; 495 403 if(tokens_contact[2] == undefined) 496 final_contact = "\"" + tokens_contact[0] + "" + "\" <" + tokens_contact[1] + ">, ";404 final_contact = "\"" + tokens_contact[0] + "" + "\" <" + tokens_contact[1] + ">, "; 497 405 else 498 406 { 499 407 if(tokens_contact[3] == undefined) 500 final_contact = "\"" + tokens_contact[0] + "" + tokens_contact[1] + "\" <" + tokens_contact[2] + ">, ";408 final_contact = "\"" + tokens_contact[0] + "" + tokens_contact[1] + "\" <" + tokens_contact[2] + ">, "; 501 409 else 502 final_contact = "\"" + tokens_contact[0] + " " + tokens_contact[1] + "" + tokens_contact[2] + "\" <" + tokens_contact[3] + ">, ";410 final_contact = "\"" + tokens_contact[0] + "" + tokens_contact[1] + "" + tokens_contact[2] + "\" <" + tokens_contact[3] + ">, "; 503 411 } 504 if (emailList[0] != '"')412 if (emailList[0] != '"' && emailList.indexOf(",") < 0) 505 413 emailList = emailList.substr(end_); 414 if(emailList.lastIndexOf(",") > 0) 415 emailList = emailList.substr(0, emailList.lastIndexOf(",") + 1); 506 416 507 if(emailList.lastIndexOf(",") > 0) 508 emailList = emailList.substr(0, emailList.lastIndexOf(",") + 2); 509 417 final_contact = final_contact.replace(/\/n/, ""); 510 418 new_emailList = emailList + final_contact; 511 419 document.getElementById(field_ + "_" + id_).value = new_emailList; 420 421 if (is_ie) { 422 var range= document.getElementById(field_ + "_" + id_).createTextRange(); 423 range.collapse(false); 424 range.select(); 425 } else { 512 426 document.getElementById(field_ + "_" + id_).focus(); 427 } 428 429 430 513 431 $(this).unbind('keypress'); 514 432 $(this).dialog("close"); … … 518 436 * Método que remove o contato selecionado no campo do email (To, CC, CCo) 519 437 */ 520 function remove_contact_field(contact) 521 { 438 function remove_contact_field(contact) { 522 439 var contact_parsed = contact.replace(/<\/?[^>]+>/gi, ' '); 523 440 contact_parsed = contact_parsed.replace(/^\s+|\s+$/gi, "").replace(/\s{2,}/gi, "|"); 524 var tokens_contact = contact_parsed.split("|");525 441 442 var tokens_contact = contact_parsed.split("|"); 526 443 if (tokens_contact[2].indexOf("(") > 0) 527 444 tokens_contact[2] = tokens_contact[2].substr(0, (tokens_contact[2].indexOf("("))-2); … … 532 449 final_contact = "\"" + tokens_contact[0] + " " + tokens_contact[1] + " " + tokens_contact[2] + "\" <" + tokens_contact[3] + ">"; 533 450 534 if(quantidade_contatos ==0) 535 { 536 alert("Nenhum contato adicionado!"); 537 return false; 538 } 539 540 var encontrou = false; 541 var emailList = document.getElementById(field_ + "_" + id_).value; 451 var exist = false; 452 var emailList = $("#" + field_ + "_" + id_).val(); 542 453 var emails_adicionados = emailList.split(","); 543 var quantidade_excluidos = 0; 544 for(i=0; i<emails_adicionados.length -1; i++) 545 { 546 if(emails_adicionados[i].trim() == final_contact) 547 { 454 for(i=0; i<emails_adicionados.length -1; i++) { 455 emails_adicionados[i].replace(/^\s+|\s+$/g, ''); 456 if(emails_adicionados[i] == final_contact) { 548 457 emails_adicionados[i] = "%"; 549 quantidade_excluidos++; 550 encontrou = true; 458 exist = true; 551 459 } 552 460 } 553 if (encontrou == false) 554 { 555 alert("Não pode excluir um contato que ainda não adicionou."); 461 if (exist == false) 556 462 return false; 557 }558 559 quantidade_contatos -= quantidade_excluidos;560 $("#adds").html("Foram adicionados " + quantidade_contatos + " contatos.");561 562 463 var novos_contatos = emails_adicionados.join(","); 563 464 novos_contatos = novos_contatos.replace(/%,/g, ""); 564 document.getElementById(field_ + "_" + id_).value = novos_contatos;465 $("#" + field_ + "_" + id_).val(novos_contatos); 565 466 } 566 467 567 468 568 function utf8_decoder ( str_data ) 569 469 /* Decoder utf8 */ 470 function utf8_decoder ( str_data ) { 570 471 var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0; 571 572 472 str_data += ''; 573 574 while ( i < str_data.length ) 575 { 473 while ( i < str_data.length ) { 576 474 c1 = str_data.charCodeAt(i); 577 if (c1 < 128) 578 { 475 if (c1 < 128) { 579 476 tmp_arr[ac++] = String.fromCharCode(c1); 580 477 i++; 581 } else if ((c1 > 191) && (c1 < 224)) 582 { 478 } else if ((c1 > 191) && (c1 < 224)) { 583 479 c2 = str_data.charCodeAt(i+1); 584 480 tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); … … 596 492 597 493 598 function show_help() 599 494 /* Mostra tela de help */ 495 function show_help() { 600 496 $(function() { 601 497 $( "#dialog-modal_help" ).dialog({ 602 498 resizable: false, 603 height: 230,604 499 width: 540, 605 500 modal: true, 606 closeOnEscape: true, 607 501 closeOnEscape: true 608 502 }); 609 503 }); … … 611 505 612 506 613 emQuickCatalogSearch.prototype.showWindow = function (div) 614 { 615 $(this).bind('keypress'); 507 emQuickCatalogSearch.prototype.showWindow = function (div) { 508 $(this).bind('keydown'); 616 509 $(function() { 617 510 $( "#dialog:ui-dialog" ).dialog( "destroy" ); 618 511 $( "#dialog-modal" ).dialog({ 619 512 resizable: false, 620 height: 530,621 width: 940,513 // height: "auto", 514 width: 780, 622 515 modal: true, 516 position: 'bottom', 623 517 closeOnEscape: true, 624 518 close: function (event, ui) { 625 519 event.stopPropagation(); 626 $(this).unbind('keypress'); 520 $(this).unbind('keydown'); 521 if (is_ie) { 522 var range= document.getElementById(field_ + "_" + id_).createTextRange(); 523 range.collapse(false); 524 range.select(); 525 } else { 526 document.getElementById(field_ + "_" + id_).focus(); 527 } 528 }, 529 open: function () { 530 $("#selectable li:first button:first").focus(); 627 531 }, 628 532 focus: function (event, ui) { 629 $(this).bind('keypress');533 //$(this).unbind('keydown'); 630 534 }, 631 535 beforeClose: function (event, ui) { 632 $(this).bind('keypress');536 $(this).unbind('keydown'); 633 537 }, 634 buttons:{ 635 'Fechar' : function(){ 538 buttons:[ 539 { 540 text: "Fechar", 541 click: function(){ 636 542 $("#detalhes_contato, #selectable, #busca").empty(); 637 543 $(this).dialog("close"); 544 if (is_ie) { 545 var range= document.getElementById(field_ + "_" + id_).createTextRange(); 546 range.collapse(false); 547 range.select(); 548 } else { 549 document.getElementById(field_ + "_" + id_).focus(); 638 550 } 551 }, 552 style: "margin-top: -2.1em" 639 553 } 554 ] 640 555 }); 641 556 }); 557 $(".ui-dialog .ui-dialog-titlebar") 558 .append('<a href="#" class="ui-dialog-titlebar-minimize ui-corner-all" role="button"><span class="ui-icon ui-icon-minusthick">minimize</span></a>') 559 .find('.ui-dialog-titlebar-minimize').click(function() { 560 $(".ui-dialog-buttonpane, .ui-dialog-content").toggle(); 561 $(".ui-icon-minusthick, .ui-icon-newwin").toggleClass('ui-icon-minusthick').toggleClass('ui-icon-newwin'); 562 }); 642 563 643 644 645 if(! div) { 646 alert(get_lang('The list has no participant.')); 647 return; 648 } 649 650 if(! this.arrayWin[div.id]) { 651 div.style.width = "700px"; 652 div.style.height = "230px"; 653 var title = get_lang('The results were found in the Global Catalog')+':'; 654 var wHeight = div.offsetHeight + "px"; 655 var wWidth = div.offsetWidth + "px"; 656 div.style.width = div.offsetWidth - 5; 657 658 win = new dJSWin({ 659 id: 'QuickCatalogSearch_'+div.id, 660 content_id: div.id, 661 width: wWidth, 662 height: wHeight, 663 title_color: '#3978d6', 664 bg_color: '#eee', 665 title: title, 666 title_text_color: 'white', 667 button_x_img: '../phpgwapi/images/winclose.gif', 668 border: true, 669 onclose: 'QuickCatalogSearch.restoreShortcuts("'+ div.id +'")'}); 670 671 this.arrayWin[div.id] = win; 672 win.draw(); 673 } 674 else { 675 win = this.arrayWin[div.id]; 676 } 677 //document.getElementById("window_QuickCatalogSearch").style.visibility = "visible"; 678 //win.open(); 679 //document.getElementById('select_QuickCatalogSearch').focus(); 680 681 if(is_ie && (preferences.use_shortcuts == '1')){ 682 shortcut.remove('down'); 683 shortcut.remove('up'); 684 shortcut.remove('return'); 685 } 686 } 687 688 emQuickCatalogSearch.prototype.transfer_result = function (field, ID, begin, end){ 689 cm = document.getElementById('select_QuickCatalogSearch'); 690 option_selected = cm.options[cm.selectedIndex].value + ", "; 691 emailList = document.getElementById(field + "_" + ID).value; 692 693 new_emailList = emailList.substring(0, begin) + option_selected + emailList.substring((parseInt(end) + 2), emailList.length); 694 document.getElementById(field + "_" + ID).value = new_emailList; 695 document.getElementById(field + "_" + ID).focus(); 696 this.arrayWin['window_QuickCatalogSearch_A'].close(); 697 document.getElementById("window_QuickCatalogSearch").style.visibility = "hidden"; 698 } 699 700 emQuickCatalogSearch.prototype.close_QuickSearch_window = function (field, ID){ 701 //document.getElementById('QuickCatalogSearch_window_QuickCatalogSearch').style.display = "none"; 702 document.getElementById(field + "_" + ID).focus(); 703 this.arrayWin['window_QuickCatalogSearch_A'].close(); 704 document.getElementById("window_QuickCatalogSearch").style.visibility = "hidden"; 705 if(typeof shortcut.all_shortcuts['down'] == 'undefined'){ 706 if(is_ie && (preferences.use_shortcuts == '1')) 707 { 708 shortcut.add("down",function(){select_msg('null', 'down');},{'disable_in_input':false}); 709 shortcut.add("up",function(){select_msg('null', 'up');},{'disable_in_input':false}); 710 shortcut.add("return",function(){ 711 if ( Element('border_id_0').className==='menu-sel' ) 712 { 713 all_messages = Element('tbody_box').childNodes; 714 for (var i=0; i < all_messages.length; i++) 715 { 716 if ( exist_className(all_messages[i], 'selected_shortcut_msg') ) 717 { 718 Element("td_who_" + all_messages[i].id).onclick(); 719 return; 720 } 721 } 722 } 723 },{'disable_in_input':true}); 724 } 725 } 726 } 727 728 emQuickCatalogSearch.prototype.restoreShortcuts = function(id) { 729 730 var search_win = document.getElementById(id); 731 if(typeof shortcut.all_shortcuts['down'] == 'undefined'){ 732 if (search_win.style.visibility == 'visible') 733 { 734 shortcut.add("down",function(){select_msg('null', 'down');},{'disable_in_input':false}); 735 shortcut.add("up",function(){select_msg('null', 'up');},{'disable_in_input':false}); 736 shortcut.add("return",function(){ 737 if ( Element('border_id_0').className==='menu-sel' ) 738 { 739 all_messages = Element('tbody_box').childNodes; 740 for (var i=0; i < all_messages.length; i++) 741 { 742 if ( exist_className(all_messages[i], 'selected_shortcut_msg') ) 743 { 744 Element("td_who_" + all_messages[i].id).onclick(); 745 return; 746 } 747 } 748 } 749 },{'disable_in_input':true}); 750 } 751 } 752 search_win.style.visibility = 'hidden'; 753 754 } 755 756 emQuickCatalogSearch.prototype.close_window = function(id) { 757 this.arrayWin[id].close(); 758 var group_values = Element('list_values'); 759 var user_values = Element('user_values'); 760 } 761 emQuickCatalogSearch.prototype.showCatalogList = function (border_id){ 762 var el = Element('catalog_list'); 763 764 if(el) { 765 Element('border_id').value = border_id; 766 win = this.arrayWin[el.id]; 767 win.open(); 768 return; 769 } 770 var border_input = document.createElement("INPUT"); 771 border_input.type = 'hidden'; 772 border_input.id = 'border_id'; 773 border_input.value = border_id; 774 document.body.appendChild(border_input); 775 el = document.createElement("DIV"); 776 el.id = 'catalog_list'; 777 document.body.appendChild(el); 778 el.style.visibility = "hidden"; 779 el.style.position = "absolute"; 780 el.style.width = "700px"; 781 el.style.height = is_ie ? "360px" : "375px"; 782 el.style.left = "0px"; 783 el.style.top = "0px"; 784 el.innerHTML = "<table border='0' cellpading='0' cellspacing='0' width='100%'>"+ 785 "<tr><td id='td1' style='cursor:pointer' align='center' onclick='QuickCatalogSearch.select_div(\"tab1\")'><a href='#' class='catalog' onclick='QuickCatalogSearch.select_div(\"tab1\");'>"+get_lang('Global Catalog')+"</a></td>"+ 786 "<td id='td2' style='background:#cecece;cursor:pointer' onclick='QuickCatalogSearch.select_div(\"tab2\")' align='center'><a href='#' class='catalog' onclick='QuickCatalogSearch.select_div(\"tab2\");'>"+get_lang('Personal Catalog')+"</a></td></tr>"+ 787 '</table>'+ 788 '<div id="tab1" align="center"><br>'+ 789 '<table border="0" cellpading="0" cellspacing="0">'+ 790 '<tr><td>'+get_lang("Select an organization and click on button <b>Search</b>")+' :</td></tr>'+ 791 '<tr><td><select style="display:none;width:150px" id="select_catalog" name="select_catalog" onchange="javascript:QuickCatalogSearch.update_organizations();"></select> '+ 792 '<select id="select_organization" style="width:150px" name="select_organization"></select> '+ 793 '<input type="text" id="search_for" name="search_for" value="" size="30" maxlength="30"/> <input type="button" onclick="QuickCatalogSearch.searchCatalogList(true)" class="button" value="'+get_lang('Search')+'"> <input style="display:visible" type="button" onclick="QuickCatalogSearch.searchCatalogList(false)" class="button" value="'+get_lang('List All')+'"></td></tr>'+ 794 '<tr><td><input onclick="javascript:QuickCatalogSearch.changeOptions(this.value)" id="type_l" type="radio" name="type" value="l"/>'+get_lang('Public Lists')+' <input type="radio" id="type_u" name="type" value="u" onclick="javascript:QuickCatalogSearch.changeOptions(this.value)" checked/>'+get_lang('Users')+' '+ 795 '<span style="visibility:hidden;background:#cc4444" id=msg_search> <font face="Verdana" size="1" color="WHITE">'+get_lang('Search in Catalog')+'...</font> </span></td></tr>'+ 796 '<tr><td>'+ 797 '<span id="list_span"><select multiple style="display:none;width:580px" size="14" id="list_values"></select></span>'+ 798 '<span id="user_span"><select multiple style="width:580px" size="14" id="user_values"></select></span>'+ 799 '</td></tr>'+ 800 '<tr><td nowrap><center>'+get_lang('Click here to add into the fields')+': <input type="button" class="button" value="'+get_lang('TO')+'" onClick="javascript:QuickCatalogSearch.addContacts(\'to\')"> '+ 801 '<input type="button" class="button" value="'+get_lang('CC')+'" onClick="javascript:QuickCatalogSearch.addContacts(\'cc\')"> '+( allow_hidden_copy ? 802 '<input type="button" class="button" value="'+get_lang('CCo')+'" onClick="javascript:QuickCatalogSearch.addContacts(\'cco\')">' : '' )+ 803 '</center></td></tr><tr><td nowrap><center><input type="button" value="'+get_lang('Close')+'" onClick="javascript:QuickCatalogSearch.close_window(\'catalog_list\')"></center></td></tr>'+ 804 '</table>'+ 805 '</div>'+ 806 '<div style="display:none" id="tab2" align="center">'+ 807 '<br><br><br>'+ 808 '<table border="0" cellpading="0" cellspacing="0">'+ 809 '<tr><td>'+get_lang("Select the type of contact that you want to view")+' :</td></tr>'+ 810 '<tr><td><input onclick="javascript:QuickCatalogSearch.changeOptions(this.value)" type="radio" name="type" value="p"/>' + get_lang('People') + ' <input type="radio" name="type" value="g" onclick="javascript:QuickCatalogSearch.changeOptions(this.value)"/>' + get_lang('Groups') + ' '+ 811 '<tr><td>'+ 812 '<span id="personal_span"><select multiple style="width:580px" size="14" id="list_personal"></select></span>'+ 813 '<span id="groups_span"><select multiple style="display:none;width:580px" size="14" id="list_groups"></select></span>'+ 814 '</td></tr>'+ 815 '<tr><td nowrap><center>'+get_lang('Click here to add into the fields')+': <input type="button" class="button" value="'+get_lang('TO')+'" onClick="javascript:QuickCatalogSearch.addContacts(\'to1\')"> '+ 816 '<input type="button" class="button" value="'+get_lang('CC')+'" onClick="javascript:QuickCatalogSearch.addContacts(\'cc1\')"> '+ ( allow_hidden_copy ? 817 '<input type="button" class="button" value="'+get_lang('CCo')+'" onClick="javascript:QuickCatalogSearch.addContacts(\'cco1\')">' : '' )+ 818 '</center></td></tr><tr><td nowrap><center><input type="button" value="'+get_lang('Close')+'" onClick="javascript:QuickCatalogSearch.close_window(\'catalog_list\')"></center></td></tr>'+ 819 '</table>'+ 820 '</div>'; 821 822 var title = get_lang('Search in the Global Catalog'); 823 var wHeight = el.offsetHeight - (is_ie ? 10 : 0) + "px"; 824 var wWidth = el.offsetWidth + "px"; 825 el.style.width = el.offsetWidth; 826 827 Element('search_for').onkeypress = function (e) { 828 if ((is_ie && (window.event.keyCode == 13)) || (!is_ie && e.keyCode == 13)) { 829 QuickCatalogSearch.searchCatalogList(true); 830 } 831 }; 832 833 win = new dJSWin({ 834 id: 'win_'+el.id, 835 content_id: el.id, 836 width: wWidth, 837 height: wHeight, 838 title_color: '#3978d6', 839 bg_color: '#eee', 840 title: title, 841 title_text_color: 'white', 842 button_x_img: '../phpgwapi/images/winclose.gif', 843 border: true}); 844 845 this.arrayWin[el.id] = win; 846 win.draw(); 847 win.open(); 848 849 var handler_catalogs = function(data){ 850 var user_catalog = get_lang("Global Catalog"); 851 if(data.length > 1) { 852 Element('select_catalog').style.display = ''; 853 for(i = 0; i < data.length; i++) { 854 Element('select_catalog').options[i] = new Option(data[i],i); 855 if(user_catalog.toUpperCase() == data[i].toUpperCase()) 856 Element('select_catalog').options[i].selected = true; 857 } 858 } 859 } 860 cExecute ("$this.ldap_functions.get_catalogs", handler_catalogs); 861 862 this.update_organizations(); 863 var handler_cc_contacts= function(data){ 864 if(data && data.length > 0){ 865 var aux = data.split(","); 866 for(var i=0; i< aux.length; i++){ 867 QuickCatalogSearch.cc_contacts[QuickCatalogSearch.cc_contacts.length] = aux[i]; 868 } 869 } 870 } 871 cExecute("$this.db_functions.get_cc_contacts",handler_cc_contacts); 872 873 var handler_cc_groups = function(data){ 874 if(data && data.length > 0){ 875 var aux = data.split(","); 876 for(var i=0; i < data.length; i++){ 877 QuickCatalogSearch.cc_groups[QuickCatalogSearch.cc_groups.length] = aux[i]; 878 } 879 } 880 } 881 cExecute("$this.db_functions.get_cc_groups",handler_cc_groups); 882 883 } 884 885 emQuickCatalogSearch.prototype.select_div = function(element){ 886 if(element == 'tab1'){ 887 Element('tab1').style.display = ''; 888 Element('tab2').style.display = 'none'; 889 Element('td1').style.background = '#eee'; 890 Element('td2').style.background = '#cecece'; 891 } 892 if(element == 'tab2'){ 893 Element('tab1').style.display = 'none'; 894 Element('tab2').style.display = ''; 895 Element('td1').style.background = '#cecece'; 896 Element('td2').style.background = '#eee'; 897 898 } 899 } 900 901 emQuickCatalogSearch.prototype.load_catalog = function(){ 902 903 var _this = this; 904 var content = new Array; 905 var select = Element('list_personal').style.display == 'none'? Element('list_groups'): Element('list_personal'); 906 907 if(Element('list_personal').style.display == 'none'){ 908 content = _this.cc_groups; 909 }else{ 910 content = _this.cc_contacts; 911 } 912 if(select.options.length > 0){ 913 for(var i=0; i < select.options.length; i++){ 914 select.options[i] = null; 915 i--; 916 } 917 } 918 for(var i=0; i < content.length; i++){ 919 if(content[i] != undefined){ 920 var aux = content[i].split(";"); 921 var opt = new Option(aux[0] + ' (' + aux[1] + ')','"' + aux[0] + '" ' + '<' + aux[1] + '>',false,false); 922 select[select.length] = opt; 923 } 924 } 925 content.splice(0,(content.lenght)); 926 } 927 928 emQuickCatalogSearch.prototype.update_organizations = function(){ 929 while(Element('select_organization').options.length > 0) { 930 Element('select_organization').remove(0); 931 } 932 var handler_org = function(data){ 933 Element('select_organization').options[0] = new Option(get_lang('all'),'all'); 934 if (data != null){ 935 var user_organization = Element('user_organization').value; 936 for(x = 0; x < data.length; x++) { 937 Element('select_organization').options[x+1] = new Option(data[x].toUpperCase(),data[x]); 938 if(user_organization.toUpperCase() == data[x].toUpperCase()) 939 Element('select_organization').options[x+1].selected = true; 940 } 941 } 942 } 943 cExecute ("$this.ldap_functions.get_organizations&referral=false&catalog="+Element('select_catalog').value, handler_org); 944 } 945 946 emQuickCatalogSearch.prototype.changeOptions = function(type){ 947 948 switch(type){ 949 case 'u': 950 Element('list_values').style.display = 'none'; 951 Element('user_values').style.display = ''; 952 break; 953 954 case 'l': 955 Element('user_values').style.display = 'none'; 956 Element('list_values').style.display = ''; 957 break; 958 959 case 'p': 960 Element('list_personal').style.display = ''; 961 Element('list_groups').style.display = 'none' 962 QuickCatalogSearch.load_catalog(); 963 break; 964 965 case 'g': 966 Element('list_personal').style.display = 'none'; 967 Element('list_groups').style.display = '' 968 QuickCatalogSearch.load_catalog(); 969 break; 970 } 971 972 } 973 974 emQuickCatalogSearch.prototype.addContacts = function(field) { 975 976 var border_id = Element('border_id').value; 977 var select = Element('user_values').style.display == 'none' ? Element('list_values') : Element('user_values'); 978 if(field == "to1" || field == "cc1" || field == "cco1"){ 979 field = field.substr(0,field.length - 1); 980 var select = Element('list_personal').style.display == 'none' ? Element('list_groups') : Element('list_personal'); 981 } 982 var fieldOpener = Element(field+"_"+border_id); 983 var not_selected = true; 984 985 for (i = 0 ; i < select.length ; i++) { 986 if (select.options[i].selected && select.options[i].value != '-1') { 987 if(fieldOpener.value.length > 0 && (fieldOpener.value.lastIndexOf(',') != (fieldOpener.value.length - 1))){ 988 fieldOpener.value += ","; 989 } 990 fieldOpener.value += select.options[i].value + ","; 991 not_selected = false; 992 select.options[i].selected = false; 993 } 994 } 995 996 if(not_selected) 997 return false; 998 999 if(field != 'to'){ 1000 a_link = Element("a_"+field+"_link_"+border_id); 1001 if(a_link) 1002 a_link.onclick(); 1003 } 1004 } 1005 1006 emQuickCatalogSearch.prototype.searchCatalogList = function (itemSearch){ 1007 1008 if(itemSearch && Element('search_for').value.length < preferences.search_characters_number){ 1009 alert(get_lang('Your search argument must be longer than %1 characters.', preferences.search_characters_number)); 1010 Element('search_for').focus(); 1011 return false; 1012 } 1013 var organization = Element('select_organization').value; 1014 var search = itemSearch ? Element('search_for').value : ''; 1015 var catalog = Element('select_catalog').value; 1016 1017 var handler_searchResults = function(data){ 1018 Element('msg_search').style.visibility = 'hidden'; 1019 if(data.error){ 1020 alert(get_lang('More than %1 results. Please, try to refine your search.',data.maxResult)); 1021 return false; 1022 }else if(data.users.length == 0 && data.groups.length == 0){ 1023 alert(get_lang('None result was found.')); 1024 } 1025 1026 1027 var group = Element('list_span'); 1028 var user = Element('user_span'); 1029 if(is_ie){ 1030 group.innerHTML = ''; 1031 user.innerHTML = ''; 1032 } 1033 else { 1034 group = Element('list_values'); 1035 user = Element('user_values'); 1036 for(var i = 0;i < group.options.length; i++) 1037 group.options[i--] = null; 1038 for(var i = 0;i < user.options.length; i++) 1039 user.options[i--] = null; 1040 } 1041 1042 var arr = new Array(data.maxResult); 1043 1044 for(i = 0; data.groups && i < data.groups.length; i++) { 1045 // Maneiras diferentes de se montar uma tag OPTION, pois no IE o objeto Option é muito lento. 1046 if(is_ie) 1047 arr[i] = '<option value="'+'"'+data.groups[i].name+'" <'+data.groups[i].email+'>">'+data.groups[i].name+' ('+data.groups[i].email+')'+'</option>'; 1048 else 1049 group.options[i] = new Option(data.groups[i].name+' ('+data.groups[i].email+')','"'+data.groups[i].name+'" <'+data.groups[i].email+'>'); 1050 } 1051 1052 1053 if(is_ie) 1054 group.innerHTML = '<select multiple style="display:none;width:580px" size="14" id="list_values">'+ arr.join() +'</select>'; 1055 1056 arr = new Array(data.maxResult); 1057 1058 for(i = 0; data.users && i < data.users.length; i++) { 1059 /*******************************************************************************************/ 1060 /* O resultado pratico do bloco de codigo a seguir eh a exibicao dos valores em tela, 1061 ja que vai verificar se o departamento e o email estao vazios ou nulos e a partir dai o 1062 resultado apresentado em tela sera exibido de maneira mais apresentavel; 1063 */ 1064 //verifica se departamento eh null ou nao; 1065 var department = data.users[i].department ? " - " + data.users[i].department : ""; 1066 //verifica se email eh null ou nao; 1067 var email = data.users[i].email ? data.users[i].email : ""; 1068 1069 // Maneiras diferentes de se montar uma tag OPTION, pois no IE o objeto Option é muito lento. 1070 if(is_ie) 1071 arr[i] = '<option value="'+'"'+data.users[i].name+'" <'+email+'>">'+data.users[i].name+' ('+email+')'+department+'</option>'; 1072 else { 1073 user.options[i] = new Option(data.users[i].name+' ('+email+')'+department,'"'+data.users[i].name+'" <'+email+'>'); // incluido data.users[i].department para exibir setor na opcao "Pesquisar" do email; 1074 } 1075 } 1076 1077 if(is_ie) 1078 user.innerHTML = '<select multiple style="width:580px" size="14" id="user_values">'+ arr.join() +'</select>'; 1079 1080 // Display entries found. 1081 var type = (data.groups.length > 0 && data.users.length == 0) ? 'l' : 'u'; 1082 Element("type_"+type).checked = true; 1083 QuickCatalogSearch.changeOptions(type); 1084 } 1085 1086 Element('msg_search').style.visibility = 'visible'; 1087 cExecute ("$this.ldap_functions.catalogsearch&organization="+organization+"&search_for="+search+"&catalog="+catalog, handler_searchResults); 564 $("#dialog-modal button, input.button").button(); 1088 565 } 1089 566 1090 567 1091 /* Build the Object */568 /* Build the Object */ 1092 569 //QuickCatalogSearch; 1093 570 QuickCatalogSearch = new emQuickCatalogSearch();
Note: See TracChangeset
for help on using the changeset viewer.