Ignore:
Timestamp:
09/07/11 16:23:02 (13 years ago)
Author:
airton
Message:

Ticket #2267 - Exibir mais detalhes dos contatos retornados na busca rapida de destinatarios

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/js/QuickCatalogSearch.js

    r4833 r5075  
    66                this.cc_groups  = new Array(); 
    77        } 
    8  
    9         emQuickCatalogSearch.prototype.showList = function(data, begin, end){ 
    10                 connector.loadScript("ccQuickAdd"); 
    11  
    12                 if(preferences.use_shortcuts == '0'){ 
    13                     connector.loadScript("shortcut"); 
    14                 } 
     8         
     9        emQuickCatalogSearch.prototype.showList = function(data, begin, end, ID, field) 
     10        { 
     11                        data_    = data;         
     12                        id_    = ID; 
     13            field_ = field; 
     14            begin_ = begin; 
     15            end_   = end; 
     16 
     17                        keypress_read(data); 
     18            init_results(data); 
     19            configure_slider(data); 
     20            details_results(data); 
     21                         
     22                    connector.loadScript("ccQuickAdd"); 
     23 
     24            if(preferences.use_shortcuts == '0'){ 
     25                connector.loadScript("shortcut"); 
     26            } 
    1527                 
    1628                id = '1'; 
    1729                _this = this; 
    18                 var el_A = document.createElement("DIV"); 
     30        var el_A = document.createElement("DIV"); 
    1931                el_A.style.visibility = "hidden"; 
    2032                el_A.style.position = "absolute"; 
     
    2537                el_A.id = 'window_QuickCatalogSearch_A'; 
    2638                document.body.appendChild(el_A); 
    27                 el_A.innerHTML = ""; 
    28  
    29                 var el = document.createElement("DIV"); 
    30                 el.style.visibility = "hidden"; 
    31                 el.style.position = "absolute"; 
    32                 el.style.left = "0px"; 
    33                 el.style.top = "40px"; 
    34                 el.style.width = "695px"; 
    35                 el.style.height = "186px"; 
    36                 el.style.overflow = "auto"; 
    37                 el.id = 'window_QuickCatalogSearch'; 
    38                 el_A.appendChild(el); 
    39                 el.innerHTML = ""; 
    40                  
    41                  
    42                 func_add_contact = function () {  
    43                         var select_QuickCatalogSearch = document.getElementById("select_QuickCatalogSearch"); 
    44                         var contact_selected = select_QuickCatalogSearch.options[select_QuickCatalogSearch.selectedIndex].text; 
    45                          
    46                         contact_selected = contact_selected.split('('); 
    47                          
    48                         var first_and_last_name = contact_selected[0].split(" "); 
    49                          
    50                         var data = []; 
    51                         data[0] = first_and_last_name[0]; 
    52                         data[1] = first_and_last_name[0]; 
    53                         data[2] = ""; 
    54                          
    55                         for (i=1; i < first_and_last_name.length; i++) 
    56                                 data[2] += first_and_last_name[i] + " "; 
    57                          
    58                         data[2] = data[2].replace(/\s*$/g,''); 
    59                         data[3] = contact_selected[1].substring(0, contact_selected[1].indexOf(")") ); 
    60                          
    61                         ccQuickAddOne.showList( data );                  
     39                el_A.innerHTML = "";             
     40                 
     41                func_add_contact = function () {         
    6242                };               
    6343                 
    64                         var title_innerHTML = get_lang('Select a name') + ':'; 
    65                         if (data.quickSearch_only_in_userSector) 
    66                                 title_innerHTML += "<font color='BLACK' nowrap> ("+get_lang('Showing only the results found in your organization')+".)</font>" 
    67  
    68                         var title = document.createElement("SPAM"); 
    69                         title.id = 'window_QuickCatalogSearch_title'; 
    70                         title.innerHTML = "&nbsp;&nbsp;<b><font color='BLUE' nowrap>"+title_innerHTML+"</font></b><br>&nbsp;&nbsp;"; 
    71                         el_A.appendChild(title); 
    72                         var butt = document.createElement('BUTTON'); 
    73                         var buttext = document.createTextNode('OK'); 
    74                         butt.id = "QuickCatalogSearch_button_ok"; 
    75                         butt.appendChild(buttext); 
    76                         butt.onclick = function () {QuickCatalogSearch.transfer_result(data.field, data.ID, begin, end);}; 
    77                         el_A.appendChild(butt); 
    78  
    79                         var space = document.createElement('SPAN'); 
    80                         space.innerHTML = "&nbsp;&nbsp;"; 
    81                         el_A.appendChild(space); 
    82  
    83                         var butt = document.createElement('BUTTON'); 
    84                         butt.id = "QuickCatalogSearch_button_close"; 
    85                         var buttext = document.createTextNode(get_lang('Close')); 
    86                         butt.appendChild(buttext); 
    87                         butt.onclick = function () {QuickCatalogSearch.close_QuickSearch_window(data.field, data.ID);}; 
    88                         el_A.appendChild(butt); 
    89  
    90                         var space = document.createElement('SPAN'); 
    91                         space.innerHTML = "&nbsp;&nbsp;"; 
    92                         el_A.appendChild(space); 
    93  
    94                         var butt = document.createElement('BUTTON'); 
    95                         butt.id = "QuickCatalogSearch_button_add_contact"; 
    96                         var buttext = document.createTextNode(get_lang("Add Contact")); 
    97                         butt.appendChild(buttext); 
    98                         butt.onclick = func_add_contact; 
    99                         el_A.appendChild(butt); 
    100  
    101                 if (document.getElementById('select_QuickCatalogSearch') == null){ 
    102                          
    103                         var cmb = document.createElement("SELECT"); 
    104                         cmb.id = "select_QuickCatalogSearch"; 
    105                         cmb.style.width = "2400px"; 
    106                         //cmb.size = "12"; 
    107                         cmb.ondblclick = function() {QuickCatalogSearch.transfer_result(data.field, data.ID, begin, end);}; 
    108                         cmb.onkeypress = function (e) 
     44        _this.showWindow(el_A);  
     45        } 
     46         
     47         
     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 }; 
     54                        var slider = $( "#slider"  ); 
     55                        switch (keyCode)  
    10956                        { 
    110                                 if (is_ie) 
     57                                case arrow.enter: 
     58                                        add_contact_field(document.getElementsByClassName("ui-selected")[0].getElementsByClassName("name_contact")[0].innerHTML); 
     59                                        $("#dialog-modal").dialog("close"); 
     60                                        break; 
     61                                 
     62                                case arrow.left: 
     63                                        slider.slider( "value", $( "#slider" ).slider( "value" ) - 1); 
     64                                        create_list(data_);                                      
     65                                        break; 
     66                                 
     67                                case arrow.right: 
     68                                        if( (($( "#slider" ).slider( "value" ))) == Math.ceil(data_.length/7) ) 
     69                                        { 
     70                                                alert("Não há mais páginas"); 
     71                                                break; 
     72                                        } 
     73                                        slider.slider( "value", $( "#slider" ).slider( "value" ) + 1);                                   
     74                                        create_list(data_);                                              
     75                                        break; 
     76                                 
     77                                case arrow.up: 
     78                                        id_contact = document.getElementsByClassName("ui-selected")[0].value; 
     79                                        if(id_contact == (($( "#slider" ).slider( "value" ) -1)*7)) 
     80                                                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                                } 
     107                                                        } 
     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 />");   
     119                                        } 
     120                                    }  
     121                                    else 
     122                                    { 
     123                                        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 />");   
     131                                        } 
     132                                        if(data_[this.value].mail[0].length > 1)  
     133                                        { 
     134                                            for (var i=0; i<extra_fields.length-1; i++) 
     135                                            { 
     136                                                var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);     
     137                                                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]); 
     142                                                } 
     143                                            } 
     144                                        } 
     145                                    } 
     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                            else 
     182                            { 
     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                                    else 
     195                                    { 
     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                                        break; 
     222                        } 
     223                });      
     224        } 
     225                         
     226                         
     227                         
     228                /* 
     229                * Método que cria a lista de contatos 
     230                */ 
     231                function create_list(data) 
     232                { 
     233                                        $("#detalhes_contato").empty(); 
     234                                        var paginas = Math.ceil(data.length/7) - 1;  
     235                                        $("#title_usuarios").html( get_lang("Results") ); 
     236                                        var string_results = $( "#slider" ).slider( "value" ) + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")";  
     237                        var selectable = $("#selectable"); 
     238                                                selectable.empty(); 
     239                        var Ul = document.createElement("ul"); 
     240                        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) 
     244                                                                break; 
     245                                                        if (data['type_catalog'] != 'G' && (data[i-1].mail == null || data[i-1].mail == "")) 
     246                                data[i-1].mail = "No mail";  
     247                            if(i == ((($( "#slider" ).slider( "value" ) -1)*7)+1)){ 
     248                                                                Op.setAttribute("class", "ui-selected"); 
     249                                                        } 
     250                                                        else {   
     251                                                                Op.setAttribute("class", "ui-selectee"); 
     252                                                        } 
     253                                                        var contact_name = utf8_decoder(data[i-1].cn); 
     254                                                        if(contact_name.substring(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase())) != -1)                                                                      
     255                                                                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>'; 
     257                            $(Op).val(i - 1); 
     258                            Ul.appendChild(Op); 
     259                            selectable.append(Ul.innerHTML); 
     260                        } 
     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();       
     264                }        
     265                 
     266                 
     267                 
     268                 
     269                 
     270                 
     271                function details_results(data)  
     272        { 
     273                                $(function() { 
     274                    $( "#selectable" ).selectable({ 
     275                                                stop: function() { 
     276                                                                var details = $("#detalhes_contato").empty();                                  
     277                                $( ".ui-selected", this ).each(function() { 
     278                                    if(data['type_catalog'] == 'G') 
     279                                    {                                          
     280                                        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                                        { 
     291                                            var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);     
     292                                            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]); 
     297                                            } 
     298                                        } 
     299                                    } 
     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                                        { 
     315                                                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 />");   
     323                                                } 
     324                                                if(data[this.value].mail[0].length > 1)  
     325                                                { 
     326                                                    for (var i=0; i<extra_fields.length-1; i++) 
     327                                                    { 
     328                                                        var campo = extra_fields[i].substr(extra_fields[i].indexOf("|")+1);     
     329                                                        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]); 
     334                                                        } 
     335                                                    } 
     336                                                } 
     337                                        } 
     338                                    } 
     339                                                                }); 
     340                                                } 
     341                    }); 
     342                }); 
     343        } 
     344         
     345         
     346        /*  
     347         * Método que inicializa a tela de contatos  
     348         */ 
     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 == "")) 
    111365                                { 
    112                                         if ((window.event.keyCode) == 13) 
    113                                         { 
    114                                                 QuickCatalogSearch.transfer_result(data.field, data.ID, begin, end); 
    115                                         } 
    116                                         else if ((window.event.keyCode) == 27) 
    117                                         { 
    118                                                 QuickCatalogSearch.close_QuickSearch_window(data.field, data.ID); 
    119                                         } 
     366                                        data[i-1].mail = "No mail";  
    120367                                } 
     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         * Método que configura o slider e os resultados  
     382         */ 
     383        function configure_slider(data)  
     384        {        
     385                        $("#detalhes_contato").empty(); 
     386            var paginas = Math.ceil(data.length/7);  
     387            $("#title_usuarios").html( get_lang("Results") ); 
     388            $(function() { 
     389                $( "#slider" ).slider({ 
     390                                        value:1, 
     391                                        min: 1, 
     392                                        max: paginas, 
     393                                        step: 1, 
     394                        slide: function( event, ui )  
     395                        { 
     396                                                                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(); 
     420                                                } 
     421                    }); 
     422                    $( "#amount" ).val( $( "#slider" ).slider( "value" ) + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")");          
     423                }); 
     424        } 
     425         
     426 
     427                 
     428        function checkEnter(e)  
     429                { 
     430                        var kC = window.event ? event.keyCode : 
     431            e && e.keyCode ? e.keyCode : 
     432            e && e.which ? e.which : null; 
     433            if (kC) {  
     434                                //$("#dialog-modal").unbind('keypress'); 
     435                                return kC == 13; 
     436                        } 
     437            else{  
     438                                return false; 
     439                        } 
     440                } 
     441         
     442        /*  
     443         * Faz a busca direto da tela modal   
     444         */ 
     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; 
     452            } 
     453            if(param.length < preferences.search_characters_number) 
     454            { 
     455                alert(get_lang("parameter must be at least") + " " +  preferences.search_characters_number + " " + get_lang("characters")); 
     456                return false; 
     457            } 
     458            var catalog = $("#combobox").val(); 
     459            var handler_emQuickSearch = function(data)  
     460            { 
     461                data_ = data; 
     462                                if(data_.length > 0) 
     463                {         
     464                    init_results(data_); 
     465                    configure_slider(data_);     
     466                    details_results(data_); 
     467                } 
     468                else 
     469                { 
     470                    $("#detalhes_contato, #selectable").empty(); 
     471                    configure_slider(data);  
     472                } 
     473            } 
     474            cExecute ("$this.ldap_functions.quicksearchcontact&search_for="+param+"&field=TO&ID=0&catalog="+catalog, handler_emQuickSearch); 
     475        } 
     476                 
     477         
     478                quantidade_contatos = 0; 
     479        /*  
     480         * Método que adiciona o contato selecionado no campo do email (To, CC, CCo)  
     481         */ 
     482        function add_contact_field(contact) 
     483        { 
     484                        quantidade_contatos++; 
     485            $("#adds").html("Foram adicionados " + quantidade_contatos + " contatos."); 
     486                        var emailList      = document.getElementById(field_ + "_" + id_).value;  
     487            var contact_parsed = contact.replace(/<\/?[^>]+>/gi, ' '); 
     488            contact_parsed     = contact_parsed.replace(/^\s+|\s+$/gi, "").replace(/\s{2,}/gi, "|"); 
     489            var tokens_contact = contact_parsed.split("|"); 
     490 
     491            if (tokens_contact[1].indexOf("(") > 0) 
     492                tokens_contact[1] = tokens_contact[1].substr(0, (tokens_contact[1].indexOf("("))-2); 
     493                                 
     494                        var final_contact; 
     495                        if(tokens_contact[2] == undefined) 
     496                                final_contact = "\"" + tokens_contact[0] + " " + "\" <" + tokens_contact[1] + ">, "; 
     497                        else 
     498                        {                        
     499                                if(tokens_contact[3] == undefined)                
     500                                        final_contact =  "\"" + tokens_contact[0] + " " +  tokens_contact[1] + "\" <" + tokens_contact[2] + ">, "; 
    121501                                else 
     502                                        final_contact =  "\"" + tokens_contact[0] + " " +  tokens_contact[1] + " " +  tokens_contact[2] + "\" <" + tokens_contact[3] + ">, "; 
     503            } 
     504            if (emailList[0] != '"') 
     505                emailList = emailList.substr(end_); 
     506             
     507            if(emailList.lastIndexOf(",") > 0) 
     508                emailList = emailList.substr(0, emailList.lastIndexOf(",") + 2); 
     509             
     510            new_emailList = emailList + final_contact;     
     511            document.getElementById(field_ + "_" + id_).value = new_emailList; 
     512                        document.getElementById(field_ + "_" + id_).focus();    
     513                        $(this).unbind('keypress'); 
     514                        $(this).dialog("close"); 
     515        } 
     516                 
     517                /*  
     518         * Método que remove o contato selecionado no campo do email (To, CC, CCo)  
     519         */ 
     520                function remove_contact_field(contact) 
     521                { 
     522                        var contact_parsed = contact.replace(/<\/?[^>]+>/gi, ' '); 
     523            contact_parsed     = contact_parsed.replace(/^\s+|\s+$/gi, "").replace(/\s{2,}/gi, "|"); 
     524                        var tokens_contact = contact_parsed.split("|"); 
     525                         
     526                        if (tokens_contact[2].indexOf("(") > 0) 
     527                tokens_contact[2] = tokens_contact[2].substr(0, (tokens_contact[2].indexOf("("))-2); 
     528                        var final_contact; 
     529                        if(tokens_contact[3] == undefined)                
     530                                final_contact =  "\"" + tokens_contact[0] + " " +  tokens_contact[1] + "\" <" + tokens_contact[2] + ">"; 
     531                        else 
     532                                final_contact =  "\"" + tokens_contact[0] + " " +  tokens_contact[1] + " " +  tokens_contact[2] + "\" <" + tokens_contact[3] + ">"; 
     533                         
     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;  
     542                        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) 
    122547                                { 
    123                                         if ((e.keyCode) == 13) 
    124                                         { 
    125                                                 QuickCatalogSearch.transfer_result(data.field, data.ID, begin, end); 
    126                                         } 
    127                                         else if ((e.keyCode) == 27) 
    128                                         { 
    129                                                 QuickCatalogSearch.close_QuickSearch_window(data.field, data.ID); 
    130                                         } 
     548                                        emails_adicionados[i] = "%"; 
     549                                        quantidade_excluidos++; 
     550                                        encontrou = true; 
    131551                                } 
    132                         }; 
    133                         el.appendChild(cmb); 
    134  
    135                 } 
    136                 else{ 
    137                         var title_innerHTML = get_lang('Select a name') + ':'; 
    138                         if (data.quickSearch_only_in_userSector) 
    139                                 title_innerHTML += "<font color='BLACK' nowrap> ("+get_lang('Showing only the results found in your organization')+".)</font>" 
    140  
    141                         var title = Element('window_QuickCatalogSearch_title'); 
    142                         title.innerHTML = "&nbsp;&nbsp;<b><font color='BLUE' nowrap>"+title_innerHTML+"</font></b><br>&nbsp;&nbsp;"; 
    143                          
    144                         var cmb = document.getElementById('select_QuickCatalogSearch'); 
    145                         cmb.ondblclick = function() {QuickCatalogSearch.transfer_result(data.field, data.ID, begin, end);}; 
    146                         cmb.onkeypress = function (e) 
     552                        } 
     553                        if (encontrou == false)  
    147554                        { 
    148                                 if (is_ie) 
    149                                 { 
    150                                         if ((window.event.keyCode) == 13) 
    151                                         { 
    152                                                 QuickCatalogSearch.transfer_result(data.field, data.ID, begin, end); 
    153                                         } 
    154                                         else if ((window.event.keyCode) == 27) 
    155                                         { 
    156                                                 QuickCatalogSearch.close_QuickSearch_window(data.field, data.ID); 
    157                                         } 
    158                                 } 
    159                                 else 
    160                                 { 
    161                                         if ((e.keyCode) == 13) 
    162                                         { 
    163                                                 QuickCatalogSearch.transfer_result(data.field, data.ID, begin, end); 
    164                                         } 
    165                                         else if ((e.keyCode) == 27) 
    166                                         { 
    167                                                 QuickCatalogSearch.close_QuickSearch_window(data.field, data.ID); 
    168                                         } 
    169                                 } 
    170                         }; 
    171  
    172                         for (i=0; i<cmb.length; i++) 
    173                                 cmb.options[i--] = null; 
    174                          
    175                         var butt_ok = document.getElementById("QuickCatalogSearch_button_ok"); 
    176                         var butt_close = document.getElementById("QuickCatalogSearch_button_close"); 
    177                         var butt_add_contact = document.getElementById("QuickCatalogSearch_button_add_contact"); 
    178                         butt_ok.onclick = function () {QuickCatalogSearch.transfer_result(data.field, data.ID, begin, end);}; 
    179                         butt_close.onclick = function () {QuickCatalogSearch.close_QuickSearch_window(data.field, data.ID);}; 
    180                         butt_add_contact.onclick = func_add_contact; 
    181                 } 
    182  
    183                 for (i=0; i<data.length; i++){ 
    184                         var Op = document.createElement("OPTION"); 
    185                         Op.text = data[i].cn + ' (' + data[i].mail + ')'; 
    186                         if (data[i].phone != '') 
    187                                 Op.text += ' - ' + data[i].phone; 
    188                         if (data[i].ou != '') 
    189                                 Op.text += ' - ' + data[i].ou; // adicionado "data[i].ou" para exibir setor (F9) 
    190                         Op.value = '"' + data[i].cn + '" ' + '<' + data[i].mail + '>'; 
    191                         cmb.options.add(Op); 
    192                 } 
    193                 cmb.options[0].selected = true; 
    194                 cmb.size = data.length+1; 
    195                 _this.showWindow(el_A); 
    196         } 
    197          
     555                                alert("Não pode excluir um contato que ainda não adicionou."); 
     556                                return false; 
     557                        } 
     558                         
     559                        quantidade_contatos -= quantidade_excluidos; 
     560            $("#adds").html("Foram adicionados " + quantidade_contatos + " contatos."); 
     561                         
     562                        var novos_contatos = emails_adicionados.join(",");   
     563            novos_contatos = novos_contatos.replace(/%,/g, ""); 
     564                        document.getElementById(field_ + "_" + id_).value = novos_contatos; 
     565                } 
     566         
     567               
     568        function utf8_decoder ( str_data )  
     569        { 
     570            var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0; 
     571             
     572            str_data += ''; 
     573             
     574            while ( i < str_data.length )  
     575            { 
     576                c1 = str_data.charCodeAt(i); 
     577                if (c1 < 128)  
     578                { 
     579                    tmp_arr[ac++] = String.fromCharCode(c1); 
     580                    i++; 
     581                } else if ((c1 > 191) && (c1 < 224))  
     582                       { 
     583                            c2 = str_data.charCodeAt(i+1); 
     584                            tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); 
     585                            i += 2; 
     586                        } else { 
     587                                    c2 = str_data.charCodeAt(i+1); 
     588                                    c3 = str_data.charCodeAt(i+2); 
     589                                    tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); 
     590                                    i += 3; 
     591                                } 
     592            } 
     593  
     594            return tmp_arr.join(''); 
     595        } 
     596         
     597               
     598    function show_help() 
     599        { 
     600                $(function() { 
     601                        $( "#dialog-modal_help" ).dialog({ 
     602                                                resizable: false, 
     603                                                height: 230, 
     604                                                width: 540, 
     605                                                modal: true, 
     606                                                closeOnEscape: true, 
     607 
     608                        }); 
     609                }); 
     610        }        
     611                   
     612               
    198613        emQuickCatalogSearch.prototype.showWindow = function (div) 
    199614        { 
    200                 if(! div) { 
     615                                $(this).bind('keypress'); 
     616                                $(function() { 
     617                    $( "#dialog:ui-dialog" ).dialog( "destroy" );                     
     618                    $( "#dialog-modal" ).dialog({ 
     619                                                resizable: false, 
     620                                                height: 530, 
     621                                                width: 940, 
     622                                                modal: true, 
     623                                                closeOnEscape: true, 
     624                                                close: function (event, ui) { 
     625                                                        event.stopPropagation(); 
     626                                                        $(this).unbind('keypress'); 
     627                                                }, 
     628                                                focus: function (event, ui) { 
     629                                                        $(this).bind('keypress'); 
     630                                                }, 
     631                                                beforeClose: function (event, ui) { 
     632                                                        $(this).bind('keypress'); 
     633                                                }, 
     634                                                buttons:{ 
     635                                                        'Fechar' : function(){ 
     636                                                                $("#detalhes_contato, #selectable, #busca").empty(); 
     637                                                                $(this).dialog("close"); 
     638                                                        }  
     639                                                } 
     640                                        }); 
     641                }); 
     642         
     643                 
     644                 
     645        if(! div) { 
    201646                        alert(get_lang('The list has no participant.')); 
    202647                        return; 
     
    222667                                button_x_img: '../phpgwapi/images/winclose.gif', 
    223668                                border: true, 
    224                                 onclose: 'QuickCatalogSearch.restoreShortcuts("'+ div.id +'")' }); 
     669                                onclose: 'QuickCatalogSearch.restoreShortcuts("'+ div.id +'")'}); 
    225670 
    226671                        this.arrayWin[div.id] = win; 
     
    230675                        win = this.arrayWin[div.id]; 
    231676                } 
    232                 document.getElementById("window_QuickCatalogSearch").style.visibility = "visible"; 
    233                 win.open(); 
    234                 document.getElementById('select_QuickCatalogSearch').focus(); 
     677                //document.getElementById("window_QuickCatalogSearch").style.visibility = "visible"; 
     678                //win.open(); 
     679                //document.getElementById('select_QuickCatalogSearch').focus(); 
    235680 
    236681                if(is_ie && (preferences.use_shortcuts == '1')){ 
     
    249694                document.getElementById(field + "_" + ID).value = new_emailList; 
    250695                document.getElementById(field + "_" + ID).focus(); 
    251                  
    252696                this.arrayWin['window_QuickCatalogSearch_A'].close(); 
    253697                document.getElementById("window_QuickCatalogSearch").style.visibility = "hidden"; 
     
    397841                        title_text_color: 'white', 
    398842                        button_x_img: '../phpgwapi/images/winclose.gif', 
    399                         border: true }); 
     843                        border: true}); 
    400844                         
    401845                this.arrayWin[el.id] = win;              
Note: See TracChangeset for help on using the changeset viewer.