Changeset 485


Ignore:
Timestamp:
09/26/08 11:10:54 (16 years ago)
Author:
niltonneto
Message:

Quando os contatos dinâmicos estiverem habilitados para o usuário:

  • Número máximo de contatos é carregado do array salvo na sessão, evitando a chamada AJAX ao

carregar módulo, que era invocada em preferences.js pela funçao get_number_of_contacts().

  • Ao invés de usar a função JS init() para recarregar o autocompletar, que é muito pesado, apenas

atualizar a variavel "contacts" com os novos contatos dinãmicos adicionados, retornados pela
função que envia o email, verificando se os mesmos já não existem.

  • Na função add_dynamic_contacts() foi usada uma RegExp? para limpar as "," duplicadas (que pode ocorrer) e os espaços em branco.
Location:
trunk/expressoMail1_2
Files:
5 edited

Legend:

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

    r413 r485  
    4545                        $this->db = new db_functions(); 
    4646                        $this->contacts = $this->db->get_dynamic_contacts(); 
    47                         $this->number_of_contacts = $_SESSION['phpgw_info']['server']['expressomail']['expressoMail_Number_of_dynamic_contacts']; 
     47                        $this->number_of_contacts = $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['number_of_contacts']; 
    4848                        $this->functions = new functions(); 
    4949                } 
     
    113113                function add_dynamic_contacts($full_email_address) 
    114114                { 
     115                        // Trim all whitespaces and duplicated commas from full_email_address 
     116                        $full_email_address = preg_replace('{(,)\1+}',',',ereg_replace( ' +', '', $full_email_address)); 
    115117                        $parse_address = imap_rfc822_parse_adrlist($full_email_address, ""); 
     118                        $new_contacts = array(); 
    116119                        foreach ($parse_address as $val) 
    117120                        { 
     
    120123                                if ($this->contact_exist_in_ContactCenter($val->mailbox."@".$val->host)) 
    121124                                        continue; 
    122                                          
     125 
    123126                                if(!$this->contacts) // Used one time to insert the first contact in database 
    124127                                { 
    125128                                        $this->db->insert_contact($val->mailbox."@".$val->host); 
     129                                        // Just new contact added. 
     130                                        $new_contacts[] = $val->mailbox."@".$val->host; 
    126131                                        $this->contacts = $this->db->get_dynamic_contacts(); 
    127132                                } 
     
    138143                                                } 
    139144                                                if($this->contacts[$item]['timestamp'] < $older_contact_time) //search for oldest email 
    140                                                         { 
    141                                                                 $older_contact = $item;  
    142                                                                 $older_contact_time = $this->contacts[$item]['timestamp']; 
    143                                                         } 
     145                                                { 
     146                                                        $older_contact = $item;  
     147                                                        $older_contact_time = $this->contacts[$item]['timestamp']; 
     148                                                } 
    144149                                        } 
    145150                                        if ($new_contact_flag == true) //new contact! 
    146151                                        { 
     152                                                // Just new contact added. 
     153                                                $new_contacts[] = $val->mailbox."@".$val->host; 
    147154                                                if($this->number_of_contacts > count($this->contacts)) 
    148155                                                { 
     
    159166                        } 
    160167                        $this->db->update_contacts($this->contacts); 
     168                        return implode(",;",$new_contacts); 
    161169                } 
    162170                 
  • trunk/expressoMail1_2/inc/class.imap_functions.inc.php

    r469 r485  
    13081308                                error_log("$now - $userip - $sent [$subject] - $userid => $addrs\r\n", 3, "/home/expressolivre/mail_senders.log"); 
    13091309                        } 
    1310                         if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_dynamic_contacts']) { 
     1310                        if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['number_of_contacts'] &&  
     1311                           $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_dynamic_contacts']) { 
    13111312                                $contacts = new dynamic_contacts(); 
    1312                                 $contacts->add_dynamic_contacts($toaddress.$ccaddress.$ccoaddress); 
    1313                         } 
    1314                         return true; 
     1313                                $new_contacts = $contacts->add_dynamic_contacts($toaddress.",".$ccaddress.",".$ccoaddress); 
     1314                                return array("success" => true, "new_contacts" => $new_contacts); 
     1315                        } 
     1316                        return array("success" => true); 
    13151317                } 
    13161318        } 
  • trunk/expressoMail1_2/index.php

    r413 r485  
    5959        $boemailadmin   = CreateObject('emailadmin.bo'); 
    6060        $emailadmin_profile = $boemailadmin->getProfileList(); 
     61    // Loading Admin Config Module 
     62    $c = CreateObject('phpgwapi.config','expressoMail1_2'); 
     63    $c->read_repository(); 
     64    $current_config = $c->config_data;     
     65 
    6166        $_SESSION['phpgw_info']['expressomail']['email_server'] = $boemailadmin->getProfile($emailadmin_profile[0]['profileID']); 
    6267        $_SESSION['phpgw_info']['expressomail']['user'] = $GLOBALS['phpgw_info']['user']; 
     
    6469        $_SESSION['phpgw_info']['expressomail']['ldap_server'] = $ldap_manager ? $ldap_manager->srcs[1] : null; 
    6570        $_SESSION['phpgw_info']['expressomail']['user']['email'] = $GLOBALS['phpgw']->preferences->values['email']; 
     71         
    6672        $_SESSION['phpgw_info']['user']['preferences']['expressoMail'] = array( 
    6773                        'voip_enabled'                                          => $voip_enabled, 
     
    8389                'use_shortcuts'                                         => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_shortcuts'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_shortcuts'] : "0", 
    8490                'auto_save_draft'                                       => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['auto_save_draft'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['auto_save_draft'] : "0", 
    85                         'use_dynamic_contacts'                          => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_dynamic_contacts'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_dynamic_contacts'] : "0" 
     91                        'use_dynamic_contacts'                          => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_dynamic_contacts'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_dynamic_contacts'] : "0", 
     92                        'number_of_contacts'                            => $current_config['expressoMail_Number_of_dynamic_contacts'] ? $current_config['expressoMail_Number_of_dynamic_contacts'] : "0" 
    8693                 
    8794        ); 
     
    115122        $GLOBALS['phpgw']->common->phpgw_footer(); 
    116123     
    117     // Loading Admin Config Module 
    118     $c = CreateObject('phpgwapi.config','expressoMail1_2'); 
    119     $c->read_repository(); 
    120     $current_config = $c->config_data;     
    121124    $_SESSION['phpgw_info']['server']['expressomail']['expressoMail_enable_log_messages'] = $current_config['expressoMail_enable_log_messages']; 
    122125    // Begin Set Anti-Spam options. 
     
    127130        // End Set Anti-Spam options. 
    128131 
    129         // Dynamic contact. 
    130         $_SESSION['phpgw_info']['server']['expressomail']['expressoMail_Number_of_dynamic_contacts'] = $current_config['expressoMail_Number_of_dynamic_contacts']; 
    131  
    132        // Set Imap Folder names options 
     132    // Set Imap Folder names options 
    133133 
    134134    $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder']   = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder']     ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder']             : lang("Trash"); 
  • trunk/expressoMail1_2/js/main.js

    r413 r485  
    841841 
    842842function send_message_return(data, ID){ 
    843         if(data && data == true ){ 
     843        if(data && data.success == true ){ 
    844844                // if send ok, set a flag as answered or forwarded 
    845845                var msg_number_replied = Element('msg_reply_from_'+ID); 
     
    856856                        write_msg(get_lang('Your message was sent and save.')); 
    857857                        wfolders.alert = false; 
    858                         init(); 
    859858                }else{ 
    860859                        write_msg(get_lang('Your message was sent.')); 
    861                         init();          
     860                } 
     861                // If new dynamic contacts were added, update the autocomplete .... 
     862                if(data.new_contacts){ 
     863                        var ar_contacts = data.new_contacts.split(',;'); 
     864                        for(var j in ar_contacts){ 
     865                                // If the dynamic contact don't exist, update the autocomplete.... 
     866                                if((contacts+",").indexOf(";"+ar_contacts[j]+",") == -1) 
     867                                        contacts += ",;" + ar_contacts[j]; 
     868                        } 
    862869                } 
    863870                if ((! newMessageTab.toPreserve[ID]) && (newMessageTab.imapUid[ID] != 0)) 
  • trunk/expressoMail1_2/js/preferences.js

    r413 r485  
    7575                                "<tr><td> - " + get_lang("Use dynamic contacts?") + "</td>"+ 
    7676                                "<td><input type='checkBox' id='use_dynamic_contacts' name='use_dynamic_contacts'></td></tr>"+ 
     77                                "<tr><td> - " + get_lang("Auto save draft") + "?</td>"+ 
     78                                "<td><input type='checkBox' id='auto_save_draft' name='auto_save_draft'></td></tr>"+ 
    7779                                "<tr><td> - " + get_lang("Use shortcuts?") + "</td>"+ 
    7880                                "<td><input type='checkBox' id='use_shortcuts' name='use_shortcuts'></td></tr>"+ 
    79                                 "<tr><td> - " + get_lang("Auto save draft") + "?</td>"+ 
    80                                 "<td><input type='checkBox' id='auto_save_draft' name='auto_save_draft'></td></tr>"+ 
    8181                                "<tr><td nowrap> - " + get_lang('Insert signature automatically in new messages?') + "</td>"+ 
    8282                                "<td><input type='checkBox' id='use_signature' name='use_signature'></td>"+ 
     
    153153                        txt_signature.value = preferences.signature; 
    154154                 
    155                 if ((_this.number_of_contacts < 1) || isNaN(_this.number_of_contacts))  
    156                 { 
     155                if ((preferences.number_of_contacts < 1) || isNaN(preferences.number_of_contacts)){ 
    157156                        Element("use_dynamic_contacts").checked = false; 
    158157                        Element("use_dynamic_contacts").disabled = 'disabled'; 
     
    184183            else if(preferences.auto_save_draft != Element("auto_save_draft").checked) 
    185184                        reload_page = true; 
    186                 else if(preferences.use_dynamic_contacts != Element("use_dynamic_contacts").checked) 
    187                 { 
     185                else if(preferences.use_dynamic_contacts != Element("use_dynamic_contacts").checked) { 
    188186                        reload_page = true; 
    189187                        _this.delete_dynamic_contacts(); 
     
    287285                } 
    288286                win.open(); 
    289         } 
    290          
     287        }        
    291288        Preferences.prototype.delete_dynamic_contacts = function(){ 
    292289                var handler = function(data){} 
     
    295292                cExecute(args,handler,params); 
    296293        } 
    297         Preferences.prototype.get_number_of_contacts = function(){ 
    298                 var _this = this; 
    299                 var handler = function(data){ 
    300                         _this.number_of_contacts = data; 
    301                 } 
    302                 var args   = "$this.dynamic_contacts.get_number_of_contacts"; 
    303                 var params = ""; 
    304                 cExecute(args,handler,params); 
    305         } 
    306294// Cria o objeto         
    307295        var prefe; 
    308296        prefe = new Preferences(); 
    309         prefe.get_number_of_contacts(); 
Note: See TracChangeset for help on using the changeset viewer.