Changeset 7228 for branches


Ignore:
Timestamp:
09/17/12 14:30:47 (7 years ago)
Author:
douglas
Message:

Ticket #0000 - Copiadas as alterações do Trunk. Versão final da 2.4.2.

Location:
branches/2.4
Files:
8 added
5 deleted
164 edited
50 copied

Legend:

Unmodified
Added
Removed
  • branches/2.4

  • branches/2.4/INSTALL/arquivos/expresso-cron

    r7115 r7228  
    1717#DEBIAN00 22    * * *   www-data        php5    EXPRESSO_DIR/phpgwapi/cron/clean_phpgw_tables.php 
    1818 
    19 # Utilizado para limpar os arquivos de sessao do PHP  
    20 #*/31 *  * * *   root                    find /dev/shm -type f -name "sess_*" -cmin 240 -print0 | xargs -n 200 -r -0 rm  
     19# Utilizado para limpar os arquivos de sessao do PHP 
     20#*/31 *  * * *   root                    find /dev/shm -type f -name "sess_*" -cmin 240 -print0 | xargs -n 200 -r -0 rm 
     21 
     22 
  • branches/2.4/INSTALL/arquivos/scripts/http.sh

    r7080 r7228  
    5151        # Instala o apache2 juntamente com o PHP5 e seus respectivos módulos 
    5252        apt-get install -y apache2-mpm-prefork libapache2-mod-php5 apache2-utils \ 
    53                 php5 php5-common php5-dev php5-gd php5-imap php5-ldap php5-pgsql php5-cgi php5-cli php5-curl php5-xmlrpc php5-memcache php5-pspell \  
    54             libgv-php5 zip unzip memcached libmemcached5  
     53                php5 php5-common php5-dev php5-gd php5-imap php5-ldap php5-pgsql php5-cgi php5-cli php5-curl php5-xmlrpc php5-memcache php5-pspell \ 
     54                libgv-php5 zip unzip memcached libmemcached5 
    5555        # Copia os arquivos do Expresso Livre 
    5656        cpexpresso "/var/www" 
     
    9797        yum -y install httpd mod_ssl \ 
    9898                php php-cli php-ldap php-pgsql php-imap php-mbstring php-gd php-xml \ 
    99                 php-pecl-memcache graphviz-php php-pspell \  
    100             unzip zip memcached libmemcached 
     99                php-pecl-memcache graphviz-php php-pspell \ 
     100                unzip zip memcached libmemcached 
    101101 
    102102        cpexpresso "/var/www/html" 
  • branches/2.4/INSTALL/debian/squeeze/etc/apache2/sites-available/expresso

    r7115 r7228  
    5656 
    5757        DocumentRoot /var/www/expresso/ 
    58          
     58 
    5959        <Directory /var/www/expresso/> 
    6060                Options FollowSymLinks MultiViews 
  • branches/2.4/admin/inc/class.uimainscreen.inc.php

    r5333 r7228  
    2828                        $message     = addslashes($_POST['message']); 
    2929 
    30                         $acl_ok = array(); 
    31                         if (!$GLOBALS['phpgw']->acl->check('mainscreen_message_access',1,'admin')) 
    32                         { 
    33                                 $acl_ok['mainscreen'] = True; 
    34                         } 
    3530                        if (!$GLOBALS['phpgw']->acl->check('mainscreen_message_access',2,'admin')) 
    3631                        { 
     
    5651                                $GLOBALS['phpgw']->db->query("DELETE FROM phpgw_lang WHERE message_id='$section" . "_message' AND app_name='" 
    5752                                        . "$section' AND lang='$select_lang'",__LINE__,__FILE__); 
    58                                 $GLOBALS['phpgw']->db->query("INSERT INTO phpgw_lang (message_id,app_name,lang,content)VALUES ('$section" . "_message','$section','$select_lang','" 
    59                                         . $message . "')",__LINE__,__FILE__); 
    60                                         $feedback_message = '<center>'.lang('message has been updated').'</center>'; 
     53                                $GLOBALS['phpgw']->db->query("INSERT INTO phpgw_lang (message_id,app_name,lang,content)" 
     54                                                                                        ."VALUES ('$section" . "_message','$section','$select_lang','". $message . "')", 
     55                                                                                          __LINE__, 
     56                                                                                          __FILE__); 
     57                                $feedback_message = '<center>'.lang('message has been updated').'</center>'; 
    6158                                 
    6259                                $section = ''; 
     60 
    6361                        } 
    6462                        if ($_POST['cancel'])   // back to section/lang-selection 
  • branches/2.4/admin/setup/phpgw_pt-br.lang

    r6754 r7228  
    124124Default User Password   admin   pt-br   Senha padrão do usuário  
    125125Default User Quota      admin   pt-br   Cota padrão para criação dos usuários 
     126Default Shared Account Quota    admin   pt-br   Cota padrão para contas compartilhadas 
    126127deinstall crontab       admin   pt-br   Desinstalar crontab 
    127128delete account  admin   pt-br   Apagar conta 
     
    452453Use organization prefix on account creation     admin   pt-br   Usar prefixo de organização nas criações de contas 
    453454Let it blank to generate the logon script with user login       admin   pt-br   Deixe em branco para gerar o script de logon com o login do usuário 
    454 This server uses Sending Control List by Ppolicy        admin   pt-br   Este servidor utiliza "Sending Control List by Ppolicy" 
     455This server uses Sending Control List by Policy admin   pt-br   Este servidor utiliza Sending Control List by Policy 
    455456use pure html compliant code (not fully working yet)    admin   pt-br   Usar código HTML puro (não funciona totalmente ainda) 
    456457user accounts   admin   pt-br   Contas de usuários 
  • branches/2.4/admin/setup/setup.inc.php

    r6754 r7228  
    1313        $setup_info['admin']['name']      = 'admin'; 
    1414        $setup_info['admin']['title']      = 'Admin'; 
    15         $setup_info['admin']['version']   = '2.4.1'; 
     15        $setup_info['admin']['version']   = '2.4.2'; 
    1616        $setup_info['admin']['app_order'] = 1; 
    1717        $setup_info['admin']['tables']    = ''; 
     
    4848        $setup_info['admin']['depends'][] = array( 
    4949                'appname' => 'phpgwapi', 
    50                 'versions' => Array('2.4.1') 
     50                'versions' => Array('2.4.2') 
    5151        ); 
    5252?> 
  • branches/2.4/calendar/setup/setup.inc.php

    r6754 r7228  
    1212 
    1313        $setup_info['calendar']['name']    = 'calendar'; 
    14         $setup_info['calendar']['version'] = '2.4.1'; 
     14        $setup_info['calendar']['version'] = '2.4.2'; 
    1515        $setup_info['calendar']['app_order'] = 3; 
    1616        $setup_info['calendar']['enable']  = 1; 
     
    5252        $setup_info['calendar']['depends'][] = array( 
    5353                 'appname' => 'phpgwapi', 
    54                  'versions' => Array('2.4.1') 
     54                 'versions' => Array('2.4.2') 
    5555        ); 
  • branches/2.4/calendar/setup/tables_update.inc.php

    r6754 r7228  
    141141                return $GLOBALS['setup_info']['calendar']['currentver']; 
    142142        } 
     143 
     144    $test[] = '2.4.1'; 
     145    function calendar_upgrade2_4_1() 
     146    { 
     147        $GLOBALS['setup_info']['calendar']['currentver'] = '2.4.2'; 
     148        return $GLOBALS['setup_info']['calendar']['currentver']; 
     149    } 
    143150?> 
  • branches/2.4/calendar/templates/default/listContacts.ejs

    r7158 r7228  
    66                        text: 'Contato dinâmico' 
    77                }, 
    8                 '/contacts':{ 
     8                '/personalContact':{ 
    99                        css: 'personal', 
    1010                        img: 'personal', 
    11                         text: 'Contato pessoal', 
     11                        text: 'Contato pessoal' 
    1212                }, 
    1313                '/sharedcontact':{ 
    1414                        css: 'personal', 
    1515                        img: 'sharedcontact', 
    16                         text: 'Contato compartilhado', 
     16                        text: 'Contato compartilhado' 
    1717                }, 
    1818                '/groups':{ 
    1919                        css: 'group', 
    2020                        img: 'group', 
    21                         text: 'Grupo pessoal', 
     21                        text: 'Grupo pessoal' 
    2222                }, 
    2323                '/sharedgroup':{ 
    2424                        css: 'group', 
    2525                        img: 'sharedgroup', 
    26                         text: 'Grupo compartilhado', 
     26                        text: 'Grupo compartilhado' 
    2727                } 
    2828        }  
  • branches/2.4/contactcenter/setup/setup.inc.php

    r6255 r7228  
    1717        $setup_info['contactcenter']['name']      = 'contactcenter'; 
    1818        $setup_info['contactcenter']['title']     = 'ContactCenter'; 
    19         $setup_info['contactcenter']['version']   = '2.4.1'; 
     19        $setup_info['contactcenter']['version']   = '2.4.2'; 
    2020        $setup_info['contactcenter']['app_order'] = 4; 
    2121        $setup_info['contactcenter']['enable']    = 1; 
     
    7777        $setup_info['contactcenter']['depends'][] = array( 
    7878                'appname' => 'phpgwapi', 
    79                 'versions' => Array('2.4') 
     79                'versions' => Array('2.4.2') 
    8080        ); 
    8181?> 
  • branches/2.4/contactcenter/setup/tables_update.inc.php

    r6255 r7228  
    9393                return $GLOBALS['setup_info']['contactcenter']['currentver']; 
    9494        } 
     95 
     96    $test[] = '2.4.1'; 
     97    function contactcenter_upgrade2_4_1() { 
     98        $GLOBALS['setup_info']['contactcenter']['currentver'] = '2.4.2'; 
     99        return $GLOBALS['setup_info']['contactcenter']['currentver']; 
     100    } 
    95101?> 
  • branches/2.4/emailadmin/setup/setup.inc.php

    r6754 r7228  
    1414        $setup_info['emailadmin']['name']      = 'emailadmin'; 
    1515        $setup_info['emailadmin']['title']     = 'EMailAdmin'; 
    16         $setup_info['emailadmin']['version']   = '2.4.1'; 
     16        $setup_info['emailadmin']['version']   = '2.4.2'; 
    1717        $setup_info['emailadmin']['app_order'] = 10; 
    1818        $setup_info['emailadmin']['enable']    = 2; 
     
    4040        $setup_info['emailadmin']['depends'][] = array( 
    4141                'appname'  => 'phpgwapi', 
    42                 'versions' => Array('2.4.1') 
     42                'versions' => Array('2.4.2') 
    4343        ); 
    4444 
  • branches/2.4/emailadmin/setup/tables_update.inc.php

    r6754 r7228  
    135135      return $GLOBALS['setup_info']['emailadmin']['currentver']; 
    136136   } 
     137 
     138    $test[] = '2.4.1'; 
     139   function emailadmin_upgrade2_4_1() 
     140        { 
     141      $GLOBALS['setup_info']['emailadmin']['currentver'] = '2.4.2'; 
     142      return $GLOBALS['setup_info']['emailadmin']['currentver']; 
     143   } 
    137144?> 
  • branches/2.4/expressoAdmin1_2/controller.php

    r7207 r7228  
    7474        $result = array(); 
    7575         
    76          
    7776        // if params is not empty, then class method with parameters.    
    7877        if($params) 
     
    8483                  
    8584        // Return result serialized.  
     85    $_SESSION['response'] = $result; 
     86 
     87    // Return result serialized. 
    8688        if(!$cExecuteFormReturn) 
    8789                echo serialize($result); 
  • branches/2.4/expressoAdmin1_2/inc/class.bosectors.inc.php

    r6754 r7228  
    5353                $sector_info['diskQuota'] = isset($_POST['disk_quota']) ? (int)$_POST['disk_quota'] : 0;  
    5454                $sector_info['usersQuota'] = isset($_POST['users_quota']) ? (int)$_POST['users_quota'] : 0;  
     55 
     56                if( isset($_POST['associated_domain']) )  
     57                {  
     58                    if ( $_POST['associated_domain'] != "") {  
     59                        $sector_info['objectClass'][]  = 'domainRelatedObject';  
     60                        $sector_info['associatedDomain'] = trim($_POST['associated_domain']);  
     61                    }  
     62                }  
    5563 
    5664                        $systemName = $GLOBALS['phpgw_info']['server']['system_name']; 
  • branches/2.4/expressoAdmin1_2/inc/class.ldap_functions.inc.php

    r6096 r7228  
    835835                                 
    836836                                        $filter = "(&(phpgwAccountType=u)(cpf=$cpf))"; 
    837                                         $justthese = array("cn","uid"); 
     837                                        $justthese = array("cn","uid" ,"mail"); 
    838838                                        $search = ldap_search($local_ldap_connection, $context, $filter, $justthese); 
    839839                                        $entries = ldap_get_entries($local_ldap_connection,$search); 
     
    847847                                                                        { 
    848848                                                                                if (strcasecmp($uid, $entries[$i]['uid'][0]) != 0) 
    849                                                                         $result['question'] .= "- " . $entries[$i]['cn'][0] . "\n"; 
     849                                                                        $result['question'] .= "- " . $entries[$i]['cn'][0] ." - ".$entries[$i]['uid'][0] ." - ".$entries[$i]['mail'][0] . "\n"; 
    850850                                                                        } 
    851851                                                                        $result['question'] .= $this->functions->lang("Do you want to continue anyway") . "?"; 
     
    29132913 
    29142914                return $return; 
    2915         } 
    2916  
    2917                  
     2915        }                
    29182916 
    29192917} 
  • branches/2.4/expressoAdmin1_2/inc/class.uimaillists.inc.php

    r6157 r7228  
    265265                                        else 
    266266                                        { 
    267                                                 $mail_not_found .= "<option value=" . $mail . ">" . utf8_decode($cn) .  " (" . $array_users_uid[$mail] . ")</option>"; 
     267                                                $mail_not_found .= "<option value=" . $mail . ">"  . $array_users_uid[$mail] . "</option>"; 
    268268                                        } 
    269269                                } 
     
    271271                                if ($mail_not_found != '') 
    272272                                { 
    273                                         $opt_tmp_mail_not_found = '<option  value="-1" disabled>--------------------&nbsp;&nbsp;&nbsp;&nbsp;'.lang('emails did not find').'&nbsp;&nbsp;&nbsp;&nbsp;------------------ </option>'."\n"; 
     273                                        $opt_tmp_mail_not_found = '<option  value="-1" disabled>--------------------&nbsp;&nbsp;&nbsp;&nbsp;'.lang('external users').'&nbsp;&nbsp;&nbsp;&nbsp;------------------ </option>'."\n"; 
    274274                                        $ea_select_usersInMaillist .= $opt_tmp_mail_not_found . $mail_not_found; 
    275275                                } 
  • branches/2.4/expressoAdmin1_2/inc/class.uisectors.inc.php

    r6754 r7228  
    192192                                'context'                       => $context == '' ? $GLOBALS['phpgw_info']['server']['ldap_context'] : $context, 
    193193                                'sector'                        => $_POST['sector'], 
     194                                'associated_domain' => $_POST['associated_domain'], 
    194195                                'disk_quota'        => $_POST['disk_quota'],  
    195                                 'users_quota'       => $_POST['users_quota'],  
     196                    'users_quota'       => $_POST['users_quota'],  
    196197                                'manager_org'           => $combo_manager_org, 
    197198                                'sector_visible_checked'=> $_POST['sector_visible'] ? 'checked' : '', 
     
    256257                        { 
    257258                                $sector_info = $this->so->get_info($_GET['context']); 
    258                                 $sector_disk_quota = $sector_info[0]['diskquota'][0];  
    259                                 $sector_users_quota = $sector_info[0]['usersquota'][0];  
     259                $sector_disk_quota = $sector_info[0]['diskquota'][0];  
     260                    $sector_users_quota = $sector_info[0]['usersquota'][0];  
     261                    $sector_associated_domain = $sector_info[0]['associateddomain'][0];  
    260262                                $_POST['sector_visible'] = $sector_info[0]['phpgwaccountvisible'][0]; 
    261263                        }  
     
    270272                                'manager_org'           => $combo_manager_org, 
    271273                                'sector_visible_checked'=> $_POST['sector_visible'] ? 'checked' : '', 
    272                                 'disk_quota'        => $_POST['disk_quota'] == '' ? $sector_disk_quota : $_POST['disk_quota'],  
    273                                 'users_quota'       => $_POST['users_quota'] == '' ? $sector_users_quota : $_POST['users_quota'],  
    274                                  
     274                'disk_quota'        => $_POST['disk_quota'] == '' ? $sector_disk_quota : $_POST['disk_quota'],  
     275                    'users_quota'       => $_POST['users_quota'] == '' ? $sector_users_quota : $_POST['users_quota'],  
     276                    'associated_domain'        => $_POST['associated_domain'] == '' ? $sector_associated_domain : $_POST['associated_domain'],  
    275277                                'lang_add'                      => lang('Add'), 
    276278                                'disable'                       => 'disabled', 
  • branches/2.4/expressoAdmin1_2/inc/class.user.inc.php

    r6754 r7228  
    7979                         
    8080                                // Cria array para incluir no LDAP 
    81                                 $dn = 'uid=' . $params['uid'] . ',' . $params['context'];                
    82                          
    83                                 $user_info = array(); 
     81                                $dn = 'uid=' . $params['uid'] . ',' . $params['context']; 
     82 
     83                ob_start(); 
     84                print_r($params); 
     85                $output = ob_get_clean(); 
     86                file_put_contents( "/tmp/acoutinho.log",  $output , FILE_APPEND); 
     87 
     88 
     89                $user_info = array(); 
    8490                                $user_info['accountStatus']                     = $params['accountstatus'] == 1 ? 'active' : 'desactive'; 
    8591                                $user_info['cn']                                                = $params['givenname'] . ' ' . $params['sn']; 
  • branches/2.4/expressoAdmin1_2/js/jscode/maillists.js

    r5133 r7228  
    384384        return ufn.substring(0,(ufn.length-1)); 
    385385} 
     386 
     387function LTrim(value)  
     388{  
     389     var w_space = String.fromCharCode(32);  
     390     var strTemp = "";  
     391     var iTemp = 0;  
     392 
     393     var v_length = value ? value.length : 0;  
     394     if(v_length < 1)  
     395             return "";  
     396 
     397     while(iTemp < v_length){  
     398             if(value && value.charAt(iTemp) != w_space){  
     399                     strTemp = value.substring(iTemp,v_length);  
     400                     break;  
     401             }  
     402             iTemp++;  
     403     }  
     404     return strTemp;  
     405}  
     406 
     407function validateEmail()  
     408{  
     409 
     410     externalEmail = document.getElementById('ea_input_externalUser');  
     411 
     412     if( externalEmail.value )  
     413     {  
     414             //var element = arguments[0];  
     415             var validate = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;  
     416 
     417             if(this.LTrim(externalEmail.value) != "" && externalEmail.value != "")  
     418             {  
     419                     if(!validate.test(externalEmail.value))  
     420                     {  
     421                             alert(get_lang('Email address is not valid') + '.');  
     422                             externalEmail.focus();  
     423                             return false;  
     424                     }else {  
     425                             this.add_externalUser2maillist(externalEmail.value);  
     426                     }  
     427             }  
     428 
     429     }  
     430}  
     431 
     432function add_externalUser2maillist(mailAddress)  
     433{  
     434     input_externalUsers = mailAddress.toLowerCase(); //document.getElementById('ea_input_externalUser').value;  
     435     select_usersInMaillist = document.getElementById('ea_select_usersInMaillist');  
     436 
     437     var count_externalUsers = input_externalUsers.length;  
     438     var count_usersInMaillist = select_usersInMaillist.options.length;  
     439     var new_options = '';  
     440 
     441     var teste = ''; //Variavel que ira receber mensagem de alerta ao usuario;  
     442     var alerta = new Boolean(0); //Variavel que sera usada para verificar se o alerta ao usuario sera exibido ou nao;  
     443 
     444     //Laco abaixo compara se o valor escolhido em select_available_users ja existe em select_usersInMaillist  
     445     //se existir, adiciona o valor em teste e muda a variavel alerta para true; teste sera exibido em tela  
     446     //apenas de alerta  true; ver if no fim da funcao;  
     447     for(j = 0; j < count_usersInMaillist; j++)  
     448     {  
     449             var tmp = select_usersInMaillist.options[j].text  
     450 
     451             if(tmp.match(input_externalUsers))  
     452             {  
     453                     teste = get_lang("User already belongs to the list") + "\n" + input_externalUsers + "\n";  
     454                     alerta = new Boolean(1);  
     455             }  
     456     }  
     457 
     458     if(alerta != true)  
     459     {  
     460             if(document.all)  
     461             {  
     462                     if ( (select_usersInMaillist.innerHTML.indexOf('value='+input_externalUsers)) == '-1' )  
     463                     {  
     464                             new_options +=  "<option value="  
     465                                                     + input_externalUsers  
     466                                                     + ">"  
     467                                                     + input_extenalUsers  
     468                                                     + "</options>";  
     469                     }  
     470             }  
     471             else  
     472             {  
     473                     if ( (select_usersInMaillist.innerHTML.indexOf('value="'+input_externalUsers+'"')) == '-1' )  
     474                     {  
     475                             new_options +=  "<option value="  
     476                                                     + input_externalUsers  
     477                                                     + ">"  
     478                                                     + input_externalUsers  
     479                                                     + "</options>";  
     480                     }  
     481             }  
     482     }  
     483 
     484     if(alerta == true)  
     485     {  
     486             alert(teste);  
     487     }  
     488 
     489 
     490     if (new_options != '')  
     491     {  
     492             select_usersInMaillist.innerHTML = new_options + select_usersInMaillist.innerHTML;  
     493             select_usersInMaillist.outerHTML = select_usersInMaillist.outerHTML;  
     494     }  
     495 
     496     document.getElementById('ea_input_externalUser').value = '';  
     497}  
  • branches/2.4/expressoAdmin1_2/js/jscode/messages_size.js

    r6884 r7228  
    652652                Element('em_input_sendAcl').checked = false;  
    653653            }  
    654                                  
     654                                         
    655655                if (Element('em_input_deleteAcl').checked) 
    656656                        acl += 'te';  
    657657 
    658658                if (Element('em_input_writeAcl').checked) 
    659                         acl += 'wi'; 
     659                    acl += 'wi'; 
    660660 
    661661                if (Element('em_input_sendAcl').checked) 
  • branches/2.4/expressoAdmin1_2/js/jscode/shared_accounts.js

    r6971 r7228  
    252252        } 
    253253    } 
    254     //Nova chamada a "Element" é Necessária devido a um bug do ie com select 
     254    //Nova chamada a "Element" é Necessária devido a um bug do ie com select 
    255255    select_owners = Element('ea_select_owners'); 
    256256    if(select_owners.options.length > 0 ){ 
     
    324324            Element('quota_used_field').style.display = 'inline'; 
    325325            Element('desc').value = data.description; 
    326             //Necessario, pois o IE6 tem um bug que não exibe as novas opções se o innerHTML estava vazio 
     326            //Necessario, pois o IE6 tem um bug que não exibe as novas opções se o innerHTML estava vazio 
    327327             
    328328            if(data.owners_options){ 
  • branches/2.4/expressoAdmin1_2/setup/phpgw_pt-br.lang

    r6754 r7228  
    168168Enable blocking sending email to shared accounts (departments)  expressoAdmin1_2        pt-br   Ativar bloqueio de envio de e-mails para Contas Compartilhadas (departamentos) 
    169169error adding application to new manager expressoAdmin1_2        pt-br   Erro adicionando aplicação ao novo gerente 
     170Email address is not valid      expressoAdmin1_2        pt-br   Endereço de e-mail não válido 
    170171Error on function       expressoAdmin1_2        pt-br   Erro na função 
    171172Error on insert expressoAdmin1_2        pt-br   Erro na inserção 
     
    173174Error on Updating       expressoAdmin1_2        pt-br   Erro na atualização 
    174175Error in OpenLDAP.      expressoAdmin1_2        pt-br   Erro no OpenLDAP. 
     176User already belongs to the list        expressoAdmin1_2        pt-br   Usuário já pertence a lista  
     177external user   expressoAdmin1_2        pt-br   Usuário externo  
     178external users  expressoAdmin1_2        pt-br   Usuários externos  
    175179Expire  expressoAdmin1_2        pt-br   Expira 
    176180expressoAdmin1_2        common  pt-br   Expresso Admin 
  • branches/2.4/expressoAdmin1_2/setup/setup.inc.php

    r6754 r7228  
    1313        $setup_info['expressoAdmin1_2']['title']        = 'Expresso Admin'; 
    1414        /* Ao incrementar versão, não esquecer de declarar função do tables_update.inc.php*/ 
    15         $setup_info['expressoAdmin1_2']['version']      = '2.4.1'; 
     15        $setup_info['expressoAdmin1_2']['version']      = '2.4.2'; 
    1616        $setup_info['expressoAdmin1_2']['app_order']    = 1; 
    1717        $setup_info['expressoAdmin1_2']['tables'][]             = 'phpgw_expressoadmin'; 
     
    3737        $setup_info['expressoAdmin1_2']['depends'][] = array( 
    3838                'appname' => 'phpgwapi', 
    39                 'versions' => Array('2.4.1') 
     39                'versions' => Array('2.4.2') 
    4040        ); 
    4141?> 
  • branches/2.4/expressoAdmin1_2/setup/tables_update.inc.php

    r6754 r7228  
    330330                $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.4.1'; 
    331331                return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
    332         }         
     332        } 
     333 
     334    $test[] = '2.4.1'; 
     335        function expressoAdmin1_2_upgrade2_4_1() 
     336        { 
     337                $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.4.2'; 
     338                return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
     339        } 
    333340?> 
  • branches/2.4/expressoAdmin1_2/templates/default/accounts_form.tpl

    r5133 r7228  
    1515<input type="hidden" name="photo_exist"                 value="{photo_exist}"> 
    1616<input type="hidden" name="user_context"                value="{user_context}"> 
    17 <input type="hidden" name="departmentnumber"            value="{departmentnumber}"> 
     17<input type="hidden" name="departmentnumber"    value="{departmentnumber}"> 
    1818<input type="hidden" name="userSamba"                   value="{userSamba}"> 
    19 <input type="hidden" name="defaultLogonScript"          value="{defaultLogonScript}"> 
     19<input type="hidden" name="defaultLogonScript"  value="{defaultLogonScript}"> 
    2020<input type="hidden" name="imapDelimiter"               value="{imapDelimiter}"> 
    21 <input type="hidden" name="minimumSizeLogin"            value="{minimumSizeLogin}"> 
     21<input type="hidden" name="minimumSizeLogin"    value="{minimumSizeLogin}"> 
    2222<input type="hidden" name="defaultDomain"               value="{defaultDomain}"> 
    2323<input type="hidden" name="ldap_context"                value="{ldap_context}"> 
     24<input type="hidden" name="associated_domain"   value="{associated_domain}">  
    2425 
    2526<br> 
     
    4243                <tr bgcolor={row_on}> 
    4344                        <td>{lang_search_organization}:</td> 
    44                         <td><input type="text" id="organization_search" {disabled} autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_info');" onBlur="javascript:sinc_combos_org(context.value); get_available_sambadomains(context.value, '{type}')"></td> 
     45                        <td><input type="text" id="organization_search" {disabled} autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_info');" onBlur="javascript:sinc_combos_org(context.value); get_associated_domain(context.value); get_available_groups(context.value); get_available_maillists(context.value); get_available_sambadomains(context.value, '{type}')"></td> 
    4546                </tr> 
    4647 
    4748                <tr bgcolor={row_off}> 
    4849                        <td>{lang_organizations}:</td> 
    49                         <td><select {disabled} id="ea_combo_org_info" name="context" onchange="javascript:sinc_combos_org(this.value); get_available_groups(this.value); get_available_maillists(this.value); get_available_sambadomains(this.value, '{type}')">{sectors}</select></td> 
     50                        <td><select {disabled} id="ea_combo_org_info" name="context" onchange="javascript:sinc_combos_org(this.value); get_associated_domain(this.value); get_available_groups(this.value); get_available_maillists(this.value); get_available_sambadomains(this.value, '{type}')">{sectors}</select></td> 
    5051                </tr> 
    5152                                                         
  • branches/2.4/expressoAdmin1_2/templates/default/assing_calendar.css

    r6964 r7228  
    33div.assing-calendar dd{margin: 0 0 0 0 !important;} 
    44 
    5 /*div.user-acls-shared-calendar{margin: -15px 0 0 0;}*/  
     5/*div.user-acls-shared-calendar{margin: -15px 0 0 0;}*/ 
    66 
    77div.assing-calendar dd.calendar-list{ overflow-y: auto; overflow-x: hidden;} 
     
    99div.assing-calendar dl{margin: 5px !important;} 
    1010 
    11 div.assing-calendar fieldset.add-user-search{width: 234px;} 
     11div.assing-calendar fieldset.add-user-search{width: 240px;} 
    1212div.assing-calendar input.search{width: 210px;} 
    1313 
     
    1717 
    1818div.assing-calendar div.menu-container.footer-container{margin: 2px 0 -12px 0 !important;} 
    19 div.assing-calendar ul.search-result-list,div.assing-calendar ul.user-list{margin-left: -54px !important; width: 252px !important;      } 
     19div.assing-calendar ul.search-result-list,div.assing-calendar ul.user-list{margin: 0; padding: 0;  } 
    2020div.assing-calendar ul li{overflow: hidden !important;} 
    2121div.assing-calendar li.not-user{margin: 0 0 0 20px !important;} 
    22 div.assing-calendar fieldset.add-user-search{margin: 0 0 5px -10px !important;} 
     22div.assing-calendar fieldset.add-user-search{margin: 0 0 5px 0px !important;} 
    2323 
    2424div.assing-calendar dd.add-user {height: 290px !important;} 
    2525 
    26 div.assing-calendar dd.calendar-list li{height: 20px !important; margin: 0 0 0 10px !important;} 
     26div.assing-calendar dd.calendar-list li{height: 20px !important; margin: 0 0 0 0x !important;} 
    2727 
    2828div.assing-calendar dd.calendar-list li div{display: block !important;} 
    2929 
    30 div.assing-calendar dd.calendar{height: 24px;} 
     30div.assing-calendar dd.calendar{height: 24px; text-align: left;} 
    3131 
    32 div.assing-calendar li.calendar-selected{  
    33             margin: 0px 0 0 -40px;  
    34             -webkit-margin-before: -13px;  
     32div.assing-calendar ul.search-result-list{height: 245px;} 
     33 
     34 
     35div.assing-calendar ul.search-result-list label.name{overflow: hidden; height: 15px;} 
     36 
     37div.assing-calendar li.calendar-selected{ 
     38        margin: 0px 0 0 -40px; 
     39        -webkit-margin-before: -13px; 
    3540} 
    3641div.assing-calendar li.calendar-selected a {margin: 0 0 -2px 15px;} 
    3742 
    38 div.assing-calendar dd.calendar-list li.user-list{width: 333px;} 
     43div.assing-calendar dd.calendar-list li.user-list{width: 333px; list-style-type: none;} 
  • branches/2.4/expressoAdmin1_2/templates/default/index.tpl

    r5804 r7228  
    108108        </tr> 
    109109</table> 
    110                 <input type="hidden" id="assingCalendar"/> 
     110                <div class="hidden" id="assingCalendar"/> 
    111111<!-- END body --> 
  • branches/2.4/expressoAdmin1_2/templates/default/institutional_accounts_modal.tpl

    r6157 r7228  
    1717                        <br /> 
    1818                        {lang_organization}:<br /> 
    19                         <select id="ea_combo_org" name="context" onchange="javascript:sinc_combos_org(this.value);">{manager_organizations}</select><br /> 
     19                        <select id="ea_combo_org" name="context" onchange="javascript:sinc_combos_org(this.value);javascript:get_associated_domain(this.value);">{manager_organizations}</select><br /> 
    2020                         
     21                        <input type="hidden" id="associated_domain" name="associated_domain" /> 
     22 
    2123                        {lang_full_name}: <font color="blue">{lang_eg}: Setor Diser</font><br /> 
    2224                        <input id="cn" name="cn" size="35" autocomplete="off" /><br /> 
  • branches/2.4/expressoAdmin1_2/templates/default/maillists_form.tpl

    r6158 r7228  
    7373                                                        <b>{lang_users}:</b><br> 
    7474                                                        <select id="ea_select_available_users" style="width:400px; height:200px" multiple size="13"></select> 
     75                            <br/><br/>   
     76                              <b>{lang_external_user}:</b>   
     77                              <br/>   
     78                              <input id="ea_input_externalUser" size="35" type="text">   
     79                              <input id="input_user" value="Adicionar" onclick="javascript:validateEmail();" type="button">   
     80                              <br/>  
    7581                                                </td> 
    7682                                        </tr> 
  • branches/2.4/expressoAdmin1_2/templates/default/participants_search_itemlist.ejs

    r5804 r7228  
    11<% for (var i=0; i < data.length; i++) { %> 
    2 <li class="ui-widget-content" style="width:6000px;" title="<%=data[i]['name']%>"> 
     2<li class="ui-widget-content" style="width:230px;" title="<%=data[i]['name']%>"> 
    33        <input type="checkbox" name="opcao" <%= (data[i].enabled) ?  '' : 'disabled="disabled"' %> /> 
    44        <input type="hidden" value="<%=data[i]['id']%>" /> 
  • branches/2.4/expressoAdmin1_2/templates/default/sectors_form.tpl

    r6660 r7228  
    2020                        </td> 
    2121                        <td> 
    22                                 <input type="text" {disable} autocomplete="off" name="sector" value={sector}> 
     22                                  <input type="text" {disable} autocomplete="off" name="sector" value={sector}> 
     23        </td>  
     24          </tr>  
     25          <tr>    
     26            <td>  
     27               {lang_Associated_domain}:  
     28            </td>  
     29          <td>  
     30            <input type="text" {disable} autocomplete="off" name="associated_domain" value={associated_domain}>  
    2331                        </td> 
    2432                </tr> 
  • branches/2.4/expressoCalendar/index.php

    r5764 r7228  
    11<?php 
    2          
     2 
    33        $GLOBALS['phpgw_info']['flags'] = Array(   'currentapp'    =>      'expressoCalendar', 
    44                                                   'noheader'      =>      false, 
  • branches/2.4/expressoCalendar/setup/default_records.inc.php

    r7093 r7228  
    11<?php 
    2         /**  
    3         *  
    4         * Copyright (C) 2011 Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)  
    5         *  
    6         * This program is free software; you can redistribute it and/or modify  
    7         * it under the terms of the GNU General Public License as published by  
    8         * the Free Software Foundation; either version 3 of the License, or  
    9         * any later version.  
    10         *  
    11         * This program is distributed in the hope that it will be useful, but WITHOUT  
    12         * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS  
    13         * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more  
    14         * details.  
    15         *  
    16         * You should have received a copy of the GNU General Public License  
    17         * along with this program; if not, write to the Free Software Foundation,  
    18         * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA  
    19         *  
    20         * You can contact Prognus Software Livre headquarters at Av. Tancredo Neves,  
    21         * 6731, PTI, Edifício do Saber, 3º floor, room 306, Foz do Iguaçu - PR - Brasil  
    22         * or at e-mail address prognus@prognus.com.br.  
    23         *  
    24         * Neste arquivo são inseridos os valores padrões nas tabelas do módulo expressoCalendar.  
    25         *  
    26         * @license    http://www.gnu.org/copyleft/gpl.html GPL  
    27         * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)  
    28         * @version    1.0  
    29         * @sponsor    Caixa EconÃŽmica Federal  
    30         * @since      Arquivo disponibilizado na versão Expresso 2.4.0  
    31         */  
     2        /** 
     3        * 
     4        * Copyright (C) 2011 Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 
     5        * 
     6        * This program is free software; you can redistribute it and/or modify 
     7        * it under the terms of the GNU General Public License as published by 
     8        * the Free Software Foundation; either version 3 of the License, or 
     9        * any later version. 
     10        * 
     11        * This program is distributed in the hope that it will be useful, but WITHOUT 
     12        * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
     13        * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more 
     14        * details. 
     15        * 
     16        * You should have received a copy of the GNU General Public License 
     17        * along with this program; if not, write to the Free Software Foundation, 
     18        * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA 
     19        * 
     20        * You can contact Prognus Software Livre headquarters at Av. Tancredo Neves, 
     21        * 6731, PTI, Edifício do Saber, 3º floor, room 306, Foz do Iguaçu - PR - Brasil 
     22        * or at e-mail address prognus@prognus.com.br. 
     23        * 
     24        * Neste arquivo são inseridos os valores padrões nas tabelas do módulo expressoCalendar.  
     25        * 
     26        * @license    http://www.gnu.org/copyleft/gpl.html GPL 
     27        * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 
     28        * @version    1.0 
     29        * @sponsor    Caixa Econômica Federal 
     30        * @since      Arquivo disponibilizado na versão Expresso 2.4.0 
     31        */ 
    3232         
    3333                //Problemas com cascade na forenkey 
     
    6868                $oProc->query("ALTER TABLE calendar ALTER COLUMN dtstamp SET DEFAULT (date_part('epoch'::text, ('now'::text)::timestamp(3) with time zone) * (1000)::double precision);"); 
    6969         
    70                 $oProc->query("INSERT INTO calendar_object_type( \"id\", \"name\") VALUES ('1','VEVENT');"); 
     70        $oProc->query("INSERT INTO calendar_object_type( \"id\", \"name\") VALUES ('1','VEVENT');"); 
     71                $oProc->query("INSERT INTO calendar_object_type( \"id\", \"name\") VALUES ('2','TODO');"); 
    7172                $oProc->query("INSERT INTO calendar_class( \"id\", \"name\") VALUES ('1','Public'),('2','Private'),('3','Confidential');"); 
    7273                $oProc->query("INSERT INTO calendar_participant_status( \"id\", \"name\") VALUES ('1','CONFIRMED'),('2','TENTATIVE'),('3','CANCELLED'),('4','UNANSWERED'),('5', 'DELEGATED');"); 
  • branches/2.4/expressoCalendar/setup/setup.inc.php

    r6255 r7228  
    1313        $setup_info['expressoCalendar']['title']        = 'Expresso Calendar'; 
    1414        /* Ao incrementar versão, não esquecer de declarar função do tables_update.inc.php*/ 
    15         $setup_info['expressoCalendar']['version']      = '1.007'; 
     15        $setup_info['expressoCalendar']['version']      = '1.009'; 
    1616        $setup_info['expressoCalendar']['app_order']    = 10; 
    1717 
     
    3333        $setup_info['expressoCalendar']['tables'][]             =  'calendar_permission'; 
    3434        $setup_info['expressoCalendar']['tables'][]             =  'module_preference'; 
    35         $setup_info['expressoCalendar']['tables'][]             =  'calendar_repeat_ranges'; 
     35    $setup_info['expressoCalendar']['tables'][]     =  'calendar_repeat_ranges'; 
     36    $setup_info['expressoCalendar']['tables'][]     =  'calendar_task_to_activity_object'; 
     37        $setup_info['expressoCalendar']['tables'][]             =  'calendar_historic'; 
    3638 
    3739        $setup_info['expressoCalendar']['enable']               = 1; 
  • branches/2.4/expressoCalendar/setup/tables_current.inc.php

    r6114 r7228  
    4848                'duration' => array('type' => 'int', 'precision' => '8' ,'nullable' => True), 
    4949                'tzid' => array('type' => 'varchar', 'precision' => '50' ,'nullable' => True), 
     50                'type' => array('type' => 'int', 'precision' => '2' ,'nullable' => false, 'default' => 0), 
    5051                'dtstamp' => array('type' => 'int', 'precision' => '8' ,'nullable' => True) 
    5152            ), 
     
    100101            'uc' => array() 
    101102                ), 
     103 
     104       'calendar_task_to_activity_object' => array( 
     105            'fd' => array( 
     106                'id' => array( 'type' => 'auto', 'nullable' => False), 
     107                'calendar_object_activity_id' => array(  'type' => 'int', 'precision' => '8', 'nullable' => False), 
     108                'calendar_object_task_id' => array(  'type' => 'int', 'precision' => '8', 'nullable' => False), 
     109                'owner' => array(  'type' => 'int', 'precision' => '8', 'nullable' => False), 
     110            ), 
     111            'pk' => array('id'), 
     112            'fk' => array(), 
     113            'ix' => array(), 
     114            'uc' => array() 
     115        ), 
    102116             
    103117             
     
    121135                'tzid' => array('type' => 'varchar', 'precision' => '50' ,'nullable' => True), 
    122136                'transp' => array( 'type' => 'int', 'precision' => '2', 'nullable' => FALSE , 'default' => 0 ), 
    123                 'sequence' => array( 'type' => 'int', 'precision' => '8', 'nullable' => FALSE , 'default' => 0 ) 
     137                'sequence' => array( 'type' => 'int', 'precision' => '8', 'nullable' => FALSE , 'default' => 0 ), 
     138                'due' => array( 'type' => 'int', 'precision' => '8', 'nullable' => FALSE , 'default' => 0 ), 
     139                'percentage' => array( 'type' => 'int', 'precision' => '8', 'nullable' => FALSE , 'default' => 0 ), 
     140                'status' => array( 'type' => 'int', 'precision' => '8', 'nullable' => FALSE , 'default' => 0 ), 
     141                'priority' => array( 'type' => 'int', 'precision' => '8', 'nullable' => FALSE , 'default' => 2 ) 
    124142            ), 
    125143            'pk' => array('id'), 
     
    130148                 
    131149             
    132             'calendar_participant' => array( 
     150        'calendar_participant' => array( 
    133151            'fd' => array( 
    134152                'id' => array( 'type' => 'auto', 'nullable' => False), 
     
    165183            'uc' => array() 
    166184                ), 
    167                  
    168                  
    169             'calendar_signature_alarm' => array( 
     185 
     186        'calendar_historic' => array( 
     187            'fd' => array( 
     188                'id' => array( 'type' => 'auto', 'nullable' => False), 
     189                'object_id' => array('type' => 'int', 'precision' => '8','nullable' => True), 
     190                'user_uidnumber' => array( 'type' => 'int', 'precision' => '8', 'nullable' => False), 
     191                'dtstamp' => array( 'type' => 'bigint', 'precision' => '16', 'nullable' => False), 
     192                'attribute' => array('type' => 'varchar','precision' => '50','nullable' => True), 
     193                'before_value' => array( 'type' => 'varchar', 'precision' => '255', 'nullable' => True),               
     194                'after_value' => array( 'type' => 'varchar', 'precision' => '255', 'nullable' => True)             
     195            ), 
     196            'pk' => array('id'), 
     197            'fk' => array(), 
     198            'ix' => array(), 
     199            'uc' => array() 
     200        ),       
     201                 
     202        'calendar_signature_alarm' => array( 
    170203            'fd' => array( 
    171204                'id' => array( 'type' => 'auto', 'nullable' => False), 
     
    277310                                'msg_alarms' => array( 'type' => 'text', 'nullable' => True), 
    278311                                'font_color' => array(  'type' => 'varchar','precision' => '6', 'nullable' => True), 
    279                                 'background_color' => array(  'type' => 'varchar','precision' => '6', 'nullable' => True), 
    280                                 'border_color' => array(  'type' => 'varchar','precision' => '6', 'nullable' => True) 
    281                                  
     312                'background_color' => array(  'type' => 'varchar','precision' => '6', 'nullable' => True), 
     313                'border_color' => array(  'type' => 'varchar','precision' => '6', 'nullable' => True), 
     314                'type' => array('type' => 'int', 'precision' => '2' ,'nullable' => false, 'default' => 0) 
    282315            ), 
    283316            'pk' => array('id'), 
  • branches/2.4/expressoCalendar/setup/tables_update.inc.php

    r6255 r7228  
    5757 
    5858                $oProc->CreateTable('calendar_repeat_ranges', array( 
    59                                 'fd' => array( 
    60                                     'id' => array( 'type' => 'auto', 'nullable' => False), 
    61                                     'range_start' => array(  'type' => 'bigint','precision' => '16', 'nullable' => False), 
    62                                     'range_end' => array(  'type' => 'bigint', 'precision' => '16', 'nullable' => False), 
    63                                     'user_info_id' => array(  'type' => 'bigint', 'precision' => '16', 'nullable' => False) 
    64                                 ), 
    65                                 'pk' => array('id'), 
    66                                 'fk' => array(), 
    67                                 'ix' => array(), 
    68                                 'uc' => array() 
    69                                     ) 
     59                        'fd' => array( 
     60                            'id' => array( 'type' => 'auto', 'nullable' => False), 
     61                            'range_start' => array(  'type' => 'bigint','precision' => '16', 'nullable' => False), 
     62                            'range_end' => array(  'type' => 'bigint', 'precision' => '16', 'nullable' => False), 
     63                            'user_info_id' => array(  'type' => 'bigint', 'precision' => '16', 'nullable' => False) 
     64                        ), 
     65                        'pk' => array('id'), 
     66                        'fk' => array(), 
     67                        'ix' => array(), 
     68                        'uc' => array() 
     69                            ) 
    7070                ); 
    7171 
     
    7979        function expressoCalendar_upgrade1_002() { 
    8080 
    81             $oProc = $GLOBALS['phpgw_setup']->oProc; 
     81        $oProc = $GLOBALS['phpgw_setup']->oProc; 
    8282 
    83             $oProc->query("ALTER TABLE calendar_repeat_occurrence ADD COLUMN exception smallint DEFAULT 0"); 
     83        $oProc->query("ALTER TABLE calendar_repeat_occurrence ADD COLUMN exception smallint DEFAULT 0"); 
    8484 
    85             $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.003'; 
    86             return $GLOBALS['setup_info']['expressoCalendar']['currentver']; 
     85        $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.003'; 
     86        return $GLOBALS['setup_info']['expressoCalendar']['currentver']; 
    8787        }; 
    8888         
    8989        $test[] = '1.003'; 
    9090        function expressoCalendar_upgrade1_003() { 
    91             $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.004'; 
    92             return $GLOBALS['setup_info']['expressoCalendar']['currentver']; 
     91        $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.004'; 
     92        return $GLOBALS['setup_info']['expressoCalendar']['currentver']; 
    9393        }; 
    9494 
    9595        $test[] = '1.004'; 
    9696        function expressoCalendar_upgrade1_004() { 
    97             $oProc = $GLOBALS['phpgw_setup']->oProc; 
    98             $oProc->query("ALTER TABLE calendar_repeat_occurrence  ALTER COLUMN exception SET default 0"); 
     97        $oProc = $GLOBALS['phpgw_setup']->oProc; 
     98        $oProc->query("ALTER TABLE calendar_repeat_occurrence  ALTER COLUMN exception SET default 0"); 
    9999 
    100             $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.005'; 
    101             return $GLOBALS['setup_info']['expressoCalendar']['currentver']; 
     100        $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.005'; 
     101        return $GLOBALS['setup_info']['expressoCalendar']['currentver']; 
    102102        }; 
    103103         
    104104        $test[] = '1.005'; 
    105105        function expressoCalendar_upgrade1_005() { 
    106             $oProc = $GLOBALS['phpgw_setup']->oProc; 
    107             $oProc->query("ALTER TABLE calendar_alarm ADD COLUMN alarm_offset bigint;"); 
     106        $oProc = $GLOBALS['phpgw_setup']->oProc; 
     107        $oProc->query("ALTER TABLE calendar_alarm ADD COLUMN alarm_offset bigint;"); 
    108108            $oProc->query("UPDATE calendar_alarm SET alarm_offset = obj.range_start - calendar_alarm.range_start FROM calendar_object as obj WHERE obj.id = object_id;"); 
    109109            $oProc->query("ALTER TABLE calendar_alarm DROP COLUMN range_start;"); 
    110110            $oProc->query("ALTER TABLE calendar_alarm DROP COLUMN range_end;"); 
    111             $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.006'; 
    112             return $GLOBALS['setup_info']['expressoCalendar']['currentver']; 
     111        $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.006'; 
     112        return $GLOBALS['setup_info']['expressoCalendar']['currentver']; 
    113113        }; 
    114114         
     
    120120        }; 
    121121         
     122        $test[] = '1.007'; 
     123        function expressoCalendar_upgrade1_007() { 
     124            $oProc = $GLOBALS['phpgw_setup']->oProc; 
     125 
     126            $oProc->query("ALTER TABLE calendar_object ADD COLUMN priority smallint DEFAULT 0;"); 
     127            $oProc->query("ALTER TABLE calendar_object ADD COLUMN percentage smallint DEFAULT 0;"); 
     128            $oProc->query("ALTER TABLE calendar_object ADD COLUMN status smallint DEFAULT 0;"); 
     129 
     130            $oProc->query("ALTER TABLE calendar_object ADD COLUMN due bigint DEFAULT 0;"); 
     131 
     132            $oProc->query("ALTER TABLE calendar ADD COLUMN type smallint DEFAULT 0;"); 
     133            $oProc->query("ALTER TABLE calendar_signature ADD COLUMN type smallint DEFAULT 0;"); 
     134 
     135            $oProc->query("INSERT INTO calendar_object_type(id, name) VALUES ('2', 'TODO');"); 
     136 
     137            $oProc->query("CREATE TABLE calendar_task_to_activity_object(id serial not null, calendar_object_activity_id integer not null, calendar_object_task_id integer not null, owner integer not null);"); 
     138 
     139            $oProc->CreateTable('calendar_historic', array( 
     140                'fd' => array( 
     141                    'id' => array( 'type' => 'auto', 'nullable' => False), 
     142                    'object_id' => array('type' => 'int', 'precision' => '8','nullable' => True), 
     143                    'user_uidnumber' => array( 'type' => 'int', 'precision' => '8', 'nullable' => False), 
     144                    'dtstamp' => array( 'type' => 'bigint', 'precision' => '16', 'nullable' => False), 
     145                    'attribute' => array('type' => 'varchar','precision' => '50','nullable' => True), 
     146                    'before_value' => array( 'type' => 'varchar', 'precision' => '255', 'nullable' => True),               
     147                    'after_value' => array( 'type' => 'varchar', 'precision' => '255', 'nullable' => True)             
     148                ), 
     149                'pk' => array('id'), 
     150                'fk' => array(), 
     151                'ix' => array(), 
     152                'uc' => array() 
     153                ) 
     154            ); 
     155 
     156            $oProc->CreateTable('calendar_task_to_activity_object', array( 
     157                'fd' => array( 
     158                    'id' => array( 'type' => 'auto', 'nullable' => False), 
     159                    'calendar_object_activity_id' => array(  'type' => 'int', 'precision' => '8', 'nullable' => False), 
     160                    'calendar_object_task_id' => array(  'type' => 'int', 'precision' => '8', 'nullable' => False), 
     161                    'owner' => array(  'type' => 'int', 'precision' => '8', 'nullable' => False), 
     162                ), 
     163                'pk' => array('id'), 
     164                'fk' => array(), 
     165                'ix' => array(), 
     166                'uc' => array() 
     167                ) 
     168            ); 
     169 
     170            $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.008'; 
     171            return $GLOBALS['setup_info']['expressoCalendar']['currentver']; 
     172        }; 
     173 
     174    $test[] = '1.008'; 
     175    function expressoCalendar_upgrade1_008() { 
     176        $oProc = $GLOBALS['phpgw_setup']->oProc; 
     177 
     178        $oProc->query("ALTER TABLE calendar_permission ADD COLUMN owner bigint;"); 
     179        $oProc->query("UPDATE calendar_permission SET owner = sig.user_uidnumber FROM calendar_signature as sig WHERE (sig.calendar_id = object_id AND sig.is_owner = '1');"); 
     180 
     181        $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.009'; 
     182        return $GLOBALS['setup_info']['expressoCalendar']['currentver']; 
     183    }; 
     184         
    122185?> 
  • branches/2.4/expressoMail1_2/inc/class.exporteml.inc.php

    r5934 r7228  
    1616        var $mbox_stream; 
    1717        var $tempDir; 
    18          
     18 
    1919        function ExportEml() { 
    2020            
     
    5050                return $sEMail; 
    5151        } 
    52          
     52 
    5353        // create EML File. 
    5454        // Funcao alterada para tratar a exportacao 
     
    6262            $header    = imap_headerinfo($this->mbox_stream, imap_msgno($this->mbox_stream, $id), 80, 255); 
    6363            $subject = $this->decode_subject($header->fetchsubject); 
    64              
     64                         
    6565            if (strlen($subject) > 60) 
    6666                $subject = substr($subject, 0, 59); 
     
    214214                // se encontram em um mesmo folder 
    215215                if (count($sorted_msgs)==1){ 
    216                                                          
    217216                        $array_names_keys = array_keys($sorted_msgs); 
    218217                        $this->folder = mb_convert_encoding($array_names_keys[0], "UTF7-IMAP","UTF-8, ISO-8859-1, UTF7-IMAP"); 
     
    228227                                $fileName       = $this->CreateFileEml($sEMLData, $tempDir, $msg_number[0]."_".$_SESSION[ 'phpgw_session' ][ 'session_id' ]); 
    229228                 
    230                                  
     229                                $header    = imap_headerinfo($this->mbox_stream, imap_msgno($this->mbox_stream, $msg_number[0]), 80, 255); 
     230                $subject = $this->decode_subject(html_entity_decode($header->fetchsubject)); 
     231 
    231232                                imap_close($this->mbox_stream); 
    232233                                if (!$fileName) { 
    233234                                        return false; 
    234235                                }else{ 
    235                                         return $tempDir.'/'.$fileName; 
     236                                        $return = array(); 
     237                                        $return[] = $tempDir.'/'.$fileName; 
     238                                        $return[] = $subject; 
     239                                        return $return; 
    236240                                } 
    237241                        } 
     
    271275                        } 
    272276 
    273                         return $file; 
     277                        return $file;                    
    274278                 
    275279                //exporta mensagens de diferentes pastas 
     
    362366                                $file = false; 
    363367                        } 
    364  
    365368            return $file; 
    366369                 
     
    369372                { 
    370373                        $this-> folder = $params['folder']; 
    371                                 $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8, ISO-8859-1, UTF7-IMAP"); 
     374                        $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8, ISO-8859-1, UTF7-IMAP"); 
    372375                        $array_ids = explode(',', $params['msgs_to_export']); 
    373376                        $error = False; 
     
    383386                                $sEMLData       = $this->parseEml($header, $body);                      
    384387                                $fileName       = $this->CreateFileEml($sEMLData, $tempDir, $array_ids[0]."_".$_SESSION[ 'phpgw_session' ][ 'session_id' ]); 
     388                         
     389                                $header    = imap_headerinfo($this->mbox_stream, imap_msgno($this->mbox_stream, $array_ids[0]), 80, 255); 
     390                    $subject = $this->decode_subject(html_entity_decode($header->fetchsubject)); 
    385391 
    386392                                imap_close($this->mbox_stream); 
     
    388394                                        return false; 
    389395                                } else { 
    390                                         return $tempDir.'/'.$fileName; 
     396                                        $return = array(); 
     397                                        $return[] = $tempDir.'/'.$fileName; 
     398                                        $return[] = $subject; 
     399                                        return $return; 
    391400                                } 
    392401                        } 
     
    416425                                {                
    417426                                        $file = $tempDir.'/'.$nameFileZip; 
     427                                        $ret[] = $file; 
     428                                    return $ret;   
    418429                                } else { 
    419430                                        $file = false; 
     
    424435                                $file = false; 
    425436                        } 
    426  
    427437                        return $file; 
    428438                } 
     
    453463                        $fileName       = $this->CreateFileEml($sEMLData, $tempDir, $array_ids[0]."_".$_SESSION[ 'phpgw_session' ][ 'session_id' ]); 
    454464 
     465                        $header    = imap_headerinfo($this->mbox_stream, imap_msgno($this->mbox_stream, $array_ids[0]), 80, 255); 
     466            $subject = $this->decode_subject(html_entity_decode($header->fetchsubject)); 
     467 
    455468                        imap_close($this->mbox_stream); 
    456469                        if (!$fileName) { 
    457470                                return false; 
    458471                        } else { 
    459                                 return $tempDir.'/'.$fileName; 
     472                                $return = array(); 
     473                                $return[] = $tempDir.'/'.$fileName; 
     474                                $return[] = $subject; 
     475                                return $return; 
    460476                        } 
    461477                } 
  • branches/2.4/expressoMail1_2/inc/class.imap_functions.inc.php

    r7180 r7228  
    128128                $result = true; 
    129129                if(!imap_renamemailbox($mbox, '{'.$this->imap_server.":".$this->imap_port.$this->imap_options.'}'.$old_folder, '{'.$this->imap_server.":".$this->imap_port.$this->imap_options.'}'.$to_folder.$this->imap_delimiter.$new_folder[count($new_folder)-1])){ 
    130                         $result = false; 
    131                 } 
     130                        $result = imap_last_error(); 
     131                } 
     132 
    132133                imap_close($mbox);  
    133134                return $result; 
     
    10611062                $content = $this->html2txt($content);    
    10621063                $content != "" ? $return['body'] = " - " . $content: $return['body'] = ""; 
    1063         $return['body'] = base64_encode(mb_convert_encoding(substr($return['body'], 0, 305),'UTF-8' , 'UTF-8,ISO-8859-1'));  
     1064                $return['body'] = base64_encode(mb_convert_encoding(substr($return['body'], 0, 305),'UTF-8' , 'UTF-8,ISO-8859-1')); 
    10641065                return $return; 
    10651066        } 
     
    12351236                $return['sender']['name'] = isset($sender[0]->personal) ? $this->decode_string($sender[0]->personal): ''; 
    12361237                $return['sender']['email'] = $this->decode_string($sender[0]->mailbox . "@" . $sender[0]->host); 
    1237                  
     1238 
    12381239                if ($return['sender']['name']) 
    12391240                { 
     
    12561257                                if (!empty($tmp->personal)) 
    12571258                                { 
    1258                                         $personal_tmp = $this->formatMailObject($tmp);  
    1259                         $return['toaddress2'] .= '"' . $personal_tmp['name'] . '"'; 
     1259                                        $personal_tmp = $this->formatMailObject($tmp); 
     1260                                        $return['toaddress2'] .= '"' . $personal_tmp['name'] . '"'; 
    12601261                                        $return['toaddress2'] .= " "; 
    12611262                                        $return['toaddress2'] .= "&lt;"; 
     
    12881289                                if (!empty($tmp_cc->personal)) 
    12891290                                { 
    1290                                         $personal_tmp_cc = $this->formatMailObject($tmp_cc);  
    1291                         $return['cc'] .= '"' . $personal_tmp_cc['name']. '"';  
     1291                                        $personal_tmp_cc = $this->formatMailObject($tmp_cc); 
     1292                                        $return['cc'] .= '"' . $personal_tmp_cc['name']. '"'; 
    12921293                                        $return['cc'] .= " "; 
    12931294                                        $return['cc'] .= "&lt;"; 
     
    13281329                                if (!empty($tmp_bcc->personal)) 
    13291330                                { 
    1330                                         $personal_tmp_bcc = $this->formatMailObject($tmp_bcc);  
    1331                         $return['bcc'] .= '"' . $personal_tmp_bcc['name'] . '"'; 
     1331                                        $personal_tmp_bcc = $this->formatMailObject($tmp_bcc); 
     1332                                        $return['bcc'] .= '"' . $personal_tmp_bcc['name'] . '"'; 
    13321333                                        $return['bcc'] .= " "; 
    13331334                                        $return['bcc'] .= "&lt;"; 
     
    13551356                $reply_to = $header->reply_to; 
    13561357                $return['reply_to'] = ""; 
     1358                 
    13571359                if (is_object($reply_to[0])) 
    13581360                { 
    13591361                        if ($return['from']['email'] != ($reply_to[0]->mailbox."@".$reply_to[0]->host)) 
    13601362                        { 
    1361                                 if (!empty($reply_to[0]->personal)) 
     1363                                foreach ($reply_to as $tmp_reply_to) 
    13621364                                { 
    1363                                         $personal_reply_to = $this->formatMailObject($tmp_reply_to); 
    1364                                         if(!empty($personal_reply_to[0]->text)) { 
    1365                                                 $return['reply_to'] .= '"' . $personal_reply_to['name']. '"'; 
     1365                                        if (!empty($tmp_reply_to->personal)) 
     1366                                        { 
     1367                                                $personal_tmp_reply_to = $this->formatMailObject($tmp_reply_to); 
     1368                                                $return['reply_to'] .= '"' . $personal_tmp_reply_to['name'] . '"'; 
    13661369                                                $return['reply_to'] .= " "; 
    13671370                                                $return['reply_to'] .= "&lt;"; 
    1368                                                 $return['reply_to'] .= $personal_reply_to['email']; 
     1371                                                $return['reply_to'] .= $personal_tmp_reply_to['email']; 
    13691372                                                $return['reply_to'] .= "&gt;"; 
     1373                                                $return['reply_to'] .= ", "; 
    13701374                                        } 
    1371                                         else { 
    1372                                                 $return['reply_to'] .= $reply_to[0]->mailbox . "@" . $reply_to[0]->host; 
     1375                                        else 
     1376                                        { 
     1377                                                if (isset($tmp_reply_to->host) && $tmp_reply_to->host != 'unspecified-domain') 
     1378                                                        $return['reply_to'] .= $tmp_reply_to->mailbox . "@" . $tmp_reply_to->host; 
     1379                                                else 
     1380                                                        $return['reply_to'] .= $tmp_reply_to->mailbox; 
     1381                                                $return['reply_to'] .= ", "; 
    13731382                                        } 
    13741383                                } 
    1375                                 else 
    1376                                 { 
    1377                                         $return['reply_to'] .= $reply_to[0]->mailbox . "@" . $reply_to[0]->host; 
    1378                                 } 
    1379                         } 
    1380                 } 
    1381                 $return['reply_to'] = $this->decode_string($return['reply_to']); 
     1384                                $return['reply_to'] = $this->del_last_two_caracters($return['reply_to']); 
     1385                        } 
     1386                } 
     1387                else 
     1388                { 
     1389                        $return['reply_to'] = ""; 
     1390                } 
     1391 
    13821392                $return['subject'] = ( isset($header->subject) && trim($header->subject) !== '' ) ?  self::decodeMimeString($header->subject) : $this->functions->getLang('(no subject)   '); 
    13831393 
     
    13981408                }   
    13991409                $return['alarm'] = $alarm; 
    1400          
     1410                 
    14011411                return $return; 
    14021412        } 
     
    18961906            $body = str_ireplace('<o:p>&nbsp;</o:p>','<br />', $body);//Qubra de linha do MSO 
    18971907            $body = preg_replace('/<(meta|base|link|html|\/html)[^>]*>/i', '', $body); 
     1908 
     1909 
     1910                        // Malicious Code Remove 
     1911            $dirtyCodePattern = "/(<([\w]+[\w0-9]*)(.*)on(mouse(move|over|down|up)|load|blur|change|error|click|dblclick|focus|key(down|up|press)|select)([\n\ ]*)=([\n\ ]*)[\"'][^>\"']*[\"']([^>]*)>)(.*)(<\/\\2>)?/misU"; 
     1912            preg_match_all($dirtyCodePattern, $body, $rest, PREG_PATTERN_ORDER); 
     1913            foreach ($rest[0] as $i => $val) { 
     1914                if (!(preg_match("/javascript:window\.open\(\"([^'\"]*)\/index\.php\?menuaction=calendar\.uicalendar\.set_action\&cal_id=([^;'\"]+);?['\"]/i", $rest[1][$i]) && strtoupper($rest[4][$i]) == "CLICK" )) //Calendar events 
     1915                    $body = str_replace($rest[1][$i], "<" . $rest[2][$i] . $rest[3][$i] . $rest[7][$i] . ">", $body); 
     1916            } 
    18981917             
    18991918 
     
    19321951            $body = str_ireplace('position:absolute;', '', $body); 
    19331952                 
     1953            $body = str_ireplace('position:absolute;', '', $body); 
     1954 
    19341955            //Remoção de tags <span></span> para correção de erro no firefox 
    19351956            //Comentado pois estes replaces geram erros no html da msg, não se pode garantir que o os </span></span> sejam realmente os fechamentos dos <span><span>. 
     
    21452166                $return['status'] = true; 
    21462167 
    2147                         //Este bloco tem a finalidade de averiguar as permissoes para pastas compartilhadas  
    2148             if (substr($folder,0,4) == 'user'){  
    2149                     $acl = $this->getacltouser($folder, isset($params['decoded']));  
    2150                     /*  
    2151                      * l - lookup (mailbox is visible to LIST/LSUB commands, SUBSCRIBE mailbox)  
    2152                  * r - read (SELECT the mailbox, perform STATUS)  
    2153                  * s - keep seen/unseen information across sessions (set or clear \SEEN flag via STORE, also set \SEEN during APPEND/COPY/        FETCH BODY[...])  
    2154                  * w - write (set or clear flags other than \SEEN and \DELETED via STORE, also set them during APPEND/COPY)  
    2155                  * i - insert (perform APPEND, COPY into mailbox)  
    2156                  * p - post (send mail to submission address for mailbox, not enforced by IMAP4 itself)  
    2157                  * k - create mailboxes (CREATE new sub-mailboxes in any implementation-defined hierarchy, parent mailbox for the new mailbox name in RENAME)  
    2158                  * x - delete mailbox (DELETE mailbox, old mailbox name in RENAME)  
    2159                  * t - delete messages (set or clear \DELETED flag via STORE, set \DELETED flag during APPEND/COPY)  
    2160                  * e - perform EXPUNGE and expunge as a part of CLOSE  
    2161                  * a - administer (perform SETACL/DELETEACL/GETACL/LISTRIGHTS)  
    2162                  * Os Atributos da ACL para pastas compartilhadas são definidos no arquivo sharemailbox.js, na função setaclfromuser  
    2163                  * Os Atributos da ACL para contas compartilhadas são definidos no arquivo shared_accounts.js, na função setaclfromuser   
    2164                  */  
    2165                             $acl_share_delete = (stripos($acl,'t') !== false && stripos($acl,'e') !== false);  
    2166                   
    2167                                 if (!$acl_share_delete) {   
    2168                                     $return['status'] = false;  
    2169                             }  
    2170             }  
    2171              
     2168                //Este bloco tem a finalidade de averiguar as permissoes para pastas compartilhadas 
     2169        if (substr($folder,0,4) == 'user'){ 
     2170                $acl = $this->getacltouser($folder, isset($params['decoded'])); 
     2171                /* 
     2172                        * l - lookup (mailbox is visible to LIST/LSUB commands, SUBSCRIBE mailbox) 
     2173                        * r - read (SELECT the mailbox, perform STATUS) 
     2174                        * s - keep seen/unseen information across sessions (set or clear \SEEN flag via STORE, also set \SEEN during APPEND/COPY/        FETCH BODY[...]) 
     2175                        * w - write (set or clear flags other than \SEEN and \DELETED via STORE, also set them during APPEND/COPY) 
     2176                        * i - insert (perform APPEND, COPY into mailbox) 
     2177                        * p - post (send mail to submission address for mailbox, not enforced by IMAP4 itself) 
     2178                        * k - create mailboxes (CREATE new sub-mailboxes in any implementation-defined hierarchy, parent mailbox for the new mailbox name in RENAME) 
     2179                        * x - delete mailbox (DELETE mailbox, old mailbox name in RENAME) 
     2180                        * t - delete messages (set or clear \DELETED flag via STORE, set \DELETED flag during APPEND/COPY) 
     2181                        * e - perform EXPUNGE and expunge as a part of CLOSE 
     2182                        * a - administer (perform SETACL/DELETEACL/GETACL/LISTRIGHTS) 
     2183                        * Atributos da ACL para pastas compartilhadas são definidos no arquivo sharemailbox.js, na função setaclfromuser 
     2184                        * Atributos da ACL para contas compartilhadas são definidos no arquivo shared_accounts.js, na função setaclfromuser 
     2185                        */ 
     2186                        $acl_share_delete = (stripos($acl,'t') !== false && stripos($acl,'e') !== false); 
     2187 
     2188                        if (!$acl_share_delete) { 
     2189                                $return['status'] = false; 
     2190                        } 
     2191        } 
     2192 
    21722193                return $return; 
    21732194        } 
    2174  
    21752195 
    21762196        function refresh($params) 
     
    23672387            foreach ($return as $i => &$vv) 
    23682388            { 
    2369                 if(!is_array($vv)) continue;  
    2370                   
    2371             $vv['folder_id'] = mb_convert_encoding($vv['folder_id'],'ISO-8859-1','UTF7-IMAP');//DECODIFICA ID DAS PASTAS COM ACENTOS  
    2372             $vv['folder_name'] = mb_convert_encoding($vv['folder_name'],'ISO-8859-1','UTF7-IMAP');//DECODIFICA NOME DAS PASTAS COM ACENTOS  
    2373             $vv['folder_parent'] = mb_convert_encoding($vv['folder_parent'],'ISO-8859-1','UTF7-IMAP');//DECODIFICA NOME DAS PASTAS COM ACENTOS 
     2389            if(!is_array($vv)) continue; 
     2390 
     2391            $vv['folder_id'] = mb_convert_encoding($vv['folder_id'],'ISO-8859-1','UTF7-IMAP');//DECODIFICA ID DAS PASTAS COM ACENTOS 
     2392            $vv['folder_name'] = mb_convert_encoding($vv['folder_name'],'ISO-8859-1','UTF7-IMAP');//DECODIFICA NOME DAS PASTAS COM ACENTOS 
     2393            $vv['folder_parent'] = mb_convert_encoding($vv['folder_parent'],'ISO-8859-1','UTF7-IMAP');//DECODIFICA NOME DAS PASTAS COM ACENTOS 
    23742394            } 
    23752395 
     
    24122432                        $decifrada = mb_convert_encoding('INBOX'.$this->imap_delimiter.'decifradas','UTF7-IMAP','ISO-8859-1'); //Ignorar esta pasta decifrada 
    24132433                        $parent = ($nameCount > 1 && $nameArray[($nameCount - 2)] !== 'INBOX') ? implode($this->imap_delimiter, array_slice($nameArray, 0, ($nameCount - 1))): ''; //Pega folder pai 
    2414                         if($nameArray[0] === 'user') 
    2415                                 $folders[$prefixShared.$this->imap_delimiter.$nameArray[1]][] = array('id' => $folderId , 'stream' => $v->name , 'attributes' => $v->attributes , 'name' => $nameArray[($nameCount-1)] , 'user' => $nameArray[1] ,'parent' => $parent); 
    2416                         else if( $folderId !== $decifrada) //Escapa pasta decifrada 
    2417                                 $folders['INBOX'][strtolower($folderId)] =  array('id' => $folderId , 'stream' => $v->name , 'attributes' => $v->attributes ,'name' => $nameArray[($nameCount-1)] , 'parent' => $parent); 
    2418                 } 
     2434 
     2435                        if($nameArray[0] === 'user'){ 
     2436 
     2437                                //variaveis utilizadas para definição das permissões das pastas compartilhadas 
     2438                                $acl_share_create = 0; 
     2439                                $acl_share_rename = 0; 
     2440                                $acl_share_delete = 0; 
     2441 
     2442                                //recuperando as permissões (ACLs) aplicadas na pasta 
     2443                                $imap_getacl = imap_getacl($mboxStream, $folderId); 
     2444 
     2445                                //Se existe ACLs aplicadas a respectiva pasta (para o usuario corrente) 
     2446                                if(isset($imap_getacl[ $this->username ])){ 
     2447                                        $aclImap = $imap_getacl[ $this->username ]; 
     2448 
     2449                                        //A partir dos atributos da ACL definir permissões para cada ação (create, delete e rename): 
     2450                                        //http://www.ietf.org/rfc/rfc4314.txt 
     2451                                        $acl_share_create = (stripos($aclImap,'w') !== false && stripos($aclImap,'i') !== false && stripos($aclImap,'k') !== false) ? 1 : 0; 
     2452                                        $acl_share_delete = (stripos($aclImap,'x') !== false && stripos($aclImap,'t') !== false && stripos($aclImap,'e') !== false) ? 1 : 0; 
     2453 
     2454                                        $acl_share_rename = ($acl_share_create && $acl_share_delete) ? 1 : 0; 
     2455                                } 
     2456 
     2457                                $folders[$prefixShared.$this->imap_delimiter.$nameArray[1]][] = array( 
     2458                                        'id' => $folderId ,  
     2459                                        'stream' => $v->name ,  
     2460                                        'attributes' => $v->attributes ,  
     2461                                        'name' => $nameArray[($nameCount-1)] ,  
     2462                                        'user' => $nameArray[1] , 
     2463                                        'parent' => $parent , 
     2464 
     2465                                        //Acrescentando ACLs configuradas a cada pasta compartilhada 
     2466                                        'acl_share' => array( 
     2467                                                'create' => $acl_share_create, 
     2468                                                'rename' => $acl_share_rename, 
     2469                                                'delete' => $acl_share_delete 
     2470                                        ) 
     2471                                ); 
     2472 
     2473                        }        
     2474                        else if( $folderId !== $decifrada){ //Escapa pasta decifrada 
     2475                                $folders['INBOX'][strtolower($folderId)] = array( 
     2476                                        'id' => $folderId ,  
     2477                                        'stream' => $v->name ,  
     2478                                        'attributes' => $v->attributes , 
     2479                                        'name' => $nameArray[($nameCount-1)] ,  
     2480                                        'parent' => $parent  
     2481                                ); 
     2482                        } 
     2483                } 
     2484 
    24192485                unset($folders_list); //destroy array de objetos desnecessarios 
    24202486                 
     
    24342500                                $append['folder_hasChildren'] = (($vv['attributes'] == 32) && ($vv['name'] != 'INBOX')) ? 1 : 0; 
    24352501                                $append['folder_parent'] = $vv['parent']; 
     2502 
     2503                                //Preparando o array de retorno para conter as ACLs configuradas para cada pasta 
     2504                                if(isset($vv['acl_share'])){ 
     2505                                        $append['acl_share'] = $vv['acl_share']; 
     2506                                } 
    24362507                                $return[] = $append; 
    24372508                        } 
     
    24402511                $quotaInfo =  (!isset($params['noQuotaInfo'])) ? $this->get_quota( array('folder_id' => $currentFolder)) : false; //VERIFICA SE O USUARIO TEM COTA 
    24412512 
    2442                 return ( ( is_array($quotaInfo) ) ?  array_merge($return, $quotaInfo) : $return );         
     2513                return ( ( is_array($quotaInfo) ) ?  array_merge($return, $quotaInfo) : $return ); 
    24432514        } 
    24442515     
     
    24602531                        if(!imap_createmailbox($mbox_stream,"{".$imap_server."}".$namebox)) 
    24612532                        { 
    2462                                 $result = implode("<br />\n", imap_errors()); 
     2533                                $result = imap_last_error(); 
    24632534                        } 
    24642535                }else{ 
     
    24712542                                if(!imap_createmailbox($mbox_stream,"{".$imap_server."}$namebox")) 
    24722543                                { 
    2473                                         $result = implode("<br />\n", imap_errors());                                            
     2544                                        $result = imap_last_error();                                             
    24742545                                } 
    24752546                                $child .=$this->imap_delimiter; 
     
    25132584                if(!imap_deletemailbox($mbox_stream,"{".$imap_server."}$namebox")) 
    25142585                { 
    2515                         $result = implode("<br />\n", imap_errors()); 
     2586                        $result = imap_last_error(); 
    25162587                } 
    25172588                /* 
     
    25362607                if(!imap_renamemailbox($mbox_stream,"{".$imap_server."}$namebox","{".$imap_server."}$new_box")) 
    25372608                { 
    2538                         $result = imap_errors(); 
     2609                        $result = imap_last_error(); 
    25392610                } 
    25402611                if($mbox_stream) 
     
    25932664            } 
    25942665 
    2595             /*Wraps the text dividing the emails as from ">,"*/  
     2666            /*Wraps the text dividing the emails as from ">,"*/ 
    25962667            $toaddress = $db->getAddrs(preg_split('/>,/',preg_replace('/>,/', '>>,', $params['input_to']))); 
    2597                 $ccaddress = $db->getAddrs(preg_split('/>,/',preg_replace('/>,/', '>>,', $params['input_cc'])));  
    2598                 $ccoaddress = $db->getAddrs(preg_split('/>,/',preg_replace('/>,/', '>>,', $params['input_cco'])));  
     2668            $ccaddress = $db->getAddrs(preg_split('/>,/',preg_replace('/>,/', '>>,', $params['input_cc']))); 
     2669            $ccoaddress = $db->getAddrs(preg_split('/>,/',preg_replace('/>,/', '>>,', $params['input_cco']))); 
    25992670 
    26002671            if ($toaddress["False"] || $ccaddress["False"] || $ccoaddress["False"]) { 
     
    26192690            $ccoaddress = preg_replace('/\s+>/', '>', $ccoaddress); 
    26202691 
    2621             $replytoaddress = $params['input_replyto']; 
     2692            $replytoaddress = $params['input_reply_to']; 
    26222693            $subject = $params['input_subject']; 
    26232694            $return_receipt = $params['input_return_receipt']; 
     
    26252696            $encrypt = $params['input_return_cripto']; 
    26262697            $signed = $params['input_return_digital']; 
    2627                          
     2698 
    26282699                        $params['attachments'] = mb_convert_encoding($params['attachments'], "UTF7-IMAP","UTF-8, ISO-8859-1, UTF7-IMAP"); 
    26292700            $message_attachments = $params['message_attachments']; 
     
    28042875            else 
    28052876                $mailService->setFrom('"' . $_SESSION['phpgw_info']['expressomail']['user']['firstname'] . ' ' . $_SESSION['phpgw_info']['expressomail']['user']['lastname'] . '" <' . $_SESSION['phpgw_info']['expressomail']['user']['email'] . '>'); 
     2877             
     2878            $mailService->addHeaderField('Reply-To', $replytoaddress); 
    28062879 
    28072880            $bol = $this->add_recipients('to', $toaddress, $mailService); 
     
    29503023                { 
    29513024                    $value = json_decode($value, true); 
    2952                                      
     3025 
    29533026                    switch ($value['type']) { 
    29543027                        case 'imapPart': 
    29553028                                $att = $this->getForwardingAttachment(mb_convert_encoding($value['folder'] , 'ISO-8859-1' , 'UTF7-IMAP'),$value['uid'], $value['part']); 
    2956                                 if(strstr($body,'src="./inc/get_archive.php?msgFolder='.$value['folder'].'&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'"') !== false)//Embeded IMG  
     3029 
     3030                                if(strstr($body,'src="./inc/get_archive.php?msgFolder='.$value['folder'].'&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'"') !== false)//Embeded IMG 
    29573031                                {     
    29583032                                    $body = str_ireplace('src="./inc/get_archive.php?msgFolder='.$value['folder'].'&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'"' , 'src="'.$att['name'].'"', $body); 
     
    31683242            $attachment = new attachment(); 
    31693243            $attachment->decodeConf['rfc_822bodies'] = $rfc_822bodies; //Forçar a não decodificação de mensagens em anexo. 
    3170                                     $folder = urldecode($folder);  
    3171                                 $attachment->setStructureFromMail($folder, $uid); 
     3244                        $folder = urldecode($folder); 
     3245                $attachment->setStructureFromMail($folder, $uid); 
    31723246             
    31733247            if($info === true) 
     
    34143488 
    34153489                //Este bloco tem a finalidade de averiguar as permissoes para pastas compartilhadas 
    3416                 if (substr($folder,0,4) == 'user'){ 
    3417                         $acl = $this->getacltouser($folder, isset($params['decoded'])); 
    3418  
    3419                         /* 
    3420                          * l - lookup (mailbox is visible to LIST/LSUB commands, SUBSCRIBE mailbox)  
    3421              * r - read (SELECT the mailbox, perform STATUS)  
    3422              * s - keep seen/unseen information across sessions (set or clear \SEEN flag via STORE, also set \SEEN during APPEND/COPY/        FETCH BODY[...])  
    3423              * w - write (set or clear flags other than \SEEN and \DELETED via STORE, also set them during APPEND/COPY)  
    3424              * i - insert (perform APPEND, COPY into mailbox)  
    3425              * p - post (send mail to submission address for mailbox, not enforced by IMAP4 itself)  
    3426              * k - create mailboxes (CREATE new sub-mailboxes in any implementation-defined hierarchy, parent mailbox for the new mailbox name in RENAME)  
    3427              * x - delete mailbox (DELETE mailbox, old mailbox name in RENAME)  
    3428              * t - delete messages (set or clear \DELETED flag via STORE, set \DELETED flag during APPEND/COPY)  
    3429              * e - perform EXPUNGE and expunge as a part of CLOSE  
    3430              * a - administer (perform SETACL/DELETEACL/GETACL/LISTRIGHTS)  
    3431              * Os Atributos da ACL para pastas compartilhadas são definidos no arquivo sharemailbox.js, na função setaclfromuser  
    3432              * Os Atributos da ACL para contas compartilhadas são definidos no arquivo shared_accounts.js, na função setaclfromuser  
    3433                          */ 
    3434                         $acl_share_delete = (stripos($acl,'t') !== false && stripos($acl,'e') !== false);  
    3435                   
    3436                 if (!$acl_share_delete) {   
     3490        if (substr($folder,0,4) == 'user'){ 
     3491                $acl = $this->getacltouser($folder, isset($params['decoded'])); 
     3492 
     3493                /* 
     3494                        * l - lookup (mailbox is visible to LIST/LSUB commands, SUBSCRIBE mailbox) 
     3495                        * r - read (SELECT the mailbox, perform STATUS) 
     3496                        * s - keep seen/unseen information across sessions (set or clear \SEEN flag via STORE, also set \SEEN during APPEND/COPY/        FETCH BODY[...]) 
     3497                        * w - write (set or clear flags other than \SEEN and \DELETED via STORE, also set them during APPEND/COPY) 
     3498                        * i - insert (perform APPEND, COPY into mailbox) 
     3499                        * p - post (send mail to submission address for mailbox, not enforced by IMAP4 itself) 
     3500                        * k - create mailboxes (CREATE new sub-mailboxes in any implementation-defined hierarchy, parent mailbox for the new mailbox name in RENAME) 
     3501                        * x - delete mailbox (DELETE mailbox, old mailbox name in RENAME) 
     3502                        * t - delete messages (set or clear \DELETED flag via STORE, set \DELETED flag during APPEND/COPY) 
     3503                        * e - perform EXPUNGE and expunge as a part of CLOSE 
     3504                        * a - administer (perform SETACL/DELETEACL/GETACL/LISTRIGHTS) 
     3505                        * Os Atributos da ACL para pastas compartilhadas são definidos no arquivo sharemailbox.js, na função setaclfromuser 
     3506                        * Os Atributos da ACL para contas compartilhadas são definidos no arquivo shared_accounts.js, na função setaclfromuser 
     3507                        */ 
     3508                        $acl_share_delete = (stripos($acl,'t') !== false && stripos($acl,'e') !== false); 
     3509 
     3510                        if (!$acl_share_delete) { 
    34373511                                $return['status'] = false; 
    34383512                                return $return; 
     
    35143588                                        imap_close($mbox_stream); 
    35153589                                 
    3516                                 $msg_error = "move_messages() line ".__LINE__.": ". imap_last_error()." folder:".$newmailbox;  
    3517                 trigger_error($msg_error);  
    3518                 return $msg_error;  
     3590                                $msg_error = "move_messages() line ".__LINE__.": ". imap_last_error()." folder:".$newmailbox; 
     3591                                trigger_error($msg_error); 
     3592                                return $msg_error; 
    35193593                        } 
    35203594                } 
     
    37313805                        $this->mbox = $this->open_mbox($folder); 
    37323806 
     3807                if($offsetEnd == 0 && $offsetBegin == 0){ 
     3808                        $offsetEnd = imap_num_msg($this->mbox); 
     3809                        $offsetBegin = 1; 
     3810                } 
    37333811                return $this->messages_sort($sort_box_type,$sort_box_reverse, $search_box_type,$offsetBegin,$offsetEnd,$folder); 
    37343812        } 
     
    38783956        function empty_folder($params) 
    38793957        { 
    3880                 $folder = 'INBOX' . $this->imap_delimiter . $_SESSION['phpgw_info']['expressomail']['email_server'][$params['clean_folder']]; 
     3958                $folder = (isset($params['shared']) ? $params['shared'] : 'INBOX') . $this->imap_delimiter . $_SESSION['phpgw_info']['expressomail']['email_server'][$params['clean_folder']]; 
    38813959                $mbox_stream = $this->open_mbox($folder); 
    38823960                $return = imap_delete($mbox_stream,'1:*'); 
     3961                $return = imap_errors(); 
    38833962                if($mbox_stream) 
    38843963                        imap_close($mbox_stream, CL_EXPUNGE); 
     
    43224401                $mbox_acl = imap_getacl($mbox_stream, 'INBOX'); 
    43234402 
    4324                 $oldAcls = array('d' , 'c' , 'a');  
    4325         $newAcls = array('xte','ik', '');  
    4326  
    4327         $return = array();  
     4403                $oldAcls = array('d' , 'c' , 'a'); 
     4404                $newAcls = array('xte','ik', ''); 
     4405 
     4406                $return = array(); 
    43284407                foreach ($mbox_acl as $user => $acl) 
    43294408                { 
    4330                                 if($user == $this->username)   
    4331                             continue;  
    4332  
    4333                     //Compatibiliza acls no padrão antigo para o novo  
    4334                     $acl = str_replace($oldAcls, $oldAcls, $acl);  
    4335  
    4336                     $return[$user] = array(  
    4337                                     'cn' => $this->ldap->uid2cn($user) ,  
    4338                                     'acls' => $acl  
    4339                                     );  
    4340             }  
    4341             return $return;  
    4342     }  
    4343  
    4344     function setacl($params)  
    4345     {  
    4346             $old_users = $this->getacl();  
    4347             $new_users = unserialize($params['acls']);  
    4348  
    4349             $mbox_stream = $this->open_mbox();  
    4350             $serverString = "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}";  
    4351             $mailboxes_list = imap_getmailboxes($mbox_stream, $serverString, "user".$this->imap_delimiter.$this->username."*");                  
     4409                        if($user == $this->username)  
     4410                                continue; 
     4411 
     4412                        //Compatibiliza acls no padrão antigo para o novo 
     4413                        $acl = str_replace($oldAcls, $oldAcls, $acl); 
     4414 
     4415                        $return[$user] = array( 
     4416                                        'cn' => $this->ldap->uid2cn($user) , 
     4417                                        'acls' => $acl 
     4418                                        ); 
     4419                } 
     4420                return $return; 
     4421        } 
     4422 
     4423        function setacl($params) 
     4424        { 
     4425                $old_users = $this->getacl(); 
     4426                $new_users = unserialize($params['acls']); 
    43524427 
    43534428            foreach ($new_users as $user => $value) {  
     
    43584433                    }  
    43594434            }  
    4360  
    4361             foreach ($new_users as $user => $value) 
     4435                $serverString = "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}"; 
     4436                $mailboxes_list = imap_getmailboxes($mbox_stream, $serverString, "user".$this->imap_delimiter.$this->username."*");                 
     4437 
     4438                foreach ($new_users as $user => $value) { 
     4439                        if(isset($old_users[$user]) && $value['acls'] == $old_users[$user]['acls']) 
     4440                        { 
     4441                                unset($old_users[$user]); 
     4442                                unset($new_users[$user]); 
     4443                        } 
     4444                } 
     4445 
     4446                foreach ($new_users as $user => $value) 
    43624447                { 
    4363                         if (is_array($mailboxes_list))  
    4364             {  
    4365                 foreach ($mailboxes_list as $key => $val)  
    4366                 {  
    4367                     $folder = str_replace($serverString, "", imap_utf7_decode($val->name));  
    4368                     //$folder = str_replace("&-", "&", $folder);  
    4369                         $folder = imap_utf7_encode($folder);  
    4370                     imap_setacl ($mbox_stream, $folder, "$user", $value['acls']);  
    4371  
    4372                 }  
    4373             }  
    4374             if(isset($old_users[$user]))  
    4375                     unset($old_users[$user]);  
    4376             }  
    4377  
    4378             foreach ($old_users as $user => $value) 
     4448                if (is_array($mailboxes_list)) 
     4449                { 
     4450                    foreach ($mailboxes_list as $key => $val) 
     4451                    { 
     4452                        $folder = str_replace($serverString, "", imap_utf7_decode($val->name)); 
     4453                        //$folder = str_replace("&-", "&", $folder); 
     4454                                        $folder = imap_utf7_encode($folder); 
     4455                        imap_setacl ($mbox_stream, $folder, "$user", $value['acls']); 
     4456 
     4457                    } 
     4458                } 
     4459                if(isset($old_users[$user])) 
     4460                        unset($old_users[$user]); 
     4461                } 
     4462 
     4463                foreach ($old_users as $user => $value) 
    43794464                { 
    4380                         if (is_array($mailboxes_list))  
    4381             {  
    4382                 foreach ($mailboxes_list as $key => $val)  
    4383                 {  
    4384                     $folder = str_replace($serverString, "", imap_utf7_decode($val->name));  
    4385                     //$folder = str_replace("&-", "&", $folder);  
    4386                         $folder = imap_utf7_encode($folder);  
    4387                     imap_setacl ($mbox_stream, $folder, "$user", "");  
    4388  
    4389                 }  
    4390             }  
    4391             }  
    4392  
     4465                if (is_array($mailboxes_list)) 
     4466                { 
     4467                    foreach ($mailboxes_list as $key => $val) 
     4468                    { 
     4469                        $folder = str_replace($serverString, "", imap_utf7_decode($val->name)); 
     4470                        //$folder = str_replace("&-", "&", $folder); 
     4471                                        $folder = imap_utf7_encode($folder); 
     4472                        imap_setacl ($mbox_stream, $folder, "$user", ""); 
     4473 
     4474                    } 
     4475                } 
     4476                } 
     4477                 
    43934478 
    43944479                return true; 
     
    44074492                //Afim de tratar as pastas compartilhadas, verificandos as permissoes de operacao sobre as mesmas 
    44084493                //No caso de se tratar da caixa do proprio usuario logado, utiliza a sintaxe abaixo 
    4409                 if(substr($user,0,5) != 'user'.$this->imap_delimiter)  
    4410                     $mbox_acl = imap_getacl($mbox_stream, 'user'.$this->imap_delimiter.$user);  
     4494                if(substr($user,0,5) != 'user'.$this->imap_delimiter) 
     4495                        $mbox_acl = imap_getacl($mbox_stream, 'user'.$this->imap_delimiter.$user); 
    44114496                else 
    4412                   $mbox_acl = imap_getacl($mbox_stream, $user);  
    4413                          
    4414             return (isset($mbox_acl[$this->username])) ? $mbox_acl[$this->username] : ''; 
     4497                        $mbox_acl = imap_getacl($mbox_stream, $user); 
     4498                 
     4499                return (isset($mbox_acl[$this->username])) ? $mbox_acl[$this->username] : ''; 
     4500                
    44154501        } 
    44164502 
     
    47234809                $array_params = explode(";;", $params);  
    47244810                $id_msg   = $array_params[0];  
    4725                 $msg_user = $array_params[1];  
     4811                $msg_user = $array_params[1]; 
     4812                $msg_folder = $array_params[2]; 
    47264813            $msg_folder = $array_params[2];  
    47274814                 
     
    52945381                                foreach ($messages as $k => $m) { 
    52955382                                        $headers = imap_fetch_overview($this->mbox, $m, FT_UID); 
     5383 
    52965384                                        $date = explode(" ", $headers[0]->date);  
    52975385                                        $result[$m."_".$folder] = array ( 
     
    53255413                } 
    53265414                $r = $this->get_info_msg(array('msg_number' => $message_number, 'msg_folder' =>urlencode($message_folder), 'alarm' => ($alarm))); 
     5415 
    53275416                return $r; 
    53285417        } 
  • branches/2.4/expressoMail1_2/inc/class.ldap_functions.inc.php

    r7083 r7228  
    8888                $this->ldap_context = $_SESSION['phpgw_info']['expressomail']['server']['ldap_context']; 
    8989 
    90                 if( isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_host']) &&  
    91             isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_dn']) &&  
    92             isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_pw']) &&  
    93             $_SESSION['phpgw_info']['expressomail']['server']['ldap_master_host'] && 
     90                if( isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_host']) && 
     91                        isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_dn']) && 
     92                        isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_pw']) && 
     93                        $_SESSION['phpgw_info']['expressomail']['server']['ldap_master_host'] && 
    9494                        $_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_dn'] && 
    9595                        $_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_pw']) { 
     
    114114                $ID                     = $params['ID']; 
    115115                 
    116                 $ldapService = ServiceLocator::getService('ldap'); 
    117                 $filter =  $ldapService->getSearchFilter($params['search_for']); 
     116                $ldapService = ServiceLocator::getService('ldap'); 
     117                $filter =  $ldapService->getSearchFilter($params['search_for']); 
    118118 
    119119                $contacts_result = array(); 
     
    132132                if ($this->ds) 
    133133                { 
    134                     $ldapService->connection = $this->ds; 
    135                                 if($extendedinfo) 
    136                                         $justthese = array("cn", "mail", "telephonenumber", "uid","uidNumber", "mobile", "phpgwaccountvisible", "employeenumber", "ou"); 
    137                                 else  
    138                                         $justthese = array("cn", "mail", "telephoneNumber", "phpgwAccountVisible", "uidNumber","uid"); 
    139                 $types = false; 
    140  
    141                 if( $field == 'null' || $ID == 'null' ) 
     134                        $ldapService->connection = $this->ds; 
     135                        if($extendedinfo) 
     136                                $justthese = array("cn", "mail", "telephonenumber", "uid","uidNumber", "mobile", "phpgwaccountvisible", "employeenumber", "ou"); 
     137                        else  
     138                                $justthese = array("cn", "mail", "telephoneNumber", "phpgwAccountVisible", "uidNumber","uid"); 
     139                        $types = false; 
     140 
     141                        if( $field == 'null' || $ID == 'null' ) 
    142142                        { 
    143                     $justthese[] = "jpegphoto"; 
    144                     $types = 'u'; 
    145                 } 
     143                                $justthese[] = "jpegphoto"; 
     144                                $types = 'u'; 
     145                        } 
    146146 
    147147                $filter = $ldapService->getSearchFilter( $params['search_for'], $types ); 
    148148 
    149149                $sr=@ldap_search($this->ds, $this->ldap_context, $filter, $justthese, 0, $this->max_result); 
    150                          
    151                                 if(!$sr) 
    152                                         return null; 
    153  
    154                                 $count_entries = ldap_count_entries($this->ds,$sr); 
    155  
    156                 $info = ldap_get_entries($this->ds, $sr); 
     150 
     151                if(!$sr) 
     152                        return null; 
     153 
     154                $count_entries = ldap_count_entries($this->ds,$sr); 
     155 
     156                $info = ldap_get_entries($this->ds, $sr); 
    157157 
    158158            // New search only on user sector 
    159159            if ($count_entries == $this->max_result) 
    160160            { 
    161                 $overload = $count_entries; 
    162                                 } 
    163                                 else 
    164                                 { 
    165                                 $catalogsNum=count($this->external_srcs); 
    166                 for ($i=0; $i<=$catalogsNum; $i++)      { 
     161                        $overload = $count_entries; 
     162                } 
     163                else 
     164                { 
     165                        $catalogsNum=count($this->external_srcs); 
     166                                for ($i=0; $i<=$catalogsNum; $i++)      { 
    167167                                        if ($this->external_srcs[$i]["quicksearch"]) {  
    168168                                                $this->ldapConnect(true,$i); 
    169169                                                $filter="(|(cn=*$search_for*)(mail=*$search_for*))"; 
    170170                                                if($extendedinfo) 
    171                                         $justthese = array("cn", "mail", "telephonenumber", "uid","uidNumber", "mobile", "phpgwaccountvisible", "employeenumber", "ou"); 
     171                                                        $justthese = array("cn", "mail", "telephonenumber", "uid","uidNumber", "mobile", "phpgwaccountvisible", "employeenumber", "ou"); 
    172172                                                else  
    173173                                                        $justthese = array("cn", "mail", "telephoneNumber", "phpgwAccountVisible","uidNumber", "uid"); 
     
    185185                        } 
    186186 
    187             $tmp = array();  
    188         $tmp_users_from_user_org = array();  
    189  
    190         for ($i=0; $i<$info["count"]; $i++)  
    191         {  
    192                 $key = $info[$i]["mail"][0] . '%' . $info[$i]["telephonenumber"][0] . '%'. $info[$i]["mobile"][0] . '%' . $info[$i]["uid"][0] . '%' . $info[$i]["jpegphoto"]['count'] . '%' . $info[$i]["employeenumber"][0] . '%' .    $info[$i]["ou"][0];  
    193  
    194                 if (/*(!$quickSearch_only_in_userSector) &&*/ preg_match("/$user_sector_dn/i", $info[$i]['dn']))  
     187                $tmp = array(); 
     188                $tmp_users_from_user_org = array(); 
     189 
     190                for ($i=0; $i<$info["count"]; $i++) 
     191                { 
     192                        $key = $info[$i]["mail"][0] . '%' . $info[$i]["telephonenumber"][0] . '%'. $info[$i]["mobile"][0] . '%' . $info[$i]["uid"][0] . '%' . $info[$i]["jpegphoto"]['count'] . '%' . $info[$i]["employeenumber"][0] . '%' .    $info[$i]["ou"][0]; 
     193 
     194                        if (/*(!$quickSearch_only_in_userSector) &&*/ preg_match("/$user_sector_dn/i", $info[$i]['dn'])) 
    195195                        { 
    196                                                 $tmp_users_from_user_org[$key] = utf8_decode($info[$i]["cn"][0]);  
    197                             continue;  
    198                     }  
    199  
    200                     $tmp[$key] = utf8_decode($info[$i]["cn"][0]);  
    201             }  
     196                                $tmp_users_from_user_org[$key] = utf8_decode($info[$i]["cn"][0]); 
     197                                continue; 
     198                        } 
     199 
     200                        $tmp[$key] = utf8_decode($info[$i]["cn"][0]); 
     201                } 
    202202 
    203203                        natcasesort($tmp_users_from_user_org); 
     
    219219                                } 
    220220                                $contacts_result['quickSearch_only_in_userSector'] = $quickSearch_only_in_userSector; 
    221                     $contacts_result['maxResult'] = $ldapService->limit;  
     221                                $contacts_result['maxResult'] = $ldapService->limit; 
    222222                        } 
    223223                        else 
     
    328328                                                        return $this->quickSearch($params); 
    329329                                                else 
    330                                                         return $this->quickSearchAll($params);                                                   
     330                                                        return $this->quickSearchAll($params); 
    331331                } 
    332332            } 
     
    340340        * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 
    341341        * @sponsor    Caixa Econômica Federal 
    342         * @author     Prognus Software Livre <airton@prognus.com.br | prognus@prognus.com.br> 
     342        * @author     ProgquickSearchAllnus Software Livre <airton@prognus.com.br | prognus@prognus.com.br> 
    343343        * @param      <array> <$param> <parametros vindos do cliente> 
    344344        * @return     <array> <$retorno> <Array com os usuários de todos os catálogos, de acordo com o parâmetro> 
     
    405405        * @return     <array> <$retorno> <Array com os usuários do Catálogo Global, de acordo com o parâmetro> 
    406406        */ 
    407         function quickSearchGlobal($params, $all=false)  
     407        function quickSearchGlobal($params, $all=false) 
    408408        {               
    409409            include_once dirname(__FILE__). '/../../header.inc.php'; 
     
    482482                                        $search = ldap_get_entries($this->ds, $sr); 
    483483                                        for ($j=0; $j<$search["count"]; $j++) { 
    484                                                 $info_return[] = $search[$j]; 
     484                                                $search[$j]['isExternal'] = true; 
     485                        $info_return[] = $search[$j]; 
    485486                                        } 
    486487                                        $info_return["count"] = count($info_return)-1; 
     
    488489                        } 
    489490                        //---------------------------------------------------------------// 
    490                          
     491 
    491492            if($all == false) 
    492493                $info_return['type_catalog'] = "G"; 
     
    494495                        $info_return['extra_ldap_fields'] = $campos_extras;  
    495496                         
    496                         foreach($info_return as &$value){  
    497                     $value['type_contact'] = "G";  
    498  
    499                     //Converte a descrição dos filtros para ISO8859 corrigindo inconsitências com caractéres especiais  
    500                     if(isset($value['vacationinfo']) && isset($value['vacationinfo'][0]) && $value['vacationinfo'][0] != '')  
    501                             $value['vacationinfo'][0] = $this->toISO8859($value['vacationinfo'][0]);  
    502             }  
     497                        foreach($info_return as &$value){ 
     498                                $value['type_contact'] = "G"; 
     499 
     500                                //Converte a descrição dos filtros para ISO8859 corrigindo inconsitências com caractéres especiais 
     501                                if(isset($value['vacationinfo']) && isset($value['vacationinfo'][0]) && $value['vacationinfo'][0] != '') 
     502                                        $value['vacationinfo'][0] = $this->toISO8859($value['vacationinfo'][0]); 
     503                        } 
    503504 
    504505                        $info_return['search_for'] = $params['search_for']; 
    505                          
    506             return $info_return;   
     506            return $info_return;  
    507507        }  
    508508         
     
    898898        function getSharedUsersFrom($params){ 
    899899                $filter = ''; 
    900                 $i = 0;           
    901         //Added to save if must save sent messages in shared folder  
    902         $acl_save_sent_in_shared = array();  
    903          
    904         if($params['uids']) {  
    905                 $uids = explode(";",$params['uids']);  
    906                 $this->imap = new imap_functions();                       
    907                 foreach($uids as $index => $uid){  
    908                         $params = array();  
    909                         //Added to save if user has create permission  
    910                         $acl_create_message = array();  
    911                         $acl = $this->imap->getacltouser($uid ,true);  
    912     
    913                         if ( preg_match("/p/",$acl )){                           
    914                             $filter .= "(uid=$uid)";                                                      
    915                             $acl_save_sent_in_shared[ $i ] =$uid;  
    916                             $i++;  
    917                                                                          
    918                         }                                                         
    919                 }                         
     900        $i = 0;          
     901        //Added to save if must save sent messages in shared folder 
     902        $acl_save_sent_in_shared = array(); 
     903        
     904        if($params['uids']) { 
     905                $uids = explode(";",$params['uids']); 
     906                $this->imap = new imap_functions();                      
     907                foreach($uids as $index => $uid){ 
     908                        $params = array(); 
     909                        //Added to save if user has create permission 
     910                        $acl_create_message = array(); 
     911                        $acl = $this->imap->getacltouser($uid ,true); 
     912   
     913                        if ( preg_match("/p/",$acl )){                          
     914                            $filter .= "(uid=$uid)";                                                     
     915                            $acl_save_sent_in_shared[ $i ] =$uid; 
     916                            $i++; 
     917                                                                        
     918                        }                                                        
     919                }                        
    920920        } 
    921921                 
     
    937937                                } 
    938938                        } 
    939                  
     939 
    940940                        $info['myname'] = $_SESSION['phpgw_info']['expressomail']['user']['fullname']; 
    941941 
     
    953953                                $result = ldap_get_entries($this->ds, $sr); 
    954954                                for ($j = 0;$j < $result["count"]; $j++){ 
    955                                         $result[$j]['cn'][0] = utf8_decode($result[$j]['cn'][0]);  
    956                     $result[$j]['mail'][0] = $result[$j]['mail'][0];  
    957                     $result[$j]['save_shared'][0] = 'n';  
    958                     $info[$info['count']] = $result[$j];  
    959                     $info['count'] = (int)$info['count'] + 1;                                    
     955                                        $result[$j]['cn'][0] = utf8_decode($result[$j]['cn'][0]); 
     956                                        $result[$j]['mail'][0] = $result[$j]['mail'][0]; 
     957                                        $result[$j]['save_shared'][0] = 'n'; 
     958                                        $info[$info['count']] = $result[$j]; 
     959                                        $info['count'] = (int)$info['count'] + 1;                        
    960960                                } 
    961961                        } 
    962962 
    963963                        $_SESSION['phpgw_info']['expressomail']['user']['shared_mailboxes'] = $info; 
    964                          
     964 
    965965                        return $info; 
    966966                } 
  • branches/2.4/expressoMail1_2/inc/hook_settings.inc.php

    r6055 r7228  
    345345create_check_box('Show previous message, after delete actual message?','delete_and_show_previous_message','Enable this option if you want to read the next message everytime you delete a message'); 
    346346create_check_box('Do you wanna receive an alert for new messages?','alert_new_msg','Everytime you receive new messages you will be informed'); 
     347 
     348 
     349create_check_box('Wish you receive notifications for: "New messages", "Filter criteria", "Event alerts"?','notifications','Everytime you receive new messages you will be informed'); 
     350 
     351 
     352 
    347353create_check_box('Show default view on main screen?','mainscreen_showmail','Show unread messages in your home page'); 
    348354create_check_box('Do you want to use remove attachments function?','remove_attachments_function','It allow you to remove attachments from messages'); 
     
    507513} 
    508514 
     515create_check_box('Would you like to have a read receipt option to read messages?','confirm_read_message',''); 
     516 
    509517$default = array( 
    510518        'text' => lang('simple text'), 
  • branches/2.4/expressoMail1_2/index.php

    r6754 r7228  
    2323        echo "<script src='js/modal/modal.js'></script>"; 
    2424        //jquery and Editor  
    25         echo '                   
     25        echo '  
    2626                <link rel="stylesheet" type="text/css" href="templates/default/main.css"></link> 
     27                 
    2728                <link rel="stylesheet" type="text/css" href="../phpgwapi/js/dftree/dftree.css"></link> 
     29                 
     30                <link rel="stylesheet" type="text/css" href="../prototype/plugins/jquery.spinner/jquery.spinner.css"></link> 
    2831                <link rel="stylesheet" type="text/css" href="../prototype/plugins/fullcalendar/fullcalendar.css"></link> 
    2932                <link rel="stylesheet" type="text/css" href="../prototype/plugins/fullcalendar/fullcalendar.print.css"></link> 
     
    3235                <script type="text/javascript" src="../prototype/plugins/jquery/jquery.min.js"></script> 
    3336                <link href="../prototype/modules/filters/filters.css" rel="stylesheet" type="text/css"> 
     37                 
    3438                <script type="text/javascript" src="../prototype/plugins/jquery/jquery-ui.min.js"></script> 
    3539                <script src="../prototype/plugins/json2/json2.js" language="javascript"></script> 
     
    7276                <script type="text/javascript" src="../prototype/plugins/contextmenu/jquery.contextMenu.js"></script> 
    7377                <!-- <script type="text/javascript" src="../prototype/plugins/contextmenu/jquery.ui.position.js"></script> --> 
    74                  
     78 
    7579                <script type="text/javascript" src="../prototype/modules/calendar/js/timezone.js"></script> 
    76         <script type="text/javascript" src="../prototype/plugins/dateFormat/dateFormat.js"></script> 
     80                <script type="text/javascript" src="../prototype/plugins/dateFormat/dateFormat.js"></script> 
    7781                <script type="text/javascript" src="../prototype/modules/calendar/js/calendar.date.js"></script> 
     82                <script type="text/javascript" src="../prototype/modules/calendar/js/desktop.notification.js"></script> 
    7883                <script type="text/javascript" src="../prototype/modules/calendar/js/calendar.codecs.js"></script> 
     84                <script type="text/javascript" src="../prototype/modules/calendar/js/calendar.alarms.js"></script> 
     85                <script type="text/javascript" src="../prototype/modules/calendar/js/helpers.js"></script> 
    7986                <link rel="stylesheet" type="text/css" href="../prototype/plugins/freeow/style/freeow/freeow.css" > 
    8087                <script type="text/javascript" src="../prototype/plugins/freeow/jquery.freeow.min.js"></script> 
     
    226233        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['return_recipient_deafault'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['return_recipient_deafault'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['return_recipient_deafault'] : "0"; 
    227234        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['quick_search_default'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['quick_search_default'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['quick_search_default'] : 1; 
     235        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['confirm_read_message'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['confirm_read_message'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['confirm_read_message'] : 0; 
    228236        //      ACL for block edit Personal Data. 
    229237        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['enable_quickadd_telephonenumber'] = $current_config['expressoMail_enable_quickadd_telephonenumber'] == 'true' ? $current_config['expressoMail_enable_quickadd_telephonenumber'] : ""; 
  • branches/2.4/expressoMail1_2/js/QuickCatalogSearch.js

    r7122 r7228  
    710710                } 
    711711                verifyEmails(email, divs); 
    712                 final_contact = "\""+nome +"\" <"+email+">"; 
     712                final_contact = "\""+nome +"\" <"+email+"> "; 
    713713 
    714714                final_contact = final_contact.replace(/\/n/, "");  
    715715                var index = parseInt(divs.split("_")[1])-1; 
    716                 if(data_[index].type_contact == "G"){ 
     716        if(typeof(data_[index].isExternal) != 'undefined' &&  data_[index].isExternal == true) 
     717            draw_email_box(final_contact, content.find(field_).filter("textarea:first")); 
     718        else if(data_[index].type_contact == "G"){ 
    717719                        var ldap_id = preferences.expressoMail_ldap_identifier_recipient; 
    718720                        if(ldap_id){ 
    719721                                draw_email_box( 
    720722                                        (data_[index][ldap_id.toLowerCase()] ? data_[index][ldap_id.toLowerCase()][0] : final_contact) 
    721                                         , content.find(field_).filter("textarea:first")  
     723                                        , content.find(field_).filter("textarea:first") 
    722724                                ); 
    723725                        }else{ 
    724                                 draw_email_box(final_contact, content.find(field_).filter("textarea:first")) 
     726                                draw_email_box(final_contact, content.find(field_).filter("textarea:first")); 
    725727                        } 
    726728                }else{ 
    727                         draw_email_box((data_[index].id_contact ? data_[index].id_contact : data_[index].id), content.find(field_).filter("textarea:first"), (data_[index].id_contact ? true : "G"));  
     729                        draw_email_box((data_[index].id_contact ? data_[index].id_contact : data_[index].id), content.find(field_).filter("textarea:first"), (data_[index].id_contact ? true : "G")); 
    728730                } 
    729                 content.find(field_).filter("textarea:first").val("");  
     731                content.find(field_).filter("textarea:first").val(""); 
    730732                button.onclick = function(){ 
    731733                        remove_contact_field(document.getElementById(divs).innerHTML, button, divs); 
     
    800802                                                                        $( "#amount-text" ).focus(); 
    801803                                                                        event.stopPropagation(); 
    802                                                 if(typeof(shortcut) != 'undefined') shortcut.disabled = false;  
    803                                                                 },  
    804                         open: function(event, ui)  
    805                         {  
    806                             if(typeof(shortcut) != 'undefined') shortcut.disabled = true;  
    807                         }  
     804                                    if(typeof(shortcut) != 'undefined') shortcut.disabled = false;  
     805                                                                }, 
     806                        open: function(event, ui)  
     807                        { 
     808                            if(typeof(shortcut) != 'undefined') shortcut.disabled = true;  
     809                        } 
    808810                        }); 
    809811                }); 
     
    837839                                        content.find(field_).focus();     
    838840                                }  
    839                         if(typeof(shortcut) != 'undefined') shortcut.disabled = false;   
     841                if(typeof(shortcut) != 'undefined') shortcut.disabled = false;  
    840842                        }, 
    841843                        open: function () { 
     
    843845                                $("#selectable li:first").focus(); 
    844846                                document.getElementById("amount-text").focus();  
    845                                 if(typeof(shortcut) != 'undefined') shortcut.disabled = true; 
     847                if(typeof(shortcut) != 'undefined') shortcut.disabled = true;  
    846848                        }, 
    847849                        focus: function (event, ui) { 
  • branches/2.4/expressoMail1_2/js/QuickSearchUser.js

    r6931 r7228  
    3131                                                        } 
    3232                        ], 
    33                         open: function(event, ui)  
    34             {  
    35                 if(typeof(shortcut) != 'undefined') shortcut.disabled = true;   
    36             },  
    37             close: function(event, ui)   
    38             {  
    39                 if(typeof(shortcut) != 'undefined') shortcut.disabled = false;  
    40                 $(this).dialog("destroy");  
    41             }  
     33            open: function(event, ui)  
     34            { 
     35                if(typeof(shortcut) != 'undefined') shortcut.disabled = true;  
     36            }, 
     37            close: function(event, ui)  
     38            { 
     39                if(typeof(shortcut) != 'undefined') shortcut.disabled = false; 
     40                $(this).dialog("destroy"); 
     41            } 
    4242                });      
    4343                 
  • branches/2.4/expressoMail1_2/js/TreeS.js

    r6931 r7228  
    44         
    55        function foldersExpresso(){ } 
    6          
    7         function load() 
    8         { 
    9                 var div = document.createElement("div"); 
    10                  
    11                 var args =  
    12                 { 
    13                         "delete_folder"         : get_lang('Delete folder'), 
    14                         "export_messages"       : get_lang('Export messages'), 
    15                         "new_folder"            : get_lang('New folder'), 
    16                         "rename_folder"         : get_lang('Rename folder') 
    17                 }; 
    18                  
    19                 $(div).html(DataLayer.render("./templates/default/folderExpresso.ejs", args )); 
    20                  
    21                 $(div).dialog( 
    22                 { 
    23                         resizable       : false, 
    24                         title           : get_lang("Manager your folders and export messages"), 
    25                         position        : 'center', 
    26                         width           : 600, 
    27                         height          : 300, 
    28                         modal           : false, 
    29                         buttons         : [ 
    30                                                         { 
    31                                                                 text: get_lang("Close"), 
    32                                                                 click: function() 
    33                                                                 { 
    34                                                                         $(this).dialog("close").dialog("destroy"); 
    35                                                                         div.removeChild( div.firstChild ); 
    36                                                                 }, 
    37                                                                 style: "margin-top: -2.1em"  
    38                                                         } 
    39                         ], 
    40                         beforeClose     : function() 
    41                         {  
    42                                 if(typeof(shortcut) != 'undefined') shortcut.disabled = false; 
    43                                 $(this).dialog("destroy"); 
    44                                 div.removeChild( div.firstChild ); 
    45                         }, 
    46                         open : function() 
    47                         { 
    48                                 if( folders.length == 0 ) 
    49                                 { 
    50                                         write_msg( "ERRO : Sem dados" ); 
    51                                         $(div).dialog("destroy"); 
    52                                         div.removeChild(div.firstChild); 
    53                                         return false; 
    54                                 } 
    55                                 else 
    56                                 { 
    57                                 if( Element('dftree_treeFolders') != null ) 
    58                                         { 
    59                                                 $(div).dialog("destroy"); 
    60                                                 div.removeChild( div.firstChild ); 
    61                                                 return; 
    62                                         } 
    63                                         else 
    64                                         { 
    65                                                 make_tree(div.firstChild); 
    66                                         } 
    67                                 } 
    68                                 if(typeof(shortcut) != 'undefined') shortcut.disabled = true; 
    69                         } 
    70                 }); 
    71         } 
    72          
    736         
    747        function make_tree() 
     
    187120                FOLDER = arguments[0]; 
    188121        } 
    189          
    190         foldersExpresso.prototype.load          = load; 
     122 
    191123        foldersExpresso.prototype.getFolder     = getFolder; 
    192124        foldersExpresso.prototype.setFolder     = setFolder; 
  • branches/2.4/expressoMail1_2/js/abas.js

    r6973 r7228  
    146146            document.getElementById('to_'+ID).focus();  
    147147        } 
     148        if (ID == 0){  
     149                updateSelectedMsgs(); 
     150        } 
    148151        RichTextEditor.setEditable(ID); 
    149152        resizeWindow(); 
     
    153156function create_border(borderTitle, id_value, search) 
    154157{ 
    155                          
    156158        borderTitle = ( ( borderTitle && borderTitle.constructor == String && borderTitle.length > 0 ) ? borderTitle : ' ' ); 
    157159    borderTitle = html_entities(borderTitle);     
     
    517519                 
    518520                if(!to && !cc && !cco && !auxAttachments && subject == "" && textArea == "") 
    519                 {  
    520                 var borderElem = Element("border_id_" + ID); 
    521                 borderElem.onclick = null; 
     521                { 
     522            var borderElem = Element("border_id_" + ID); 
     523                        borderElem.onclick = null; 
    522524                        close_delete(ID, msg_sent); 
    523525                } 
  • branches/2.4/expressoMail1_2/js/ccQuickAdd.js

    r6931 r7228  
    8989                                        } 
    9090                                } 
    91                         ],  
    92         open: function(event, ui)  
    93     {  
    94         if(typeof(shortcut) != 'undefined') shortcut.disabled = true;  
    95     },  
    96     close: function(event, ui)  
    97     {  
    98         if(typeof(shortcut) != 'undefined') shortcut.disabled = false;  
    99     }  
     91                        ], 
     92            open: function(event, ui)  
     93            { 
     94                if(typeof(shortcut) != 'undefined') shortcut.disabled = true;  
     95            }, 
     96            close: function(event, ui)  
     97            { 
     98                if(typeof(shortcut) != 'undefined') shortcut.disabled = false;  
     99            } 
    100100                }); 
    101101                quickContact.next().css("background-color", "#E0EEEE").find("button").addClass("button").addClass("small"); 
  • branches/2.4/expressoMail1_2/js/common_functions.js

    r7156 r7228  
    249249        div_attachment = document.getElementById("id_div_attachment"); 
    250250        var params = ''; 
    251         if(msg_folder)  
    252                 msg_folder = utf8_decoder(Base64.decode(msg_folder));  
     251        if(msg_folder) 
     252                msg_folder = utf8_decoder(Base64.decode(msg_folder)); 
    253253        if (div_attachment == null){ 
    254254                var div_attachment = document.createElement("DIV"); 
     
    629629} 
    630630 
    631 function folderbox() 
    632 { 
    633         connector.loadScript("TreeS"); 
    634  
    635         if( typeof(window.ttree) == 'undefined') 
    636                 setTimeout(function(){ folderbox(); }, 200 ); 
    637         else 
    638                 ttree.load(); 
    639 } 
    640  
    641631function filterbox(){ 
    642632        connector.loadScript("filter"); 
     
    686676                closeOnEscape:true, 
    687677                close:function(event, ui) { 
    688                         select_all_search_messages(false, 'content_id_'+currentTab); 
     678                        //select_all_search_messages(false, 'content_id_'+currentTab); 
    689679                        event.stopPropagation(); 
    690                 if(typeof(shortcut) != 'undefined') shortcut.disabled = false;  
     680            if(typeof(shortcut) != 'undefined') shortcut.disabled = false; 
    691681                }, 
    692                 open: function(event, ui)  
    693             {  
    694                 if(typeof(shortcut) != 'undefined') shortcut.disabled = true;  
    695             },  
     682        open: function(event, ui)  
     683        { 
     684            if(typeof(shortcut) != 'undefined') shortcut.disabled = true;  
     685        }, 
    696686                autoOpen:false, 
    697687                dialogClass: 'dialog-configure-label' 
     
    744734                closeOnEscape:true, 
    745735                close:function(event, ui) { 
    746                         select_all_search_messages(false, 'content_id_'+currentTab); 
     736                        //select_all_search_messages(false, 'content_id_'+currentTab); 
    747737                        event.stopPropagation(); 
    748         if(typeof(shortcut) != 'undefined') shortcut.disabled = false;  
     738            if(typeof(shortcut) != 'undefined') shortcut.disabled = false;  
    749739                }, 
    750         open: function(event, ui)  
    751         {  
    752             if(typeof(shortcut) != 'undefined') shortcut.disabled = true;  
    753         },  
     740        open: function(event, ui)  
     741        { 
     742            if(typeof(shortcut) != 'undefined') shortcut.disabled = true;  
     743        }, 
    754744                autoOpen:false 
    755745        });      
     
    836826        var num_msg = id_msg.substr(0,(id_msg.length - 2)); 
    837827        var handler_source = function(data){ 
    838                 download_attachments(null, null, data, null,null,'fonte_da_mensagem.eml'); 
     828                download_attachments(null, null, data[0], null,null,data[1]+'.eml'); 
    839829        } 
    840830        cExecute("$this.exporteml.export_msg",handler_source,"folder="+url_decode(folder)+"&msgs_to_export="+num_msg); 
     
    11311121        var main_list = main.childNodes; 
    11321122        var len_main_list = main_list.length; 
    1133  
     1123        var folder = $('#content_folders .folder.selected').attr('title'); 
     1124        folder = folder ? folder : get_lang('INBOX'); 
     1125        folder = folder.length > 70 ? '"'+folder.substr(0,70) + "..." +'"': '"'+folder+'"' ; 
     1126        var filterFlag = search_box_type != "ALL" ? '"'+get_lang(search_box_type) + "s" +'"': ""; 
     1127        var div = $('.select-all-messages');     
    11341128        if (select) 
    11351129        { 
     
    11401134                        if(!$("#"+main_list[i].id).hasClass("selected_shortcut_msg")){ 
    11411135                                //add_className(Element(main_list[i].id), 'selected_msg selected_shortcut_msg current_selected'); 
    1142                                 add_className(Element(main_list[i].id), 'selected_msg selected_shortcut_msg'); 
     1136                                add_className(Element(main_list[i].id), 'selected_msg'); 
    11431137                        } else { 
    11441138                                $("#"+main_list[i].id).addClass("selected_msg"); 
    1145                                 $("#"+main_list[i].id).addClass("selected_shortcut_msg"); 
    1146                                 $("#"+main_list[i].id).addClass("current_selected");             
    1147                         } 
     1139                                //$("#"+main_list[i].id).addClass("selected_shortcut_msg"); 
     1140                                //$("#"+main_list[i].id).addClass("current_selected");           
     1141                        }                        
     1142                        selectedPagingMsgs[main_list[i].id] = true; 
     1143                }                
     1144                if (totalSelected() == totalFolderMsgs && totalSelected() > 0){ 
     1145                        allMsgsSelected = true; 
     1146                                if (total_pages > 1){ 
     1147                                        var link = "<a class='select-link' href='#'>Limpar seleção?</a>"; 
     1148                                        var info = "Todas as <b>"+totalFolderMsgs+"</b> mensagens "+filterFlag+" em "+folder+" foram selecionadas. "+link; 
     1149                                        div.html("<span>"+info+"<span>"); 
     1150                                        div.show(); 
     1151                                        $('.select-link').bind('click',function(){ 
     1152                                                selectAllFolderMsgs(); 
     1153                                                //$('.select-link').unbind('click'); 
     1154                                        }); 
     1155                                }                        
     1156                } 
     1157                else if (!allMsgsSelected && total_pages > 1){ 
     1158                        var link = "<a class='select-link' href='#'>Selecionar todas as <b>"+totalFolderMsgs+"</b> mensagens "+filterFlag+" em "+folder+"?</a>"; 
     1159                        var info = "Todas as <b>"+$('#table_box tr').length+"</b> mensagens desta página foram selecionadas. "+link; 
     1160                        div.html("<span>"+info+"<span>"); 
     1161                        div.show(); 
     1162                        $('.select-link').bind('click',function(){ 
     1163                                selectAllFolderMsgs(true); 
     1164                                //$('.select-link').unbind('click'); 
     1165                        });                                      
    11481166                } 
    11491167        } 
     
    11561174                        $("#"+main_list[i].id).removeClass("selected_msg"); 
    11571175                        $("#"+main_list[i].id).removeClass("current_selected"); 
    1158                 } 
    1159         } 
    1160          
     1176                        selectedPagingMsgs[main_list[i].id] = false; 
     1177                } 
     1178                if (allMsgsSelected){ 
     1179                        allMsgsSelected = false; 
     1180                        updateSelectedMsgs(); 
     1181                } 
     1182                else if (totalSelected() > 0 && total_pages > 1){ 
     1183                        var link = "<a class='select-link' href='#'>Limpar seleção?</a>"; 
     1184                        var info = "Foram selecionadas <b>"+totalSelected()+"</b> mensagens "+filterFlag+" em "+folder+". "+link; 
     1185                        div.html("<span>"+info+"<span>"); 
     1186                        div.show(); 
     1187                        $('.select-link').bind('click',function(){ 
     1188                                selectAllFolderMsgs(false); 
     1189                                //$('.select-link').unbind('click'); 
     1190                        });                      
     1191                } 
     1192                else div.hide(); 
     1193                 
     1194        } 
     1195        resizeWindow(); 
    11611196} 
    11621197 
     
    12521287    return folderName; 
    12531288} 
     1289 
     1290function useDesktopNotification(){ 
     1291    return !!parseInt(preferences.notifications); 
     1292} 
  • branches/2.4/expressoMail1_2/js/doiMenuData.js

    r7079 r7228  
    9797 
    9898/** 
    99  *      Carrega o menu de opção de uma mensagem 
     99 *      Carrega o menu de opção de uma mensagem 
    100100 */ 
    101101function loadMenu(){ 
     
    113113                                labeledMessages(isLabel[1]); 
    114114                        } 
    115                         selectAllFolderMsgs(false);  
     115                        selectAllFolderMsgs(false); 
    116116                }, 
    117117                items: { 
     
    140140                "i02": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }}, 
    141141                "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 }, 
    142                 "i04": {"name": get_lang("Edit folders"), "icon": "edit-folder", callback: folderbox }, 
    143142                "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox }, 
    144143                "i06": {"name": get_lang("Labels"), "icon": "tag", callback: configureLabels },  
     
    153152} else { 
    154153        var menuToolsItems = { 
    155                 "i01": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }}, 
    156                 "i02": {"name": get_lang("Edit folders"), "icon": "edit-folder", callback: folderbox } 
     154                "i01": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }} 
    157155        } 
    158156} 
     
    210208function updateLabelsColumn(messageInfo) { 
    211209        var msg_number = messageInfo.msg_number; 
    212         //uid é o numero da mensagem quando os dados são carregados na busca rapida. 
     210        //uid é o numero da mensagem quando os dados são carregados na busca rapida. 
    213211        if(messageInfo.uid != '' && messageInfo.uid != 'undefined' && messageInfo.uid != null){ 
    214212                msg_number = messageInfo.uid; 
     
    268266            .appendTo(this); 
    269267                $(this).find('span.removeLabeled').click(function(){ 
    270                         //TODO Mudar quando API abstrair atualizações no cache 
     268                        //TODO Mudar quando API abstrair atualizações no cache 
    271269                        DataLayer.remove('labeled', false); 
    272270                        DataLayer.get('labeled'); 
     
    306304 
    307305function loadExtraLDAPBox(data, element){ 
     306 
     307    if(!!data[0]){ 
     308        var decoded = {}; 
     309 
     310        $.each(data, function(i, e){ 
     311            decoded[e.name] = e.value; 
     312        }); 
     313 
     314        data = decoded; 
     315    } 
     316 
    308317        menuItensLabel = {}; 
    309         menuItensLabel["Name"] = {name: "<b>"+data[0].value+"</b>", disabled: true};             
    310         menuItensLabel["Email"] = {name: data[1].value, disabled: true};         
    311         if(data[2].value){ 
     318        menuItensLabel["Name"] = {name: "<b>"+data.name+"</b>", disabled: true}; 
     319        menuItensLabel["Email"] = {name: data.email, disabled: true}; 
     320        if(!!data.telephone){ 
    312321                menuItensLabel["TelefoneLabel"] = {name: "<b>"+get_lang("Telephone")+"</b>", disabled: true}; 
    313                 menuItensLabel["TelefoneValue"] = {name: data[2].value, disabled: true}; 
    314         } 
    315         if(data[3]){ 
    316                 if(data[3].value == "TRUE"){ 
     322                menuItensLabel["TelefoneValue"] = {name: data.telephone, disabled: true}; 
     323        } 
     324        if(data.vacationActive){ 
     325                if(data.vacationActive == "TRUE"){ 
    317326                        menuItensLabel["outOffice"] = {name: "<b>"+get_lang("Out of office")+"</b>", disabled: true}; 
    318                         menuItensLabel["outOfficeValue"] = {name: data[4].value.substring(0, 20), disabled: true}; 
     327                        menuItensLabel["outOfficeValue"] = {name: data.vacationInfo.substring(0, 20), disabled: true}; 
    319328                } 
    320329        } 
     
    337346                for(var item in data.itens){ 
    338347                        if(parseInt(item) <= 4){ 
    339                                 ctcName = data.itens[item].data[0].value;  
    340                         ctcName = ctcName.length > 2 ? ctcName : data.itens[item].data[2].value.substr(0,data.itens[item].data[2].value.indexOf("@"));  
    341                         menuItensLabel["ContactGroupLabel"+item] = {name: "<b>"+ctcName+"</b>", disabled: true};  
     348                                ctcName = data.itens[item].data[0].value; 
     349                                ctcName = ctcName.length > 2 ? ctcName : data.itens[item].data[2].value.substr(0,data.itens[item].data[2].value.indexOf("@")); 
     350                                menuItensLabel["ContactGroupLabel"+item] = {name: "<b>"+ctcName+"</b>", disabled: true}; 
    342351                                menuItensLabel["ContactGroupValue"+item] = {name: data.itens[item].data[2].value, disabled: true}; 
    343352                        }else{ 
  • branches/2.4/expressoMail1_2/js/draw_api.js

    r7208 r7228  
    1212canMakeBox = true; 
    1313fastSearch = false; 
     14selectedPagingMsgs = {}; 
     15allMsgsSelected = false; 
     16totalFolderMsgs = 0; 
     17var jqXHR = new Array(); 
     18var idattachbycontent = 0; 
    1419 
    1520onceOpenedHeadersMessages = {}; 
     
    514519        if (openTab.imapBox[0] != folder) 
    515520        { 
     521                selectAllFolderMsgs(false); 
    516522                current_folder = folder; 
    517523                var handler_draw_box = function(data) 
    518524                { 
     525 
    519526                        if(!verify_session(data)) 
    520527                                return; 
     
    526533                        draw_paging(data.num_msgs); 
    527534                        Element("tot_m").innerHTML = data.num_msgs; 
    528                         $('#new_m').html(data.tot_unseen > 0 ? data.tot_unseen : "0").css("color","red");  
    529                 //$("#new_m").html(($(".selected").find(".folder_unseen").html() != "0" && $(".selected").find(".folder_unseen").html() != null)? $(".selected").find(".folder_unseen").html() : "0").css("color", "red");  
     535                        $('#new_m').html(data.tot_unseen > 0 ? data.tot_unseen : "0").css("color","red"); 
     536                        //$("#new_m").html(($(".selected").find(".folder_unseen").html() != "0" && $(".selected").find(".folder_unseen").html() != null)? $(".selected").find(".folder_unseen").html() : "0").css("color", "red"); 
    530537                        //update_menu(); 
    531538                        $(".folders-loading").removeClass("folders-loading"); 
    532539                        return true; 
    533540                } 
     541                $.ajax({                         
     542                        url: "controller.php?" + $.param( {action: "$this.imap_functions.get_range_msgs3",  
     543                                folder: folder, 
     544                                 msg_range_begin: "0", 
     545                                 msg_range_end: "0",                                     
     546                                sort_box_type: "SORTARRIVAL",  
     547                                search_box_type: search_box_type, 
     548                                sort_box_reverse: "1" 
     549                                }), 
     550                        success: function(data){ 
     551                                data = connector.unserialize(data); 
     552                                if(data){ 
     553                                        var _data = {}; 
     554                                        $.each(data,function(index,value){ 
     555                                                if (data[index] && data[index].msg_number){ 
     556                                                        _data[data[index].msg_number] = data[index].msg_number; 
     557                                                } 
     558                                        }); 
     559                                        populateSelectedMsgs(_data); 
     560                                        _data = {}; 
     561                                 
     562                                } 
     563                        }, 
     564                        beforeSend: function( jqXHR, settings ){ 
     565                                connector.showProgressBar(); 
     566                        }, 
     567                        complete: function( jqXHR, settings ){ 
     568                                connector.hideProgressBar(); 
     569                        } 
     570                }); 
    534571                proxy_mensagens.messages_list(current_folder,1,preferences.max_email_per_page,sort_box_type,search_box_type,sort_box_reverse,preferences.preview_msg_subject,preferences.preview_msg_tip,handler_draw_box); 
    535572        } 
     
    897934        var _mouse_out; 
    898935        var _cell; 
    899         var colGroupMain = document.getElementById("colgroup_main_"+numBox); 
    900         var colGroupHead = document.getElementById("colgroup_head_"+numBox); 
    901936        for (var r=0;r<trM.length;r++) { 
    902937                for (var c=0;c<trM[r].cells.length;c++) { 
     
    905940                        if (is_mozilla && !is_webkit) { 
    906941                                if (!emptyBody) { 
    907                                         colGroupMain.childNodes[c].setAttribute("width",colSizes[tbl][c]); 
     942                                        document.getElementById("colgroup_main_"+numBox).childNodes[c].setAttribute("width",colSizes[tbl][c]); 
    908943                                } 
    909                                 colGroupHead.childNodes[c].setAttribute("width",colSizes[tbl][c]); 
     944                                document.getElementById("colgroup_head_"+numBox).childNodes[c].setAttribute("width",colSizes[tbl][c]); 
    910945                                if (tbH.rows[0].cells[c].className=="th_resizable") { 
    911946                                        // lots of stupid fixes for FF to redraw cell content 
     
    922957                                } 
    923958                        } 
    924                         /* 
    925959                        else { 
    926960                                tbH.rows[0].cells[c].setAttribute("width",_cell.offsetWidth); 
    927                         }*/ 
     961                        } 
    928962                } 
    929963        } 
     
    961995                if (is_mozilla && !is_webkit){ 
    962996                        $('#table_message_header_box_'+numBox).attr('style','width:99.5%'); 
    963                         $('#colgroup_head_'+numBox).find('col').each(function(index,value){  
    964                      $(this).attr('width',colSizes[1][index]);  
    965             });  
    966             $('#colgroup_main_'+numBox).find('col').each(function(index,value){  
    967                      $(this).attr('width',colSizes[1][index]);  
    968             });  
     997                        $('#colgroup_head_'+numBox).find('col').each(function(index,value){ 
     998                                 $(this).attr('width',colSizes[1][index]); 
     999                        }); 
     1000                        $('#colgroup_main_'+numBox).find('col').each(function(index,value){ 
     1001                                 $(this).attr('width',colSizes[1][index]); 
     1002                        });      
    9691003                }        
    9701004                else if (is_webkit){ 
     
    9751009                        $('#table_message_header_box_'+numBox).css('table-layout','auto'); 
    9761010                } 
    977                 $('#table_message_header_box_'+numBox).find('td').each(function(index,value){  
    978              $(this).width(colSizes[1][index]);  
    979         });  
    980         $('#divScrollMain_'+numBox).find('tr:first').find('td').each(function(index,value){  
    981              $(this).width(colSizes[1][index]);  
    982         });    
     1011                $('#table_message_header_box_'+numBox).find('td').each(function(index,value){ 
     1012                     $(this).width(colSizes[1][index]); 
     1013                }); 
     1014                $('#divScrollMain_'+numBox).find('tr:first').find('td').each(function(index,value){ 
     1015                     $(this).width(colSizes[1][index]); 
     1016                });                      
    9831017        } 
    9841018        $('#table_resultsearch_'+numBox).removeAttr('style'); 
     
    10441078} 
    10451079 
     1080 
     1081/*Cria a div que permite a seleção de todas as mensagens*/ 
     1082function drawSelectMsgsTable(){ 
     1083        var div = $('<div>');    
     1084        div.attr('class','select-all-messages');  
     1085        $('#content_id_0').first().prepend(div); 
     1086        div.css('display','none'); 
     1087} 
     1088 
     1089function totalSelected(){ 
     1090        var total = 0; 
     1091        for(var obj in selectedPagingMsgs) 
     1092                if (selectedPagingMsgs[obj] == true) 
     1093                        total++; 
     1094        return total; 
     1095}; 
     1096 
     1097/*Atualiza o array de mensagens selecionadas*/ 
     1098function updateSelectedMsgs(selected,msg_number){  
     1099        var folder = $('#content_folders .folder.selected').attr('title'); 
     1100        folder = folder ? folder : get_lang('INBOX'); 
     1101        folder = folder.length > 70 ? '"'+folder.substr(0,70) + "..." +'"': '"'+folder+'"' ; 
     1102        var div = $('.select-all-messages'); 
     1103        var filterFlag = search_box_type != "ALL" ? '"' + get_lang(search_box_type) + "s" + '"': ""; 
     1104        /*Seleciona as mensagens ao navegar pelas páginas*/ 
     1105        if (allMsgsSelected && msg_number == undefined){ 
     1106                $('.checkbox').each(function(){ 
     1107                        $(this).attr('checked', true); 
     1108                        $(this).parent().parent().addClass('selected_msg'); 
     1109                }); 
     1110        } 
     1111        else if (msg_number == undefined){       
     1112                for(var obj in selectedPagingMsgs){ 
     1113                        if (selectedPagingMsgs[obj] == true){ 
     1114                                $('#check_box_message_'+obj).attr('checked', true); 
     1115                                $('#check_box_message_'+obj).parent().parent().addClass('selected_msg'); 
     1116                        } 
     1117                } 
     1118        } 
     1119        if (selected && msg_number != undefined){ 
     1120                selectedPagingMsgs[msg_number] = true; 
     1121                $(this).parent().parent().addClass('selected_msg');              
     1122        } 
     1123        else if(!selected && msg_number != undefined){ 
     1124                selectedPagingMsgs[msg_number] = false; 
     1125                $(this).parent().parent().removeClass('selected_msg'); 
     1126                allMsgsSelected = false; 
     1127                $('#chk_box_select_all_messages').attr('checked',false); 
     1128        } 
     1129        var tSelected = totalSelected(); 
     1130        /*Todas as mensagens selecionadas uma a uma*/ 
     1131        if (tSelected > 0 && tSelected == totalFolderMsgs){ 
     1132                allMsgsSelected = true; 
     1133                $('#chk_box_select_all_messages').attr('checked',true); 
     1134                if (total_pages > 1){ 
     1135                        var link = "<a class='select-link' href='#'>Limpar seleção?</a>"; 
     1136                        var info = "Todas as <b>"+totalFolderMsgs+"</b> mensagens "+filterFlag+" em "+folder+" foram selecionadas. "+link; 
     1137                        div.html("<span>"+info+"<span>"); 
     1138                        div.show(); 
     1139                        $('.select-link').bind('click',function(){selectAllFolderMsgs();$('.select-link').unbind('click');}); 
     1140                } 
     1141        } 
     1142        /*Se foram selecionadas algumas mensagens*/ 
     1143        else if (tSelected > 0 && !allMsgsSelected && total_pages > 1){ 
     1144                $('#chk_box_select_all_messages').attr('checked',false); 
     1145                var link = "<a class='select-link' href='#'>Limpar seleção?</a>"; 
     1146                if (tSelected == 1){ 
     1147                        var info = "Foi selecionada <b>"+tSelected+"</b> mensagem "+filterFlag+" em "+folder+". "+link; 
     1148                } 
     1149                else{ 
     1150                        var info = "Foram selecionadas <b>"+tSelected+"</b> mensagens "+filterFlag+" em "+folder+". "+link; 
     1151                } 
     1152                div.html("<span>"+info+"<span>"); 
     1153                div.show(); 
     1154                $('.select-link').bind('click',function(){ 
     1155            selectAllFolderMsgs(); 
     1156            $('.select-link').unbind('click'); 
     1157        });              
     1158        } 
     1159        else if (allMsgsSelected && total_pages > 1){ 
     1160                var link = "<a class='select-link' href='#'>Limpar seleção?</a>"; 
     1161                var info = "Todas as <b>"+totalFolderMsgs+"</b> mensagens "+filterFlag+" em "+folder+" foram selecionadas. "+link; 
     1162                div.html("<span>"+info+"<span>"); 
     1163                div.show(); 
     1164                $('.select-link').bind('click',function(){ 
     1165            selectAllFolderMsgs(); 
     1166            $('.select-link').unbind('click'); 
     1167        }); 
     1168        } 
     1169        else{ 
     1170                div.hide(); 
     1171        }  
     1172    resizeWindow(); 
     1173} 
     1174 
     1175/*Seleciona ou desseleciona todas as mensagens da pasta*/ 
     1176function selectAllFolderMsgs(select){ 
     1177        var folder = $('#content_folders .folder.selected').attr('title'); 
     1178        folder = folder ? folder : get_lang('INBOX'); 
     1179        folder = folder.length > 70 ? '"'+folder.substr(0,70) + "..." +'"': '"'+folder+'"' ; 
     1180        var filterFlag = search_box_type != "ALL" ? get_lang(search_box_type) + "s": ""; 
     1181        var div = $('.select-all-messages'); 
     1182        if (select){ 
     1183                allMsgsSelected = true; 
     1184                var link = "<a class='select-link' href='#'>Limpar seleção?</a>"; 
     1185                var info = "Todas as <b>"+totalFolderMsgs+"</b> mensagens "+filterFlag+" em "+folder+" foram selecionadas. "+link; 
     1186                div.html("<span>"+info+"<span>"); 
     1187                div.show(); 
     1188                $('.select-link').bind('click',function(){ 
     1189            selectAllFolderMsgs(); 
     1190            $('.select-link').unbind('click'); 
     1191        }); 
     1192                for(var obj in selectedPagingMsgs){ 
     1193                        selectedPagingMsgs[obj] = true; 
     1194                } 
     1195         
     1196        }else{ 
     1197                allMsgsSelected = false; 
     1198                for(var obj in selectedPagingMsgs){ 
     1199            $("#content_id_0").find('input[type="checkbox"]').removeAttr("checked"); 
     1200                        selectedPagingMsgs[obj] = false; 
     1201                        $('#check_box_message_'+obj).parent().parent().removeClass('selected_msg selected_shortcut_msg');                
     1202                } 
     1203                div.hide(); 
     1204        } 
     1205    resizeWindow(); 
     1206} 
     1207 
     1208/*Carrega o array de mensagens da pasta*/ 
     1209function populateSelectedMsgs(data){ 
     1210        this.selectedPagingMsgs = {}; 
     1211        this.totalFolderMsgs = 0; 
     1212        var total = 0; 
     1213        $.each(data, function(index, value){ 
     1214                if(value != undefined){ 
     1215                        selectedPagingMsgs[value] = false; 
     1216                        total++; 
     1217                } 
     1218        }); 
     1219        delete selectedPagingMsgs[undefined]; 
     1220        allMsgsSelected = false; 
     1221        this.totalFolderMsgs = total; 
     1222} 
     1223 
    10461224// Draw the inbox and another folders 
    10471225function draw_box(headers_msgs, msg_folder, alternate){ 
     
    11251303                chk_box_element.className = "checkbox"; 
    11261304                chk_box_element.onclick = function(){select_all_messages(this.checked);}; 
    1127                 chk_box_element.onmouseover = function () {this.title=get_lang('Select all messages from this page.')}; 
     1305                chk_box_element.onmouseover = function () {this.title=get_lang('Select all messages from this page.'); }; 
    11281306                chk_box_element.onkeydown = function (e){ 
    11291307                        if (is_ie) 
     
    12801458        _divScroll.appendChild(table_element); 
    12811459        openTab.content_id[numBox].appendChild(_divScroll); 
    1282  
     1460         
    12831461        var f_unseen = 0; 
    12841462 
    12851463        document.getElementById("table_message_header_box_"+numBox).emptyBody = false; 
    1286  
     1464         
    12871465        if (headers_msgs.num_msgs == 0) 
    12881466                showEmptyBoxMsg(tbody_element); 
     
    13451523                                //helper: 'clone', 
    13461524                                helper: function(event){ 
    1347                                         $(this).find("input:checkbox").attr("checked", true); 
     1525                                        $(this).addClass("selected_msg").find("input:checkbox").attr("checked", true); 
     1526                                        updateSelectedMsgs($(this).find("input:checkbox").is(':checked'),$(this).attr("id")); 
    13481527                                        if ( $("#tbody_box .selected_shortcut_msg").length > 1) { 
    1349                                                 $("#tbody_box .selected_shortcut_msg").find('.checkbox').attr('checked',true); 
     1528                                                $("#tbody_box .selected_shortcut_msg").addClass("selected_msg").find('.checkbox').attr('checked',true); 
     1529                                                $.each( $(".selected_shortcut_msg"), function(index, value){ 
     1530                                        updateSelectedMsgs($(value).find(":checkbox").is(':checked'),$(value).attr("id")); 
     1531                                        }); 
    13501532                                        } 
    1351                                         if($("#table_box").find("tr input:checked").length > 1 ) 
    1352                                                 return $("<tr><td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($("#table_box").find("tr input:checked")).length+" mensagens selecionadas"), type: "messages"})+"</td></tr>");                            
     1533                                         
     1534                                        if(totalSelected() > 1 ) 
     1535                                                return $("<tr><td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (totalSelected()+" mensagens selecionadas"), type: "messages"})+"</td></tr>");                              
    13531536                                        if(     $(this).find(".td_msg_subject").text().length > 18 ) 
    13541537                                                return $("<tr><td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : $(this).find(".td_msg_subject").text().substring(0,18) + "...", type: "messages"})+"</td></tr>"); 
     
    13621545                                containment: "#divAppbox" 
    13631546                        }).bind('contextmenu',function(event){ 
    1364                                         if (!(($(event.target).find('img').length > 0) && ($(event.target).hasClass('td-label')))){ 
    1365                                                 if($(this).find("input:checkbox").attr("checked") != "checked"){ 
    1366                                                         $(this).find("input:checkbox").trigger('click'); 
    1367                                                         $(this).addClass("selected_msg"); 
    1368                                                 } 
     1547                                if (!(($(event.target).find('img').length > 0) && ($(event.target).hasClass('td-label')))){ 
     1548                                        if($(this).find("input:checkbox").attr("checked") != "checked"){ 
     1549                                                $(this).find("input:checkbox").trigger('click'); 
     1550                                                $(this).addClass("selected_msg"); 
    13691551                                        } 
     1552                                        updateSelectedMsgs($(this).find("input:checkbox").is(':checked'),$(this).attr("id")); 
     1553                                } 
    13701554                        }); 
    13711555        } 
     
    13741558                select_msg(headers_msgs[0].msg_number, 'null', true); 
    13751559                 
    1376  
     1560         
    13771561        var tdFolders  =  Element("folderscol"); 
    13781562        tdFolders.style.display = preferences.hide_folders == '1'  ? "none" : ""; 
     
    14191603                Element('msg_number').value = ''; 
    14201604        } 
    1421         var scripts = new Array("InfoContact", 
    1422                                                         "TreeShow"); 
    1423         connector.loadAllScripts(scripts); 
     1605        connector.loadScript("InfoContact"); 
    14241606        // Loading Quota View Folder Component (if exists...) 
    14251607        if(Element("table_quota")) 
     
    14351617                document.getElementById("exmail_main_body").appendChild(ruler_element); 
    14361618    } 
    1437                                  
     1619                drawSelectMsgsTable(); 
     1620                updateSelectedMsgs(); 
     1621        resizeWindow(); 
    14381622} 
    14391623 
     
    15111695                 
    15121696                $(chk_box_element).click(function(e){ 
    1513                                 changeBgColor(e,headers_msgs.msg_number); 
     1697                        updateSelectedMsgs($(this).is(':checked'),headers_msgs.msg_number); 
     1698                        $(".selected_shortcut_msg").removeClass("current_selected_shortcut_msg selected_shortcut_msg"); 
     1699                        $(".current_selected_shortcut_msg").removeClass("current_selected_shortcut_msg selected_shortcut_msg"); 
     1700                        if(preferences.use_shortcuts == '1') 
     1701                                $(this).parents("tr:first").addClass("current_selected_shortcut_msg selected_shortcut_msg"); 
     1702                        changeBgColor(e,headers_msgs.msg_number); 
     1703                        $(this).blur(); 
    15141704                }); 
    15151705 
     
    18962086} 
    18972087 
    1898 function sort_box(search, sort){ 
     2088function sort_box(search, sort,clean_selected){ 
     2089        if (typeof(clean_selected) == "undefined") 
     2090                selectAllFolderMsgs(false); 
    18992091        if (cellResized) 
    19002092                return; 
     
    19222114        sort_box_type = sort; 
    19232115        search_box_type = search; 
    1924  
     2116        if (typeof(clean_selected) == "undefined"){      
     2117                $.ajax({                         
     2118                        url: "controller.php?" + $.param( {action: "$this.imap_functions.get_range_msgs3",  
     2119                                folder: get_current_folder(), 
     2120                                 msg_range_begin: "0", 
     2121                                 msg_range_end: "0",                                     
     2122                                sort_box_type: "SORTARRIVAL",  
     2123                                search_box_type: search_box_type, 
     2124                                sort_box_reverse: "1" 
     2125                                }), 
     2126                        success: function(data){ 
     2127                                data = connector.unserialize(data); 
     2128                                if(data){ 
     2129                                        var _data = {}; 
     2130                                        $.each(data,function(index,value){ 
     2131                                                if (data[index] && data[index].msg_number){ 
     2132                                                        _data[data[index].msg_number] = data[index].msg_number; 
     2133                                                } 
     2134                                        }); 
     2135                                        populateSelectedMsgs(_data); 
     2136                                        _data = {}; 
     2137                                 
     2138                                } 
     2139                        }, 
     2140                        beforeSend: function( jqXHR, settings ){ 
     2141                                connector.showProgressBar(); 
     2142                        }, 
     2143                        complete: function( jqXHR, settings ){ 
     2144                                connector.hideProgressBar(); 
     2145                        } 
     2146                }); 
     2147        }        
    19252148        proxy_mensagens.messages_list(current_folder,1,preferences.max_email_per_page,sort,search,sort_box_reverse,preferences.preview_msg_subject,preferences.preview_msg_tip,handler_draw_box); 
    19262149        current_page = 1; 
     
    27002923                //options.width = "1%"; 
    27012924                options.setAttribute("noWrap","true"); 
    2702                 var option_edit   = ' | <span class="message_options" onclick="new_message(\'edit\',\''+ID+'\',\''+info_msg.Flagged+'\');">'+get_lang('Edit')+'</span>'; 
     2925                var option_edit   = ' | <span class="message_options" onclick="new_message(\'edit\',\''+ID+'\',\''+info_msg.Flagged+'\');">'+get_lang('Edit')+'</span>'; 
    27032926                var option_print = ' | <span class="message_options" onclick="print_msg(\''+info_msg.msg_folder+'\',\''+info_msg.msg_number+'\',\''+ID+'\');">'+get_lang('Print')+'</span>'; 
    27042927                var option_hide_more = document.createElement("SPAN"); 
     
    28263049                reply_to_values.type = "HIDDEN"; 
    28273050                reply_to_values.value = info_msg.reply_to; //Veio do IMAP, sem images nem links. 
    2828                 reply_to.innerHTML = draw_plugin_cc(ID, info_msg.reply_to); 
     3051                $.each(break_comma(info_msg.reply_to), function(index, value){ 
     3052                        reply_to.innerHTML += draw_plugin_cc(ID, value);         
     3053                }) 
    28293054                reply_to.className = "header_message_field"; 
    28303055                tr11.appendChild(td11); 
     
    28583083        { 
    28593084                toaddress_array[ID] = break_comma(info_msg.toaddress2); 
    2860                 var notValidUser = false;  
    2861  
     3085                var notValidUser = false; 
    28623086                if (toaddress_array[ID].length > 1) 
    28633087                { 
     
    28763100                        } else { 
    28773101                                toAdd = get_lang("without destination"); 
    2878                         notValidUser = true;  
    2879             }  
    2880  
    2881             to.innerHTML += draw_plugin_cc(ID,toAdd, notValidUser, notValidUser);  
     3102                                notValidUser = true; 
     3103                        } 
     3104 
     3105                        to.innerHTML += draw_plugin_cc(ID,toAdd, notValidUser, notValidUser); 
    28823106                } 
    28833107 
     
    29033127                cc_values.value = info_msg.cc; 
    29043128 
    2905                 ccaddress_array[ID] = info_msg.cc.split(","); 
     3129                ccaddress_array[ID] = break_comma(info_msg.cc); 
    29063130                if (ccaddress_array[ID].length > 1){ 
    29073131                        var div_ccaddress = document.createElement("SPAN"); 
     
    29983222        subject.className = "header_message_field"; 
    29993223        if(defaultCalendar == "expressoCalendar" && $("#expressoCalendarid")[0]){ 
     3224                var new_task_logo = document.createElement("IMG"); 
     3225                new_task_logo.title = "Criar uma nova tarefa a partir deste email."; 
     3226                new_task_logo.alt = "Criar uma nova tarefa a partir deste email."; 
     3227                new_task_logo.src = "./templates/default/images/big-task.png"; 
     3228                new_task_logo.style.cursor = "pointer"; 
     3229                new_task_logo.style.marginLeft = "5px"; 
     3230                new_task_logo.onclick = function(){ 
     3231                import_implements_calendar(); 
     3232                 
     3233                 
     3234                        DataLayer.dispatchPath = "../prototype/"; 
     3235                        var path = "../prototype/modules/calendar/"; 
     3236                        taskDetails(decodeCreateSchedulable('task', ID), true, path, true); 
     3237                } 
     3238                 
    30003239                var new_event_logo = document.createElement("IMG"); 
    30013240                new_event_logo.title = "Criar evento a partir deste email"; 
    30023241                new_event_logo.alt = "Criar evento a partir deste email"; 
    3003                 new_event_logo.src = "./templates/default/images/calendar_add.png"; 
     3242                //new_event_logo.src = "./templates/default/images/calendar_add.png"; 
     3243                new_event_logo.src = "./templates/default/images/big-event.png"; 
    30043244                new_event_logo.style.cursor = "pointer"; 
    30053245                new_event_logo.style.marginLeft = "5px"; 
     
    30103250                        DataLayer.dispatchPath = "../prototype/"; 
    30113251                        var path = "../prototype/modules/calendar/"; 
    3012                          
    3013                         var startEvent = new Date();   
    3014                         if(startEvent.toString('mm') < 30)  
    3015                                 startEvent.add({minutes: (30 - parseInt(startEvent.toString('mm')))});  
    3016                         else  
    3017                                 startEvent.add({hours: 1, minutes: '-'+startEvent.toString('mm')});  
    3018                         var endEvent = function(date){  
    3019                                 if(!!User.preferences.defaultCalendar){  
    3020                                         return  new Date(parseInt(date.getTime()) +  
    3021                                                     (!!Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration ?   
    3022                                                         (Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration * 60000) : 
    3023                                                         (User.preferences.defaultDuration * 60000) 
    3024                                                 )); 
    3025                                 }else  
    3026                                         return new Date(parseInt(date.getTime()) + (User.preferences.defaultDuration * 60000));  
    3027                         };        
    3028  
    3029                         var emails = $("#to_values_"+ID).val().split(','); 
    3030                          
    3031                          
    3032                         //Normalização dos dados evita ter que reemplementar toda as funcionalidades do calendar 
    3033                         eventDetails({  
    3034                                          
    3035                                         acl: {inviteGuests: true, organization: true ,participationRequired: false, read: true, write: true}, 
    3036                                         alarms: [], 
    3037                                         allDay: false, 
    3038                                         attachments: [], 
    3039                                         isAttendee: true, 
    3040                                         attendee: '',//TODOOOOOO, 
    3041                                         calendar: User.preferences.defaultCalendar ? User.preferences.defaultCalendar : Calendar.calendars[0], 
    3042                                         calendars: Calendar.calendars, 
    3043                                         category: '', 
    3044                                         'class': '1', 
    3045                                         delegatedFrom: {}, 
    3046                                         endDate: startEvent.toString(User.preferences.dateFormat), 
    3047                                         startDate: endEvent(startEvent).toString(User.preferences.dateFormat), 
    3048                                         startHour: startEvent.toString(User.preferences.hourFormat), 
    3049                                         endHour: endEvent(startEvent).toString(User.preferences.hourFormat), 
    3050                                         timezone: User.preferences.defaultCalendar ? Calendar.signatureOf[User.preferences.defaultCalendar].calendar.timezone : User.preferences.timezone, 
    3051                                         summary : $("#subject_"+ID).text(), 
    3052                                         description : $("#body_" + ID).text(), 
    3053                                         startTime: startEvent.getTime(), 
    3054                                         endTime: endEvent(startEvent), 
    3055                                         timezones: Timezone.timezones, 
    3056                                         me: {name: User.me.name, mail: User.me.mail, acl: 'rowi', status: '1', delegatedFrom: '0', id: User.me.id}, 
    3057                                         organizer: {name: User.me.name, mail: User.me.mail, acl: 'rowi', status: '1', delegatedFrom: '0' , id: User.me.id}, 
    3058                                         statusParticipants: {accepted: 0, cancelled: 0, tentative: 0, unanswered:emails.length}, 
    3059                                         location: '', 
    3060                                         attendee: $.map(emails, function( mail ){                        
    3061                                                 var contact = false; 
    3062                                                 var decoded =  Encoder.htmlDecode(mail); 
    3063                                                 var newAttendeeName = ""; 
    3064  
    3065                                                 var name = decoded.match(/"([^"]*)"/) ? decoded.match(/"([^"]*)"/)[1] : ''; 
    3066                                                 var mail = decoded.match(/<([^<]*)>[\s]*$/) ? decoded.match(/<([^<]*)>[\s]*$/)[1].toLowerCase() : decoded;  
    3067  
    3068  
    3069                                                 var user = DataLayer.get('user', ["=", "mail", mail], true); 
    3070                                                  
    3071                                                 if( $.type(user) == "array") 
    3072                                                     user = user[0]; 
    3073  
    3074                                                 if(user != ''){ 
    3075                                                     //user = {name : name , mail : mail}; 
    3076                                                     if(User.me.mail == user.mail) 
    3077                                                             return(null); 
    3078                                                     user.isExternal = (!!user && !(!!user.isExternal)) ? 0 : 1; 
    3079  
    3080                                                     return  DataLayer.merge({ 
    3081                                                             name: user.name, 
    3082                                                             mail: user.mail, 
    3083                                                             acl:  'r', 
    3084                                                             delegatedFrom: '0', 
    3085                                                             status: '4', 
    3086                                                             isExternal: user.isExternal 
    3087                                                     }, !!user.id ? {id : DataLayer.put('participant', {user: user.id, isExternal: user.isExternal})} : {id: DataLayer.put('participant', {user: user})});  
    3088                                                 }else if(mail.match(/[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])/)){ 
    3089                                                      
    3090                                                     var userId = DataLayer.put('user', { 
    3091                                                         name: name,  
    3092                                                         mail: mail,  
    3093                                                         isExternal: '1' 
    3094                                                     }); 
    3095                                                     var newAttendeeId = DataLayer.put('participant', { 
    3096                                                         user: userId,  
    3097                                                         isExternal: '1' 
    3098                                                     }); 
    3099  
    3100                                                     return  { 
    3101                                                             id: newAttendeeId, 
    3102                                                             name: name, 
    3103                                                             mail: mail, 
    3104                                                             acl:  'r', 
    3105                                                             delegatedFrom: '0', 
    3106                                                             status: '4', 
    3107                                                             isExternal: '1' 
    3108                                                     }; 
    3109                                                      
    3110                                                 }else 
    3111                                                     return (null); 
    3112                                         })       
    3113                                          
    3114                         }, true, path, true); 
     3252 
     3253                        eventDetails(decodeCreateSchedulable('event', ID), true, path, true); 
    31153254                } 
    31163255                subject.appendChild(new_event_logo); 
     3256                subject.appendChild(new_task_logo); 
    31173257        } 
    31183258        tr5.appendChild(td5); 
     
    32063346        } 
    32073347                attachments.id = "attachments_" + ID; 
     3348                var parserImport = false; 
    32083349                for (var i=0; i<info_msg.attachments.length; i++) 
    32093350                { 
     3351                        var import_url = '$this.db_functions.import_vcard&msg_folder='+info_msg.msg_folder+"&msg_number="+info_msg.msg_number+"&msg_part="+info_msg.attachments[i].pid+"&idx_file="+i+"&encoding="+info_msg.attachments[i].encoding; 
    32103352                        var link_attachment = document.createElement("a"); 
    3211                         link_attachment.setAttribute("href", proxy_mensagens.link_anexo(info_msg,i)); 
     3353                        link_attachment.setAttribute("class", "type_images"); 
     3354                        link_attachment.style.display = "block"; 
     3355                        link_attachment.setAttribute("href", proxy_mensagens.link_anexo(info_msg,i));            
    32123356                        link_attachment.innerHTML = url_decode(info_msg.attachments[i].name) + " ("+borkb(info_msg.attachments[i].fsize)+")"; 
    32133357                        //link_attachment.innerHTML += " ("+borkb(info_msg.attachments[i].fsize)+")"; 
     
    32213365                                link_import_attachment.setAttribute("onclick","javascript:import_calendar('"+info_msg.msg_folder+"&msg_number="+info_msg.msg_number+"&msg_part="+info_msg.attachments[i].pid+"&idx_file="+i+"&encoding="+info_msg.attachments[i].encoding+"'); return false;"); 
    32223366                                link_import_attachment.title = get_lang("Import to calendar"); 
     3367                                link_import_attachment.style.display = "inline"; 
    32233368                                link_import_attachment.align = "top"; 
    32243369                                link_import_attachment.style.marginLeft = "5px"; 
    32253370                                link_import_attachment.style.cursor = "pointer"; 
    32263371                                link_attachment.appendChild(link_import_attachment); 
    3227                         } 
    3228  
    3229                         if((url_decode(info_msg.attachments[i].name).indexOf(".eml") != -1)) 
     3372                                parserImport = true; 
     3373                        } 
     3374 
     3375            if((url_decode(info_msg.attachments[i].name).indexOf(".eml") != -1)) 
    32303376                        { 
    32313377                                //Link para importar calendário 
     
    32393385                                link_open_msg.style.cursor = "pointer"; 
    32403386                                link_attachment.appendChild(link_open_msg); 
    3241                 } 
     3387                        } 
    32423388                 
    3243             link_attachment.innerHTML += '<br/>'; 
     3389            //link_attachment.innerHTML += '<br/>'; 
    32443390            attachments.appendChild(link_attachment); 
    32453391            } 
    32463392                tr6.appendChild(td6); 
    3247             tr6.appendChild(attachments); 
     3393        tr6.appendChild(attachments); 
    32483394                tbody_message_others_options.appendChild(tr6); 
    32493395        } 
    32503396 
     3397        if (parserImport){ 
     3398                $.ajax({ 
     3399                        url: "controller.php?action="+import_url+'&from_ajax=true&id_user='+User.me.id+'&readable=true&cirus_delimiter='+cyrus_delimiter+'&analize=true&uidAccount='+decodeOwner(), 
     3400                        async: true, 
     3401                        success: function(data){ 
     3402                                data = connector.unserialize(data); 
     3403 
     3404                                if(typeof(data) == "object"){ 
     3405                                    var calendarPermission = data.calendar; 
     3406                                    data = data.action; 
     3407                                } 
     3408                                         
     3409                                switch(parseInt(data)){ 
     3410                                case 5: 
     3411                                        $('.type_images').append('<img class="loader" src="templates/default/images/ajax-loader.gif" align="top" style="margin-left: 5px; cursor: pointer; display: inline">'); 
     3412                                        $.ajax({ 
     3413                                                url: "controller.php?action="+import_url+'&from_ajax=true&selected=true', 
     3414                                                success: function(msg){          
     3415                                                        $('.type_images').append('<img src="../prototype/modules/mail/img/flagDone.png" align="top" style="margin: 3px 0 0 5px; cursor: pointer; display: inline">').parent().find('.loader').remove(); 
     3416                                                        write_msg( ( ( connector.unserialize(msg)) == "ok") ? "Seu evento foi Atualizado com sucesso" : "Ocorreu um erro ao atualizar evento" ); 
     3417                                                } 
     3418                                        }); 
     3419                                        return; 
     3420                                        break;           
     3421                                case 4: 
     3422                                        $('.type_images').append('<img src="../prototype/modules/mail/img/flagDone.png" align="top" style="margin: 3px 0 0 5px; cursor: pointer; ">'); 
     3423                                        write_msg("Seu evento encontra-se atualizado."); 
     3424                                        return; 
     3425                                        break; 
     3426                                case 12: 
     3427                                        write_msg('Este evento não existe mais.'); 
     3428                                        return; 
     3429                                        break;                   
     3430                                } 
     3431                        } 
     3432                }); 
     3433        } 
    32513434        //k!! 
    32523435         
     
    33393522         
    33403523         //window.setTimeout(function() { $("#div_message_scroll_"+ID).focus() },250); 
    3341  
     3524         
    33423525        /*  
    33433526     * @AUTHOR Marcos Luiz Wilhelm  
     
    34553638                                                                var href = './inc/get_archive.php?msgFolder=' + utf8_decoder(fdr) + '&msgNumber=' + msg + '&indexPart=' + thumb.pid + '&image=true';  
    34563639                                                                //var href = thumb.url;  
    3457                                                                 var src  = 'inc/get_archive.php?msgFolder=' + utf8_decoder(fdr) + '&msgNumber=' + msg + '&indexPart=' + thumb.pid + '&image=thumbnail';    
     3640                                                                var src  = 'inc/get_archive.php?msgFolder=' + utf8_decoder(fdr) + '&msgNumber=' + msg + '&indexPart=' + thumb.pid + '&image=thumbnail';  
    34583641                                } 
    34593642                                var msgid= fdr+";;"+msg+";;"+i+";;"+thumb.pid+";;"+thumb.encoding;  
     
    36223805        if($.trim(input_data) != ""){ 
    36233806                var box_data = valid_emails(input_data); 
    3624                 var html = DataLayer.render("../prototype/modules/mail/templates/emailBox.ejs", box_data);  
    3625             var newBox = location.before(html).prev();  
    3626             box_actions(newBox);  
    3627             if((preferences.expressoMail_ldap_identifier_recipient || personal)&& $(newBox).hasClass("invalid-email-box")){  
    3628                     //$(newBox).find(".loading").css("background-image", "../prototype/modules/mail/img/ajax-loader.gif");  
    3629                     show_detais(newBox, input_data, personal, shared);  
    3630             }else{  
    3631                     $(newBox).find(".box-loading").remove();  
    3632             } 
     3807                var html = DataLayer.render("../prototype/modules/mail/templates/emailBox.ejs", box_data); 
     3808                var newBox = location.before(html).prev(); 
     3809                box_actions(newBox); 
     3810                if((preferences.expressoMail_ldap_identifier_recipient || personal)&& $(newBox).hasClass("invalid-email-box")){ 
     3811                        //$(newBox).find(".loading").css("background-image", "../prototype/modules/mail/img/ajax-loader.gif"); 
     3812                        show_detais(newBox, input_data, personal, shared); 
     3813                }else{ 
     3814                        $(newBox).find(".box-loading").remove(); 
     3815                } 
    36333816        } 
    36343817} 
     
    37313914                        } 
    37323915                        if(input.val() != ""){ 
    3733                                         if(e.keyCode == 188 && !e.shiftKey && input.val().split("\"").length > 1){  
    3734                             return;  
    3735                     } 
     3916                                if(e.keyCode == 188 && !e.shiftKey && input.val().split("\"").length > 1){ 
     3917                                        return; 
     3918                                } 
    37363919                                if(e.keyCode != 9) 
    37373920                                        e.preventDefault(); 
     
    38424025                } 
    38434026 
    3844                 setTimeout(makeBoxMail,250);  
     4027                setTimeout(makeBoxMail,250); 
    38454028        }) 
    38464029        //AO COLAR UM TEXTO NO CAMPO 
    38474030        .bind("paste", function(e){ 
    3848                 $(this).trigger("keydown"); 
     4031                //$(this).trigger("keydown"); 
    38494032                var pthis = $(this); 
    38504033                setTimeout(function() { 
    3851                         if(pthis.val().split('"').length > 1){  
    3852                         var str = break_comma(pthis.val());//.replace(/[,;\t]/gi, ",");   
    3853                 }else{  
    3854                         var str = pthis.val().replace(/[,;\t\n]/gi, ","); 
    3855                         str = str.split(",");  
    3856                     }  
    3857                      
    3858                         if(str.length != 1){  
    3859                     $.each(str, function(index, value){  
    3860                             draw_email_box(value, pthis);  
    3861                     });  
    3862             }else if(str[0].split(" ").length == 1){  
    3863                     draw_email_box(str[0], pthis);  
    3864             }else{  
    3865                     $(pthis).val(str[0]);                             
    3866                     return false;  
    3867             }  
    3868             $(pthis).val("");  
     4034                        if(pthis.val().split('"').length > 1){ 
     4035                                var str = break_comma(pthis.val());//.replace(/[,;\t]/gi, ",");  
     4036                        }else{ 
     4037                                var str = pthis.val().replace(/[,;\t\n]/gi, ","); 
     4038                                str = str.split(","); 
     4039                        } 
     4040 
     4041                        if(str.length != 1){ 
     4042                                $.each(str, function(index, value){ 
     4043                                        draw_email_box(value, pthis); 
     4044                                }); 
     4045                        }else if(str[0].split(" ").length == 1){ 
     4046                                draw_email_box(str[0], pthis); 
     4047                        }else{ 
     4048                                $(pthis).val(str[0]);                            
     4049                                return false; 
     4050                        } 
     4051                        $(pthis).val(""); 
    38694052                }, 50); 
    38704053        }); 
    38714054        //SE FOR EDIÇÃO DE EMAILS RECALCULA O INPUT E SETA O FOCO 
    38724055        input.css("max-width",parseInt(input.parents(".email-area:first").css("width"))-15); 
     4056                input.css("max-width",parseInt(input.parents(".email-area:first").css("width"))-15); 
    38734057                input.trigger("keydown"); 
    38744058                input.focus(); 
     
    39404124                input.css("display" , "inline-block"); 
    39414125                $(this).before(input); 
     4126                $(this).remove(); 
     4127                $(input).focus(); 
    39424128                input_keydowns(input, currentTab); 
    3943                 $(this).remove(); 
    39444129        //CLICK SIMPLES NA CAIXA 
    39454130        }).click(function(){ 
     
    39764161                                        box.find(".box-loading").remove(); 
    39774162                                else{ 
    3978                                         box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 
     4163                    box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 
    39794164                                        box.addClass("box-"+value).removeClass("invalid-email-box"); 
    39804165                                        loadGroupBox(data.collection, ".box-"+value); 
     
    39864171                                                        'auto_close': 3000 
    39874172                                                }); 
    3988                                         }).find(".box-input").val("\""+data.collection.data[1].value+"\" <"+data.collection.data[1].value+">"); 
     4173                                        }).find(".box-input").val("\""+data.collection.data[1].value+"\" <"+data.collection.data[2].value+">"); 
    39894174                                        box.find(".email-box-value").html( (data.collection.data[1].value.length > 18 ? data.collection.data[1].value.substring(0, 15)+"...": data.collection.data[1].value)) 
    39904175                                } 
     
    39974182         
    39984183        if(personal){ 
    3999                 REST.get("/"+ (shared ? "shared" : "") +"contact/"+value, {}, function(data){ 
     4184                REST.get("/"+ (shared ? "shared" : "") +"personalContact/"+value, {}, function(data){ 
    40004185                        if(!data.error){ 
    40014186                                if(data.collection.error) 
    40024187                                        box.find(".box-loading").remove(); 
    40034188                                else{ 
     4189                    var item = normalizeContact(data.collection.itens[0].data); 
    40044190                                        box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 
    40054191                                        box.addClass("box-"+value).removeClass("invalid-email-box"); 
    4006                                         loadExtraLDAPBox(data.collection.data, ".box-"+value); 
     4192                                        loadExtraLDAPBox(item, ".box-"+value); 
    40074193                                        box.unbind("dblclick").bind("dblclick", function(e){ 
    40084194                                                new $.Zebra_Dialog(get_lang("Impossible editing this contact, but it's possible to remove it"), { 
     
    40124198                                                        'auto_close': 3000 
    40134199                                                }); 
    4014                                         }).find(".box-input").val("\""+data.collection.data[0].value+"\" <"+data.collection.data[1].value+">"); 
    4015                                         var emailBoxValue = data.collection.data[0].value.length > 18 ? data.collection.data[0].value.substring(0, 15)+"...": data.collection.data[0].value;  
    4016                     emailBoxValue = emailBoxValue.length > 2 ? emailBoxValue : data.collection.data[1].value.substr(0,data.collection.data[1].value.indexOf('@'));  
    4017                     emailBoxValue = emailBoxValue > 18 ? emailBoxValue.substr(0,15) + "..." : emailBoxValue;  
    4018                     box.find(".email-box-value").html(emailBoxValue); 
     4200                                        }).find(".box-input").val("\""+item.name+"\" <"+item.email+">"); 
     4201 
     4202                                        box.find(".email-box-value").html(normalizeBoxName(item.name, item.value)); 
    40194203                                } 
    40204204                        }else{ 
     
    40304214                                box.find(".box-loading").remove(); 
    40314215                        else{ 
     4216                var item = normalizeContact(data.collection.itens[0].data); 
    40324217                                box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 
    40334218                                box.addClass("box-"+value).removeClass("invalid-email-box"); 
    4034                                 loadExtraLDAPBox(data.collection.itens[0].data, ".box-"+value); 
     4219                                loadExtraLDAPBox(item, ".box-"+value); 
    40354220                                box.unbind("dblclick").bind("dblclick", function(e){ 
    40364221                                        new $.Zebra_Dialog(get_lang("Impossible editing this contact, but it's possible to remove it"), { 
     
    40404225                                                'auto_close': 3000 
    40414226                                        }); 
    4042                                 }).find(".box-input").val("\""+data.collection.itens[0].data[0].value+"\" <"+data.collection.itens[0].data[1].value+">"); 
    4043                                 var emailBoxValue = data.collection.itens[0].data[0].value.length > 18 ? data.collection.itens[0].data[0].value.substring(0, 15)+"...": data.collection.itens[0].data[0].value;  
    4044                 emailBoxValue = emailBoxValue.length > 2 ? emailBoxValue : data.collection.itens[0].data[1].value.substr(0,data.collection.itens[0].data[1].indexOf('@'));  
    4045                 emailBoxValue = emailBoxValue > 18 ? emailBoxValue.substr(0,15) + "..." : emailBoxValue;  
    4046                 box.find(".email-box-value").html(emailBoxValue);  
    4047                                 if(data.collection.itens[0].data[3].value == "TRUE"){ 
    4048                                         box.removeClass("invalid-email-box").addClass("out-office-box"); 
     4227                                }).find(".box-input").val("\""+item.name+"\" <"+item.email+">"); 
     4228 
     4229                box.find(".email-box-value").html(normalizeBoxName(item.name, item.value)); 
     4230                                if(item.vacationActive == "TRUE"){ 
     4231                                        box.addClass("out-office-box"); 
    40494232                                } 
    40504233                        } 
     
    40544237        }); 
    40554238} 
     4239 
     4240function normalizeBoxName(name, mail){ 
     4241    var emailBoxValue = name.length > 18 ? name.substring(0, 15)+"...": name; 
     4242    emailBoxValue = emailBoxValue.length > 2 ? emailBoxValue : email.substr(0,email.indexOf('@')); 
     4243    emailBoxValue = emailBoxValue > 18 ? emailBoxValue.substr(0,15) + "..." : emailBoxValue; 
     4244 
     4245    return emailBoxValue; 
     4246} 
     4247 
     4248function normalizeContact(data){ 
     4249    var item = {}; 
     4250    $.each(data, function(j, e){ 
     4251       item[e.name] = e.value; 
     4252    }); 
     4253 
     4254    return item; 
     4255} 
     4256 
     4257function normalizeContacts(data){ 
     4258    var decoded = []; 
     4259 
     4260    if(!$.isArray(data)){data = [data];} 
     4261 
     4262    for(var i = 0; i < data.length; i++){ 
     4263        var item = {}; 
     4264        $.each(data[i].data, function(j, e){ 
     4265            item[e.name] = e.value; 
     4266        }); 
     4267        decoded.push(item); 
     4268    } 
     4269    return decoded; 
     4270} 
     4271 
    40564272 
    40574273//FUNÇÃO QUE "SETA" OS BINDS DOS CAMPOS PARA - CC - CCO 
     
    40614277        div.click(function(e){ 
    40624278                if(e.target == $(this)[0]){ 
    4063                         $(this).find("textarea:last").focus();  
     4279                        $(this).find("textarea:last").focus(); 
    40644280                        $(this).find("div").removeClass("box-selected"); 
    40654281                } 
     
    40944310         
    40954311        //MAKE KEYDOWN 
    4096     input_keydowns(div.find("textarea"), ID);  
     4312        input_keydowns(div.find("textarea"), ID); 
    40974313         
    40984314         
     
    41094325                                                if(item.typel == "/groups" && $(ul).find(".dynamic-recent").length) 
    41104326                                                        self._renderItem( ul, {name:"", value:"", type:"linha"} ); 
    4111                                                 if(item.typel == "/contacts" && ($(ul).find(".dynamic-group").length || $(ul).find(".dynamic-recent").length)) 
     4327                                                if(item.typel == "/personalContact" && ($(ul).find(".dynamic-group").length || $(ul).find(".dynamic-recent").length)) 
    41124328                                                        self._renderItem( ul, {name:"", value:"", type:"linha"} );       
    41134329                                                currentType = item.typel; 
     
    41274343                                        $(ul).find("li:last").remove(); 
    41284344                                } 
    4129                                 $(ul).scroll(function(){  
    4130                             canMakeBox = false;  
    4131                     });  
     4345                                $(ul).scroll(function(){ 
     4346                                        canMakeBox = false; 
     4347                                }); 
    41324348                        } 
    41334349                }); 
     
    41694385                                event.preventDefault(); 
    41704386                                $(this).val(""); 
    4171                                 if(ui.item.typel == "/contacts") 
     4387                                if(ui.item.typel == "/personalContact") 
    41724388                                        draw_email_box(""+ui.item.id, $(this), true, (ui.item.type.substring(0,7) == "/shared" ? true : false)); 
    41734389                                else if(ui.item.typel == "/groups") 
     
    41784394                        }, 
    41794395                        autoFocus: true, 
    4180                         position : { my: "left top", at: "left bottom", collision: "fit" },  
    4181                 delay : 400 
     4396                        position : { my: "left top", at: "left bottom", collision: "fit" }, 
     4397                        delay : 400 
    41824398                }).bind('catcompleteopen', function(event, ui) { 
    41834399                        $(this).data('is_open',true); 
     
    41924408                                var autocomplete = $(this)[0].element; 
    41934409                                //cálculo dinâmico da largura da lista 
    4194                                 var minwidth = 450;  
    4195                 var width = (item.label ? item.label.length : (item.value ? item.value.length : (item.mail ? item.mail.length : 30 )));  
    4196                 width = (is_ie ? width*2 : (is_webkit && !is_mozilla ? width*4 : width*5)) + 30;  
    4197                 if (width < minwidth)  
    4198                         width = minwidth; 
     4410                                var minwidth = 450; 
     4411                                var width = (item.label ? item.label.length : (item.value ? item.value.length : (item.mail ? item.mail.length : 30 ))); 
     4412                                width = (is_ie ? width*2 : (is_webkit && !is_mozilla ? width*4 : width*5)) + 30; 
     4413                                if (width < minwidth) 
     4414                                        width = minwidth;                                
    41994415                                ul.css({"min-width":width,"max-height" : "180px", "overflow-y" : "auto", "min-height": "30px"}); 
    42004416                                var listContacts = DataLayer.render("../prototype/modules/mail/templates/listContacts.ejs", item); 
     
    42094425                                                autocomplete.catcomplete( "close" ); 
    42104426                                        canMakeBox = false; 
    4211                                         $.Zebra_Dialog('Deseja remover <b>'+(item.name ? item.name+" - " : "")+ item.mail+'</b>?', { 
     4427                                        $.Zebra_Dialog('Deseja remover <b>'+(item.name ? (item.name.length <=30 ? item.name: item.name.substr(0,27)+"...")+" - " : "")+ item.mail+'</b>?', { 
    42124428                                                        'type':     'question', 
    42134429                                                        'custom_class': (is_ie ? 'configure-zebra-dialog' : ''), 
     
    42364452                click = true; 
    42374453                fastSearch = true; 
    4238                 canMakeBox = false;  
     4454                canMakeBox = false; 
    42394455                if(!$(":focus").hasClass("new-message-input")) 
    4240                         emQuickSearch(($(this).parents("tr:first").find("textarea").val() ? $(this).parents("tr:first").find("textarea").val() : input_search), "."+$(this).parents("tr:first").attr('class').split("-")[0], ID, undefined, true);  
     4456                        emQuickSearch(($(this).parents("tr:first").find("textarea").val() ? $(this).parents("tr:first").find("textarea").val() : input_search), "."+$(this).parents("tr:first").attr('class').split("-")[0], ID, undefined, true); 
    42414457        }); 
    42424458} 
     
    43364552                show_hide(content.find(".cc-tr"), $(this)); 
    43374553                change_text($(this).find(".ui-button-text"), get_lang("Add CC"), get_lang('Remove CC')); 
    4338         }); 
     4554        }) 
     4555    //Botão Responder a 
     4556    .end().filter(".reply-to-button").click(function(){ 
     4557        show_hide(content.find(".reply-to-tr"), $(this)); 
     4558    }); 
    43394559         
    43404560        //BOTAO ENVIAR 
     
    44014621        content.find(".attachment td").filter(".value").prepend(DataLayer.render("../prototype/modules/mail/templates/attachment.ejs", {ID:ID})); 
    44024622        var fileUploadMSG = $('#fileupload_msg'+ID); 
    4403         var maxAttachmentSize = (preferences.max_attachment_size !== "" && preferences.max_attachment_size != 0) ? (parseInt(preferences.max_attachment_size.replace('M', '')) * 1048576 ) : 41943040;  
     4623        var maxAttachmentSize = (preferences.max_attachment_size !== "" && preferences.max_attachment_size != 0) ? (parseInt(preferences.max_attachment_size.replace('M', '')) * 1048576 ) : 41943040; 
    44044624         
     4625        content.find(".new-msg-head-data").scroll(function(){ 
     4626                $.each(fileUploadMSG.find(".attachments-list .att-box"), function(index, value){ 
     4627                        $(this).qtip("api").updatePosition(); 
     4628                        $(this).qtip("api").updateWidth(); 
     4629                }); 
     4630        }); 
     4631        $("#fileupload_msg"+ID+"_droopzone").click(function(){ 
     4632                $(this).removeClass('in hover'); 
     4633        $(this).hide(); 
     4634        $(this).prev().show(); 
     4635        }); 
    44054636        fileUploadMSG.find(".button").button().filter(".fileinput-button").find(".ui-button-text").css("margin-top", "2px").find("input:file").fileupload({ 
    4406                 //singleFileUploads : true, 
     4637                //singleFileUploads : true,fileUploadMSG 
    44074638                sequentialUploads: true,  
    44084639                type: 'post', 
     
    44104641                url: "../prototype/post.php", 
    44114642                forceIframeTransport: false, 
    4412                 dropZone : fileUploadMSG, 
     4643                dropZone : $("#fileupload_msg"+ID+"_droopzone"), 
    44134644                formData: function(form) { 
    44144645                        return [ 
     
    44284659                },       
    44294660                add: function (e, data) { 
     4661            var iterator = idattachbycontent; 
    44304662                        if(!maxAttachmentSize || data.files[0].size < maxAttachmentSize || is_ie) { 
    44314663                                setTimeout(function() { 
    44324664                    $('#attDisposition'+ID).val('attachment'); 
    4433                                         data.submit(); 
    4434                                 }, 3000); 
    4435                         } 
     4665                                        jqXHR[iterator] = data.submit(); 
     4666                                }, 100); 
     4667                        } 
     4668                        fileUploadMSG.find(' .attachments-list').show(); 
    44364669                        $.each(data.files, function (index, file) { 
    44374670                                var attach = {}; 
    44384671                                attach.fullFileName = file.name; 
    44394672                                attach.fileName = file.name; 
    4440                                 if(file.name.length > 50) 
    4441                                         attach.fileName = file.name.substr(0, 32) + " ... " + file.name.substr(file.name.length-9, file.name.length); 
     4673                                if(file.name.length > 20) 
     4674                                        attach.fileName = file.name.substr(0, 17) + " ... " + file.name.substr(file.name.length-6, file.name.length); 
    44424675                                attach.fileSize = formatBytes(file.size); 
    44434676                                if(maxAttachmentSize && file.size > maxAttachmentSize) 
    4444                                         attach.error = 'Tamanho de arquivo nao permitido!!' 
    4445                                  
    4446                                 var upload = $(DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist.ejs", {file : attach}));                            
    4447                                 upload.find('.button.close').button({ 
    4448                                         icons: { 
    4449                                                 primary: "ui-icon-close" 
    4450                                         }, 
    4451                                         text: false 
    4452                                 }).click(function(){ 
     4677                                        attach.error = 'Tamanho de arquivo nao permitido' 
     4678                                else 
     4679                                        attach.error = true; 
     4680                                var upload = $(DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist.ejs", {file : attach}));                            
     4681                                upload.find('.att-box-delete').click(function(){ 
    44534682                                        var idAttach = $(this).parent().find('input[name="fileId[]"]').val(); 
    44544683                                        fileUploadMSG.find(' .attachments-list').find('input[value="'+idAttach+'"]').remove(); 
    4455                                         delAttachment(ID, idAttach) 
     4684                    delAttachment(ID, idAttach); 
     4685                    $(this).parent().qtip("destroy"); 
    44564686                                        $(this).parent().remove(); 
     4687                                        if(!fileUploadMSG.find(' .attachments-list').find(".att-box").length){ 
     4688                                                fileUploadMSG.find(' .attachments-list').hide(); 
     4689                                        } 
     4690                    if(jqXHR){ 
     4691                        jqXHR[iterator].abort(); 
     4692                    } 
    44574693                                }); 
    4458                                  
    4459                                 fileUploadMSG.find('.attachments-list').append(upload); 
     4694                    
     4695                fileUploadMSG.find('.attachments-list').append(upload); 
     4696 
     4697                fileUploadMSG.find('.attachments-list .att-box:last').qtip({ 
     4698                        content: DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist_tooltip.ejs", {attach : attach}), 
     4699                                        position: { 
     4700                                                corner: { 
     4701                                                        tooltip: 'bottomMiddle', 
     4702                                                        target: 'topMiddle' 
     4703                                                }, 
     4704                                                adjust: { 
     4705                                       resize: true, 
     4706                                       scroll: true, 
     4707                                       screen: true 
     4708                                    } 
     4709                                        }, 
     4710                                        show: { 
     4711                                                when: 'mouseover', // Don't specify a show event 
     4712                                                ready: false // Show the tooltip when ready 
     4713                                        }, 
     4714                                        hide: 'mouseout', // Don't specify a hide event 
     4715                                        style: { 
     4716                                                border: { 
     4717                                                        width: 1, 
     4718                                                        radius: 5 
     4719                                                }, 
     4720                                                width: { 
     4721                                                         min: 75, 
     4722                                                         max : 1000 
     4723                                                }, 
     4724                                                padding: 3,  
     4725                                                textAlign: 'left', 
     4726                                                tip: true, // Give it a speech bubble tip with automatic corner detection 
     4727                                                name: (typeof(attach.error) == 'boolean' ? 'light' : 'red') // Style it according to the preset 'cream' style 
     4728                                        } 
     4729                })/*.progressbar({ 
     4730                    value : 1 
     4731                })*/; 
     4732 
     4733                fileUploadMSG.find('.attachments-list .att-box:last').css('width', fileUploadMSG.find('.attachments-list .att-box:last div:first').css('width')); 
    44604734 
    44614735                                if(!maxAttachmentSize || file.size < maxAttachmentSize){ 
     
    44664740                                }else 
    44674741                                        fileUploadMSG.find(' .fileinput-button.new').removeClass('new'); 
     4742 
     4743                                idattachbycontent++ 
    44684744                        }); 
     4745                         
    44694746                }, 
    44704747                done: function(e, data){ 
     4748            var attach_box = fileUploadMSG.find('.att-box-loading:first').parents('.att-box'); 
     4749            var attach = { 
     4750                fullFileName : attach_box.find(".att-box-fullfilename").text(), 
     4751                fileSize : attach_box.find(".att-box-filesize").text(), 
     4752                error : false 
     4753            }; 
    44714754                        if(!!data.result && data.result != "[]" ){ 
    44724755                                var newAttach = data.result;                              
    4473                                 if(!newAttach.mailAttachment.error){ 
    4474                                         if(newAttach.rollback !== false) 
    4475                                         { 
    4476                                                 fileUploadMSG.find('.in-progress:first').parents('p').append('<input type="hidden" name="fileId[]" value="'+newAttach['mailAttachment'][0][0].id+'"/>').find('.status-upload').addClass('ui-icon ui-icon-check'); 
    4477                                                 addAttachment(ID,newAttach['mailAttachment'][0][0].id); 
    4478                                         } 
    4479                                         else                              
    4480                                                 fileUploadMSG.find('.in-progress:first').parents('p').find('.status-upload').append('Erro ao fazer upload!').addClass('message-attach-error');    
    4481                 &n