Changeset 6459


Ignore:
Timestamp:
06/11/12 18:05:43 (12 years ago)
Author:
cristiano
Message:

Ticket #2765 - Aviso de ferias de destinatarios na criacao de mensagens, conforme filtro fora de escritorio

Location:
trunk
Files:
6 edited

Legend:

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

    r6139 r6459  
    436436                $ldapService->connection = $this->ds; 
    437437                $campos_extras = ''; 
    438                 $justthese = array("cn", "mail", "telephonenumber", "mobile", "phpgwaccountvisible", "uid", "employeenumber", "ou"); 
     438                $justthese = array("cn", "mail", "telephonenumber", "mobile", "phpgwaccountvisible", "uid", "employeenumber", "ou","vacationActive","vacationInfo"); 
    439439                foreach($searchable_fields as $fields_ldap => $value_field) 
    440440                {    
     
    473473                                        $this->ldapConnect(true,$i); 
    474474                                        $filter="(|(cn=*$search_for*)(mail=*$search_for*))"; 
    475                                         $justthese = array("cn", "mail", "telephoneNumber", "mobile", "phpgwAccountVisible", "uid","employeeNumber", "ou"); 
     475                                        $justthese = array("cn", "mail", "telephoneNumber", "mobile", "phpgwAccountVisible", "uid","employeeNumber", "ou","vacationActive","vacationInfo");  
    476476                                        $sr=@ldap_search($this->ds, $this->ldap_context, $filter, $justthese, 0, $this->max_result+1); 
    477477                                        if(!$sr) 
     
    496496                                 
    497497                        $info_return['search_for'] = $params['search_for']; 
    498             return $info_return; 
     498            return $this->toISO8859($info_return);  
    499499        }  
    500500         
     501    /*Converte um parametro de UTF-8 para ISO8859*/  
     502    function toISO8859($data)  
     503    {  
     504        if(!is_array($data))  
     505          return mb_convert_encoding( $data , 'ISO-8859-1' , 'UTF-8 , ISO-8859-1' );  
     506        $return = array();  
     507        foreach ($data as $i => $v)  
     508          $return[$this->toISO8859($i)] = $this->toISO8859($v);  
     509        return $return;  
     510    }  
     511 
    501512        function make_quicksearch_card($info, $cn) 
    502513        { 
  • trunk/expressoMail1_2/js/QuickCatalogSearch.js

    r6417 r6459  
    148148                                        } 
    149149                                } 
     150                                if (data_[id_contact].vacationactive == "TRUE"){ 
     151                                        details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     152                                        if ( data_[id_contact].vacationinfo ){ 
     153                                                details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data_[id_contact].vacationinfo +'</span></div></div>'); 
     154                                                if ( $('.outoffice-inner').height() > $('.outoffice').height() ){                                                
     155                                                        var link = $('<a>').html('Ver mais'); 
     156                                                        link.attr('id','more'); 
     157                                                        link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     158                                                        details.append(link); 
     159                                                } 
     160                                        } 
     161                                } 
    150162                                break; 
    151163                        case 'P': 
     
    156168                if(data_[id_contact].telephonenumber != null) 
    157169                    details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data_[id_contact].telephonenumber + '</span></p>'); 
     170                                if (data_[id_contact].vacationactive == "TRUE"){ 
     171                                        details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     172                                        if (data_[id_contact].vacationinfo){ 
     173                                                details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data_[id_contact].vacationinfo +'</span></div></div>'); 
     174                                                if ( $('.outoffice-inner').height() > $('.outoffice').height() ){ 
     175                                                        var link = $('<a>').html('Ver mais'); 
     176                                                        link.attr('id','more'); 
     177                                                        link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     178                                                        details.append(link); 
     179                                                } 
     180                                        } 
     181                                }        
    158182                                break; 
    159183                        default: 
     
    189213                                        } 
    190214                                } 
     215                                if (data_[id_contact].vacationactive == "TRUE"){ 
     216                                        details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     217                                        if (data_[id_contact].vacationinfo){ 
     218                                                details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data_[id_contact].vacationinfo +'</span></div></div>'); 
     219                                                if ( $('.outoffice-inner').height() > $('.outoffice').height() ){ 
     220                                                        var link = $('<a>').html('Ver mais'); 
     221                                                        link.attr('id','more'); 
     222                                                        link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     223                                                        details.append(link); 
     224                                                } 
     225                                        }        
     226                                }                                
    191227                        break; 
    192228                }                                
     
    278314                        else if(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()) != -1 && data.search_for.indexOf(" ") == -1 && data.search_for.indexOf("@") == -1)                                                                     
    279315                                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); 
    280                         var line = '<span class="menu-control"><button class="'+btnClass+'" id="actions_'+i+'" onClick="'+exist+'(document.getElementById(\'contact_' + i + '\').innerHTML, this, \'contact_' + i + '\')">'+ signal +'</button></span><div id="contact_' + i + '" onDblClick="'+exist+'(this.innerHTML, document.getElementById(\'actions_'+i+'\'), \'contact_' + i + '\')"><div class="name_contact"><strong class="name">' + contact_name + '</strong><em class="email">' + ((utf8_decoder(data[i-1].mail) != undefined)? (utf8_decoder(data[i-1].mail) == 'undefined' ? get_lang("No mail") : utf8_decoder(data[i-1].mail)) : get_lang("No mail")) + '</em></div></div>'; 
     316                        var vacationImg = ''; 
     317                        if (data[i-1].vacationactive == "TRUE") 
     318                                vacationImg = '<img src="templates/default/images/mala-small.png"/>';    
     319                        var line = '<span class="menu-control"><button class="'+btnClass+'" id="actions_'+i+'" onClick="'+exist+'(document.getElementById(\'contact_' + i + '\').innerHTML, this, \'contact_' + i + '\')">'+ signal +'</button></span><div id="contact_' + i + '" onDblClick="'+exist+'(this.innerHTML, document.getElementById(\'actions_'+i+'\'), \'contact_' + i + '\')"><div class="name_contact"><strong class="name">' + contact_name +' '+ vacationImg +'</strong><em class="email">' + ((utf8_decoder(data[i-1].mail) != undefined)? (utf8_decoder(data[i-1].mail) == 'undefined' ? get_lang("No mail") : utf8_decoder(data[i-1].mail)) : get_lang("No mail")) + '</em></div></div>'; 
    281320                        Op.innerHTML = line; 
    282321            $(Op).val(i - 1); 
     
    316355                                                } 
    317356                                        } 
    318                                 }                        
     357                                } 
     358                                if (data[first_contact].vacationactive == "TRUE"){ 
     359                                        details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     360                                        if ( data[first_contact].vacationinfo ){ 
     361                                                details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data[first_contact].vacationinfo +'</span></div></div>'); 
     362                                                if ( $('.outoffice-inner').height() > $('.outoffice').height() ){                                                
     363                                                        var link = $('<a>').html('Ver mais'); 
     364                                                        link.attr('id','more'); 
     365                                                        link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     366                                                        details.append(link); 
     367                                                }        
     368                                        }        
     369                                }                                                        
    319370                                break; 
    320371                        case 'P': 
     
    325376                if(data[first_contact].telephonenumber != null) 
    326377                                        details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[first_contact].telephonenumber  + '</span></p>'); 
     378                                if (data[first_contact].vacationactive == "TRUE"){ 
     379                                        details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     380                                        if ( data[first_contact].vacationinfo ){ 
     381                                                details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data[first_contact].vacationinfo +'</span></div></div>'); 
     382                                                if ( $('.outoffice-inner').height() > $('.outoffice').height() ){ 
     383                                                        var link = $('<a>').html('Ver mais'); 
     384                                                        link.attr('id','more'); 
     385                                                        link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     386                                                        details.append(link); 
     387                                                }        
     388                                        } 
     389                                }                                
    327390                                break; 
    328391                        default:         
     
    357420                                        } 
    358421                                } 
     422                                if (data[first_contact].vacationactive == "TRUE"){ 
     423                                        details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     424                                        if ( data[first_contact].vacationinfo ){ 
     425                                                details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data[first_contact].vacationinfo +'</span></div></div>'); 
     426                                                if ( $('.outoffice-inner').height() > $('.outoffice').height() ){                                                
     427                                                        var link = $('<a>').html('Ver mais'); 
     428                                                        link.attr('id','more'); 
     429                                                        link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     430                                                        details.append(link); 
     431                                                }        
     432                                        } 
     433                                }                                
    359434                                break; 
    360435                } 
     
    388463                                                                        }else 
    389464                                                                                var extra_fields = [];    
    390                                                                         if(preferences.default_fields_quick_search != 0 && data[this.value] ) { 
    391                                                                                         details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].cn[0]) + "</label>" + '<span class="value">' + (data[this.value].mail ? data[this.value].mail[0] : "")+ "</span></p>"); 
    392                                                                                 if(data[this.value].telephonenumber ) 
     465                                                                        if(preferences.default_fields_quick_search != 0 && data[this.value] ) {  
     466                                            details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].cn[0]) + "</label>" + '<span class="value">' + (data[this.value].mail ? data[this.value].mail[0] : "")+ "</span></p>"); 
     467                                                                                if(data[this.value].telephonenumber ) 
    393468                                                                                        details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + (data[this.value].telephonenumber ? data[this.value].telephonenumber[0] : "")+ "</span></p>"); 
    394469                                                                        } 
     
    404479                                                                                } 
    405480                                                                        } 
     481                                                                        if (data[this.value].vacationactive == "TRUE"){ 
     482                                                                                details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     483                                                                                if ( data[this.value].vacationinfo ){ 
     484                                                                                        details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data[this.value].vacationinfo +'</span></div></div>'); 
     485                                                                                        if ( $('.outoffice-inner').height() > $('.outoffice').height() ){                                                                                        
     486                                                                                                var link = $('<a>').html('Ver mais'); 
     487                                                                                                link.attr('id','more'); 
     488                                                                                                link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     489                                                                                                details.append(link); 
     490                                                                                        } 
     491                                                                                } 
     492                                                                        }                                                                        
    406493                                                                        break; 
    407494                                                                case 'P': 
     
    412499                                                                        if(data[this.value].telephonenumber != null) 
    413500                                                                                details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[this.value].telephonenumber + "</span></p>"); 
     501                                                                        if (data[this.value].vacationactive == "TRUE"){ 
     502                                                                                details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     503                                                                                if ( data[this.value].vacationinfo ){ 
     504                                                                                        details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data[this.value].vacationinfo +'</span></div></div>'); 
     505                                                                                        if ( $('.outoffice-inner').height() > $('.outoffice').height() ){ 
     506                                                                                                var link = $('<a>').html('Ver mais'); 
     507                                                                                                link.attr('id','more'); 
     508                                                                                                link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     509                                                                                                details.append(link); 
     510                                                                                        }        
     511                                                                                } 
     512                                                                        }                                                                        
    414513                                                                        break; 
    415514                                                                default: 
     
    443542                                                                                } 
    444543                                                                        } 
     544                                                                        if (data[this.value].vacationactive == "TRUE"){ 
     545                                                                                details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     546                                                                                if ( data[this.value].vacationinfo ){ 
     547                                                                                        details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data[this.value].vacationinfo +'</span></div></div>') 
     548                                                                                        if ( $('.outoffice-inner').height() > $('.outoffice').height() ){ 
     549                                                                                                var link = $('<a>').html('Ver mais'); 
     550                                                                                                link.attr('id','more'); 
     551                                                                                                link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     552                                                                                                details.append(link); 
     553                                                                                        } 
     554                                                                                }        
     555                                                                        }                                                                        
    445556                                                                        break; 
    446557                                                        } 
  • trunk/expressoMail1_2/templates/default/main.css

    r6251 r6459  
    12561256 
    12571257 button.expressomail-button-icon-ative{color:#E17009 !important; border: 1px solid #E17009 !important;background: none repeat scroll 0 0 #FFE1CC !important;} 
     1258  
     1259.outoffice  
     1260{  
     1261    width: 295px;   
     1262    height: 50px;   
     1263    overflow: hidden;  
     1264}  
     1265         
     1266.title-outoffice  
     1267{  
     1268        margin-left: 10px;  
     1269        font-family: verdana;  
     1270        font-size: 1.2em;  
     1271}  
     1272.outoffice span{  
     1273        margin: 5px;  
     1274}  
     1275 
     1276#detalhes_contato img{ margin-bottom: -4px;}  
  • trunk/prototype/config/filter.ini

    r6021 r6459  
    1010 
    1111[before.delete] 
     12deleteVacationRule = modules/filters/interceptors/FilterMapping.php 
    1213deleteRule = modules/filters/interceptors/FilterMapping.php 
    1314 
     
    2223makeId = modules/filters/interceptors/FilterMapping.php 
    2324applySieveFilter = modules/filters/interceptors/FilterMapping.php 
     25verifyVacationRule = modules/filters/interceptors/FilterMapping.php 
    2426 
    2527 
    2628[after.update] 
    2729makeId = modules/filters/interceptors/FilterMapping.php 
     30verifyVacationRule = modules/filters/interceptors/FilterMapping.php 
    2831 
    2932 
  • trunk/prototype/config/user.ini

    r5804 r6459  
    4444givenName = givenName 
    4545sn = sn 
     46dn = dn 
     47vacationInfo = vacationInfo 
     48vacationActive = vacationActive 
    4649displayName = displayName 
    4750mailAlternateAddress = mailAlternateAddress 
  • trunk/prototype/modules/filters/interceptors/FilterMapping.php

    r6392 r6459  
    697697                return( $return ); 
    698698        } 
     699 
     700        /**  
     701         * Método que insere no ldap as informações do vacation  
     702         *  
     703         * @license    http://www.gnu.org/copyleft/gpl.html GPL  
     704         * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)  
     705         * @sponsor     Caixa Econômica Federal  
     706         * @author     Cristiano Corrêa Schmidt  
     707         * @param      <$uri>  
     708         * @param      <$result>  
     709         * @param      <$criteria>  
     710         * @param      <$original>  
     711         * @return     <void>  
     712         * @access     public  
     713         */  
     714        public function verifyVacationRule( &$uri , &$params , &$criteria , $original  )  
     715        {  
     716            if( $original['properties']['id'] === 'vacation' )  
     717            {  
     718 
     719                $user = Controller::read(array('concept' => 'user' , 'id' => config::me('uidNumber') , 'service' => 'OpenLDAP'));  
     720                $ldapConf = Config::service('OpenLDAP', 'config');  
     721                $con = ldap_connect( $ldapConf['host'] );  
     722                ldap_set_option( $con,LDAP_OPT_PROTOCOL_VERSION, 3 );  
     723                ldap_bind( $con, $ldapConf['user'], $ldapConf['password']);  
     724 
     725                $info = array();  
     726                if(!in_array('Vacation', $user['objectClass']))  
     727                        $info['objectClass'] = 'Vacation';  
     728 
     729                $info['vacationActive'] = strtoupper($original['properties']['enabled']);  
     730 
     731                if(isset($original['properties']['actions']) && isset($original['properties']['actions'][0]['parameter']))  
     732                        $info['vacationInfo']   = $original['properties']['actions'][0]['parameter'];  
     733                else if( !isset($user['vacationInfo']) )  
     734                {  
     735                    $rules = $this->getRules();  
     736                    if(is_array($rules))  
     737                        foreach ($rules as $rule)  
     738                        if($rule['id'] === 'vacation')  
     739                                $info['vacationInfo'] = $rule['actions'][0]['parameter'];  
     740                }  
     741 
     742                if(!in_array('Vacation', $user['objectClass']))  
     743                        ldap_mod_add ( $con , $user['dn'] ,  $info );  
     744                else  
     745                        ldap_modify ( $con , $user['dn'] ,  $info );  
     746 
     747 
     748                ldap_close($con);  
     749 
     750            }  
     751          
     752        } 
     753 
     754        /**  
     755         * Método que remove do ldap as informações do vacation  
     756         *  
     757         * @license    http://www.gnu.org/copyleft/gpl.html GPL  
     758         * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)  
     759         * @sponsor     Caixa Econômica Federal  
     760         * @author     Cristiano Corrêa Schmidt  
     761         * @param      <$uri>  
     762         * @param      <$result>  
     763         * @param      <$criteria>  
     764         * @param      <$original>  
     765         * @return     <void>  
     766         * @access     public  
     767         */  
     768        public function deleteVacationRule( &$uri , &$params , &$criteria , $original  )  
     769        {          
     770            if( $original['URI']['id'] === 'vacation' )  
     771            {  
     772                $user = Controller::read(array('concept' => 'user' , 'id' => config::me('uidNumber') , 'service' => 'OpenLDAP'));  
     773                $ldapConf = Config::service('OpenLDAP', 'config');  
     774                $con = ldap_connect( $ldapConf['host'] );  
     775                ldap_set_option( $con,LDAP_OPT_PROTOCOL_VERSION, 3 );  
     776                ldap_bind( $con, $ldapConf['user'], $ldapConf['password']);  
     777                $info = array();  
     778                $info['vacationActive'] = 'FALSE';  
     779                $info['vacationInfo'] = "";  
     780                ldap_modify ( $con , $user['dn'] ,  $info );  
     781                ldap_close($con);  
     782            }  
     783        } 
    699784} 
Note: See TracChangeset for help on using the changeset viewer.