Changeset 8232 for branches


Ignore:
Timestamp:
10/08/13 16:20:46 (5 years ago)
Author:
douglas
Message:

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

Location:
branches/2.5
Files:
80 added
32 deleted
144 edited

Legend:

Unmodified
Added
Removed
  • branches/2.5/INSTALL/arquivos/expresso-cron

    r7700 r8232  
    55 
    66# Utilizado para verificar se ha algum alarme, por e-mail, do modulo ExpressoCalendar 
    7 #CENTOS*/1 *    * * *   apache   php    EXPRESSO_DIR/prototype/modules/calendar/alarms.php  
    8 #DEBIAN*/1 *    * * *   www-data php5   EXPRESSO_DIR/prototype/modules/calendar/alarms.php  
     7#CENTOS*/1 *    * * *   apache   php    EXPRESSO_DIR/prototype/modules/calendar/alarms.php 1>& /dev/null 
     8#DEBIAN*/1 *    * * *   www-data php5   EXPRESSO_DIR/prototype/modules/calendar/alarms.php 1>& /dev/null 
    99 
    1010# Utilizado para limpar a tabela, temporaria, que contem os e-mails (rascunhos) antes de 
     
    1919# Utilizado para limpar os arquivos de sessao do PHP 
    2020#*/31 *  * * *   root                    find /dev/shm -type f -name "sess_*" -cmin 240 -print0 | xargs -n 200 -r -0 rm 
     21*/31 *  * * *   root                    find /dev/shm -type f -name "sess_*" -cmin +240 -delete 
    2122 
    2223# Utilizado para limpar os arquivos, eml, criados ao exportar mensagens 
    23 13 */4 * * * root                       find /tmp/ -iname "*.eml" -amin +60 -exec rm -f '{}' \; 
     24#13 */4 * * * root                      find /tmp/ -iname "*.eml" -amin +60 -exec rm -f '{}' \; 
     2513 */4  * * * root                      find /tmp/ -iname "*.eml" -cmin +60 -delete 
    2426 
    2527# 
  • branches/2.5/INSTALL/arquivos/header.inc.php

    r7503 r8232  
    131131        $GLOBALS['phpgw_info']['server']['versions']['current_header'] = $setup_info['phpgwapi']['versions']['current_header']; 
    132132        unset($setup_info); 
    133         $GLOBALS['phpgw_info']['server']['versions']['header'] = '2.5.0'; 
     133        $GLOBALS['phpgw_info']['server']['versions']['header'] = '2.5.1'; 
    134134        /* This is a fix for NT */ 
    135135        if(!isset($GLOBALS['phpgw_info']['flags']['noapi']) || !$GLOBALS['phpgw_info']['flags']['noapi'] == True) 
  • branches/2.5/INSTALL/arquivos/scripts/http.sh

    r7619 r8232  
    111111        yum -y install httpd mod_ssl \ 
    112112                php php-cli php-ldap php-pgsql php-imap php-mbstring php-gd php-xml \ 
    113                 php-pecl-memcache graphviz-php php-pspell \ 
     113                php-pecl-memcache php-pspell \ 
    114114                unzip zip memcached libmemcached \ 
    115115                php-soap php-process # para o zpush 
     116                #graphviz-php \ # problema com o PHP-5.4 
    116117 
    117118        # para que o yuicompressor funcione 
     
    122123 
    123124        chkconfig httpd on 
     125        chkconfig memcached on 
    124126 
    125127        # Ativa o script do CRON para o RedHat e similares 
  • branches/2.5/INSTALL/debian/squeeze/etc/ldap/slapd.conf

    r6710 r8232  
    55# Global Directives: 
    66sizelimit -1 
    7 timelimit -1 
    8 threads 2 
     7#timelimit -1 
     8#threads 2 
    99 
    1010# Schema and objectClass definitions 
  • branches/2.5/INSTALL/debian/squeeze/etc/postfix/main.cf

    r7278 r8232  
    11# Configuracoes para o Expresso 
    2 myorigin = DOMAIN 
    3 myhostname = DOMAIN 
     2mydomain = DOMAIN 
     3myorigin = $mydomain 
     4myhostname = $mydomain 
    45biff = no 
    56 
     
    89 
    910# A lista de dominios que esta maquina considera seu destino final. 
    10 mydestination = $myhostname, localhost.$mydomain, DOMAIN 
     11mydestination = $mydomain, $myhostname, expresso.$mydomain 
    1112 
    1213recipient_delimiter = +  
  • branches/2.5/INSTALL/expressoInstall.sh

    r7619 r8232  
    3535# Variaveis globais 
    3636ARQS="arquivos" 
    37 VERSAO="2.5.0" 
     37VERSAO="2.5.1" 
    3838# Inclusao dos scripts de apoio 
    3939. $ARQS/scripts/aux.sh 
  • branches/2.5/INSTALL/rhel/6/etc/cyrus.conf

    r7699 r8232  
    77  # this is only necessary if using idled for IMAP IDLE 
    88  idled         cmd="idled" 
    9  
    10   # this is recommended if using duplicate delivery suppression 
    11   delprune        cmd="/usr/lib/cyrus-imapd/ctl_deliver -E 3" 
    129} 
    1310 
     
    3734  checkpoint    cmd="ctl_cyrusdb -c" period=30 
    3835 
    39   # this is only necessary if using duplicate delivery suppression 
    40   delprune        cmd="/usr/lib/cyrus-imapd/ctl_deliver -E 3" at=0401 
    41  
    4236  # this is only necessary if using duplicate delivery suppression, 
    4337  # Sieve or NNTP 
     
    5246 
    5347  # SQUATTER indexa as caixas postais, a cada 120 min, para otimizar a pesquisa 
    54   squatter_i      cmd="/bin/nice -n 19 /usr/lib/cyrus-imapd/squatter -s -i -r" period=120 
     48  squatter_i      cmd="/bin/nice -n 19 /usr/lib/cyrus-imapd/squatter -s -i -r -v" period=240 
    5549} 
  • branches/2.5/INSTALL/rhel/6/etc/imapd.conf

    r5802 r8232  
    99sasl_mech_list: LOGIN PLAIN 
    1010allowplaintext: yes 
    11 auxprop_plugin: ldapdb 
    1211 
    1312tls_cert_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem 
  • branches/2.5/INSTALL/rhel/6/etc/openldap/slapd.conf

    r6761 r8232  
    77# Global Directives: 
    88sizelimit -1 
    9 timelimit -1 
    10 threads 2 
     9#timelimit -1 
     10#threads 2 
    1111 
    1212# Schema and objectClass definitions 
  • branches/2.5/INSTALL/rhel/6/etc/postfix/main.cf

    r7278 r8232  
    11# Configuracoes para o Expresso 
    2 myorigin = DOMAIN 
    3 myhostname = DOMAIN 
     2mydomain = DOMAIN 
     3myorigin = $mydomain 
     4myhostname = $mydomain 
    45biff = no 
    56 
     
    89 
    910# A lista de dominios que esta maquina considera seu destino final. 
    10 mydestination = $myhostname, localhost.$mydomain, DOMAIN 
     11mydestination = $mydomain, $myhostname, expresso.$mydomain 
    1112 
    1213recipient_delimiter = +  
  • branches/2.5/INSTALL/rhel/6/var/lib/pgsql/data/postgresql.conf

    r5797 r8232  
    484484#backslash_quote = safe_encoding        # on, off, or safe_encoding 
    485485#default_with_oids = off 
    486 # Necessario para o Expresso 
    487 standard_conforming_strings = off 
    488 #bytea_output = 'escape' 
    489 # Necessario para o Expresso 
    490486#escape_string_warning = on 
    491487#regex_flavor = advanced                # advanced, extended, or basic 
     
    494490#synchronize_seqscans = on 
    495491 
     492# Necessario para o Expresso 
     493standard_conforming_strings = off 
     494bytea_output = 'escape' 
     495 
    496496# - Other Platforms and Clients - 
    497497 
  • branches/2.5/admin/inc/class.uiconfig.inc.php

    r8176 r8232  
    5959                        $t = CreateObject('phpgwapi.Template',$GLOBALS['phpgw']->common->get_tpl_dir($appname)); 
    6060                        $t->set_unknowns('keep'); 
    61                         $template_file = $config_appname == "migra" ? 'migra.tpl' : 'config.tpl';         
    62                         $t->set_file(array('config' => $template_file));  
     61                        $template_file = $config_appname == "migra" ? 'migra.tpl' : 'config.tpl';        
     62                        $t->set_file(array('config' => $template_file)); 
    6363                        $t->set_block('config','header','header'); 
    6464                        $t->set_block('config','body','body'); 
     
    7373                        } 
    7474         
    75                 if($appname === "expressoCalendar"){  
    76   
    77             if($config_appname == 'expressoCalendar' )  
    78             {  
    79                 $t->set_var('action_url',$GLOBALS['phpgw']->link('/index.php','menuaction=admin.uiconfig.index&appname=' . $appname));  
    80   
    81             };  
    82   
    83             if($_POST['newsettings']['expressoCalendar_autoImportCalendars'] == 'true')  
    84             {  
    85                 $db = $GLOBALS['phpgw']->db;  
    86                 $calendars = array();  
    87                 $db->query('SELECT calendar_signature.user_uidnumber as "user",calendar.id as "calendar" FROM calendar,calendar_signature WHERE calendar.id = calendar_signature.calendar_id AND calendar.type = 0 AND calendar_signature.is_owner = 1 AND (SELECT id from module_preference WHERE user_uidnumber = calendar_signature.user_uidnumber AND module_preference.module = \'expressoCalendar\' AND module_preference.name = \'dafaultImportCalendar\'  ) IS NULL');  
    88                 while( $db->next_record() )  
    89                 {  
    90                     $calendars[] = $db->row();  
    91                 }  
    92   
    93                 foreach($calendars as $v)  
    94                 {  
    95                     $db->query('INSERT INTO module_preference ("user_uidnumber","value","name","module") VALUES ( \''.$v['user'].'\' , \''.$v['calendar'].'\',\'dafaultImportCalendar\' , \'expressoCalendar\')');  
    96                 }  
    97             }  
    98   
     75                if($appname === "expressoCalendar"){ 
     76 
     77            if($config_appname == 'expressoCalendar' ) 
     78            { 
     79                $t->set_var('action_url',$GLOBALS['phpgw']->link('/index.php','menuaction=admin.uiconfig.index&appname=' . $appname)); 
     80 
     81            }; 
     82 
     83            if($_POST['newsettings']['expressoCalendar_autoImportCalendars'] == 'true') 
     84            { 
     85                $db = $GLOBALS['phpgw']->db; 
     86                $calendars = array(); 
     87                $db->query('SELECT calendar_signature.user_uidnumber as "user",calendar.id as "calendar" FROM calendar,calendar_signature WHERE calendar.id = calendar_signature.calendar_id AND calendar.type = 0 AND calendar_signature.is_owner = 1 AND (SELECT id from module_preference WHERE user_uidnumber = calendar_signature.user_uidnumber AND module_preference.module = \'expressoCalendar\' AND module_preference.name = \'dafaultImportCalendar\'  ) IS NULL'); 
     88                while( $db->next_record() ) 
     89                { 
     90                    $calendars[] = $db->row(); 
     91                } 
     92 
     93                foreach($calendars as $v) 
     94                { 
     95                    $db->query('INSERT INTO module_preference ("user_uidnumber","value","name","module") VALUES ( \''.$v['user'].'\' , \''.$v['calendar'].'\',\'dafaultImportCalendar\' , \'expressoCalendar\')'); 
     96                } 
     97            } 
     98 
    9999                        if (isset($_POST['migration']) && ($_POST['migration']  == "true")){ 
    100100                         
     
    104104                                $migratrion->calendar(); 
    105105                        } 
    106   
     106 
    107107                } 
    108108 
  • branches/2.5/admin/inc/hook_admin.inc.php

    r5804 r8232  
    8585                $file['VoIP settings']         = $GLOBALS['phpgw']->link('/index.php','menuaction=admin.uivoip.edit_conf'); 
    8686        } 
    87          
    88         if (! $GLOBALS['phpgw']->acl->check('site_config_access',1,'admin')) 
    89         { 
    90                 $file['Calendar settings'] = $GLOBALS['phpgw']->link('/index.php','menuaction=admin.uicalendar.edit_conf'); 
    91         } 
     87 
    9288 
    9389        /* Do not modify below this line */ 
  • branches/2.5/admin/setup/setup.inc.php

    r7516 r8232  
    1313        $setup_info['admin']['name']      = 'admin'; 
    1414        $setup_info['admin']['title']      = 'Admin'; 
    15         $setup_info['admin']['version']   = '2.5.0'; 
     15        $setup_info['admin']['version']   = '2.5.1'; 
    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.5.0') 
     50                'versions' => Array('2.5.1.1') 
    5151        ); 
    5252?> 
  • branches/2.5/calendar/setup/setup.inc.php

    r7516 r8232  
    1212 
    1313        $setup_info['calendar']['name']    = 'calendar'; 
    14         $setup_info['calendar']['version'] = '2.5.0'; 
     14        $setup_info['calendar']['version'] = '2.5.1'; 
    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.5.0') 
     54                 'versions' => Array('2.5.1.0') 
    5555        ); 
  • branches/2.5/calendar/setup/tables_update.inc.php

    r7516 r8232  
    154154                return $GLOBALS['setup_info']['calendar']['currentver']; 
    155155        } 
     156        $test[] = '2.5.0'; 
     157        function calendar_upgrade2_5_0() 
     158        { 
     159                $GLOBALS['setup_info']['calendar']['currentver'] = '2.5.1'; 
     160                return $GLOBALS['setup_info']['calendar']['currentver']; 
     161        } 
    156162 
    157163 
  • branches/2.5/contactcenter/js/cc.js

    r7497 r8232  
    12501250                states.disabled = false; 
    12511251                var i = 1; 
     1252                /* 
    12521253                for (var j in data['data']) 
    12531254                { 
     
    12551256                        if(i == 1) data['data'] = data['data'].sort(); 
    12561257                        i++; 
    1257                 } 
    1258  
     1258                }*/ 
     1259                jQuery.each(data['data'],function(index,value){ 
     1260                        if (value != undefined){ 
     1261                                states.options[i] = new Option(value, index); 
     1262                                if(i == 1) data['data'] = data['data'].sort(); 
     1263                                i++; 
     1264                        }                        
     1265                }); 
    12591266                states.disabled = false; 
    12601267                states.selectedIndex = 0; 
     
    13661373                cities.disabled = false; 
    13671374                var i = 1; 
     1375                /* 
    13681376                for (var j in data['data']) 
    13691377                { 
    13701378                        cities.options[i] = new Option(data['data'][j], j); 
    13711379                        i++; 
    1372                 } 
    1373  
     1380                }*/ 
     1381                jQuery.each(data['data'],function(index,value){ 
     1382                        if (value != undefined){ 
     1383                                cities.options[i] = new Option(value,index); 
     1384                                i++; 
     1385                        } 
     1386                }); 
    13741387                cities.disabled = false; 
    13751388                cities.selectedIndex = 0; 
  • branches/2.5/contactcenter/setup/default_records.inc.php

    r2 r8232  
    1919        $oProc->query("insert into phpgw_cc_typeof_ct_addrs (id_typeof_contact_address,contact_address_type_name) values(1,'Comercial')");       
    2020        $oProc->query("insert into phpgw_cc_typeof_ct_addrs (id_typeof_contact_address,contact_address_type_name) values(2,'Residencial')"); 
    21  
     21  $oProc->query("ALTER TABLE phpgw_cc_groups SET WITH OIDS;"); 
    2222        // Populate brazilian database. 
    2323        include("states_pt-br.inc.php");  
  • branches/2.5/contactcenter/setup/setup.inc.php

    r7516 r8232  
    1717        $setup_info['contactcenter']['name']      = 'contactcenter'; 
    1818        $setup_info['contactcenter']['title']     = 'ContactCenter'; 
    19         $setup_info['contactcenter']['version']   = '2.5.0'; 
     19        $setup_info['contactcenter']['version']   = '2.5.1'; 
    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.5.0') 
     79                'versions' => Array('2.5.1.1') 
    8080        ); 
    8181?> 
  • branches/2.5/contactcenter/setup/tables_update.inc.php

    r7516 r8232  
    100100        } 
    101101        $test[] = '2.4.2'; 
    102         function contactcenter_upgrade2_4_2() { 
    103                 $GLOBALS['setup_info']['contactcenter']['currentver'] = '2.5.0'; 
    104                 return $GLOBALS['setup_info']['contactcenter']['currentver']; 
    105         } 
     102    function contactcenter_upgrade2_4_2() { 
     103        $GLOBALS['setup_info']['contactcenter']['currentver'] = '2.5.0'; 
     104        return $GLOBALS['setup_info']['contactcenter']['currentver']; 
     105    } 
     106 
     107    $test[] = '2.5.0'; 
     108    function contactcenter_upgrade2_5_0() { 
     109        $GLOBALS['setup_info']['contactcenter']['currentver'] = '2.5.1'; 
     110        return $GLOBALS['setup_info']['contactcenter']['currentver']; 
     111    } 
    106112?> 
  • branches/2.5/emailadmin/inc/class.ui.inc.php

    r7673 r8232  
    7777                        print $this->t->get('out','main'); 
    7878                } 
    79          
     79 
     80       function countProfiles(){ 
     81            $return =  $this->boemailadmin->getProfileList(); 
     82            (is_array($return) && count($return) > 0) ? $return = count($return) : $return = 0; 
     83                return $return; 
     84        } 
     85 
     86       function addDefaultProfile() 
     87       { 
     88            $emailServer = $_SESSION['phpgw_info']['expressomail']['email_server'];           
     89            $globalSettings = array( 
     90                        "profileID" => "", 
     91                        "description" => "Expresso", 
     92                        "defaultDomain" => $emailServer['defaultDomain'], 
     93                        "organisationName" => $emailServer['organisationName'], 
     94                        "userDefinedAccounts" => "0" 
     95            ); 
     96 
     97            $smtpSettings   = array( 
     98                "smtpServer" => "127.0.0.1", 
     99                "smtpPort" => "25", 
     100                "smtpAuth" => "", 
     101                    "smtpType" => "2",  
     102                    "smtpLDAPServer" => "127.0.0.1",  
     103                    "smtpLDAPAdminDN" => $emailServer['smtpLDAPAdminDN'], 
     104                    "smtpLDAPAdminPW" => $emailServer['smtpLDAPAdminPW'], 
     105                    "smtpLDAPBaseDN" =>  $emailServer['smtpLDAPBaseDN]'], 
     106                    "smtpLDAPUseDefault" => "yes" 
     107            ); 
     108 
     109            $imapSettings = array( 
     110                    'imapServer' => "127.0.0.1", 
     111                    'imapPort' => "143", 
     112                    'imapDelimiter' => "/", 
     113                    'imapType' => "3", 
     114                    'imapLoginType' => "standard", 
     115                    'imapTLSEncryption' => "1", 
     116                    'imapTLSAuthentication' => "", 
     117                    'imapoldcclient' => "", 
     118                    'imapEnableCyrusAdmin' => "yes", 
     119                    'imapAdminUsername' => "expresso-admin", 
     120                    'imapAdminPW' => $emailServer['imapAdminPW'], 
     121                    'imapEnableSieve' => "yes", 
     122                    'imapSieveServer' => "127.0.0.1", 
     123                    'imapSievePort' => "2000", 
     124                    'imapCreateSpamFolder' => "yes", 
     125                    'imapCyrusUserPostSpam' => "", 
     126                    'imapDefaultTrashFolder' => "Trash", 
     127                    'imapDefaultSentFolder' => "Sent", 
     128                    'imapDefaultDraftsFolder' => "Drafts", 
     129                    'imapDefaultSpamFolder' => "Spam" 
     130            ); 
     131 
     132            $this->boemailadmin->saveProfile($globalSettings, $smtpSettings, $imapSettings); 
     133        } 
     134 
    80135                function css() 
    81136                { 
  • branches/2.5/emailadmin/setup/setup.inc.php

    r7516 r8232  
    1414        $setup_info['emailadmin']['name']      = 'emailadmin'; 
    1515        $setup_info['emailadmin']['title']     = 'EMailAdmin'; 
    16         $setup_info['emailadmin']['version']   = '2.5.0'; 
     16        $setup_info['emailadmin']['version']   = '2.5.1'; 
    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.5.0') 
     42                'versions' => Array('2.5.1.1') 
    4343        ); 
    4444 
  • branches/2.5/emailadmin/setup/tables_update.inc.php

    r7516 r8232  
    142142      return $GLOBALS['setup_info']['emailadmin']['currentver']; 
    143143   } 
    144         $test[] = '2.4.2'; 
    145         function emailadmin_upgrade2_4_2() 
    146         { 
    147                 $GLOBALS['setup_info']['emailadmin']['currentver'] = '2.5.0'; 
    148                 return $GLOBALS['setup_info']['emailadmin']['currentver']; 
    149         } 
     144    $test[] = '2.4.2'; 
     145    function emailadmin_upgrade2_4_2() 
     146    { 
     147            $GLOBALS['setup_info']['emailadmin']['currentver'] = '2.5.0'; 
     148            return $GLOBALS['setup_info']['emailadmin']['currentver']; 
     149    } 
     150 
     151    $test[] = '2.5.0'; 
     152    function emailadmin_upgrade2_5_0() 
     153    { 
     154        $GLOBALS['setup_info']['emailadmin']['currentver'] = '2.5.1'; 
     155        return $GLOBALS['setup_info']['emailadmin']['currentver']; 
     156    } 
    150157 
    151158?> 
  • branches/2.5/expressoAdmin1_2/inc/class.db_functions.inc.php

    r7769 r8232  
    539539        { 
    540540                // AGENDA 
    541                 $this->db->query('SELECT cal_id FROM phpgw_cal WHERE owner ='.$user_info['uidnumber']); 
     541                $this->db->query('SELECT calendar_id FROM calendar_signature WHERE user_uidnumber ='.$user_info['uidnumber'] . ' AND is_owner = 1' ); 
    542542                while($this->db->next_record()) 
    543543                { 
    544544                        $ids[] = $this->db->row(); 
    545545                } 
     546 
    546547                if (count($ids)) 
    547548                { 
    548549                        foreach($ids as $i => $id) 
    549                         { 
    550                                 $this->db->query('DELETE FROM phpgw_cal WHERE cal_id='.$id['cal_id']); 
    551                                 $this->db->query('DELETE FROM phpgw_cal_user WHERE cal_id='.$id['cal_id']); 
    552                                 $this->db->query('DELETE FROM phpgw_cal_repeats WHERE cal_id='.$id['cal_id']); 
    553                                 $this->db->query('DELETE FROM phpgw_cal_extra WHERE cal_id='.$id['cal_id']); 
    554                         } 
     550                $this->db->query('DELETE FROM calendar WHERE id = '.$id['calendar_id']); 
    555551                } 
    556552                 
  • branches/2.5/expressoAdmin1_2/inc/class.imap_functions.inc.php

    r7769 r8232  
    278278        function getaclfrombox($params) 
    279279        { 
    280                 $boxacl = $params['uid']; 
    281                  
    282                 $return = array();       
     280        $boxacl = imap_utf7_encode($params['uid']); 
     281 
     282                $return = array(); 
    283283                 
    284284                $mbox_acl = imap_getacl($this->imap, "user" . $this->imapDelimiter . $boxacl); 
  • branches/2.5/expressoAdmin1_2/inc/class.ldap_functions.inc.php

    r8179 r8232  
    138138                } 
    139139 
     140                if (empty($params['desc'])) 
     141                { 
     142                        $result['status'] = false; 
     143                        $result['msg']  = $this->functions->lang('DESCRIPTION field is empty') . '.'; 
     144                        return $result; 
     145                } 
     146                 
    140147                $uid = 'institutional_account_' . $params['mail']; 
    141148                $dn = "uid=$uid," . $params['context']; 
  • branches/2.5/expressoAdmin1_2/inc/class.uishared_accounts.inc.php

    r5907 r8232  
    107107                            'disabled_empty_inbox' => $this->functions->check_acl($account_lid,'empty_shared_accounts_inbox') ? '' : 'disabled', 
    108108                            'display_quota_used' => 'none', 
    109                             'aclExpressoCalendar' => (isset($config['defaultCalendar']) && ($config['defaultCalendar'] == 'expressoCalendar')) ? '' : 'none', 
    110                             'aclCalendar' => (isset($config['defaultCalendar']) && ($config['defaultCalendar'] == 'calendar')) ? '' : 'none', 
    111                             'calendarName' => (isset($config['defaultCalendar']) && ($config['defaultCalendar'] == 'calendar')) ? 'Calendar' : 'ExpressoCalendar', 
     109                            'aclExpressoCalendar' =>  '' , 
     110                            'aclCalendar' => 'none', 
     111                                        'calendarName' => 'ExpressoCalendar', 
    112112                            'sharedAccountsLocation' => isset($davicalConf['sharedAccountsLocation']) ? $davicalConf['sharedAccountsLocation'] : '' 
    113113                          ); 
  • branches/2.5/expressoAdmin1_2/index.php

    r6444 r8232  
    99        *  option) any later version.                                                                                                            * 
    1010        \*************************************************************************************/ 
    11          
     11        $GLOBALS['phpgw_info'] = array(); 
     12        $GLOBALS['phpgw_info']['flags']['currentapp'] = 'expressoAdmin1_2'; 
     13        include('../header.inc.php'); 
     14     
    1215        echo ' 
    1316            <link rel="Stylesheet" type="text/css" href="../prototype/plugins/jquery/jquery-ui.css" />                                   
     
    4447        '; 
    4548 
    46         $debug = false;  
     49    $debug = false;      
    4750        $time_start = microtime(true); 
    48  
    49         $GLOBALS['phpgw_info'] = array(); 
    50         $GLOBALS['phpgw_info']['flags']['currentapp'] = 'expressoAdmin1_2'; 
    51         include('../header.inc.php'); 
    52  
    5351        $c = CreateObject('phpgwapi.config','expressoAdmin1_2'); 
    5452        $c->read_repository(); 
  • branches/2.5/expressoAdmin1_2/js/jscode/shared_accounts.js

    r8179 r8232  
    9797{ 
    9898    combo_org_available_users = Element('ea_combo_org_available_users'); 
    99     context = context.toLowerCase();  
     99    context = context.toLowerCase(); 
    100100    for (i=0; i<combo_org_available_users.length; i++) 
    101101    { 
     
    300300 
    301301            var combo_org = Element('ea_combo_org'); 
    302             var context_to_select = data.user_context.toLowerCase();  
     302            var context_to_select = data.user_context.toLowerCase(); 
    303303            for (i=0; i<combo_org.length; i++) 
    304304            { 
     
    374374 
    375375                    for (var i=0; i < calendarPermission.length; i++){ 
    376                         sharemailbox.ownersExpressoCalendarAcl[ calendarPermission[i].user.uid ] = calendarPermission[i].aclValues;                    
    377                         sharemailbox.currentPemissions[calendarPermission[i].user.uid] = calendarPermission[i].id; 
    378                         // sharemailbox.ownersExpressoCalendarAcl.length = sharemailbox.currentPemissions.length = i; 
    379                      
    380                         if(!current[calendarPermission[i].user.uid ]){ 
     376                        if (calendarPermission[i].user.uid ){ 
     377                                sharemailbox.ownersExpressoCalendarAcl[ calendarPermission[i].user.uid ] = calendarPermission[i].aclValues;                    
     378                                sharemailbox.currentPemissions[calendarPermission[i].user.uid] = calendarPermission[i].id; 
     379                                // sharemailbox.ownersExpressoCalendarAcl.length = sharemailbox.currentPemissions.length = i; 
     380                    } 
     381                        if(calendarPermission[i].user.uid && !current[calendarPermission[i].user.uid ]){ 
    381382                            Element('ea_select_owners').innerHTML = Element('ea_select_owners').innerHTML+'<option value='+ calendarPermission[i].user.uid +'>'+ calendarPermission[i].user.name +'</option>'; 
    382383                            Element('ea_select_owners').outerHTML = Element('ea_select_owners').outerHTML; 
     
    507508 
    508509        $.each(sharemailbox.ownersExpressoCalendarAcl, function(user, acl) { 
    509  
    510             var usuario = DataLayer.get('user', { 
    511                 filter: ['=','uid',user],  
    512                 criteria: { 
    513                     notExternal: true 
     510                if (user != "undefined"){ 
     511                    var usuario = DataLayer.get('user', { 
     512                        filter: ['=','uid',user],  
     513                        criteria: { 
     514                            notExternal: true 
     515                        } 
     516                    }); 
     517 
     518                    if($.isArray(usuario)) 
     519                        usuario = usuario[0]; 
     520 
     521                    DataLayer.put('calendarToPermission', DataLayer.merge({ 
     522                        user:  usuario.id, 
     523                        type: '0', 
     524                        acl: acl, 
     525                        calendar: calendar 
     526                    }, !!sharemailbox.currentPemissions[usuario.uid] ? { 
     527                        id: sharemailbox.currentPemissions[usuario.uid] 
     528                    } : {})); 
     529 
     530                    if(!!!sharemailbox.currentPemissions[usuario.uid]) 
     531                        DataLayer.put('calendarSignature', { 
     532                            user: usuario.id, 
     533                            calendar:  calendar, 
     534                            isOwner:  '0', 
     535                            fontColor:  '000000', 
     536                            backgroundColor: 'f1efac', 
     537                            borderColor: 'eddb21' 
     538                        }); 
    514539                } 
    515             }); 
    516  
    517             if($.isArray(usuario)) 
    518                 usuario = usuario[0]; 
    519  
    520             DataLayer.put('calendarToPermission', DataLayer.merge({ 
    521                 user:  usuario.id, 
    522                 type: '0', 
    523                 acl: acl, 
    524                 calendar: calendar 
    525             }, !!sharemailbox.currentPemissions[usuario.uid] ? { 
    526                 id: sharemailbox.currentPemissions[usuario.uid] 
    527             } : {})); 
    528  
    529             if(!!!sharemailbox.currentPemissions[usuario.uid]) 
    530                 DataLayer.put('calendarSignature', { 
    531                     user: usuario.id, 
    532                     calendar:  calendar, 
    533                     isOwner:  '0', 
    534                     fontColor:  '000000', 
    535                     backgroundColor: 'f1efac', 
    536                     borderColor: 'eddb21' 
    537                 }); 
    538  
    539540        }) 
    540541        DataLayer.commit();   
     
    622623cShareMailbox.prototype.getaclfromuser = function(user) 
    623624{ 
    624          
    625625    Element('em_input_readAcl').checked = false; 
    626626    Element('em_input_deleteAcl').checked = false; 
     
    642642    Element('em_input_deleteCalendar').disabled = true; 
    643643    Element('em_input_restrictCalendar').disabled = true; 
    644                  
    645                  
     644     
     645    if (!this.ownersExpressoCalendarAcl[user] && !this.ownersCalendarAcl[user]){            
     646                DataLayer.dispatchPath = "prototype/"; 
     647                var sharedUser = DataLayer.get('user', { 
     648                    filter: ['=','mail',$('#mail').val()] 
     649                }); 
     650                for(var j = 0; j < sharedUser.length; j++) 
     651                    if(sharedUser[j].phpgwAccountType == 's'){ 
     652                        sharedUser = sharedUser[j]; 
     653                        break; 
     654                    } 
     655 
     656                var signature = DataLayer.get('calendarSignature', { 
     657                    filter: ['=','user', sharedUser.id] 
     658                }); 
     659 
     660                if(!signature) 
     661                    return; 
     662 
     663                var usuario = DataLayer.get('user', { 
     664                    filter: ['=','uid',user],  
     665                    criteria: { 
     666                        notExternal: true 
     667                    } 
     668                }); 
     669                var calendarPermission = DataLayer.get('calendarToPermission', { 
     670                    filter: ['AND', ['=','calendar',signature[0].calendar], ['=','user',usuario[0].id] ] 
     671                }); 
     672                this.ownersExpressoCalendarAcl[user] = calendarPermission[0] ? calendarPermission[0].acl : ""; 
     673    } 
    646674    if(this.ownersExpressoCalendarAcl[user]) 
    647675    { 
  • branches/2.5/expressoAdmin1_2/setup/setup.inc.php

    r7516 r8232  
    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.5.0'; 
     15        $setup_info['expressoAdmin1_2']['version']      = '2.5.1'; 
    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.5.0') 
     39                'versions' => Array('2.5.1.1') 
    4040        ); 
    4141?> 
  • branches/2.5/expressoAdmin1_2/setup/tables_update.inc.php

    r7655 r8232  
    339339        } 
    340340        $test[] = '2.4.2'; 
    341         function expressoAdmin1_2_upgrade2_4_2() 
    342         { 
    343                 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.5.0'; 
    344                 return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
    345         } 
     341    function expressoAdmin1_2_upgrade2_4_2() 
     342    { 
     343            $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.5.0'; 
     344            return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
     345    } 
     346 
     347    $test[] = '2.5.0'; 
     348    function expressoAdmin1_2_upgrade2_5_0() 
     349    { 
     350        $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.5.1'; 
     351        return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
     352    } 
    346353?> 
  • branches/2.5/expressoCalendar/inc/hook_admin.inc.php

    r7982 r8232  
    1313        $title = $appname; 
    1414        $file = Array( 
    15                 'ExpressoCalendar migration' => $GLOBALS['phpgw']->link('/index.php','menuaction=admin.uiconfig.index&appname=' . $appname. '&config=migra'),  
    16         'Global Settings' => $GLOBALS['phpgw']->link('/index.php','menuaction=admin.uiconfig.index&appname=' . $appname)  
     15                'ExpressoCalendar migration' => $GLOBALS['phpgw']->link('/index.php','menuaction=admin.uiconfig.index&appname=' . $appname. '&config=migra'), 
     16        'Global Settings' => $GLOBALS['phpgw']->link('/index.php','menuaction=admin.uiconfig.index&appname=' . $appname) 
    1717        ); 
    1818        //Do not modify below this line 
  • branches/2.5/expressoCalendar/setup/tables_current.inc.php

    r7938 r8232  
    234234                'uidnumber' => array(  'type' => 'int', 'precision' => '8', 'nullable' => False), 
    235235                'object_id' => array(  'type' => 'int', 'precision' => '8', 'nullable' => False), 
    236                 'owner' => array(  'type' => 'int', 'precision' => '8', 'nullable' => False),  
     236                'owner' => array(  'type' => 'int', 'precision' => '8', 'nullable' => False), 
    237237                'object_type' => array(  'type' => 'int', 'precision' => '8', 'nullable' => False), 
    238238                'permission' => array(  'type' => 'varchar','precision' => '50', 'nullable' => False) 
     
    313313                'background_color' => array(  'type' => 'varchar','precision' => '6', 'nullable' => True), 
    314314                'border_color' => array(  'type' => 'varchar','precision' => '6', 'nullable' => True), 
    315                 'type' => array('type' => 'int', 'precision' => '2' ,'nullable' => false, 'default' => 0),  
    316                 'hidden' => array('type' => 'int', 'precision' => '2' ,'nullable' => false, 'default' => 0)  
     315                'type' => array('type' => 'int', 'precision' => '2' ,'nullable' => false, 'default' => 0), 
     316                'hidden' => array('type' => 'int', 'precision' => '2' ,'nullable' => false, 'default' => 0) 
    317317            ), 
    318318            'pk' => array('id'), 
  • branches/2.5/expressoCalendar/setup/tables_update.inc.php

    r7938 r8232  
    234234        return $GLOBALS['setup_info']['expressoCalendar']['currentver']; 
    235235    }; 
    236   
    237     $test[] = '1.011';  
    238     function expressoCalendar_upgrade1_011() {  
    239         $oProc = $GLOBALS['phpgw_setup']->oProc;  
    240   
    241         $oProc->query("ALTER TABLE calendar_signature ADD COLUMN hidden integer");  
    242   
    243         $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.012';  
    244         return $GLOBALS['setup_info']['expressoCalendar']['currentver'];  
    245     };  
     236 
     237    $test[] = '1.011'; 
     238    function expressoCalendar_upgrade1_011() { 
     239        $oProc = $GLOBALS['phpgw_setup']->oProc; 
     240 
     241        $oProc->query("ALTER TABLE calendar_signature ADD COLUMN hidden integer"); 
     242 
     243        $GLOBALS['setup_info']['expressoCalendar']['currentver'] = '1.012'; 
     244        return $GLOBALS['setup_info']['expressoCalendar']['currentver']; 
     245    }; 
    246246         
    247247?> 
  • branches/2.5/expressoCalendar/templates/default/config.tpl

    r7982 r8232  
    11<!-- BEGIN header --> 
    2 <form method="POST" action="{action_url}">  
    3     <table border="0" align="center">  
    4         <!-- END header -->  
    5         <!-- BEGIN body -->  
    6         <tr class="th">  
    7             <td colspan="2" align="center"><b>{lang_expressoCalendar_Setup}</b></td>  
    8         </tr>  
    9   
    10         <tr><td></td></tr>  
    11   
    12         <tr class="row_off">  
    13             <td>{lang_Auto_import_calendars_to_receive_an_internal_event}:</td>  
    14             <td>  
    15                 <select name="newsettings[expressoCalendar_autoImportCalendars]">  
    16                     <option value="false" {selected_expressoCalendar_autoImportCalendars_false}>{lang_no}</option>  
    17                     <option value="true"  {selected_expressoCalendar_autoImportCalendars_true}>{lang_yes}</option>  
    18                 </select>  
    19             </td>  
    20         </tr>  
    21         <!-- END body -->  
    22         <!-- BEGIN footer -->  
    23         <tr class="th">  
    24             <td colspan="2">&nbsp;</td>  
    25         </tr>  
    26         <tr>  
    27             <td colspan="2" align="center">  
    28                 <input type="submit" name="submit" value="{lang_submit}">  
    29                 <input type="submit" name="cancel" value="{lang_cancel}">  
    30             </td>  
    31         </tr>  
    32     </table>  
     2<form method="POST" action="{action_url}"> 
     3    <table border="0" align="center"> 
     4        <!-- END header --> 
     5        <!-- BEGIN body --> 
     6        <tr class="th"> 
     7            <td colspan="2" align="center"><b>{lang_expressoCalendar_Setup}</b></td> 
     8        </tr> 
     9 
     10        <tr><td></td></tr> 
     11 
     12        <tr class="row_off"> 
     13            <td>{lang_Auto_import_calendars_to_receive_an_internal_event}:</td> 
     14            <td> 
     15                <select name="newsettings[expressoCalendar_autoImportCalendars]"> 
     16                    <option value="false" {selected_expressoCalendar_autoImportCalendars_false}>{lang_no}</option> 
     17                    <option value="true"  {selected_expressoCalendar_autoImportCalendars_true}>{lang_yes}</option> 
     18                </select> 
     19            </td> 
     20        </tr> 
     21        <!-- END body --> 
     22        <!-- BEGIN footer --> 
     23        <tr class="th"> 
     24            <td colspan="2">&nbsp;</td> 
     25        </tr> 
     26        <tr> 
     27            <td colspan="2" align="center"> 
     28                <input type="submit" name="submit" value="{lang_submit}"> 
     29                <input type="submit" name="cancel" value="{lang_cancel}"> 
     30            </td> 
     31        </tr> 
     32    </table> 
    3333</form> 
    3434<!-- END footer --> 
  • branches/2.5/expressoMail1_2/assetic.php

    r7919 r8232  
    4747        new FileAsset('../prototype/plugins/watermark/jquery.watermarkinput.js'), 
    4848        new FileAsset('../prototype/plugins/fileupload/jquery.iframe-transport.js'), 
    49         new FileAsset('../prototype/plugins/qtip/jquery.qtip-1.0.0-rc3.min.js'),  
     49        new FileAsset('../prototype/plugins/qtip/jquery.qtip-1.0.0-rc3.min.js'), 
    5050        new FileAsset('../prototype/plugins/treeview/jquery.treeview.js'), 
    5151        new FileAsset('../prototype/plugins/treeview/lib/jquery.cookie.js'),     
  • branches/2.5/expressoMail1_2/inc/class.db_functions.inc.php

    r7673 r8232  
    147147                return $stringDropDownContacts; 
    148148        } 
    149          
    150         function getContactsByGroupAlias($alias) 
    151         { 
     149function getContactsByGroupAlias($alias) 
     150        { 
     151                /* 
    152152                list($alias,$uid) = explode("::",$alias);                
     153                 
    153154                $cc_related_ids = $_SESSION['phpgw_info']['expressomail']['user']['cc_related_ids'];             
    154155                // Explode personal group, If exists related ids (the user has permission to send email). 
     156                 
    155157                if(is_array($cc_related_ids) && $uid){ 
    156                         $owner =  array_search($uid,$cc_related_ids);                    
    157                 } 
    158                  
     158                        $owner =  array_search($uid,$cc_related_ids);                                    
     159                }*/ 
     160                $groups = $this->get_cc_groups(); 
     161                if ($groups){ 
     162                        $groups = explode(",", $groups); 
     163                        for($ii=0; $ii < count($groups); ++$ii) { 
     164                                $tmp = preg_split("/;|\::/",$groups[$ii]); 
     165                                $relatedGroups[$ii] = array("name" => $tmp[0],"alias" => $tmp[1],"owner" => $tmp[2]); 
     166                        } 
     167                        foreach ($relatedGroups as $key => $value) { 
     168                                if ($value["alias"] == $alias) 
     169                                        $owner = $value["owner"]; 
     170                        } 
     171                        if ($owner){ 
     172                                        include_once("class.ldap_functions.inc.php"); 
     173                                        $ldap = new ldap_functions();                    
     174                                        $owner = $ldap->uid2uidnumber($owner); 
     175                        } 
     176                } 
     177 
    159178                $query = "select C.id_connection, A.names_ordered, C.connection_value from phpgw_cc_contact A, ". 
    160179                "phpgw_cc_contact_conns B, phpgw_cc_connections C,phpgw_cc_contact_grps D,phpgw_cc_groups E where ". 
  • branches/2.5/expressoMail1_2/inc/class.exporteml.inc.php

    r7673 r8232  
    150150        } 
    151151 
    152 function export_all_byLocalFolder($params){ 
    153         $error = false; 
    154  
    155         if(empty($params['messages'])){ 
    156             $file["empty_folder"] = true; 
    157         } else { 
    158             foreach($params['messages'] as $eachMsg){ 
    159                $header = ""; 
    160                $body = ""; 
    161                $tempDir = $this->tempDir; 
    162  
    163                $this->get_header_byLocalFolder($eachMsg, $header); 
    164                $this->get_body_byLocalFolder($eachMsg, $body); 
    165                $sEMLData    = $this->parseEml($header, $body); 
    166                $fileName   = $this->createFileEml_by_localFolder($sEMLData, $tempDir,$eachMsg['msg_number']); 
    167  
    168                if(!$fileName){ 
    169                    $error = true; 
    170                    break; 
    171                } else  
    172                    $fileNames .= "\"".$fileName."\" "; 
    173             } 
    174  
    175             $nameFileZip = 'False';          
    176             if($fileNames && !$error) {          
    177                 $nameFileZip = $this->createFileZip($fileNames, $tempDir); 
    178                 ($nameFileZip) ? ($file = $tempDir.'/'.$nameFileZip) : ($file = false); 
    179             } else  
    180                 $file = false; 
    181         } 
    182         
    183        return $file; 
    184  
    185 } 
    186  
    187 function get_header_byLocalFolder($eachMsg, &$header){ 
    188     $header = <<<header 
    189         MIME-Version: 1.0 
    190         Content-Type: text/html; charset=ISO-8859-1 
    191         Content-Transfer-Encoding: quoted-printable 
    192         From: "{$eachMsg['from']['name']}" <{$eachMsg['from']['email']}> 
    193         To: {$eachMsg['to']['email']} 
    194         Subject: {$eachMsg['subject']} 
    195         Message-Id: {$eachMsg['msg_number']} 
    196         Date: {$eachMsg['date']} 
    197 header; 
    198 } 
    199  
    200 function get_body_byLocalFolder($eachMsg, &$body){ 
    201     $body = $eachMsg['msg_sample']['body']; 
    202 } 
    203152 
    204153function export_all($params){ 
  • branches/2.5/expressoMail1_2/inc/class.imap_functions.inc.php

    r8114 r8232  
    4242        var $useCache = false; 
    4343        var $expirationCache = false; 
    44  
     44    var $msgIds = array();// Usado para guardar o messagesIds 
    4545         
    4646        function imap_functions (){ 
     
    233233                                    ++$i; 
    234234                            } 
    235                                                          
    236                                                         $filter = array('AND', array('=', 'folderName', $folder), array('IN','messageNumber', $sort_array_msg)); 
    237                                                         $followupflagged = Controller::find( 
    238                                                                 array('concept' => 'followupflagged'), 
    239                                                                 false,  
    240                                                                 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
    241                                                         ); 
    242                                                         $labeleds = Controller::find( 
    243                                                                 array('concept' => 'labeled'), 
    244                                                                 false,  
    245                                                                 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
    246                                                         ); 
    247                             $sort_array_msg_count = count($sort_array_msg); 
    248                                                         for($i=0; $i<$sort_array_msg_count; ++$i){ 
    249                                                                 if(!isset($return[$i]['msg_number'])) 
    250                                                                         continue; 
    251                                                                          
    252                                                                 $numFlags = count($followupflagged); 
    253                                                                 for($ii=0; $ii<$numFlags; ++$ii){ 
    254                                                                         if($return[$i]['msg_number'] == $followupflagged[$ii]['messageNumber']){ 
    255                                                                                 $followupflag = Controller::read( array( 'concept' => 'followupflag', 'id' => $followupflagged[$ii]['followupflagId'] )); 
    256                                                                                 $return[$i]['followupflagged'] = $followupflagged[$ii]; 
    257                                                                                 $return[$i]['followupflagged']['followupflag'] = $followupflag; 
    258                                                                                 break; 
    259                                                                         } 
    260                                                                 } 
    261                                                                 $numLabels = count($labeleds); 
    262                                                                 for($ii=0; $ii<$numLabels; ++$ii){ 
    263                                                                         if($return[$i]['msg_number'] == $labeleds[$ii]['messageNumber']){ 
    264                                                                                 $labels = Controller::read( array( 'concept' => 'label', 'id' =>  $labeleds[$ii]['labelId']));  
    265                                                                                 $return[$i]['labels'][$labeleds[$ii]['labelId']] = $labels; 
    266                                                                         } 
    267                                                                 } 
    268                                                         } 
     235                            if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_followupflags_and_labels'] == "1") 
     236                            { 
     237                                $filter = array('AND', array('=', 'folderName', $folder), array('IN','messageNumber', $sort_array_msg)); 
     238                                $followupflagged = Controller::find( 
     239                                    array('concept' => 'followupflagged'), 
     240                                    false, 
     241                                    array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
     242                                ); 
     243                                $labeleds = Controller::find( 
     244                                    array('concept' => 'labeled'), 
     245                                    false, 
     246                                    array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
     247                                ); 
     248                                $sort_array_msg_count = count($sort_array_msg); 
     249                                for($i=0; $i<$sort_array_msg_count; ++$i){ 
     250                                    if(!isset($return[$i]['msg_number'])) 
     251                                        continue; 
     252 
     253                                    $numFlags = count($followupflagged); 
     254                                    for($ii=0; $ii<$numFlags; ++$ii){ 
     255                                        if($return[$i]['msg_number'] == $followupflagged[$ii]['messageNumber']){ 
     256                                            $followupflag = Controller::read( array( 'concept' => 'followupflag', 'id' => $followupflagged[$ii]['followupflagId'] )); 
     257                                            $return[$i]['followupflagged'] = $followupflagged[$ii]; 
     258                                            $return[$i]['followupflagged']['followupflag'] = $followupflag; 
     259                                            break; 
     260                                        } 
     261                                    } 
     262                                    $numLabels = count($labeleds); 
     263                                    for($ii=0; $ii<$numLabels; ++$ii){ 
     264                                        if($return[$i]['msg_number'] == $labeleds[$ii]['messageNumber']){ 
     265                                            $labels = Controller::read( array( 'concept' => 'label', 'id' =>  $labeleds[$ii]['labelId'])); 
     266                                            $return[$i]['labels'][$labeleds[$ii]['labelId']] = $labels; 
     267                                        } 
     268                                    } 
     269                                } 
     270                            } 
    269271                    } 
    270272                    $return['num_msgs'] =  $num_msgs;    
    271                 } else { 
     273                } 
     274        else 
     275        { 
    272276                        $num_msgs = imap_num_msg($this->mbox); 
    273277                        $sort_array_msg = $this-> get_msgs($folder, $sort_box_type, $search_box_type, $sort_box_reverse,$msg_range_begin,$num_msgs); 
    274278 
    275  
    276279                        $return['tot_unseen'] = 0; 
    277280                        $i = 0; 
    278281 
    279                         if(is_array($sort_array_msg)){ 
    280  
    281                             foreach($sort_array_msg as $msg_number => $value) 
    282                             { 
    283                                 $temp = $this->get_info_head_msg($msg_number); 
    284                                 if(!$temp) 
    285                                     return false; 
    286  
    287                                 if($temp['Unseen'] == 'U' || $temp['Recent'] == 'N'){ 
    288                                                 $return['tot_unseen']++; 
    289                                         } 
    290  
    291                                 if($i <= ($msg_range_end-$msg_range_begin)) 
    292                                     $return[$i] = $temp; 
    293                                 ++$i; 
    294                             } 
    295                         } 
    296                         $return['num_msgs'] = count($sort_array_msg)+($msg_range_begin-1); 
     282            if(is_array($sort_array_msg)) 
     283            { 
     284                foreach($sort_array_msg as $msg_number => $value) 
     285                { 
     286                    $temp = $this->get_info_head_msg($msg_number); 
     287                    if(!$temp) 
     288                        return false; 
     289 
     290                    if($temp['Unseen'] == 'U' || $temp['Recent'] == 'N') 
     291                        $return['tot_unseen']++; 
     292 
     293                    if($i <= ($msg_range_end-$msg_range_begin)) 
     294                        $return[$i] = $temp; 
     295 
     296                    ++$i; 
    297297                } 
    298                                                  
    299                 return $return;  
     298            } 
     299 
     300            $return['num_msgs'] = count($sort_array_msg)+($msg_range_begin-1); 
     301        } 
     302 
     303        $return['messagesIds'] = $this->msgIds; 
     304        return $return; 
    300305    } 
    301306         
     
    458463            $return['attachment'] = ( preg_match('/((Content-Disposition:(.)*([\r\n\s]*filename))|(Content-Type:(.)*([\r\n\s]*name)))/i', $mimeBody) ) ? '1' : '0'; //Verifica se a anexos na mensagem 
    459464            $return['reply_toaddress'] = isset($header->reply_toaddress) ? self::decodeMimeString($header->reply_toaddress) : ''; 
    460             $return['flag'] = $header->Unseen.$header->Recent.$header->Flagged.$header->Draft.$header->Answered.$header->Deleted.( $return['attachment'] === '1' ? 'T': '' ); 
    461                          
    462                         if (!empty($header->to)){ 
     465            $return['flag'] = $header->Unseen. 
     466                $header->Recent. 
     467                ($header->Flagged == 'F' || !( preg_match('/importance *: *(.*)\r/i', $mimeHeader , $importance) === 0 )? 'F' : ''). 
     468                $header->Draft. 
     469                $header->Answered. 
     470                $header->Deleted. 
     471                ( $return['attachment'] === '1' ? 'T': '' ); 
     472 
     473        if (!empty($header->to)){ 
    463474                                foreach ($header->to as $i => $v){ 
    464475                                        $return['to'][$i] = self::formatMailObject( $v ); 
     
    592603                                        if (zip_entry_open($zip, $zip_entry, "r")) { 
    593604                                                $email = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); 
    594   
    595                                                 /*Caso mensagens vierem com quebras de linha diferentes do esperado, como por exemplo,  
    596                                                 mensagens exportadas pelo MailArchiver, é preciso corrigir.*/  
    597                                                 $email = str_replace("\r\n", "\n", $email);  
    598                                                 $email = str_replace("\n", "\r\n", $email);  
    599   
     605 
     606                                                /*Caso mensagens vierem com quebras de linha diferentes do esperado, como por exemplo, 
     607                                                mensagens exportadas pelo MailArchiver, é preciso corrigir.*/ 
     608                                                $email = str_replace("\r\n", "\n", $email); 
     609                                                $email = str_replace("\n", "\r\n", $email); 
     610 
    600611                                                $status = @imap_append($this->mbox, 
    601612                                                                "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$params["folder"], 
     
    620631                }else if(substr($filename,strlen($filename)-4)==".eml") { 
    621632                        $email = implode("",file($params['FILES'][0]['tmp_name'])); 
    622   
    623                         /*Caso mensagens vierem com quebras de linha diferentes do esperado, como por exemplo,  
    624                         mensagens exportadas pelo MailArchiver, é preciso corrigir.*/  
    625                         $email = str_replace("\r\n", "\n", $email);  
    626                         $email = str_replace("\n", "\r\n", $email);  
    627   
     633 
     634                        /*Caso mensagens vierem com quebras de linha diferentes do esperado, como por exemplo, 
     635                        mensagens exportadas pelo MailArchiver, é preciso corrigir.*/ 
     636                        $email = str_replace("\r\n", "\n", $email); 
     637                        $email = str_replace("\n", "\r\n", $email); 
     638 
    628639                        $status = imap_append($this->mbox,"{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$params["folder"],$email); 
    629640                                 
     
    954965 
    955966                                   $content .= $this->decodeMailPart($part->body,$part->ctype_parameters['charset']); 
     967                                   $i = -1; 
    956968                                } 
    957969 
     
    962974 
    963975                                   $content .= '<pre>'. htmlentities($this->decodeMailPart($part->body,$part->ctype_parameters['charset'],false)).'</pre>'; 
     976                                   $i = -1; 
    964977                                } 
    965                                 if(strtolower($part->ctype_secondary) == 'calendar') 
    966                                     $content.= $this->builderMsgCalendar($this->decodeMailPart($part->body, $part->ctype_parameters['charset'])); 
    967  
     978                               // Comentado para tratamento de e-mail multipart alternative com html e ical. Parseava o ical e ignorava o html. 
     979                               //if(strtolower($part->ctype_secondary) == 'calendar') 
     980                               //     $content.= $this->builderMsgCalendar($this->decodeMailPart($part->body, $part->ctype_parameters['charset'])); 
    968981                           } 
    969982 
    970                             $i = -1; 
    971983                            break; 
    972984 
    973985                       case 'multipart': 
    974986 
    975                             if(strtolower($part->ctype_secondary) == 'alternative' ) //Unico formato multipart suportado, escapa os outros  
    976                             {  
    977                                 if($printHeader)  
    978                                     $content .= $this->builderMsgHeader($part);  
    979  
    980                                 $this->builderMsgBody($part,$content);  
    981  
    982                                 $i = -1;  
    983                             }  
    984   
    985                             break; 
     987                           if(strtolower($part->ctype_secondary) == 'alternative' ) //Unico formato multipart suportado, escapa os outros 
     988                           { 
     989                               if($printHeader) 
     990                                   $content .= $this->builderMsgHeader($part); 
     991 
     992                               $this->builderMsgBody($part,$content); 
     993 
     994                               $i = -1; 
     995                           } 
     996 
     997                           break; 
    986998 
    987999                       case 'message': 
     
    12111223 
    12121224                $return['msg_number'] = $msg_number.$plus_id; 
    1213                 $return['msg_folder'] = mb_convert_encoding( $msg_folder, "ISO-8859-1", "UTF-8" );  
    1214                 //isset($params['decoded']) ? mb_convert_encoding( $msg_folder, "ISO-8859-1", "UTF-8" ) : $msg_folder;  
     1225                $return['msg_folder'] = mb_convert_encoding( $msg_folder, "ISO-8859-1", "UTF-8" ); 
     1226                //isset($params['decoded']) ? mb_convert_encoding( $msg_folder, "ISO-8859-1", "UTF-8" ) : $msg_folder; 
    12151227 
    12161228                 
     
    14601472                }   
    14611473                $return['alarm'] = $alarm; 
    1462                  
     1474 
    14631475                return $return; 
    14641476        } 
     
    21862198        function delete_msgs($params) 
    21872199        { 
    2188  
    21892200                $folder = $params['folder']; 
    21902201                $folder =  mb_convert_encoding($folder, "UTF7-IMAP","ISO-8859-1"); 
    21912202                $msgs_number = explode(",",$params['msgs_number']); 
     2203 
    21922204                if(array_key_exists('border_ID' ,$params)) 
    21932205                $border_ID = $params['border_ID']; 
     
    22052217                $mbox_stream = @imap_open("{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$folder, $this->username, $this->password) or die(serialize(array('imap_error' => $this->parse_error(imap_last_error())))); 
    22062218 
    2207                 foreach ($msgs_number as $msg_number) 
     2219        foreach ($msgs_number as $msg_number) 
    22082220                { 
    22092221                        if (imap_delete($mbox_stream, $msg_number, FT_UID)); 
     
    26502662        function ren_mailbox($arr) 
    26512663        { 
    2652                 $namebox = $arr['current'];               
    2653                 $path_delimiter = strrpos($namebox,$this->imap_delimiter)+1;  
    2654                 $base_path = substr($namebox,0,$path_delimiter);  
    2655                 $rename = preg_split("/\/|\./",substr($arr['rename'], $path_delimiter));  
    2656                 $new_box = array_shift($rename);  
    2657                 $subfolders = $rename;  
     2664                $namebox = $arr['current'];              
     2665                $path_delimiter = strrpos($namebox,$this->imap_delimiter)+1; 
     2666                $base_path = substr($namebox,0,$path_delimiter); 
     2667                $rename = preg_split("/\/|\./",substr($arr['rename'], $path_delimiter)); 
     2668                $new_box = array_shift($rename); 
     2669                $subfolders = $rename; 
    26582670                $imap_server = $_SESSION['phpgw_info']['expressomail']['email_server']['imapServer']; 
    26592671                $mbox_stream = $this->open_mbox(); 
     
    26662678                        $result = imap_last_error(); 
    26672679                } 
    2668                 /*Cria as subpastas*/  
    2669                 if (is_array($subfolders)){  
    2670                         $child = $new_box.$this->imap_delimiter;  
    2671             $subfolders_count = count($subfolders);  
    2672                         for($i =0; $i < $subfolders_count; ++$i){  
    2673                                 $child .= ($subfolders[$i] ? $subfolders[$i] : $this->functions->getLang("New Folder"));  
    2674                                 $namebox =  mb_convert_encoding($child, "UTF7-IMAP", "UTF-8");  
    2675                                 $result = "Ok";  
    2676                                 if(!imap_createmailbox($mbox_stream,"{".$imap_server."}$namebox"))  
    2677                                 {  
    2678                                         $result = imap_last_error();                                              
    2679                                 }  
    2680                                 $child .=$this->imap_delimiter;  
    2681                         }                         
    2682                 }  
    2683   
     2680                /*Cria as subpastas*/ 
     2681                if (is_array($subfolders)){ 
     2682                        $child = $new_box.$this->imap_delimiter; 
     2683            $subfolders_count = count($subfolders); 
     2684                        for($i =0; $i < $subfolders_count; ++$i){ 
     2685                                $child .= ($subfolders[$i] ? $subfolders[$i] : $this->functions->getLang("New Folder")); 
     2686                                $namebox =  mb_convert_encoding($child, "UTF7-IMAP", "UTF-8"); 
     2687                                $result = "Ok"; 
     2688                                if(!imap_createmailbox($mbox_stream,"{".$imap_server."}$namebox")) 
     2689                                { 
     2690                                        $result = imap_last_error();                                             
     2691                                } 
     2692                                $child .=$this->imap_delimiter; 
     2693                        }                        
     2694                } 
     2695 
    26842696                if($mbox_stream) 
    26852697                        imap_close($mbox_stream); 
     
    27112723                return $return; 
    27122724        } 
    2713          
     2725 
     2726        /*Método utilizado para retornar dados da mensagem local (desarquivada na pasta lixeira) 
     2727        para poder ser anexada à mensagem.*/ 
     2728    function get_info_msg_archiver($params){ 
     2729        $folder = "INBOX".$this->imap_delimiter.$this->folders['trash']; 
     2730        $mbox_stream = $this->open_mbox($folder); 
     2731        $id = $params['idMsgs']; 
     2732 
     2733        $name = imap_headerinfo($mbox_stream, imap_msgno($mbox_stream, $id)); 
     2734        $return[] =  array( 
     2735            'uid' => $id, 
     2736            'folder' => "archiver", 
     2737            'type' => "imapMSG", 
     2738            'name' => base64_encode($name->subject.".eml") 
     2739        ); 
     2740 
     2741        return json_encode($return); 
     2742    } 
     2743 
    27142744        function send_mail($params) { 
    27152745            require_once dirname(__FILE__) . '/../../services/class.servicelocator.php'; 
     
    29342964                                        $arr_new_folder['base_path'] = $base_path; 
    29352965 
    2936                                         $this->create_mailbox($arr_new_folder);                                  
     2966                                        $this->create_mailbox($arr_new_folder);  
    29372967                                        $has_new_folder = true; 
    29382968                    $folder = $newfolder; 
     
    29542984 
    29552985                        $from = $fromaddress ?  ('"' . $fromaddress[0] . '" <' . $fromaddress[1] . '>') : ('"' . $_SESSION['phpgw_info']['expressomail']['user']['firstname'] . ' ' . $_SESSION['phpgw_info']['expressomail']['user']['lastname'] . '" <' . $_SESSION['phpgw_info']['expressomail']['user']['email'] . '>'); 
    2956                         $mailService->setFrom($from);                            
     2986                        $mailService->setFrom( mb_convert_encoding($from, "ISO-8859-1","UTF-8, ISO-8859-1")); 
    29572987         
    29582988                        $mailService->addHeaderField('Reply-To', !!$replytoaddress ? $replytoaddress : $from); 
     
    30043034            $isHTML = ( isset($params['type']) && $params['type'] == 'html' )?  true : false; 
    30053035 
    3006  
    3007     //  TODO - tratar mensagem criptografada e remover o AND false abaixo 
     3036                //      TODO - tratar mensagem criptografada e remover o AND false abaixo 
    30083037            if (($encrypt && $signed && $params['smime']) || ($encrypt && !$signed) AND false) { // a msg deve ser enviada cifrada... 
    30093038                $email = $this->add_recipients_cert($toaddress . ',' . $ccaddress . ',' . $ccoaddress); 
     
    31033132                { 
    31043133                    $value = json_decode($value, true); 
     3134                    if($value["folder"] == "archiver"){ 
     3135                        $value['folder'] = "INBOX/Trash"; 
     3136                    } 
    31053137 
    31063138                    switch ($value['type']) { 
     
    31103142                                if(strstr($body,'src="./inc/get_archive.php?msgFolder='.$value['folder'].'&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'"') !== false)//Embeded IMG 
    31113143                                {     
    3112                                     $body = str_ireplace('src="./inc/get_archive.php?msgFolder='.$value['folder'].'&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'"' , 'src="'.$att['name'].'"', $body); 
     3144                                    $body = str_ireplace('src="./inc/get_archive.php?msgFolder='.$value['folder'].  '&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'"' , 'src="'.$att['name'].'"', $body); 
    31133145                                    $mailService->addStringImage($att['source'], $att['type'],mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1') ); 
    31143146                                } 
     
    31243156                                 
    31253157                                $mailService->addStringAttachment($rawmsg, mb_convert_encoding(base64_decode($value['name']), 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), 'message/rfc822', '7bit', 'attachment' ); 
     3158                                /*envia o anexo para o email*/ 
    31263159                                $message_size_total += mb_strlen($rawmsg); //Adiciona o tamanho do anexo a variavel que controlao tamanho da msg. 
    31273160                                unset($rawmsg); 
     
    34193452                        $sort = array(); 
    34203453                } 
     3454 
     3455        $this->msgIds = $sort; 
     3456 
    34213457                if ($slice_array) 
    34223458                        $sort = array_slice($sort,$offsetBegin-1,$offsetEnd-($offsetBegin-1),true); 
     
    35563592        } 
    35573593 
     3594    function verifyShareFolder($params){ 
     3595        $folder = $params['folder']; 
     3596 
     3597         if (substr($folder,0,4) == 'user'){ 
     3598            $acl = $this->getacltouser($folder, isset($params['decoded'])); 
     3599 
     3600            $acl_share_delete = (stripos($acl,'t') !== false && stripos($acl,'e') !== false); 
     3601 
     3602            if (!$acl_share_delete) { 
     3603                $return['status'] = false; 
     3604                return $return; 
     3605            } 
     3606        } 
     3607    } 
    35583608        function move_messages($params) 
    35593609        { 
     
    36763726        } 
    36773727         
    3678         function set_messages_flag_from_search($params){                 
     3728        function set_messages_flag_from_search($params){ 
    36793729                $error = False; 
    36803730                $fileNames = ""; 
     
    44044454                                            $elem['uid'] = $new_search; 
    44054455                                            /* compare dates in ordering */ 
    4406                                             $elem['udatecomp'] = substr ($elem['udate'], -4) ."-". substr ($elem['udate'], 3, 2) ."-". substr ($elem['udate'], 0, 2);   
    4407  
    4408                                                                                         $filter = array('AND', array('=', 'folderName', $name_box), array('=','messageNumber', $new_search)); 
    4409                                                                                         $followupflagged = Controller::find( 
    4410                                                                                                 array('concept' => 'followupflagged'), 
    4411                                                                                                 false,  
    4412                                                                                                 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
    4413                                                                                         ); 
    4414  
    4415                                                                                         if(isset($followupflagged[0]['followupflagId'])) 
    4416                                                                                         { 
    4417                                                                                                 $followupflag = Controller::read( array( 'concept' => 'followupflag', 'id' => $followupflagged[0]['followupflagId'] ));      
    4418                                                                                                 $followupflagged[0]['followupflag'] = $followupflag; 
    4419                                                                                                 $elem['followupflagged'] = $followupflagged[0]; 
    4420  
    4421                                                                                         }        
    4422                                                                                         $labeleds = Controller::find( 
    4423                                                                                                 array('concept' => 'labeled'), 
    4424                                                                                                 false,  
    4425                                                                                                 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
    4426                                                                                         ); 
    4427                                                                                         foreach ($labeleds as $e){ 
    4428                                                                                                 $labels = Controller::read( array( 'concept' => 'label', 'id' =>  $e['labelId']));      
    4429                                                                                                 $elem['labels'][$e['labelId']] = $labels; 
    4430 }                                                                                        
     4456                                            $elem['udatecomp'] = substr ($elem['udate'], -4) ."-". substr ($elem['udate'], 3, 2) ."-". substr ($elem['udate'], 0, 2); 
     4457                                            if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_followupflags_and_labels'] == "1") 
     4458                                            { 
     4459                                                $filter = array('AND', array('=', 'folderName', $name_box), array('=','messageNumber', $new_search)); 
     4460                                                $followupflagged = Controller::find( 
     4461                                                    array('concept' => 'followupflagged'), 
     4462                                                    false, 
     4463                                                    array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
     4464                                                ); 
     4465 
     4466                                                if(isset($followupflagged[0]['followupflagId'])) 
     4467                                                { 
     4468                                                    $followupflag = Controller::read( array( 'concept' => 'followupflag', 'id' => $followupflagged[0]['followupflagId'] )); 
     4469                                                    $followupflagged[0]['followupflag'] = $followupflag; 
     4470                                                    $elem['followupflagged'] = $followupflagged[0]; 
     4471 
     4472                                                } 
     4473                                                $labeleds = Controller::find( 
     4474                                                    array('concept' => 'labeled'), 
     4475                                                    false, 
     4476                                                    array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
     4477                                                ); 
     4478                                                foreach ($labeleds as $e){ 
     4479                                                    $labels = Controller::read( array( 'concept' => 'label', 'id' =>  $e['labelId'])); 
     4480                                                    $elem['labels'][$e['labelId']] = $labels; 
     4481                                                } 
     4482                                            } 
    44314483                                            $retorno[] = $elem; 
    44324484                                        } 
     
    44604512            $arrayRetorno['data']               =  $pageret; 
    44614513            $arrayRetorno['currentTab'] =  $params['current_tab']; 
    4462             return ($pageret) ? $arrayRetorno : 'none'; 
     4514        return ($pageret) ? $arrayRetorno : 'none'; 
    44634515        } 
    44644516 
     
    45464598                    { 
    45474599                        $folder = str_replace($serverString, "", imap_utf7_decode($val->name)); 
    4548                         //$folder = str_replace("&-", "&", $folder);                      
    4549                         $trashFolder = explode($this->imap_delimiter,$folder);  
    4550                         $acls = ($trashFolder[count($trashFolder) - 1] == "Trash") ? $value['acls']."i" : $value['acls'];  
    4551                         $folder = imap_utf7_encode($folder);                      
    4552                         imap_setacl ($mbox_stream, $folder, "$user", $acls);  
     4600                        //$folder = str_replace("&-", "&", $folder);                     
     4601                        $trashFolder = explode($this->imap_delimiter,$folder); 
     4602                        $acls = ($trashFolder[count($trashFolder) - 1] == "Trash") ? $value['acls']."i" : $value['acls']; 
     4603                        $folder = imap_utf7_encode($folder);                     
     4604                        imap_setacl ($mbox_stream, $folder, "$user", $acls); 
    45534605                    } 
    45544606                } 
     
    49094961                                $insert = $this->insert_email($source,$dest_folder,$timestamps[$index],$flags[$index]); 
    49104962 
     4963                $return['idsMsg'] = $insert['msg_no']; 
    49114964                if($insert['error']) 
    49124965                { 
     
    50705123                                foreach ($subject as $tmp) 
    50715124                                        $return['msgs'][$i]['subject'] .= mb_convert_encoding($tmp->text, 'UTF-8', 'UTF-8 , ISO-8859-1'); 
    5072                                  
    5073                                 $filter = array('AND', array('=', 'folderName', $folder), array('=','messageNumber', $v)); 
    5074                                 $followupflagged = Controller::find( 
    5075                                         array('concept' => 'followupflagged' , 'folder' => $folder ), 
    5076                                         false,  
    5077                                         array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
    5078                                 ); 
    5079  
    5080                                 if(isset($followupflagged[0]['followupflagId'])) 
    5081                                 { 
    5082                                         $followupflag = Controller::read( array( 'concept' => 'followupflag', 'id' => $followupflagged[0]['followupflagId'] ));      
    5083                                         $followupflagged[0]['followupflag'] = $followupflag; 
    5084                                         $return['msgs'][$i]['followupflagged'] = $followupflagged[0]; 
    5085  
    5086                                 }        
    5087                                 $labeleds = Controller::find( 
    5088                                         array('concept' => 'labeled'), 
    5089                                         false,  
    5090                                         array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
    5091                                 ); 
    5092                                 if(is_array($labeleds)) 
    5093                                 foreach ($labeleds as $e){ 
    5094                                         $labels = Controller::read( array( 'concept' => 'label', 'id' =>  $e['labelId']));      
    5095                                         $return['msgs'][$i]['labels'][$e['labelId']] = $labels; 
    5096                                 }        
     5125 
     5126 
     5127                if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_followupflags_and_labels'] == "1") 
     5128                { 
     5129 
     5130                    $filter = array('AND', array('=', 'folderName', $folder), array('=','messageNumber', $v)); 
     5131                    $followupflagged = Controller::find( 
     5132                        array('concept' => 'followupflagged' , 'folder' => $folder ), 
     5133                        false, 
     5134                        array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
     5135                    ); 
     5136 
     5137                    if(isset($followupflagged[0]['followupflagId'])) 
     5138                    { 
     5139                        $followupflag = Controller::read( array( 'concept' => 'followupflag', 'id' => $followupflagged[0]['followupflagId'] )); 
     5140                        $followupflagged[0]['followupflag'] = $followupflag; 
     5141                        $return['msgs'][$i]['followupflagged'] = $followupflagged[0]; 
     5142 
     5143                    } 
     5144                    $labeleds = Controller::find( 
     5145                        array('concept' => 'labeled'), 
     5146                        false, 
     5147                        array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
     5148                    ); 
     5149                    if(is_array($labeleds)) 
     5150                    foreach ($labeleds as $e){ 
     5151                        $labels = Controller::read( array( 'concept' => 'label', 'id' =>  $e['labelId'])); 
     5152                        $return['msgs'][$i]['labels'][$e['labelId']] = $labels; 
     5153                    } 
     5154                } 
     5155 
    50975156                                $mimeBody = imap_body( $this->mbox, $v  , FT_UID|FT_PEEK  ); 
    50985157                                $return['msgs'][$i]['flag'] = ' '; 
    50995158                                $return['msgs'][$i]['flag'] .= $msg->Unseen ? $msg->Unseen : ''; 
    5100                                 $return['msgs'][$i]['flag'] .= $msg->Recent ? $msg->Recent : '';         
     5159                                $return['msgs'][$i]['flag'] .= $msg->Recent ? $msg->Recent : ''; 
    51015160                                $return['msgs'][$i]['flag'] .= $msg->Draft ? $msg->Draft : '';   
    51025161                                $return['msgs'][$i]['flag'] .= $msg->Answered ? $msg->Answered : '';     
     
    51595218                        $nMsgs[] = $v; 
    51605219                } 
    5161                 $return['msgs'] = $nMsgs;        
    5162                  
    5163                 $return = json_encode($return);          
     5220                $return['msgs'] = $nMsgs; 
     5221 
     5222                $return = json_encode($return); 
    51645223                $return = base64_encode($return); 
    5165          
     5224         
    51665225                return $return; 
    51675226        } 
     
    52275286        function searchSieveRule( $params ) 
    52285287        { 
    5229   
    5230                 $imap = $this->open_mbox( 'INBOX' ); 
     5288                $imap = $this->open_mbox( $params['folder']['criteria'] ? $params['folder']['criteria'] : 'INBOX' ); 
    52315289                $msgs = imap_sort( $imap , SORTDATE , 0 , SE_UID); 
    5232                  
     5290         
    52335291                $rr = array(); 
    5234   
     5292 
    52355293        if(isset($params['from']))  $rr['from'] = array(); 
    52365294        if(isset($params['to']))  $rr['to'] = array(); 
    52375295        if(isset($params['subject'])) $rr['subject'] = array(); 
    5238         if(isset($params['body'])) $rr['body'] = array();  
    5239         if(isset($params['size'])) $rr['size'] = array();  
    5240   
     5296        if(isset($params['body'])) $rr['body'] = array(); 
     5297        if(isset($params['size'])) $rr['size'] = array(); 
     5298 
     5299        //$params['search'] = mb_convert_encoding($params['search'], 'UTF-8',mb_detect_encoding($params['search'].'x', 'UTF-8, ISO-8859-1')); 
     5300 
    52415301                foreach ($msgs as $i => $v) 
    52425302                { 
     
    52645324                         
    52655325                        if(isset($params['to'])) 
    5266                         {  
     5326                        { 
    52675327                                $tos = $msg->to; 
    52685328                                $val = ''; 
     
    52845344                                         
    52855345                                } 
    5286                                  
     5346 
    52875347                                if($this->filterCheck( $val , $params['to']['criteria'] , $params['to']['filter'] )) 
    52885348                                        $rr['to'][] = $v; 
     
    52945354                                $subject = imap_mime_header_decode($msg->subject); 
    52955355                                foreach ($subject as $tmp) 
    5296                                         $ss .= $tmp->text; 
     5356                                        $ss .= ($tmp->charset == "default") ? $tmp->text : utf8_encode($tmp->text); 
    52975357                                 
    52985358                                if($this->filterCheck($ss , $params['subject']['criteria'] , $params['subject']['filter'] )) 
     
    53025362                        if(isset($params['body'])) 
    53035363                        {                        
    5304                                 $this->mbox = $this->open_mbox( 'INBOX' ); 
    5305                                 $b = $this->get_body_msg( $v , 'INBOX' ); 
    5306                                  
    5307                                 if( $this->filterCheck( $b['body'] , $params['body']['criteria'] , $params['body']['filter'] )) 
     5364                                $this->mbox = $this->open_mbox( $params['folder']['criteria'] ? $params['folder']['criteria'] : 'INBOX' ); 
     5365                                $b = $this->get_body_msg( $v , $params['folder']['criteria'] ? $params['folder']['criteria'] : 'INBOX' ); 
     5366 
     5367                                if( $this->filterCheck( mb_convert_encoding(html_entity_decode($b['body']), 'UTF-8',mb_detect_encoding(html_entity_decode($b['body']).'x', 'UTF-8, ISO-8859-1')) , $params['body']['criteria'] , $params['body']['filter'] )) 
    53085368                                        $rr['body'][] = $v; 
    5309                                  
     5369 
    53105370                                unset($b); 
    53115371                        } 
     
    53205380                $rrr = array(); 
    53215381                $init = true; 
    5322                  
    5323                  
    53245382                foreach ($rr as $i => $v) 
    5325                 {                        
     5383                { 
    53265384                        if(count($rrr) == 0 && $init === true) 
    53275385                                $rrr = $v; 
    53285386                        else if($params['isExact'] == 'yes') 
    5329                                 $rrr = array_intersect($rrr , $v); 
     5387                $rrr = array_intersect($rrr , $v); 
    53305388                        else 
    53315389                                $rrr =  array_unique(array_merge($rrr , $v)); 
    5332                          
    5333                 } 
    5334                  
     5390                } 
    53355391 
    53365392//              if($params['page'] && $params['rows']) 
     
    54035459                                                $ret[$msg][] = imap_mail_copy($imap,$msg,$proc['value'], CP_UID); 
    54045460                                        else 
     5461                                        { 
    54055462                                                /* Está sempre copiando a mensagem para a pasta destino */ 
    54065463                                            //$ret[$msg][] = imap_mail_move($imap,$msg,$proc['parameter'], CP_UID); 
    54075464                                                $ret[$msg][] = imap_mail_move($imap,$msg,$proc['parameter'], CP_UID);                                            
     5465                                                imap_expunge($imap); 
     5466                                        } 
    54085467                                        break; 
    54095468                                case 'redirect':                                                                                         
  • branches/2.5/expressoMail1_2/inc/class.ldap_functions.inc.php

    r8172 r8232  
    499499                         
    500500                        foreach($info_return as &$value){ 
    501                                 $value['type_contact'] = "G"; 
    502  
     501                                if (is_array($value)) 
     502                                        $value['type_contact'] = "G"; 
    503503                                //Converte a descrição dos filtros para ISO8859 corrigindo inconsitências com caractéres especiais 
    504504                                if(isset($value['vacationinfo']) && isset($value['vacationinfo'][0]) && $value['vacationinfo'][0] != '') 
  • branches/2.5/expressoMail1_2/inc/hook_settings.inc.php

    r8166 r8232  
    150150                                                                    signatures[default_signature].replace( /\\n/g, "<br>" ); 
    151151    } 
    152     if (document.getElementById( "signature" ).value != "")  
    153         document.getElementById( "signature" ).value = encode64(document.getElementById( "signature" ).value);  
     152    if (document.getElementById( "signature" ).value != "") 
     153        document.getElementById( "signature" ).value = encode64(document.getElementById( "signature" ).value); 
    154154    document.getElementById( "signatures" ).value = toJSON( signatures ); 
    155155    document.getElementById( "signature_types" ).value = toJSON( types ); 
     
    270270        return output.toString(); 
    271271} 
    272 function normalizerSignature(values){  
    273         var value = {};  
    274         for( key in values ){  
    275                 value[isEncoded64(key) ? decode64(key) : key] = values[key];  
    276         }  
    277         return value;  
    278 }  
    279 /*Verifica se a string input esta em Base 64*/  
    280 function isEncoded64(input){  
    281         var baseStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";  
    282         var encoded = true;  
    283         if ( (input.length % 4) != 0)  
    284                 return false;  
    285         for(var i=0; i<input.length; i++){  
    286                 if ( baseStr.indexOf(input[i]) < 0 ){  
    287                         encoded = false;  
    288                         break;  
    289                 }  
    290         }  
    291         return encoded;  
     272function normalizerSignature(values){ 
     273 
     274    var value = {}; 
     275 
     276    for( key in values ){ 
     277 
     278        value[isEncoded64(key) ? decode64(key) : key] = values[key]; 
     279 
     280    } 
     281 
     282    return value; 
     283} 
     284/*Verifica se a string input esta em Base 64*/ 
     285function isEncoded64(input){ 
     286        var baseStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 
     287        var encoded = true; 
     288        if ( (input.length % 4) != 0) 
     289                return false; 
     290        for(var i=0; i<input.length; i++){ 
     291                if ( baseStr.indexOf(input[i]) < 0 ){ 
     292                        encoded = false; 
     293                        break; 
     294                } 
     295        } 
     296        return encoded; 
    292297} 
    293298function loadSignature() 
    294299{ 
    295300    var types = fromJSON( document.getElementById( "signature_types" ).value ); 
    296     var signatures;  
    297     if (document.getElementById( "signatures" ).value)  
    298     {  
    299         signatures = fromJSON(document.getElementById("signatures").value);  
    300     } else if (document.getElementById( "signature" ).value) // Caso a assinatura esteja no formato da versão 2.2.10:  
    301     {  
    302         // TODO: Internazionalizar a string  
    303         signatures = {};  
    304         signatures["Assinatura padrão"] = document.getElementById( "signature" ).value;  
    305         if (!document.getElementById("signature_default").value)  
    306         {  
    307             document.getElementById("signature_default").value = "Assinatura padrão";  
    308         }  
    309 }     
    310      
    311     var old_signature = document.getElementById( "signature" ).value;  
    312     var def = document.getElementById( "signature_default" ).value;  
    313         def = isEncoded64(def) ? decode64(def) : def;  
     301    var signatures; 
     302    if (document.getElementById( "signatures" ).value) 
     303    { 
     304        signatures = fromJSON(document.getElementById("signatures").value); 
     305    } else if (document.getElementById( "signature" ).value) // Caso a assinatura esteja no formato da versão 2.2.10: 
     306    { 
     307        // TODO: Internazionalizar a string 
     308        signatures = {}; 
     309        signatures["Assinatura padrão"] = document.getElementById( "signature" ).value; 
     310        if (!document.getElementById("signature_default").value) 
     311        { 
     312            document.getElementById("signature_default").value = "Assinatura padrão"; 
     313        } 
     314    } 
     315 
     316    signatures = normalizerSignature(signatures); 
     317    types = normalizerSignature(types); 
     318 
     319    var old_signature = document.getElementById( "signature" ).value; 
     320    var def = document.getElementById( "signature_default" ).value; 
     321        def = isEncoded64(def) ? decode64(def) : def; 
    314322 
    315323    var counter = 0, ids = [], def_signature = "", noSig = true; 
    316  
    317         signatures = normalizerSignature(signatures);  
    318         types = normalizerSignature(types); 
    319324 
    320325    for( key in signatures ) 
     
    336341 
    337342    if( def_signature !== "" ) 
    338                 document.getElementById( "default_signature" + def_signature ).checked = true; 
     343        document.getElementById( "default_signature" + def_signature ).checked = true; 
    339344    else if( noSig && old_signature ) 
    340345    { 
    341             var type_signature = document.getElementById("type_signature");  
    342         if (type_signature)  
    343         {  
    344             addSignature( type_signature.value !== "html" );  
    345             document.getElementById( "user_signature" + counter ).value = old_signature;  
    346         } 
    347         } 
     346        var type_signature = document.getElementById("type_signature"); 
     347        if (type_signature) 
     348        { 
     349            addSignature( type_signature.value !== "html" ); 
     350            document.getElementById( "user_signature" + counter ).value = old_signature; 
     351        } 
     352    } 
    348353} 
    349354'); 
     
    364369 
    365370create_check_box('View the user name in the header of the messages printed?', 'show_name_print_messages', 'Displays the user name in the header print email'); 
     371 
     372create_check_box('Habilitar funcionalidade de notificar ao receber mensagens filtradas por remetente ?', 'use_alert_filter_criteria', ''); 
     373create_check_box('Habilitar sinalizadores e marcadores em mensagens', 'use_followupflags_and_labels', ''); 
    366374 
    367375//$default = 0; 
  • branches/2.5/expressoMail1_2/index.php

    r7919 r8232  
    1616                'enable_nextmatchs_class' => True 
    1717        ); 
    18          
     18 
    1919        require_once('../header.inc.php'); 
    2020        include_once dirname(__FILE__) . '/../header.inc.php'; 
     
    2525        $AlternateEmailExpresso = $alternativeMailService->getMailAlternateByUidNumber($_SESSION['phpgw_info']['expressomail']['user']['account_id']); 
    2626        $template->set_var("user_email_alternative", implode(",", $AlternateEmailExpresso));     
     27         
     28        if (execmethod('emailadmin.ui.countProfiles') == 0){ 
     29        execmethod('emailadmin.ui.addDefaultProfile'); 
     30    } 
    2731 
    2832        $update_version = $GLOBALS['phpgw_info']['apps']['expressoMail1_2']['version']; 
    2933        $_SESSION['phpgw_info']['expressomail']['user'] = $GLOBALS['phpgw_info']['user']; 
    3034        echo "<script type='text/javascript'>var template = '".$_SESSION['phpgw_info']['expressoMail1_2']['user']['preferences']['common']['template_set']."';</script>"; 
     35 
    3136 
    3237        //jquery and Editor  
     
    7479                  <script type="text/javascript" src="js/DropDownContacts.js"></script> 
    7580                  '; 
    76          
     81 
     82// 
     83//    include_once(__DIR__.'/inc/class.imap_functions.inc.php'); 
     84// 
     85//    $param = array(); 
     86//    $param['folder'] = 'INBOX'; 
     87//    $param['msg_range_begin'] = '1'; 
     88//    $param['msg_range_end'] = '50'; 
     89//    $param['sort_box_type'] = 'SORTARRIVAL'; 
     90//    $param['search_box_type'] = 'ALL'; 
     91//    $param['sort_box_reverse'] = '1'; 
     92// 
     93//    $imapf = new imap_functions(); 
     94//    $initialMessages = $imapf->get_range_msgs2($param); 
     95// 
     96//    echo '<script type="text/javascript"> var initialMessages  = '.json_encode($initialMessages).'</script>'; 
     97 
    7798        /* 
    7899         * TODO: implementar o controle como preferência do usuário  
     
    251272    } 
    252273 
    253     echo '<script type="text/javascript"> var preferences  = '.json_encode($_SESSION['phpgw_info']['user']['preferences']['expressoMail']).'</script>';  
    254   
     274    echo '<script type="text/javascript"> var preferences  = '.json_encode($_SESSION['phpgw_info']['user']['preferences']['expressoMail']).'</script>'; 
     275 
    255276    echo ' 
    256277        <script> var special_folders = new Array(4); 
     
    334355        //echo $obj -> getFilesJs("js/common_functions.js",$update_version); 
    335356        include("inc/load_lang.php"); 
    336      
     357 
    337358    // INCLUDE these JS Files: 
    338359        if ($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages'])  
     
    349370        echo "<script> use_local_messages = ".$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages']."</script>";          
    350371        if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages']) 
    351                 $scripts .= "js/local_messages.js";      
    352                  
     372                $scripts .= "js/local_messages.js"; 
     373 
    353374        echo ' 
    354375                <!--<script type="text/javascript" src="../prototype/modules/mail/js/followupflag.js"></script>--> 
     
    360381        '; 
    361382 
    362         echo  
     383//////////////////////////////////////////// Carregar Timezones para o javascript ///////////////////////////////////////// 
     384 
     385    $zones = timezone_identifiers_list(); 
     386    $Time = new DateTime('now', new DateTimeZone('UTC')); 
     387    $timezone = array(); 
     388 
     389    foreach ($zones as $zone) 
     390    { 
     391        $timezone['timezones'][$zone] = $Time->setTimezone(new DateTimeZone($zone))->format('O'); 
     392    } 
     393 
     394    $localtime = localtime(time(), true); 
     395    $timezone['isDaylightSaving'] =  !!$localtime['tm_isdst'] ? 1 : 0; 
     396 
     397    echo '<script type="text/javascript"> var Timezone  = '.json_encode($timezone).'</script>'; 
     398 
     399//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     400 
     401        echo 
    363402            '<script src="../prototype/plugins/datejs/date-pt-BR.js" language="javascript" ></script> 
    364                 <script src="../prototype/modules/calendar/js/timezone.js" language="javascript" ></script> 
    365                 <script src="../prototype/plugins/dateFormat/dateFormat.js" language="javascript" ></script>  
    366                 <script src="../prototype/modules/calendar/js/calendar.date.js" language="javascript" ></script>  
     403                <script src="../prototype/plugins/dateFormat/dateFormat.js" language="javascript" ></script> 
     404                <script src="../prototype/modules/calendar/js/calendar.date.js" language="javascript" ></script> 
    367405                <script src="../prototype/modules/calendar/js/calendar.codecs.js" language="javascript" ></script> 
    368406                <script src="../prototype/modules/calendar/js/calendar.alarms.js" language="javascript" ></script> 
     
    371409        echo $obj -> getFilesJs($scripts, $update_version); 
    372410        echo '<script type="text/javascript">connector.updateVersion = "'.$update_version.'";</script>'; 
    373                  
    374411        echo '<script type="text/javascript" src="assetic.php"></script>'; 
    375          
     412 
     413/////////   Verifica se o usuario esta fora do escritorio imprime a variavel javascript "outOfficeFlag" ///////////////////////////// 
     414 
     415    include_once(__DIR__ .'/../library/Net/Sieve.php'); 
     416    $sieveConf  =  parse_ini_file( __DIR__."/../prototype/config/Sieve.srv", true ); 
     417    $sieveConf = $sieveConf['config']; 
     418    $sieve = new Net_Sieve(); 
     419    $inVacation = false; 
     420    @$sieve->connect( $sieveConf['host'] , $sieveConf['port'] , $sieveConf['options'] , $sieveConf['useTLS'] ); 
     421    @$sieve->login( $_SESSION['wallet']['Sieve']['user'], $_SESSION['wallet']['Sieve']['password'] , $sieveConf['loginType']); 
     422    $script = $sieve->getScript($sieve->getActive()); 
     423    $pos = strripos($script, "#PseudoScript#"); 
     424    $pseudo_script = substr( $script, $pos+17 ); 
     425    $sieveRules = json_decode( $pseudo_script, true ); 
     426    foreach( $sieveRules as $i => $v) 
     427        if($v['id'] == 'vacation' && $v['enabled'] == 'true') 
     428            $inVacation = true; 
     429 
     430    if($inVacation) 
     431        echo '<script language="javascript"> write_msg(get_lang("Attention, you are in out of office mode."), true);   </script>'; 
     432 
     433////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     434 
     435 
     436 
     437 
    376438 
    377439        // Get Preferences or redirect to preferences page. 
  • branches/2.5/expressoMail1_2/js/InfoContact.js

    r8147 r8232  
    77        this.td; 
    88        this.createCard(); 
     9        this.folder = get_current_folder(); 
    910} 
    1011 
     
    6970 
    7071emInfoContact.prototype.show = function (data){ 
     72        if (this.folder != get_current_folder()){ 
     73                this.folder = get_current_folder(); 
     74                return false; 
     75        }        
    7176        var _this = this; 
    7277        var card = Element("card_cc"); 
    7378        card.style.left = (findPosX(this.td) + 20)+"px"; 
    74         var divScroll = Element("divScrollMain_"+numBox);  
    75         var y = findPosY(this.td) + 20 - (divScroll ? divScroll.scrollTop : 0);  
     79        var divScroll = Element("divScrollMain_"+numBox); 
     80        var y = findPosY(this.td) + 20 - (divScroll ? divScroll.scrollTop : 0); 
    7681        var w_height = is_ie ? document.body.clientHeight + document.body.scrollTop : window.innerHeight + window.pageYOffset; 
    7782        if(y + 160 > w_height) 
  • branches/2.5/expressoMail1_2/js/abas.js

    r8125 r8232  
    1010function setBorderAttributes(ID) 
    1111{ 
    12         this.border_id = "border_id_"+ID; 
    13         this.sequence = ID;  
     12    this.border_id = "border_id_"+ID; 
     13    this.sequence = ID;  
    1414} 
    1515 
     
    1717function alternate_border(ID) 
    1818{ 
    19         msg_selected = false;//Controle da seleção de mensagens 
    20         if(isNaN(ID)) 
    21                 if(preferences.use_shortcuts == "1") 
    22                         select_msg((ID.split("_"))[0]); 
    23         if( document.getElementById("div_menu_c3") != null ) 
    24         { 
    25                 //div que contém divs de paginação de todas abas de listagem possíveis (listagem de pasta e listagem de pesquisa) 
    26                 var node = document.getElementById("div_menu_c3").firstChild; 
    27                 //Se for diferente da aba de listagem, remove a paginação 
    28                 if(currentTab != 0){ 
    29                         //Enquanto node for true (retorna false se não houver mais elementos) 
    30                         while ( node ) { 
    31                                 node.style.display = "none"; 
    32                                 node = node.nextSibling; 
    33                         } 
    34                 } 
    35                  
    36                 if( document.getElementById("span_paging"+ID) != null ) 
    37                         document.getElementById("span_paging"+ID).style.display = "block"; 
    38         } 
    39          
    40         if ( typeof win == 'object' && win.close && win.close.constructor == Function ){ 
     19    
     20 
     21    msg_selected = false;//Controle da seleção de mensagens 
     22    if(isNaN(ID)) 
     23        if(preferences.use_shortcuts == "1") 
     24            select_msg((ID.split("_"))[0]); 
     25    if( document.getElementById("div_menu_c3") != null ) 
     26    { 
     27        //div que contém divs de paginação de todas abas de listagem possíveis (listagem de pasta e listagem de pesquisa) 
     28        var node = document.getElementById("div_menu_c3").firstChild; 
     29        //Se for diferente da aba de listagem, remove a paginação 
     30        if(currentTab != 0){ 
     31            //Enquanto node for true (retorna false se não houver mais elementos) 
     32            while ( node ) { 
     33                node.style.display = "none"; 
     34                node = node.nextSibling; 
     35            } 
     36        } 
     37         
     38        if( document.getElementById("span_paging"+ID) != null ) 
     39            document.getElementById("span_paging"+ID).style.display = "block"; 
     40    } 
     41     
     42    if ( typeof win == 'object' && win.close && win.close.constructor == Function ){ 
    4143            var search_win = document.getElementById( 'window_QuickCatalogSearch' ); 
    4244            if(search_win){ 
     
    4547            win.close( ); 
    4648        } 
    47                  
    48         if (! Element('border_id_'+ID)) 
    49                 return false; // Not possible to alternate 
    50         show_hide_span_paging(ID); 
    51         spanD = Element("span_D"); 
    52         if (spanD) 
    53                 spanD.style.display = (openTab.type[ID] == 0 ? '' : 'none'); 
    54  
    55         var footer_menu = Element("footer_menu");        
    56         var aba = Element('border_id_'+ID); 
    57         if (footer_menu != null) { 
    58                 footer_menu.style.display = (openTab.type[ID] != 4 ? '' : 'none'); 
    59                 var alternate_menu = document.getElementById('localOption'); 
    60                  
    61                 if(alternate_menu != null && alternate_menu != 'undefined'){ //Quando Carregado o expresso mail 
    62                         if(openTab.imapBox[ID]!= null && openTab.imapBox[ID]!= 'undefined' ){ //Quando abrir uma Nova Mensagem 
    63                                 if((openTab.imapBox[ID].indexOf("local_") >= 0)){                                                
    64                                                 alternate_menu.title = get_lang("Unarchive"); 
    65                                                 alternate_menu.removeAttribute("onclick"); 
    66                                                 if(!is_ie) 
    67                                                         alternate_menu.setAttribute("onclick",  'expresso_local_messages.unarchive_msgs(\''+openTab.imapBox[ID]+'\', null)'); 
    68                                                 else{ 
    69                                                         alternate_menu.onclick = function(){ 
    70                                                                 expresso_local_messages.unarchive_msgs(openTab.imapBox[ID], null); 
    71                                                         } 
    72                                                 } 
    73                                                 alternate_menu.innerHTML = get_lang("Unarchive"); 
    74                                                  
    75                                         }else{ 
    76                                                 alternate_menu.title = get_lang("Archive"); 
    77                                                 alternate_menu.removeAttribute("onclick"); 
    78                                                 if(!is_ie) 
    79                                                         alternate_menu.setAttribute("onclick", 'archive_msgs(\''+openTab.imapBox[ID]+'\', null)');               
    80                                                 else{ 
    81                                                         alternate_menu.onclick = function(){ 
    82                                                                 archive_msgs(openTab.imapBox[ID], null); 
    83                                                         }        
    84                                                 } 
    85                                                 alternate_menu.innerHTML = get_lang("Archive"); 
    86                                         } 
    87                                          
    88                         } 
    89                 } 
    90                  
    91                 if((aba.id.indexOf("_r") < 0) && (aba.id.indexOf("_0") < 0) && (aba.id.indexOf("id_search_") < 0) && (aba.id.indexOf("_s") < 0)){ 
    92                         spanD.style.display = 'none'; 
    93                         footer_menu.style.display = 'none';                      
    94                 } 
    95         } 
    96  
    97  
    98         var len = BordersArray.length; 
    99         for (var i=0; i < len; i++) 
    100         { 
    101                 m = document.getElementById(BordersArray[i].border_id); 
    102                 if ((m)&&(m.className == 'menu-sel')) 
    103                 { 
    104                         m.className = 'menu'; 
    105                         c = document.getElementById("content_id_"+BordersArray[i].sequence); 
    106                         c.style.display = 'none'; 
    107                         if(Element("font_border_id_"+BordersArray[i].sequence)) 
    108                                 Element("font_border_id_"+BordersArray[i].sequence).className = 'font-menu';     
    109  
    110                 } 
    111         } 
    112  
    113         m = Element("border_id_"+ID); 
    114         if (m) 
    115                 m.className = 'menu-sel'; 
    116         if(Element("font_border_id_" + ID)) 
    117                 Element("font_border_id_" + ID).className = 'font-menu-sel'; 
    118         var c = Element("content_id_"+ID) 
    119         if (c) 
    120                 c.style.display = ''; 
    121  
    122  
    123         // hide the DropDrowContact, if necessary 
    124         window_DropDownContacts = Element('tipDiv'); 
    125         if ((window_DropDownContacts)&&(window_DropDownContacts.style.visibility != 'hidden')){ 
    126                 window_DropDownContacts.style.visibility = 'hidden'; 
    127         } 
    128  
    129         numBox = getNumBoxFromTabId(ID); 
    130         if (typeof(ID)=='number') { 
     49         
     50    if (! Element('border_id_'+ID)) 
     51        return false; // Not possible to alternate 
     52    show_hide_span_paging(ID); 
     53    spanD = Element("span_D"); 
     54    if (spanD) 
     55        spanD.style.display = (openTab.type[ID] == 0 ? '' : 'none'); 
     56 
     57    var footer_menu = Element("footer_menu");    
     58    var aba = Element('border_id_'+ID); 
     59    if (footer_menu != null) { 
     60        footer_menu.style.display = (openTab.type[ID] != 4 ? '' : 'none'); 
     61        var alternate_menu = document.getElementById('localOption'); 
     62         
     63        if(alternate_menu != null && alternate_menu != 'undefined'){ //Quando Carregado o expresso mail 
     64            if(openTab.imapBox[ID]!= null && openTab.imapBox[ID]!= 'undefined' ){ //Quando abrir uma Nova Mensagem 
     65                if((openTab.imapBox[ID].indexOf("local_") >= 0)){                        
     66                        alternate_menu.title = get_lang("Unarchive"); 
     67                        alternate_menu.removeAttribute("onclick"); 
     68                        if(!is_ie) 
     69                            alternate_menu.setAttribute("onclick",  'expresso_local_messages.unarchive_msgs(\''+openTab.imapBox[ID]+'\', null)'); 
     70                        else{ 
     71                            alternate_menu.onclick = function(){ 
     72                                expresso_local_messages.unarchive_msgs(openTab.imapBox[ID], null); 
     73                            } 
     74                        } 
     75                        alternate_menu.innerHTML = get_lang("Unarchive"); 
     76                         
     77                    }else{ 
     78                        alternate_menu.title = get_lang("Archive"); 
     79                        alternate_menu.removeAttribute("onclick"); 
     80                        if(!is_ie) 
     81                            alternate_menu.setAttribute("onclick", 'archive_msgs(\''+openTab.imapBox[ID]+'\', null)');       
     82                        else{ 
     83                            alternate_menu.onclick = function(){ 
     84                                archive_msgs(openTab.imapBox[ID], null); 
     85                            }    
     86                        } 
     87                        alternate_menu.innerHTML = get_lang("Archive"); 
     88                    } 
     89                     
     90            } 
     91        } 
     92         
     93        if((aba.id.indexOf("_r") < 0) && (aba.id.indexOf("_0") < 0) && (aba.id.indexOf("id_search_") < 0) && (aba.id.indexOf("_s") < 0)){ 
     94            spanD.style.display = 'none'; 
     95            footer_menu.style.display = 'none';          
     96        } 
     97    } 
     98 
     99 
     100    var len = BordersArray.length; 
     101    for (var i=0; i < len; i++) 
     102    { 
     103        m = document.getElementById(BordersArray[i].border_id); 
     104        if ((m)&&(m.className == 'menu-sel')) 
     105        { 
     106            m.className = 'menu'; 
     107            c = document.getElementById("content_id_"+BordersArray[i].sequence); 
     108            c.style.display = 'none'; 
     109            if(Element("font_border_id_"+BordersArray[i].sequence)) 
     110                Element("font_border_id_"+BordersArray[i].sequence).className = 'font-menu';     
     111 
     112        } 
     113    } 
     114 
     115    m = Element("border_id_"+ID); 
     116    if (m) 
     117        m.className = 'menu-sel'; 
     118    if(Element("font_border_id_" + ID)) 
     119        Element("font_border_id_" + ID).className = 'font-menu-sel'; 
     120    var c = Element("content_id_"+ID) 
     121    if (c) 
     122        c.style.display = ''; 
     123 
     124 
     125    // hide the DropDrowContact, if necessary 
     126    window_DropDownContacts = Element('tipDiv'); 
     127    if ((window_DropDownContacts)&&(window_DropDownContacts.style.visibility != 'hidden')){ 
     128        window_DropDownContacts.style.visibility = 'hidden'; 
     129    } 
     130 
     131    numBox = getNumBoxFromTabId(ID); 
     132    if (typeof(ID)=='number') { 
    131133                 numBox = ID; 
    132134         } 
     
    145147             } 
    146148         } 
    147         currentTab=ID; 
    148         if( document.getElementById('to_'+ID) && document.getElementById('to_'+ID).type == "textarea"){  
    149             document.getElementById('to_'+ID).focus();  
    150         } 
    151         if (ID == 0){  
    152                 updateSelectedMsgs(); 
    153         } 
    154         RichTextEditor.setEditable(ID); 
    155         resizeWindow(); 
    156         return ID; 
     149    currentTab=ID; 
     150    if( document.getElementById('to_'+ID) && document.getElementById('to_'+ID).type == "textarea"){  
     151        document.getElementById('to_'+ID).focus();  
     152    } 
     153    if (ID == 0){  
     154        updateSelectedMsgs(); 
     155    } 
     156    RichTextEditor.setEditable(ID); 
     157    resizeWindow(); 
     158 
     159    return ID; 
    157160} 
    158161 
    159162function create_border(borderTitle, id_value, search) 
    160163{ 
    161         borderTitle = ( ( borderTitle && borderTitle.constructor == String && borderTitle.length > 0 ) ? borderTitle : ' ' ); 
     164    borderTitle = ( ( borderTitle && borderTitle.constructor == String && borderTitle.length > 0 ) ? borderTitle : ' ' ); 
    162165    borderTitle = html_entities(borderTitle);     
    163         var resize = false; 
     166    var resize = false; 
    164167        resize = resize_borders(); 
    165168        if (!resize){ 
    166169            var str_continue = ''; 
    167170            var bolContinue = true; 
    168                         str_continue = '\n' + get_lang('You must manually close one of your tabs before opening a new one'); 
     171            str_continue = '\n' + get_lang('You must manually close one of your tabs before opening a new one'); 
    169172            if (preferences.auto_close_first_tab == 1){ 
    170173                var children = Element('border_tr').childNodes; 
     
    180183                        } 
    181184                        if (bolDelete || bolContinue){ 
    182                                                         str_fechar = '\n' + get_lang('Reached maximum tab limit. Want to close this tab'); 
    183                                                         var confirmacao = confirm(str_fechar); 
     185                            str_fechar = '\n' + get_lang('Reached maximum tab limit. Want to close this tab'); 
     186                            var confirmacao = confirm(str_fechar); 
    184187                            if(confirmacao){ 
    185188                            bolContinue = false; 
    186189                            delete_border(num_child, 'false'); 
    187190                            break; 
    188                                                         }else{ 
    189                                                                 return 'maximo'; 
     191                            }else{ 
     192                                return 'maximo'; 
    190193                        } 
    191194                    } 
    192195                } 
    193196            } 
    194             }else{                       
     197            }else{           
    195198                alert(get_lang('Reached maximum tab limit') + str_continue ); 
    196199                return 'maximo'; 
    197200            } 
    198201        } 
    199          
    200         if (! id_value){ // Is new message? 
    201                 var ID = parseInt(BordersArray[(BordersArray.length-1)].sequence) + 1; 
    202                         if(isNaN(ID)){ 
    203                                 var aux = BordersArray[(BordersArray.length-1)].sequence.split("_"); 
    204                                 ID = parseInt(aux[1]) + 1; 
    205                         } 
     202     
     203    if (! id_value){ // Is new message? 
     204        var ID = parseInt(BordersArray[(BordersArray.length-1)].sequence) + 1; 
     205            if(isNaN(ID)){ 
     206                var aux = BordersArray[(BordersArray.length-1)].sequence.split("_"); 
     207                ID = parseInt(aux[1]) + 1; 
     208            } 
    206209        }else 
    207         { 
    208                 if (Element("border_id_"+id_value)) // It's opened already! 
    209                         return alternate_border(id_value); 
    210                  
    211                 var ID = id_value; 
    212                 if(isNaN(ID) && ID.indexOf("search_local") >= 0){ 
    213                         if(current_folder.indexOf("local") >= 0) 
    214                                 openTab.imapBox[ID] = current_folder; 
    215                         else 
    216                                 openTab.imapBox[ID] = 'local_search'; 
    217                 }else if(isNaN(ID) && ID.indexOf("search_") >= 0){ 
    218                         if(current_folder.indexOf("local") < 0) 
    219                                 openTab.imapBox[ID] = current_folder; 
    220                         else 
    221                                 openTab.imapBox[ID] = 'search'; 
    222                 }else if( (currentTab != 0) && isNaN(currentTab) && (currentTab.indexOf("search") >= 0) && (ID.indexOf("msg") < 0) ) { 
    223                         var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 
    224                         ID_TR = ID.toString().substr(0,ID.toString().indexOf("_r")); 
    225                         var tr = Element(ID_TR) ? Element(ID_TR) : Element(ID_TR+"_s"+id_border); 
    226                         openTab.imapBox[ID] = (tr.getAttribute('name') == null?get_current_folder():tr.getAttribute('name')); 
    227                 }else 
    228                         openTab.imapBox[ID] = current_folder; 
    229         } 
    230         td = document.createElement("TD"); 
    231         td.id="border_id_" + ID; 
    232         if(resize)  
    233         { 
    234                 td.setAttribute("width", parseInt(resize)+"px"); 
    235                 td.style.width = parseInt(resize)+"px"; 
    236         } 
    237         else 
    238                 td.setAttribute("width", "200px"); 
    239  
    240         td.setAttribute("align", "right"); 
    241         td.onclick = function(){alternate_border(ID);resizeWindow()}; 
    242         td.setAttribute("noWrap","true"); 
    243         td.setAttribute("role",get_current_folder()); 
    244         td.title = borderTitle; 
    245         borderTitle = borderTitle ?  borderTitle : id_value ? get_lang("No Subject") : " "      ; 
    246         td.value = borderTitle; 
    247         if (borderTitle.length > 21) 
    248                 borderTitle = borderTitle.substring(0,21) + "..."; 
    249  
    250         if ( resize ) 
    251                 borderTitle = borderTitle.substring(0, resize*0.08); 
    252          
    253         var cc = search; 
    254         if(!cc){ 
    255                 if(isNaN(ID)){ 
    256                         var is_local = ID.match('.*_local_.*'); 
    257                         if(!is_local) 
    258                                 cc = document.getElementById("em_message_search").value; 
    259                         else{ 
    260                                 if (currentTab == 0) 
    261                                         cc = ""; 
    262                                 else 
    263                                         cc = document.getElementsByName(currentTab)[0].value; 
    264                         } 
    265                 }else{ 
    266                         cc =""; 
    267                 } 
    268         } 
    269         td.innerHTML = "<div><div id='font_border_id_" + ID+"' class='font-menu'>" + 
     210    { 
     211        if (Element("border_id_"+id_value)) // It's opened already! 
     212            return alternate_border(id_value); 
     213         
     214        var ID = id_value; 
     215        if(isNaN(ID) && ID.indexOf("search_local") >= 0){ 
     216            if(current_folder.indexOf("local") >= 0) 
     217                openTab.imapBox[ID] = current_folder; 
     218            else 
     219                openTab.imapBox[ID] = 'local_search'; 
     220        }else if(isNaN(ID) && ID.indexOf("search_") >= 0){ 
     221            if(current_folder.indexOf("local") < 0) 
     222                openTab.imapBox[ID] = current_folder; 
     223            else 
     224                openTab.imapBox[ID] = 'search'; 
     225        }else if( (currentTab != 0) && isNaN(currentTab) && (currentTab.indexOf("search") >= 0) && (ID.indexOf("msg") < 0) ) { 
     226            var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 
     227            ID_TR = ID.toString().substr(0,ID.toString().indexOf("_r")); 
     228            var tr = Element(ID_TR) ? Element(ID_TR) : Element(ID_TR+"_s"+id_border); 
     229            openTab.imapBox[ID] = (tr.getAttribute('name') == null?get_current_folder():tr.getAttribute('name')); 
     230        }else 
     231            openTab.imapBox[ID] = current_folder; 
     232    } 
     233    td = document.createElement("TD"); 
     234    td.id="border_id_" + ID; 
     235    if(resize)  
     236    { 
     237        td.setAttribute("width", parseInt(resize)+"px"); 
     238        td.style.width = parseInt(resize)+"px"; 
     239    } 
     240    else 
     241        td.setAttribute("width", "200px"); 
     242 
     243    td.setAttribute("align", "right"); 
     244    td.onclick = function(){alternate_border(ID);resizeWindow()}; 
     245    td.setAttribute("noWrap","true"); 
     246    td.setAttribute("role",get_current_folder()); 
     247    td.title = borderTitle; 
     248    borderTitle = borderTitle ?  borderTitle : id_value ? get_lang("No Subject") : " "  ; 
     249    td.value = borderTitle; 
     250    if (borderTitle.length > 21) 
     251        borderTitle = borderTitle.substring(0,21) + "..."; 
     252 
     253    if ( resize ) 
     254        borderTitle = borderTitle.substring(0, resize*0.08); 
     255     
     256    var cc = search; 
     257    if(!cc){ 
     258        if(isNaN(ID)){ 
     259            var is_local = ID.match('.*_local_.*'); 
     260            if(!is_local) 
     261                cc = document.getElementById("em_message_search").value; 
     262            else{ 
     263                if (currentTab == 0) 
     264                    cc = ""; 
     265                else 
     266                    cc = document.getElementsByName(currentTab)[0].value; 
     267            } 
     268        }else{ 
     269            cc =""; 
     270        } 
     271    } 
     272    td.innerHTML = "<div><div id='font_border_id_" + ID+"' class='font-menu'>" + 
    270273                                borderTitle + 
    271274                            "</div>\n\ 
     
    273276                                <img onmousedown='javascript:return false' style='cursor:pointer' onclick=delete_border('" + ID + "','false') src='templates/"+template+"/images/close_button.gif'/>\n\ " + 
    274277                            "</div>\n\ " +  
    275                                                         "<input type=\"hidden\" name=\""+ ID+"\" value=\""+cc+"\"></div>";               
    276         bb = document.getElementById("border_blank"); 
    277         parent_bb = bb.parentNode; //Pego o tbody 
    278         parent_bb.insertBefore(td, bb); 
    279  
    280         if((typeof(id_value) == 'string') && id_value.match(/_r/)){ 
    281                 $(td).draggable({ 
    282                         start : function(){ 
    283                                 $('.upper, .lower').show(); 
    284                         $(".lower").css("top", ($("#content_folders").height()-18) + $("#content_folders").offset().top); 
    285                                 if($(".shared-folders").length){ 
    286                                         $(".shared-folders").parent().find('.folder:not(".shared-folders")').droppable({ 
    287                                                 over : function(a, b){                                           
    288                                                         //SETA BORDA EM VOLTA DA PASTA 
    289                                                         over = $(this); 
    290                                                         $(this).addClass("folder-over"); 
    291                                                         if(($(this)[0] != $(this).parent().find(".head_folder")[0])) 
    292                                                                 if($(this).prev()[0]) 
    293                                                                         if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){ 
    294                                                                                 setTimeout(function(){ 
    295                                                                                         if(over.hasClass("folder-over")) 
    296                                                                                                 over.prev().trigger("click"); 
    297                                                                                 }, 500); 
    298                                                                                  
    299                                                                         } 
    300                                                         //$("#content_folders").stop().scrollTo($(this), {axis:'y', margin:true, offset:-50, duration:400}); 
    301                                                 }, 
    302                                                 out : function(){ 
    303                                                         //RETIRA BORDA EM VOLTA DA PASTA 
    304                                                         $(this).removeClass("folder-over"); 
    305                                                 }, 
    306                                                 //accept: ".draggin_mail", 
    307                                                 drop : function(event, ui){ 
    308                                                         $(this).css("border", "0"); 
    309                                                         if($(this).parent().attr('id') == undefined){ 
    310                                                                 var folder_to = 'INBOX'; 
    311                                                                 var to_folder_title = get_lang("Inbox"); 
    312                                                         }else{ 
    313                                                                 var folder_to = $(this).parent().attr('id'); 
    314                                                                 var to_folder_title = $(this).attr('title'); 
    315                                                         }                
    316                                                         var folder_to_move = ui.draggable.parent().attr('id'); 
    317                                                         var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 
    318                                                         if(folder_to_move == "border_tr"){ 
    319                                                                 var id_msg = border_id.split("_")[0]; 
    320                                                                 folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 
    321                                                                 move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); 
    322                                                                 return refresh(); 
    323                                                         } 
    324                                                 } 
    325                                         }); 
    326                                 } 
    327                         }, 
    328                         stop :function(){ 
    329                                 $('.upper, .lower').hide(); 
    330                                 $(".shared-folders").parent().find(".folder").droppable("destroy"); 
    331                         }, 
    332                         helper: function(event){ 
    333                                 if(     borderTitle.length > 18 ) 
    334                                         return $("<td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : borderTitle.substring(0,18) + "...", type: "messages"})+"</td>"); 
    335                                 else 
    336                                         return $("<td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : borderTitle, type: "messages"})+"</td>"); 
    337                         }, 
    338                         delay: 150, 
    339                         cursorAt: {top: 5, left: 56}, 
    340                         refreshPositions: true , 
    341                         containment: "#divAppbox" 
    342                 }); 
    343         } 
    344                 //_dragArea.makeDragged(td, id_value,td.value); 
    345  
    346         BordersArray[BordersArray.length] = new setBorderAttributes(ID); 
    347  
    348         var div = document.createElement("DIV"); 
    349         div.id = "content_id_" + ID; 
    350         div.className = "conteudo"; 
    351         div.style.display=''; 
    352  
    353         div.style.overflow = "hidden"; 
    354  
    355         Element("exmail_main_body").insertBefore(div,Element("footer_menu"));        
    356         if (!is_ie) 
    357                 resizeWindow(); 
    358         alternate_border(ID); 
     278                            "<input type=\"hidden\" name=\""+ ID+"\" value=\""+cc+"\"></div>";       
     279    bb = document.getElementById("border_blank"); 
     280    parent_bb = bb.parentNode; //Pego o tbody 
     281    parent_bb.insertBefore(td, bb); 
     282 
     283    if((typeof(id_value) == 'string') && id_value.match(/_r/)){ 
     284        $(td).draggable({ 
     285            start : function(){ 
     286                $('.upper, .lower').show(); 
     287                $(".lower").css("top", ($("#content_folders").height()-18) + $("#content_folders").offset().top); 
     288                /* Habilitar anexar mensagem por drag-and-drop, se a aba atual for editável,   
     289                ou seja, nem de leitura (2), nem de lista de mensagens (0):*/  
     290                var current_tab_type = openTab.type[currentTab];  
     291                if (current_tab_type != 0 && current_tab_type != 2){  
     292                    var dropzone = $("#fileupload_msg" + currentTab + "_droopzone");  
     293                    dropzone.show();  
     294                    dropzone.prev().hide();  
     295                    dropzone.droppable({  
     296                        over: function (event, ui){  
     297                            dropzone.addClass('hover in');  
     298                            $(ui.helper).find(".draggin-folder,.draggin-mail").css("color", "green");  
     299                        },  
     300                        out: function (event, ui) {  
     301                            dropzone.removeClass('hover in');  
     302                            $(ui.helper).find(".draggin-folder,.draggin-mail").css("color", "");  
     303                        },  
     304                        drop: function (event, ui) {  
     305                            var border_id = ui.draggable.find("input[type=hidden]").attr("name");  
     306                            var id_msg = border_id.split("_")[0];  
     307                            var folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder());  
     308                            attach_message(folder, id_msg); /* Anexa a mensagem especificada (por folder e id_msg)  
     309                                                               na mensagem sendo criada.*/  
     310                        }  
     311                    });  
     312                }  
     313                if($(".shared-folders").length){ 
     314                    $(".shared-folders").parent().find('.folder:not(".shared-folders")').droppable({ 
     315                        over : function(a, b){                       
     316                            //SETA BORDA EM VOLTA DA PASTA 
     317                            $(b.helper).find(".draggin-folder,.draggin-mail").css("color", "green"); 
     318                            over = $(this); 
     319                            $(this).addClass("folder-over"); 
     320                            if(($(this)[0] != $(this).parent().find(".head_folder")[0])) 
     321                                if($(this).prev()[0]) 
     322                                    if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){ 
     323                                        setTimeout(function(){ 
     324                                            if(over.hasClass("folder-over")) 
     325                                                over.prev().trigger("click"); 
     326                                        }, 500); 
     327                                         
     328                                    } 
     329                            //$("#content_folders").stop().scrollTo($(this), {axis:'y', margin:true, offset:-50, duration:400}); 
     330                        }, 
     331                        out : function(a,b){ 
     332                            //RETIRA BORDA EM VOLTA DA PASTA 
     333                            $(b.helper).find(".draggin-folder,.draggin-mail").css("color", ""); 
     334                            $(this).removeClass("folder-over"); 
     335                        }, 
     336                        //accept: ".draggin_mail", 
     337                        drop : function(event, ui){ 
     338                            $(this).css("border", "0"); 
     339                            if($(this).parent().attr('id') == undefined){ 
     340                                var folder_to = 'INBOX'; 
     341                                var to_folder_title = get_lang("Inbox"); 
     342                            }else{ 
     343                                var folder_to = $(this).parent().attr('id'); 
     344                                var to_folder_title = $(this).attr('title'); 
     345                            }        
     346                            var folder_to_move = ui.draggable.parent().attr('id'); 
     347                            var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 
     348                            if(folder_to_move == "border_tr"){ 
     349                                var id_msg = border_id.split("_")[0]; 
     350                                folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 
     351                                move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); 
     352                                return refresh(); 
     353                            } 
     354                        } 
     355                    }); 
     356                } 
     357            }, 
     358            stop :function(){ 
     359                $('.upper, .lower').hide(); 
     360                $(".shared-folders").parent().find(".folder").droppable("destroy"); 
     361                /* Habilitar anexar mensagem por drag-and-drop, se a aba atual for editável,   
     362                ou seja, nem de leitura (2), nem de lista de mensagens (0):*/  
     363                var current_tab_type = openTab.type[currentTab];  
     364                if (current_tab_type != 0 && current_tab_type != 2){  
     365                    var dropzone = $("#fileupload_msg" + currentTab + "_droopzone");  
     366                    dropzone.hide();  
     367                    dropzone.prev().show();  
     368                }  
     369            }, 
     370            helper: function(event){ 
     371                if( borderTitle.length > 18 ) 
     372                    return $("<td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : borderTitle.substring(0,18) + "...", type: "messages"})+"</td>"); 
     373                else 
     374                    return $("<td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : borderTitle, type: "messages"})+"</td>"); 
     375            }, 
     376            delay: 150, 
     377            cursorAt: {top: 5, left: 56}, 
     378            refreshPositions: true , 
     379            containment: "#divAppbox" 
     380        }); 
     381    } 
     382        //_dragArea.makeDragged(td, id_value,td.value); 
     383 
     384    BordersArray[BordersArray.length] = new setBorderAttributes(ID); 
     385 
     386    var div = document.createElement("DIV"); 
     387    div.id = "content_id_" + ID; 
     388    div.className = "conteudo"; 
     389    div.style.display=''; 
     390 
     391    div.style.overflow = "hidden"; 
     392 
     393    Element("exmail_main_body").insertBefore(div,Element("footer_menu"));        
     394    if (!is_ie) 
     395        resizeWindow(); 
     396    alternate_border(ID); 
    359397    uidsSave[ID] = []; 
    360398    saveBorderError[ID] = false; 
    361         return ID; 
     399    return ID; 
    362400} 
    363401 
    364402function resize_borders() 
    365403{ 
    366         var numBorders = count_borders(); 
    367  
    368         if (numBorders > 8) 
    369                 return false; 
    370  
    371         return redim_borders(numBorders+1); 
     404    var numBorders = count_borders(); 
     405 
     406    if (numBorders > 8) 
     407        return false; 
     408 
     409    return redim_borders(numBorders+1); 
    372410} 
    373411 
    374412function count_borders() 
    375413{ 
    376         var numBorders = 0; 
    377         var children = Element('border_tr').childNodes; 
    378         for (var i=0; i<children.length; i++) { 
    379             if ((children[i].nodeName === 'TD') && (children[i].id!=='border_id_0') && (children[i].id!=='border_blank')) 
    380                 numBorders++; 
    381         } 
    382  
    383         return numBorders; 
     414    var numBorders = 0; 
     415    var children = Element('border_tr').childNodes; 
     416    for (var i=0; i<children.length; i++) { 
     417        if ((children[i].nodeName === 'TD') && (children[i].id!=='border_id_0') && (children[i].id!=='border_blank')) 
     418        numBorders++; 
     419    } 
     420 
     421    return numBorders; 
    384422} 
    385423 
    386424function redim_borders(numBorders) 
    387425{ 
    388         var children = Element('border_tr').childNodes; 
    389         var clientWidth = (window.document.body.clientWidth - findPosX(Element("exmail_main_body"))) - Element("border_id_0").clientWidth - 30; 
    390         var newWidthTD = (clientWidth/numBorders)-6; 
    391         newWidthTD = newWidthTD > 200 ? 200 : (newWidthTD < 50 ? 50 : newWidthTD); 
    392         children = Element('border_tr').childNodes; 
    393         for (var i=0; i<children.length; i++) { 
    394                 if ((children[i].nodeName === 'TD') && (children[i].id!=='border_id_0') && (children[i].id!=='border_blank')){ 
    395                         $(children[i]).css("width", newWidthTD); 
    396                         $(children[i]).find('div:first').css("width", newWidthTD); 
    397                         set_border_caption(children[i].id, children[i].title, newWidthTD); 
    398                 } 
    399         } 
    400         return newWidthTD; 
     426    var children = Element('border_tr').childNodes; 
     427    var clientWidth = (window.document.body.clientWidth - findPosX(Element("exmail_main_body"))) - Element("border_id_0").clientWidth - 30; 
     428    var newWidthTD = (clientWidth/numBorders)-6; 
     429    newWidthTD = newWidthTD > 200 ? 200 : (newWidthTD < 50 ? 50 : newWidthTD); 
     430    children = Element('border_tr').childNodes; 
     431    for (var i=0; i<children.length; i++) { 
     432        if ((children[i].nodeName === 'TD') && (children[i].id!=='border_id_0') && (children[i].id!=='border_blank')){ 
     433            $(children[i]).css("width", newWidthTD); 
     434            $(children[i]).find('div:first').css("width", newWidthTD); 
     435            set_border_caption(children[i].id, children[i].title, newWidthTD); 
     436        } 
     437    } 
     438    return newWidthTD; 
    401439} 
    402440 
     
    411449            border_width = border.clientWidth; 
    412450        } 
    413         var caption = ""; 
     451    var caption = ""; 
    414452    if (border != null){ 
    415                 Element("font_"+border.id).style.width = (border_width - 35)+'px'; 
    416                 Element("font_"+border.id).innerHTML = title; 
    417         } 
    418         return(title); 
     453        Element("font_"+border.id).style.width = (border_width - 35)+'px'; 
     454        Element("font_"+border.id).innerHTML = title; 
     455    } 
     456    return(title); 
    419457} 
    420458 
     
    442480                            'type':     'question', 
    443481                            'overlay_opacity': '0.5', 
    444                                                         'custom_class': 'custom-zebra-filter', 
     482                            'custom_class': 'custom-zebra-filter', 
    445483                            'buttons':  buttons, 
    446484                            'width' : width, 
    447485                            'onClose':  function(clicked) { 
    448                                                                         if(clicked == 'Cancelar'){ 
    449                                                                                 if (RichTextEditor.plain[id] != true)  
    450                                                                                         setTimeout("RichTextEditor.focus("+ID+")",100);                   
    451                                                                                 else   
    452                                                                                         $('#body_'+ID).focus();  
    453                                                                         } 
     486                                    if(clicked == 'Cancelar'){ 
     487                                        if (RichTextEditor.plain[id] != true)  
     488                                            setTimeout("RichTextEditor.focus("+ID+")",100);                   
     489                                        else   
     490                                            $('#body_'+ID).focus();  
     491                                    } 
    454492                                    if(clicked == 'Descartar alterações' || clicked == 'Descartar alterações e anexos' ) { 
    455493                                        if (openTab.imapBox[ID] && !openTab.toPreserve[ID]) 
     
    477515                                                                $("#cc_"+ID).focus(); 
    478516                                                        else if ($("#tr_cco_"+ID).css('display') != 'none' && $.trim($("#cco_"+ID).val()) == "") 
    479                                                                 $("#cco_"+ID).focus();           
     517                                                                $("#cco_"+ID).focus();       
    480518                                                        else if ($.trim($("#subject_"+ID).val()) == "") 
    481519                                                                $("#subject_"+ID).focus(); 
     
    494532                            }})}, 300);     
    495533        } 
    496          
     534     
    497535} 
    498536 
    499537function editTest(ID){ 
    500538    var body = document.getElementById('body_'+ ID); 
    501         var content = $('#content_id_'+ ID); 
     539    var content = $('#content_id_'+ ID); 
    502540    if (body) 
    503541    { 
     
    522560    } 
    523561 
    524     if($("#content_id_"+currentTab+" textarea[name=input_to]").length ){ 
    525         if($("#content_id_"+currentTab+" .save").is(':disabled') ) { 
     562    if($("#content_id_"+ID+" textarea[name=input_to]").length ){ 
     563        if($("#content_id_"+ID+" .save").is(':disabled') ) { 
    526564             close_delete(ID, msg_sent); 
    527         } else if( $("#content_id_"+currentTab+" .save").is(':enabled') ) { 
     565        } else if( $("#content_id_"+ID+" .save").is(':enabled') ) { 
    528566             return(draftTests(ID, msg_sent)); 
    529567        } 
     
    537575      
    538576    /*var bolExecuteClose = true; 
    539         var borderElem = Element("border_id_" + ID); 
    540         if (borderElem){ 
     577    var borderElem = Element("border_id_" + ID); 
     578    if (borderElem){ 
    541579            borderElem.onclick = null; // It's avoid a FF3 bug 
    542580        }else{ 
    543581            return false; 
    544582        } 
    545         if (msg_sent == 'false') 
    546         { 
     583    if (msg_sent == 'false') 
     584    { 
    547585            if (editTest(ID)){ 
    548586                bolExecuteClose = false; 
     
    550588                    return(draftTests(ID, msg_sent)); 
    551589            } 
    552         } 
     590    } 
    553591     
    554592         
     
    556594        { 
    557595            close_delete(ID, msg_sent); 
    558                 } 
    559                 delete(openTab.type[ID]); 
     596        } 
     597        delete(openTab.type[ID]); 
    560598        return true;*/ 
    561599          
     
    564602function close_delete(ID, msg_sent) 
    565603{ 
    566         openTab.toPreserve[ID] = false; 
     604    openTab.toPreserve[ID] = false; 
    567605        // Limpa o autosave 
    568606            if (preferences.auto_save_draft == 1 && autoSaveControl.timer[ID] !== null ) 
     
    573611        //////////////////////////////// 
    574612         
    575         hold_session = false; 
    576         if (exist_className(Element('border_id_'+ID),'menu-sel')) 
    577         { 
    578                 if (BordersArray[BordersArray.length-2].sequence == ID) 
    579                         this.alternate_border(0); 
    580                 else 
    581                         this.alternate_border(BordersArray[BordersArray.length-2].sequence); 
    582         } 
    583  
    584         // Remove TD, title 
    585         border = Element('border_id_' + ID); 
    586         border.parentNode.removeChild(border); 
    587         var j=0; 
    588         var new_BordersArray = new Array(); 
    589         for (i=0;i<BordersArray.length;i++) 
    590                 if (document.getElementById(BordersArray[i].border_id) != null){ 
    591                         new_BordersArray[j] = BordersArray[i]; 
    592                         j++; 
    593                 } 
    594         if(j == 1) 
    595                 Element("footer_menu").style.display = ''; 
    596         BordersArray = new_BordersArray; 
    597  
    598         // Remove Div Content 
    599         content = Element('content_id_' + ID); 
    600         content.parentNode.removeChild(content); 
    601         if(is_webkit) 
    602                 resizeWindow(); 
    603         RichTextEditor.destroy( 'body_'+ID ); 
     613    hold_session = false; 
     614    if (exist_className(Element('border_id_'+ID),'menu-sel')) 
     615    { 
     616        if (BordersArray[BordersArray.length-2].sequence == ID) 
     617            this.alternate_border(0); 
     618        else 
     619            this.alternate_border(BordersArray[BordersArray.length-2].sequence); 
     620    } 
     621 
     622    // Remove TD, title 
     623    border = Element('border_id_' + ID); 
     624    border.parentNode.removeChild(border); 
     625    var j=0; 
     626    var new_BordersArray = new Array(); 
     627    for (i=0;i<BordersArray.length;i++) 
     628        if (document.getElementById(BordersArray[i].border_id) != null){ 
     629            new_BordersArray[j] = BordersArray[i]; 
     630            j++; 
     631        } 
     632    if(j == 1) 
     633        Element("footer_menu").style.display = ''; 
     634    BordersArray = new_BordersArray; 
     635 
     636    // Remove Div Content 
     637    content = Element('content_id_' + ID); 
     638    content.parentNode.removeChild(content); 
     639    if(is_webkit) 
     640        resizeWindow(); 
     641    RichTextEditor.destroy( 'body_'+ID ); 
    604642        delete msgAttachments[ID]; 
    605643        //Caso for uma mensagem anexada tem que deletar ela da lixeira apos fechar a aba 
    606644            var isPartMsg = false; 
    607                         if(!parseInt(id2)) 
    608                                 return; 
     645            if(!parseInt(id2)) 
     646                return; 
    609647            var id2 = ID.replace('_r',''); 
    610648            for(var ii = 0; ii < partMsgs.length; ii++) 
     
    620658        /////////////////////////////////////////////////////////////////////////////////// 
    621659         
    622         return true; 
     660    return true; 
    623661} 
    624662 
    625663function getTabPrefix() { // define o prefixo para os checkboxes das mensagens 
    626         if (typeof(currentTab)!='number') 
    627                 return currentTab+"_"; 
    628         else 
    629                 return ""; 
     664    if (typeof(currentTab)!='number') 
     665        return currentTab+"_"; 
     666    else 
     667        return ""; 
    630668} 
    631669 
    632670function getMessageIdFromRowId(row_id) { // extrai o id da mensagem do id da linha 
    633         var p = row_id.search("_s"); 
    634         if (p>0) 
    635                 return row_id.substr(0,p); 
    636         else 
    637                 return row_id; 
     671    var p = row_id.search("_s"); 
     672    if (p>0) 
     673        return row_id.substr(0,p); 
     674    else 
     675        return row_id; 
    638676} 
    639677 
    640678function getNumBoxFromTabId(tab_id) { // extrai o numBox do id da tab 
    641         if (typeof(tab_id)=='number') { 
    642                 return tab_id; 
    643         } 
    644         else { 
    645                 var p = tab_id.search(/[0-9]/); 
    646                 return tab_id.substr(p); 
    647         } 
     679    if (typeof(tab_id)=='number') { 
     680        return tab_id; 
     681    } 
     682    else { 
     683        var p = tab_id.search(/[0-9]/); 
     684        return tab_id.substr(p); 
     685    } 
    648686} 
    649687 
     
    673711function listAttachment(ID) 
    674712{ 
    675    return (typeof(msgAttachments[ID]) == 'undefined') ? '' : JSON.stringify(msgAttachments[ID]);  
    676 } 
    677  
     713    return (typeof(msgAttachments[ID]) == 'undefined') ? '' : JSON.stringify(msgAttachments[ID]); 
     714} 
  • branches/2.5/expressoMail1_2/js/common_functions.js

    r8080 r8232  
    694694} 
    695695 
     696/*  
     697        Abre o diálogo de edição de filtro na tela de criação de filtro,   
     698        com os dados da mensagem (remetente e assunto) pré-carregados.  
     699*/  
     700 function filter_from_msg (msg) {  
     701        var html = DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {});  
     702        initialize_container(html);  
     703        list_container = create_filter_dialog();  
     704        render_new_rule(msg.from.email, html_entities(msg.subject));  
     705        $('.expresso-window-container').dialog('open');  
     706}  
    696707 
    697708function sharebox(){ 
     
    771782                        var number = id.replace(/_[a-zA-Z0-9]+/,""); 
    772783                } 
    773                 messages.push(onceOpenedHeadersMessages[folder_name][number]); 
     784                messages.push(onceOpenedHeadersMessages[folder_name][number] || number); 
    774785        } 
    775786 
     
    9971008    abas_unseen = abas_unseen.match(/(<font.*?>){0,1} *([0-9]+) *(<\/font>){0,1}/)[2]; 
    9981009 
    999         if (folder_unseen){  
    1000                 //folder_unseen.innerHTML = (parseInt(folder_unseen.innerHTML) + 1);  
    1001                 /*Incrementa recursivamente o contador de mensagens*/ 
    1002                 $('.selected').parents().find('> span.folder').not('.inbox').each(function(index,ui){ 
    1003                    var unseen = $(ui).find('.folder_unseen:last'); 
    1004                    unseen.html(parseInt(unseen.html(),10) + 1); 
    1005                 });  
    1006         }  
     1010        if (folder_unseen){ 
     1011                //folder_unseen.innerHTML = (parseInt(folder_unseen.innerHTML) + 1); 
     1012                /*Incrementa recursivamente o contador de mensagens*/ 
     1013                $('.selected').parents().find('> span.folder').not('.inbox').each(function(index,ui){ 
     1014                   var unseen = $(ui).find('.folder_unseen:last'); 
     1015                   unseen.html(parseInt(unseen.html(),10) + 1); 
     1016                }); 
     1017        } 
    10071018        else 
    10081019        { 
     
    10461057        if ((folder_unseen) && (parseInt(folder_unseen.innerHTML) > 1)) 
    10471058        { 
    1048                 //folder_unseen.innerHTML = (parseInt(folder_unseen.innerHTML) - 1);  
    1049                 /*Decrementa recursivamente o contador de mensagens*/  
    1050                 $('.selected').parents().find('> span.folder').not('.inbox').each(function(index,ui){  
    1051                    var unseen = $(ui).find('.folder_unseen:last');  
    1052                    unseen.html(parseInt(unseen.html(),10) - 1);  
    1053                 });       
     1059                //folder_unseen.innerHTML = (parseInt(folder_unseen.innerHTML) - 1); 
     1060                /*Decrementa recursivamente o contador de mensagens*/ 
     1061                $('.selected').parents().find('> span.folder').not('.inbox').each(function(index,ui){ 
     1062                   var unseen = $(ui).find('.folder_unseen:last'); 
     1063                   unseen.html(parseInt(unseen.html(),10) - 1); 
     1064                });      
    10541065        } 
    10551066        else if (parseInt(folder_unseen.innerHTML) <= 1) 
  • branches/2.5/expressoMail1_2/js/connector.js

    r8103 r8232  
    171171        } 
    172172 
    173     cConnector.prototype.unserializeArchiver = function(str)  
    174     {     
    175         _thisObject = this;  
    176         var matchB = function (str, iniPos)  
    177         {  
    178             var nOpen, nClose = iniPos;  
    179             do  
    180             {  
    181                 nOpen = str.substr(nClose+1).search(/[0-9]\:\{/ );  
    182   
    183                 if (nOpen > 0)  
    184                     nOpen = nOpen + nClose+3;  
    185   
    186                 nClose = str.indexOf('}', nClose+1);  
    187   
    188                 if (nOpen < 0)  
    189                 {  
    190                     return nClose;  
    191                 }  
    192                 if (nOpen < nClose )  
    193                 {  
    194                     nClose = matchB(str, nOpen);  
    195                 }  
    196             } while (nOpen < nClose);  
    197   
    198             return nClose;  
    199         }  
    200           
    201         var f = function (str)  
    202         {  
    203             switch (str.charAt(0))  
    204             {  
    205                 case 'a':  
    206                       
    207                     var data = new Array();  
    208                     var n = parseInt( str.substring( str.indexOf(':')+1, str.indexOf(':',2) ) );  
    209                     var arrayContent = str.substring(str.indexOf('{')+1, str.lastIndexOf('}'));  
    210                   
    211                     for (var i = 0; i < n; i++)  
    212                     {  
    213                         var pos = 0;  
    214       
    215                         /* Process Index */  
    216                         var indexStr = arrayContent.substr(pos, arrayContent.indexOf(';')+1);  
    217                         var index = f(indexStr);  
    218                         pos = arrayContent.indexOf(';', pos)+1;  
    219                           
    220                         /* Process Content */  
    221                         var part = null;  
    222                         switch (arrayContent.charAt(pos))  
    223                         {  
    224                             case 'a':  
    225                                 var pos_ = matchB(arrayContent, arrayContent.indexOf('{', pos))+1;  
    226                                 part = arrayContent.substring(pos, pos_);  
    227                                 pos = pos_;  
    228                                 data[index] = f(part);  
    229                                 break;  
    230                           
    231                             case 's':  
    232                                 var pval = arrayContent.indexOf(':', pos+2);  
    233                                 var val  = parseInt(arrayContent.substring(pos+2, pval));  
    234                                 pos = pval + val + 4;  
    235                                 data[index] = arrayContent.substr(pval+2, val);  
    236                                 break;  
    237       
    238                             default:  
    239                                 part = arrayContent.substring(pos, arrayContent.indexOf(';', pos)+1);  
    240                                 pos = arrayContent.indexOf(';', pos)+1;  
    241                                 data[index] = f(part);  
    242                                 break;  
    243                         }  
    244                         arrayContent = arrayContent.substr(pos);  
    245                     }  
    246                     break;  
    247                       
    248                 case 's':  
    249                     var pos = str.indexOf(':', 2);  
    250                     var val = parseInt(str.substring(2,pos));  
    251                     var data = str.substr(pos+2, val);  
    252                     str = str.substr(pos + 4 + val);  
    253                     break;  
    254       
    255                 case 'i':  
    256                 case 'd':  
    257                     var pos = str.indexOf(';');  
    258                     var data = parseInt(str.substring(2,pos));  
    259                     str = str.substr(pos + 1);  
    260                     break;  
    261                   
    262                 case 'N':  
    263                     var data = null;  
    264                     str = str.substr(str.indexOf(';') + 1);  
    265                     break;  
    266       
    267                 case 'b':  
    268                     var data = str.charAt(2) == '1' ? true : false;  
    269                     break;  
    270             }  
    271             return data;  
    272         }  
    273       
    274         return f(str);  
    275     }  
    276   
     173    cConnector.prototype.unserializeArchiver = function(str) 
     174    {    
     175        _thisObject = this; 
     176        var matchB = function (str, iniPos) 
     177        { 
     178            var nOpen, nClose = iniPos; 
     179            do 
     180            { 
     181                nOpen = str.substr(nClose+1).search(/[0-9]\:\{/ ); 
     182 
     183                if (nOpen > 0) 
     184                    nOpen = nOpen + nClose+3; 
     185 
     186                nClose = str.indexOf('}', nClose+1); 
     187 
     188                if (nOpen < 0) 
     189                { 
     190                    return nClose; 
     191                } 
     192                if (nOpen < nClose ) 
     193                { 
     194                    nClose = matchB(str, nOpen); 
     195                } 
     196            } while (nOpen < nClose); 
     197 
     198            return nClose; 
     199        } 
     200         
     201        var f = function (str) 
     202        { 
     203            switch (str.charAt(0)) 
     204            { 
     205                case 'a': 
     206                     
     207                    var data = new Array(); 
     208                    var n = parseInt( str.substring( str.indexOf(':')+1, str.indexOf(':',2) ) ); 
     209                    var arrayContent = str.substring(str.indexOf('{')+1, str.lastIndexOf('}')); 
     210                 
     211                    for (var i = 0; i < n; i++) 
     212                    { 
     213                        var pos = 0; 
     214     
     215                        /* Process Index */ 
     216                        var indexStr = arrayContent.substr(pos, arrayContent.indexOf(';')+1); 
     217                        var index = f(indexStr); 
     218                        pos = arrayContent.indexOf(';', pos)+1; 
     219                         
     220                        /* Process Content */ 
     221                        var part = null; 
     222                        switch (arrayContent.charAt(pos)) 
     223                        { 
     224                            case 'a': 
     225                                var pos_ = matchB(arrayContent, arrayContent.indexOf('{', pos))+1; 
     226                                part = arrayContent.substring(pos, pos_); 
     227                                pos = pos_; 
     228                                data[index] = f(part); 
     229                                break; 
     230                         
     231                            case 's': 
     232                                var pval = arrayContent.indexOf(':', pos+2); 
     233                                var val  = parseInt(arrayContent.substring(pos+2, pval)); 
     234                                pos = pval + val + 4; 
     235                                data[index] = arrayContent.substr(pval+2, val); 
     236                                break; 
     237     
     238                            default: 
     239                                part = arrayContent.substring(pos, arrayContent.indexOf(';', pos)+1); 
     240                                pos = arrayContent.indexOf(';', pos)+1; 
     241                                data[index] = f(part); 
     242                                break; 
     243                        } 
     244                        arrayContent = arrayContent.substr(pos); 
     245                    } 
     246                    break; 
     247                     
     248                case 's': 
     249                    var pos = str.indexOf(':', 2); 
     250                    var val = parseInt(str.substring(2,pos)); 
     251                    var data = str.substr(pos+2, val); 
     252                    str = str.substr(pos + 4 + val); 
     253                    break; 
     254     
     255                case 'i': 
     256                case 'd': 
     257                    var pos = str.indexOf(';'); 
     258                    var data = parseInt(str.substring(2,pos)); 
     259                    str = str.substr(pos + 1); 
     260                    break; 
     261                 
     262                case 'N': 
     263                    var data = null; 
     264                    str = str.substr(str.indexOf(';') + 1); 
     265                    break; 
     266     
     267                case 'b': 
     268                    var data = str.charAt(2) == '1' ? true : false; 
     269                    break; 
     270            } 
     271            return data; 
     272        } 
     273     
     274        return f(str); 
     275    } 
     276 
    277277        //Unserialize Data Method 
    278278        cConnector.prototype.unserialize = function(str) 
     
    290290 
    291291                nClose = (str.substr(nClose+1) == '}' || str.substr(nClose+1,1) == '}') ? nClose +1 : str.substr(nClose+1).search(/[0-9\"]\;\}/ ) + nClose + 3; 
    292                   
     292                 
    293293                if (nOpen < 0) 
    294294                { 
     
    554554        { 
    555555                var div = document.getElementById('divProgressBar'); 
    556   
    557         if(div)  
    558         {  
    559             div.style.visibility = 'hidden';  
    560             this.isVisibleBar = false;  
    561         }  
     556 
     557        if(div) 
     558        { 
     559            div.style.visibility = 'hidden'; 
     560            this.isVisibleBar = false; 
     561        } 
    562562        } 
    563563         
    564564        cConnector.prototype.showProgressBar = function(){ 
    565   
     565 
    566566                var div = document.getElementById('divProgressBar'); 
    567                 if(div)  
    568         {  
    569             div.style.visibility = 'visible';  
    570             this.isVisibleBar = true;  
    571         }  
     567                if(div) 
     568        { 
     569            div.style.visibility = 'visible'; 
     570            this.isVisibleBar = true; 
     571        } 
    572572        } 
    573573 
  • branches/2.5/expressoMail1_2/js/doiMenuData.js

    r8127 r8232  
    142142    function loadMenu(){ 
    143143        var archive = ""; 
    144         if(use_local_messages != 0){ 
    145             archive = {"name": get_lang("Archive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.archive_message('inbox', 'get_selected_messages'); }} 
    146         }else{ 
    147             archive = ""; 
     144 
     145        if( preferences['use_followupflags_and_labels'] == "1" ) 
     146            var labelItems = getLabels(); 
     147 
     148        var revertSortBox = function(){ 
     149            if (search_box_type == "UNSEEN") sort_box_reverse = sort_box_reverse ? 0 : 1;  
    148150        } 
    149         var labelItems = getLabels(); 
    150151 
    151152        $.contextMenu({ 
     
    156157                    return true; 
    157158                } 
    158                 if( current.indexOf("local") == -1){  
    159                     archive = {"name": get_lang("Archive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.archive_message(get_current_folder(), 'get_selected_messages'); }}  
    160                      
    161                 } else {  
    162                     archive = {"name": get_lang("Unarchive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.unarchive_message(get_current_folder(), 'get_selected_messages'); }}  
    163                 } 
    164                 var itensNotLocal = { 
    165                     "label": { "name": get_lang("Labels"), "items": labelItems}, 
    166                     "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } }, 
    167                     "sep2": "---------" 
    168                 } 
     159                if(use_local_messages != 0){ 
     160                    if( current.indexOf("local") != -1){ 
     161                       archive = {"name": get_lang("Unarchive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.unarchive_message('inbox', 'get_selected_messages'); }} 
     162                    } else { 
     163                        archive = {"name": get_lang("Archive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.unarchive_message('inbox', 'get_selected_messages'); }} 
     164                    } 
     165                } 
     166 
     167                if( preferences['use_followupflags_and_labels'] == "1" ) 
     168                    var itensNotLocal = { 
     169                        "label": { "name": get_lang("Labels"), "items": labelItems}, 
     170                        "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } }, 
     171                        "sep2": "---------" 
     172                    } 
    169173 
    170174                var items= { 
    171                     "flagSeen":      {"name": get_lang("Mark as") + " " + get_lang('seen'), "icon": "seen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('seen','get_selected_messages'); }}, 
    172                     "flagUnseen":    {"name": get_lang("Mark as") + " " + get_lang('unseen'), "icon": "unseen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unseen','get_selected_messages'); }}, 
    173                     "flagFlagged":   {"name": get_lang("Mark as") + " " + get_lang('important'), "icon": "important", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('flagged','get_selected_messages'); }}, 
    174                     "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }}, 
     175                    "flagSeen":      {"name": get_lang("Mark as") + " " + get_lang('seen'), "icon": "seen", callback: function(key, opt){ revertSortBox(); proxy_mensagens.proxy_set_messages_flag('seen','get_selected_messages'); }}, 
     176                    "flagUnseen":    {"name": get_lang("Mark as") + " " + get_lang('unseen'), "icon": "unseen", callback: function(key, opt){ revertSortBox(); proxy_mensagens.proxy_set_messages_flag('unseen','get_selected_messages'); }}, 
     177                    "flagFlagged":   {"name": get_lang("Mark as") + " " + get_lang('important'), "icon": "important", callback: function(key, opt){ revertSortBox(); proxy_mensagens.proxy_set_messages_flag('flagged','get_selected_messages'); }}, 
     178                    "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ revertSortBox(); proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }}, 
    175179                    "sep1": "---------" 
    176180                } 
    177  
     181                                 
     182                                // Desabilita a opção de criar filtro a partir da mensagem, caso mais de uma mensagem esteja selecionada:  
     183                                var is_filterFromMsg_disabled = function () {  
     184                                        var base_selector = ".table_box tbody tr.selected_msg";  
     185                                        return ($(base_selector).length > 1) || ($(base_selector + " td span").text().indexOf(get_lang("Draft")) > -1);  
     186                                }  
     187                                 
    178188                var lastItens = { 
    179189                    "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }}, 
    180190                    "remove": {"name": get_lang("Delete"),      "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }}, 
    181191                    "export": {"name": get_lang("Export"),      "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }}, 
     192                                        /*Abre o diálogo de criação de filtro a partir da mensagem:*/  
     193                                        "filterFromMsg": {  
     194                                                "name": get_lang("Create filter from message"),   
     195                                                "icon": "filter",   
     196                                                callback: function (key, opt) {  
     197                                                        var msg_number = get_selected_messages();  
     198                                                        var msg = onceOpenedHeadersMessages[current_folder][msg_number];  
     199                                                        if (msg !== undefined)  
     200                                                        {  
     201                                                                filter_from_msg(msg);  
     202                                                        }  
     203                                                },  
     204                                                disabled: is_filterFromMsg_disabled()  
     205                                        },  
    182206                    "archive": archive 
    183207                } 
     
    318342        } else { 
    319343            var labeleds =  (messageInfo.forceIcon ? messageInfo.labels : DataLayer.get('labeled', { 
    320                         criteria: {deepness: '2'}, 
    321                         filter: [ 
     344                        criteria: {deepness: 2}, 
     345                filter: [ 
    322346                                'AND', 
    323347                                ['=', 'folderName', msg_folder],  
     
    337361 
    338362                for (var i=0; i < labeleds.length; i++){ 
    339                     menuItems[ labeleds[i].id ? labeleds[i].id : labeleds[i].label.id] = labeleds[i].id ? labeleds[i] : labeleds[i].label; 
     363                    menuItems[ (labeleds[i].id ? labeleds[i].id : labeleds[i].label.id) ] = labeleds[i].label ? labeleds[i].label : labeleds[i]; 
    340364                } 
    341365                } else { 
     
    351375                menuItensLabel[index] = {type: "label", customName: menuItems[index].name, id: msg_folder+"/"+msg_number+"#"+index};             
    352376        } 
     377 
     378 
    353379        $.contextMenu.types.label = function(item, opt, root) { 
    354380            $('<span>'+item.customName+'</span><span class="removeLabeled" title="'+get_lang("Remove Label")+'">x</span>') 
  • branches/2.5/expressoMail1_2/js/draw_api.js

    r8188 r8232  
    106106                        } 
    107107                        cExecute ("$this.imap_functions.get_folders_list&folder="+current_folder, update_tree_folders); 
     108             
    108109                } 
    109110 
     
    239240                                        var nn = new dNode({id:folders[i].folder_id, caption:lang_folder(folders[i].folder_name) + '<font style=color:red>&nbsp(</font><span id="dftree_'+folders[i].folder_id+'_unseen" style=color:red>'+folders[i].folder_unseen+'</span><font style=color:red>)</font>', onClick:"change_folder('"+folders[i].folder_id+"','"+folders[i].folder_name+"')", plusSign:folders[i].folder_hasChildren}); 
    240241 
    241                                         if( folders[i].folder_name.toLowerCase() == 'inbox' ) 
    242                                                 Element('new_m').innerHTML = '<font style="color:red">' + folders[i].folder_unseen + '</font>'; 
     242 
     243                                        // if( folders[i].folder_name.toLowerCase() == 'inbox' ) 
     244                                        //      Element('new_m').innerHTML = '<font style="color:black">' + folders[i].folder_unseen + '</font>'; 
    243245                                } 
    244246                                else 
     
    471473                } 
    472474        } 
    473          
    474         outOfficeVerify(); 
    475475} 
    476476 
     
    646646                } 
    647647                draw_new_tree_folder(false, forceLoadFolders); 
    648                 draw_tree_labels(); 
     648 
     649        if( preferences['use_followupflags_and_labels'] == "1" ) 
     650            draw_tree_labels(); 
     651 
    649652                if(Element("table_quota")) 
    650653                        connector.loadScript("InfoQuota"); 
     
    655658 
    656659var handler_draw_box = function(data){ 
     660    populateSelectedMsgs(data.messagesIds); 
    657661        draw_box(data, 'INBOX', true); 
    658662        //alternate_border(0); 
     
    661665// Action on change folders. 
    662666function change_folder(folder, folder_name){ 
    663         if (openTab.imapBox[0] != folder) 
     667        if (parseInt(preferences.use_dynamic_contacts) && $(".to").length && $(".to").data( "autocomplete" ).menu.active){ 
     668        $(".to").data( "autocomplete" ).close(); 
     669    } 
     670    if (openTab.imapBox[0] != folder) 
    664671        { 
    665672                selectAllFolderMsgs(false); 
     
    667674                var handler_draw_box = function(data) 
    668675                { 
    669  
     676            populateSelectedMsgs(data.messagesIds); 
    670677                        if(!verify_session(data)) 
    671678                                return; 
     
    683690                        return true; 
    684691                } 
     692 
    685693                //MAILARCHIVE 
    686694        //se for pasta local 
    687695        if (/^local_messages/.test(current_folder)) { 
    688696            $(".folders-loading").removeClass("folders-loading"); //remove o icone de loading ao clicar nas pastas locais 
    689         } 
    690         else { //se não, processamento normal da pasta 
    691                 $.ajax({ 
    692                 async: false, 
    693                         url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds",  
    694                                 folder: folder, 
    695                                  msg_range_begin: "0", 
    696                                  msg_range_end: "0",                                     
    697                                 sort_box_type: "SORTARRIVAL",  
    698                                 search_box_type: search_box_type, 
    699                                 sort_box_reverse: "1" 
    700                                 }), 
    701                         success: function(data){ 
    702                                 data = connector.unserialize(data); 
    703                                 if(data){ 
    704                                         var _data = {}; 
    705                                         $.each(data,function(index,value){ 
    706                                                 if (data[index]){ 
    707                                                         _data[data[index]] = data[index]; 
    708                                                 } 
    709                                         }); 
    710                                         populateSelectedMsgs(_data); 
    711                                 } 
    712                         }, 
    713                         beforeSend: function( jqXHR, settings ){ 
    714                                 connector.showProgressBar(); 
    715                         }, 
    716                         complete: function( jqXHR, settings ){ 
    717                                 connector.hideProgressBar(); 
    718                         } 
    719                 }); 
    720697        } 
    721698                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); 
     
    917894        if (document.getElementById("table_message_header_box_"+numBox).emptyBody) 
    918895                return; 
    919     objCell.style.cursor = "col-resize";  
    920     $(objCell).next().css('cursor','col-resize');  
    921   
     896    objCell.style.cursor = "col-resize"; 
     897    $(objCell).next().css('cursor','col-resize'); 
     898 
    922899        if (objCell.style.cursor == "col-resize" && detectLeftButton(ev)) { 
    923900                var cellIndex = objCell.cellIndex; 
     
    942919 
    943920                document.getElementById("table_message_ruler").style.left = cellOffset+cellWidth; 
    944         syncColumns();  
     921        syncColumns(); 
    945922        } 
    946923        ev.returnValue = false; 
     
    16491626                    $(".lower").css("top", ($("#content_folders").height()-18) + $("#content_folders").offset().top); 
    16501627                                        if($(".shared-folders").length){ 
    1651                                                 $(".shared-folders").parent().find('.folder:not(".shared-folders")').droppable({ 
     1628                                                $(".shared-folders,.head_folder").parent().find('.folder:not(".shared-folders")').droppable({ 
    16521629                                                        over : function(a, b){                                           
    16531630                                                                //SETA BORDA EM VOLTA DA PASTA 
     1631                                $(b.helper).find(".draggin-folder,.draggin-mail").css("color", "green"); 
    16541632                                                                over = $(this); 
    16551633                                                                $(this).addClass("folder-over"); 
     
    16641642                                                                                } 
    16651643                                                        }, 
    1666                                                         out : function(){ 
     1644                                                        out : function(a,b){ 
    16671645                                                                //RETIRA BORDA EM VOLTA DA PASTA 
     1646                                $(b.helper).find(".draggin-folder,.draggin-mail").css("color", ""); 
    16681647                                                                $(this).removeClass("folder-over"); 
    16691648                                                        }, 
     
    17231702                         
    17241703                        $(this).addClass("selected_msg"); 
    1725                                         } 
    1726                                         updateSelectedMsgs($(this).find("input:checkbox").is(':checked'),$(this).attr("id")); 
    1727                                 } 
     1704                } 
     1705                updateSelectedMsgs($(this).find("input:checkbox").is(':checked'),$(this).attr("id")); 
     1706                } else if ( typeof $(event.target).attr("style") == "undefined" || $(event.target).attr("style").match(/background/g) == null ) { 
     1707                    if($(this).find("input:checkbox").attr("checked") != "checked"){ 
     1708 
     1709                        $(this).find("input:checkbox").trigger('click'); 
     1710             
     1711                        $(this).addClass("selected_msg"); 
     1712                    } 
     1713                    updateSelectedMsgs($(this).find("input:checkbox").is(':checked'),$(this).attr("id")); 
     1714                } 
     1715 
    17281716                        }); 
    17291717        } 
     
    17391727        draw_footer_box(headers_msgs.num_msgs); 
    17401728        Element('main_table').style.display = ''; 
    1741         if(is_ie6)        // Stupid Fixing on IE6. 
    1742                 setTimeout("resizeWindow()",1); 
    1743         else 
    1744                 resizeWindow(); 
     1729        resizeWindow(); 
    17451730        if(debug) { 
    17461731                var _eTime = new Date(); 
     
    17521737        var msg_number = Element('msg_number').value; 
    17531738        if(!msg_folder && msg_number) { 
    1754         if ((msg_number.toString().indexOf('@') != -1) || !msg_number.toString().match(/[0-9]/)){  
    1755             new_message_to(msg_number);  
    1756         }      
    1757         else  
    1758             new_message('new','null');  
     1739        if ((msg_number.toString().indexOf('@') != -1) || !msg_number.toString().match(/[0-9]/)){ 
     1740            new_message_to(msg_number); 
     1741        }     
     1742        else 
     1743            new_message('new','null'); 
    17591744        } 
    17601745        else if(msg_folder && msg_number){ 
     
    18711856                    //if (headers_msgs.msg_sample.body.length > 0) 
    18721857                                    tr_element.msg_sample = Base64.decode(headers_msgs.msg_sample.body).substr(0,180) + "..."; //trecho do body que sera exibido com o assunto; //blabla 
    1873                              } else { 
     1858                                tr_element.msg_sample = html_entities(tr_element.msg_sample);  
     1859                 } else { 
    18741860                                    //if (headers_msgs.msg_sample.body.length > 0) 
    18751861                                        tr_element.msg_sample = Base64.decode(headers_msgs.msg_sample.body).substr(0,120) + "..."; //trecho do body que sera exibido com o assunto; 
    1876                           } 
    1877  
    1878                 // preferencia dos tooltips 
    1879                 if(headers_msgs.msg_sample && preferences.preview_msg_tip == "1" && headers_msgs.msg_sample.body !== "") { 
    1880                     tr_element.tip = Base64.decode(headers_msgs.msg_sample.body).substr(3,300) + "..."; //trecho do body que sera exibido no tool-tip; 
    1881                 } 
     1862                            tr_element.msg_sample = html_entities(tr_element.msg_sample);   
     1863                  } 
    18821864            } 
    18831865        } 
    1884  
     1866        // preferencia dos tooltips 
     1867        if(headers_msgs.msg_sample && preferences.preview_msg_tip == "1" && headers_msgs.msg_sample.body !== "") { 
     1868            tr_element.tip = Base64.decode(headers_msgs.msg_sample.body).substr(3,300) + "..."; //trecho do body que sera exibido no tool-tip; 
     1869        } 
    18851870                 
    18861871                if ((headers_msgs.Unseen == 'U') || (headers_msgs.Recent == 'N')){ 
     
    19251910 
    19261911                if ((headers_msgs.Forwarded == 'F')  || (headers_msgs.Draft == 'X' && headers_msgs.Answered == 'A')){ 
    1927                         td_element21.onclick=function(){search_emails(headers_msgs.subject.replace(/^(re: ?|fw: ?|enc: ?|res: ?|fwd: ?)*/gi,''),true);}; 
     1912                        $(td_element21).on('click',function(){search_emails(headers_msgs.subject.replace(/^(re: ?|fw: ?|enc: ?|res: ?|fwd: ?)*/gi,''),true);}); 
    19281913                        td_element21.innerHTML = "<img src ='templates/"+template+"/images/forwarded.png' title='"+get_lang('Forwarded')+"'>"; 
    19291914                        headers_msgs.Draft = '' 
     
    19341919                        td_element21.innerHTML = "<img src ='templates/"+template+"/images/draft.png' title='"+get_lang('Draft')+"'>"; 
    19351920                else if (headers_msgs.Answered == 'A'){ 
    1936                         td_element21.onclick=function(){search_emails(headers_msgs.subject.replace(/^(re: ?|fw: ?|enc: ?|res: ?|fwd: ?)*/gi,''),true);}; 
     1921                        $(td_element21).on('click',function(){search_emails(headers_msgs.subject.replace(/^(re: ?|fw: ?|enc: ?|res: ?|fwd: ?)*/gi,''),true);}); 
    19371922                        td_element21.innerHTML = "<img src ='templates/"+template+"/images/answered.png' title='"+get_lang('Answered')+"'>"; 
    19381923                    }else 
     
    20482033                                                this.title = title_to;  
    20492034                                        }; 
    2050                                         if (headers_msgs.to && headers_msgs.to[0]) { 
     2035                                        if (headers_msgs.to && headers_msgs.to[0] != null) { 
    20512036                                                if (headers_msgs.to[0].name != null){ 
    20522037                                                        spanSender.innerHTML += headers_msgs.to[0].name; 
    20532038                                                }else if(headers_msgs.to[0].email != null) { 
    20542039                                                        spanSender.innerHTML += headers_msgs.to[0].email; 
    2055                                                 } 
     2040                                                }else { 
     2041                            spanSender.innerHTML += get_lang("without destination"); 
     2042                        } 
    20562043                                        } 
    20572044                                }else if(headers_msgs.from !== undefined){ 
     
    21392126                $(td_element26).click(function() {       
    21402127                        var messageClickedId = $(this).attr('id').match(/td_message_followup_([\d]+)/)[1]; 
    2141                          
     2128 
     2129            var loading = $('#td_message_followup_' + messageClickedId + ', ' +  
     2130            'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
     2131            .find('img[alt=Carregando]'); 
     2132 
     2133 
     2134            //Verificar se está carregando a bandeira. 
     2135            //Caso esteja ele sai da função até que seja carregado.  
     2136            if( loading.length ) { 
     2137                return false; 
     2138            } 
     2139 
    21422140                        var followupColor = $('#td_message_followup_' + messageClickedId).find(".flag-edited").css('backgroundColor'); 
    21432141                         
     
    21922190                                         
    21932191                                        if(fail != 'success'){ 
    2194                                             $('#td_message_followup_' + messageClickedId + ', ' +  
    2195                                             'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC") 
    2196                                                 .find('img').remove(); 
    2197                                             MsgsCallbackFollowupflag[fail](); 
     2192                                            var msgFlag =  $('#td_message_followup_' + messageClickedId + ', ' +  
     2193                        'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC"); 
     2194 
     2195                        msgFlag.find('img').remove(); 
     2196                         
     2197                        //Insere a imagem da flag quando ocorre erro ao marcar a msg 
     2198                        msgFlag.append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 
     2199 
     2200                        MsgsCallbackFollowupflag[fail](); 
    21982201                                        }else{ 
    21992202                                            $('#td_message_followup_' + messageClickedId + ', ' +  
    22002203                                            'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", headers_msgs.followupflagged.backgroundColor) 
    2201                                                 .find('img').remove(); 
     2204                                                .append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 
    22022205                                            updateCacheFollowupflag(messageClickedId, msg_folder, true); 
    22032206                                        }                                
     
    22152218                                        $('#td_message_followup_' + messageClickedId + ', ' +  
    22162219                                        'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
    2217                                         .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}) 
    22182220                                        .find('img').remove(); 
    22192221                                         
     
    22222224                                 
    22232225                                        $('#td_message_followup_' + messageClickedId + ', ' +  
    2224                                                 'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
    2225                         .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}); 
     2226                                                'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").html('<img src="../prototype/modules/mail/img/flagEditor.png">') 
     2227                        .css({"width":"8px","height":"6px"/*"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"*/}); 
    22262228                                });      
    22272229 
     
    22292231                                $('#td_message_followup_' + messageClickedId + ', ' +  
    22302232                                'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
    2231                                 .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}).css("background", followupColor); 
     2233                                .css("backgroundColor", followupColor) 
     2234                .find('img').remove(); //remove imagem carregando da bandeira 
     2235 
     2236                $('#td_message_followup_' + messageClickedId).find('.flag-edited').append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 
     2237 
    22322238                                 
    2233                                 $(tr_element).addClass('selected_msg').find(':checkbox').trigger('click'); 
     2239                           //Pega id do checkbox 
     2240               var id = $(tr_element).addClass('selected_msg').find(':checkbox').attr('id'); 
     2241                 
     2242                //Verifica se o checkbox está selecionado 
     2243                if($('#' + id).attr('checked') != 'checked') 
     2244                    $(tr_element).addClass('selected_msg').find(':checkbox').trigger('click'); 
    22342245                                 
    22352246                                /** 
     
    23202331        var message_header = Element("message_header_"+search); 
    23212332        var handler_draw_box = function(data){ 
    2322                 draw_box(data, current_folder,true); 
     2333 
     2334        if (typeof(clean_selected) == "undefined") 
     2335            populateSelectedMsgs(data.messagesIds); 
     2336 
     2337        draw_box(data, current_folder,true); 
    23232338                //Mostrar as msgs nao lidas de acordo com o filtro de relevancia 
    23242339        var msgs_unseen = 0; 
     
    23412356        sort_box_type = sort; 
    23422357        search_box_type = search; 
    2343  
    2344         if (typeof(clean_selected) == "undefined"){      
    2345         $.ajax({                         
    2346                         url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds",  
    2347                                 folder: get_current_folder(),                                    
    2348                                 sort_box_type: "SORTARRIVAL",  
    2349                                 search_box_type: search_box_type, 
    2350                                 sort_box_reverse: "1" 
    2351                                 }), 
    2352                         success: function(data){ 
    2353                                 data = connector.unserialize(data); 
    2354                                 if(data){ 
    2355                                         var _data = {}; 
    2356                                         $.each(data,function(index,value){ 
    2357                                                 if (value){ 
    2358                                                         _data[index] = value; 
    2359                                                 } 
    2360                                         }); 
    2361                                         populateSelectedMsgs(_data);                             
    2362                                 } 
    2363                         } 
    2364                 }); 
    2365         }        
    23662358 
    23672359        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); 
     
    24322424function draw_message(info_msg, ID){ 
    24332425        // remove a flag $FilteredMessage da mensagem ao ser lida 
    2434         if(info_msg.Unseen == "U"){ 
     2426        if(info_msg.Unseen == "U" && preferences['use_alert_filter_criteria'] == "1"){ 
    24352427                $.each(fromRules, function(index, value) { 
    24362428                        if(value == info_msg.msg_folder){ 
     
    24792471                        { 
    24802472                if(info_msg.msg_number.match("s[0-9]+")){ 
    2481                     var new_info = info_msg.msg_number; 
    2482                     new_info = new_info.split("_")[1]; 
    2483                     info_msg.next_message = info_msg.next_message+"_"+new_info; 
    2484                     info_msg.nextMsgBox = info_msg.nextMsgBox+"_"+new_info; 
     2473                    var msg_next = $('#'+info_msg.msg_number).next(); 
     2474                    info_msg.next_message = msg_next.attr("id"); 
     2475                    info_msg.nextMsgBox = msg_next.attr("name"); 
     2476                    nextMsgBox = msg_next.attr("name"); 
    24852477                } 
    24862478                                currentTab = ID; 
     
    24892481                                //select_msg('null', 'down', true); 
    24902482                                if (!msg_selected){ 
    2491                                         select_msg('null', 'down', true); 
     2483                                        if(!!parseInt(preferences.use_shortcuts)) 
     2484                        select_msg('null', 'down', true); 
    24922485                                        msg_selected = true; 
    24932486                                } 
     
    24952488                } 
    24962489                /*Ultima mensagem de cada página, exceto a ultima*/ 
    2497         else if( (current_page < total_pages) ){ 
     2490        else if( (current_page < total_pages) && !info_msg.msg_number.match("s[0-9]+") ){ 
    24982491                    
    24992492                   img_next_msg.onclick = function() 
     
    25592552                        { 
    25602553                if(info_msg.msg_number.match("s[0-9]+")){ 
    2561                     var new_info = info_msg.msg_number; 
    2562                     new_info = new_info.split("_")[1]; 
    2563                     info_msg.prev_message = info_msg.prev_message+"_"+new_info; 
    2564                     info_msg.previousMsgBox = info_msg.previousMsgBox+"_"+new_info; 
     2554                    var msg_prev = $('#'+info_msg.msg_number).prev(); 
     2555                    info_msg.prev_message = msg_prev.attr("id"); 
     2556                    info_msg.previousMsgBox = msg_prev.attr("name"); 
     2557                    previousMsgBox = msg_prev.attr("name"); 
    25652558                } 
    25662559                                currentTab = ID; 
     
    25692562                                //select_msg('null', 'up', false); 
    25702563                                if (!msg_selected){ 
    2571                                         select_msg('null', 'up', true); 
     2564                    if(!!parseInt(preferences.use_shortcuts)) 
     2565                                            select_msg('null', 'up', true); 
    25722566                                        msg_selected = true; 
    25732567                                } 
     
    30103004                var option_export = '<span onclick="proxy_mensagens.export_all_messages()" onmouseover="this.className=\'reply_options_active\'" onmouseout="this.className=\'reply_options\'" class="reply_options">'+get_lang("Export")+'</span> | '; 
    30113005                var report_error = '<span onmouseover="this.className=\'reply_options_active\'" onmouseout="this.className=\'reply_options\'" class="reply_options" onclick=reports_window("'+currentTab+'");>'+get_lang("Report error")+'</span> | ';  
    3012                 div_other_more_options.innerHTML += option_move + option_print + option_export + block_user +  report_error; 
     3006                // Opção do menu 'Mais Ações' para criar filtro a partir da mensagem aberta:   
     3007                var option_create_filter = '<span onmouseover="this.className=\'reply_options_active\'" onmouseout="this.className=\'reply_options\'" class="reply_options" onclick=filter_from_msg(onceOpenedHeadersMessages[\'' + html_entities(info_msg.msg_folder) + '\'][' + info_msg.msg_number + ']);>' + get_lang("Create filter from message") + '</span> | ';  
     3008                div_other_more_options.innerHTML += option_create_filter + option_move + option_print + option_export + block_user +  report_error; 
    30133009                 
    30143010                 
     
    35093505        subject.innerHTML = html_entities(info_msg.subject);  
    35103506        subject.className = "header_message_field"; 
    3511         if(defaultCalendar == "expressoCalendar" && $("#expressoCalendarid")[0]){ 
     3507        if($("#expressoCalendarid")[0]){ 
    35123508                var new_task_logo = document.createElement("IMG"); 
    35133509                new_task_logo.title = "Criar uma nova tarefa a partir deste email."; 
     
    46444640            delay : 300, 
    46454641            minLength: 0 
    4646         }).bind('catcompleteopen', function(event, ui) { 
     4642        }).bind('autocompleteopen', function(event, ui) { 
    46474643 
    46484644            $(this).data('is_open',true); 
    46494645 
    4650         }).bind('catcompleteclose', function(event, ui) { 
     4646        }).bind('autocompleteclose', function(event, ui) { 
    46514647 
    46524648            canMakeBox = true; 
    46534649            $(this).data('is_open',false); 
    4654  
     4650            $(this).blur().focus(); 
    46554651        }).data( "autocomplete" )._renderItem = function( ul, item ) { 
    46564652            var autocomplete = $(this)[0].element; 
    46574653 
    4658             //cálculo dinâmico da largura da lista 
    4659             var minwidth = 450; 
    4660             var width = (item.label ? item.label.length : (item.value ? item.value.length : (item.mail ? item.mail.length : 30 ))); 
    4661             width = (is_ie ? width*2 : (is_webkit && !is_mozilla ? width*4 : width*5)) + 30; 
    4662             if (width < minwidth) 
    4663                 width = minwidth; 
    4664  
    4665             ul.css({"min-width":width, "max-height" : "180px", "overflow-y" : "auto", "min-height": "30px"}); 
     4654            ul.css({"width":'50%',"min-width":'600px', "max-height" : "180px", "overflow-y" : "auto", "min-height": "30px"}); 
    46664655 
    46674656            item.raty = ((item.number_of_messages*10)/topContact) > 1 ? ((item.number_of_messages*10)/topContact) : 1; 
     
    47534742                        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); 
    47544743        }); 
     4744} 
     4745 
     4746/*  
     4747        Anexa uma mensagem a mensagem sendo enviada.  
     4748        Parâmetros:  
     4749                folder_name: nome da pasta na qual a mensagem sendo anexada se encontra.  
     4750                message_number: id da mensagem sendo anexada.  
     4751*/  
     4752function attach_message (folder_name, message_number) {  
     4753    var ID = currentTab;  
     4754    var fileUploadMSG = $('#fileupload_msg'+ID);  
     4755    fileUploadMSG.find(' .attachments-list').show();  
     4756    var att = new Object();  
     4757 
     4758    
     4759 
     4760    var attach = {};  
     4761    attach.fileName = onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml';  
     4762    attach.fullFileName = onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml';  
     4763    if(attach.fileName.length > 20){  
     4764        attach.fileName = attach.fileName.substr(0, 17) + "... " + attach.fileName.substr(attach.fileName.length - 9, attach.fileName.length);  
     4765    }  
     4766    attach.error = false;  
     4767    attach.OK = true; 
     4768    if (folder_name.indexOf('local_messages_') == 0){ 
     4769        attach.fileSize = formatBytes(onceOpenedHeadersMessages[folder_name][message_number].size); 
     4770    } else { 
     4771        attach.fileSize = formatBytes(onceOpenedHeadersMessages[folder_name][message_number].Size);  
     4772    } 
     4773    var upload = $(DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist.ejs", {  
     4774        file: attach  
     4775    }));  
     4776    $("#content_id_" + currentTab + " .save").button("enable");  
     4777    upload.find('.att-box-loading').remove();  
     4778    upload.append('<input type="hidden" name="fileId[]" value=\'' + idATT + '\'/>');  
     4779  
     4780    upload.find('.att-box-delete').click(function()  
     4781    {  
     4782        $("#content_id_" + currentTab + " .save").button("enable");  
     4783        var idAttach = $(this).parent().find('input[name="fileId[]"]').val();  
     4784        fileUploadMSG.find(' .attachments-list').find('input[value="' + idAttach + '"]').remove();  
     4785        delAttachment(ID, idAttach);  
     4786        $(this).parent().qtip("destroy");  
     4787        $(this).parent().remove();  
     4788        if(!fileUploadMSG.find(' .attachments-list').find(".att-box").length)  
     4789        {  
     4790            fileUploadMSG.find(' .attachments-list').hide();  
     4791        }  
     4792    });  
     4793  
     4794    var addtip = function(attach){ 
     4795        fileUploadMSG.find('.attachments-list .att-box:last').qtip(  
     4796        {  
     4797            content: DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist_tooltip.ejs", {  
     4798                attach: attach  
     4799            }),  
     4800            position: {  
     4801                corner: {  
     4802                    tooltip: 'bottomMiddle',  
     4803                    target: 'topMiddle'  
     4804                },  
     4805                adjust: {  
     4806                    resize: true,  
     4807                    scroll: true  
     4808                }  
     4809            },  
     4810            show: {  
     4811                when: 'mouseover',  
     4812                // Don't specify a show event  
     4813                ready: false // Show the tooltip when ready  
     4814            },  
     4815            hide: 'mouseout',  
     4816            // Don't specify a hide event  
     4817            style: {  
     4818                border: {  
     4819                    width: 1,  
     4820                    radius: 5  
     4821                },  
     4822                width: {  
     4823                    min: 75,  
     4824                    max: 1000  
     4825                },  
     4826                padding: 5,  
     4827                textAlign: 'center',  
     4828                tip: true,  
     4829                // Give it a speech bubble tip with automatic corner detection  
     4830                name: 'blue' // Style it according to the preset 'cream' style  
     4831            }  
     4832        });  
     4833    }  
     4834 
     4835    if(folder_name.indexOf("local_messages_") != 0) 
     4836    { 
     4837        att.folder = folder_name;  
     4838        att.uid = message_number;  
     4839        att.type = 'imapMSG';  
     4840        att.name = Base64.encode(onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml');  
     4841        var idATT = JSON.stringify(att);  
     4842        addAttachment(ID, idATT);  
     4843 
     4844        fileUploadMSG.find('.attachments-list').append(upload); 
     4845        addtip(attach); 
     4846    } 
     4847    else 
     4848    { 
     4849        var folder_trash = "INBOX"+cyrus_delimiter+special_folders["Trash"]; 
     4850        expresso_mail_archive.unarchieveToAttach(folder_name, folder_trash, message_number, function(data){ 
     4851            $.ajax({ 
     4852                url: "controller.php?action=$this.imap_functions.get_info_msg_archiver", 
     4853                data:  {"idMsgs":data.idsMsg}, 
     4854                type: 'POST', 
     4855                async: false, 
     4856                success: function(data){ 
     4857                    data = JSON.parse(connector.unserialize(data)); 
     4858                    data = data[0]; 
     4859                    att.folder = folder_trash; 
     4860                    att.uid = data.uid;  
     4861                    att.type = 'imapMSG';  
     4862                    att.name = Base64.encode(onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml');  
     4863                    var idATT = JSON.stringify(att);  
     4864                    addAttachment(ID, idATT); 
     4865                    fileUploadMSG.find('.attachments-list').append(upload); 
     4866                    addtip(attach); 
     4867                }, 
     4868            }); 
     4869        });  
     4870    } 
     4871    upload.find('.att-box-loading').remove();      
    47554872} 
    47564873                 
     
    49335050        $(this).prev().show(); 
    49345051        }); 
    4935         fileUploadMSG.find(".fileUploadButton, .message-attach-link").button().filter(".fileUploadButton").click(function(){ 
    4936             fileUploadMSG.find("input:file").trigger("click"); 
    4937     }); 
    4938  
    4939     fileUploadMSG.find("input:file").fileupload({ 
     5052 
     5053 
     5054    fileUploadMSG.find(".button").button().filter(".fileinput-button").find(".ui-button-text").css("margin-top","2px").find("input:file").fileupload({ 
    49405055                //singleFileUploads : true,fileUploadMSG 
    49415056                sequentialUploads: true,  
     
    51135228            }); 
    51145229        }*/ 
    5115         });/*.css({ 
    5116                 "height" : "20px",  
    5117                 "width": (is_webkit ? "205px" : "100px"),  
    5118                 "border-width": "0 0 0px 0px",  
    5119         "-moz-transform" : "rotate(-180deg) translate(5px, -0.5px) scale(1.1)",   
    5120         "-webkit-transform" : "rotate(-180deg) translate(0px, 0px)" 
    5121         }).end().end().end().*/ 
     5230        }).css({ 
     5231        "height" : ($.browser.mozilla ? "15px" : "20px"),  
     5232        // "width": (is_webkit ? "205px" : "100px"), 
     5233        "width" : "205px", 
     5234        "margin-top" : ($.browser.mozilla ? "10px" : "0"), 
     5235        "margin-right" : (is_mozilla ? "30px" : "0"), 
     5236        "border-width": "0 0 0px 0px",  
     5237        "transform" : "rotate(-360deg) translate(5px, -0.5px) scale(1.1)",   
     5238        "-webkit-transform" : "rotate(-360deg) translate(0px, 0px)" 
     5239        });/*.end().end().end().*/ 
     5240 
    51225241    fileUploadMSG.find(".message-attach-link").click(function(){ 
    51235242                jQuery('#message-attach-dialog').html(DataLayer.render("../prototype/modules/attach_message/attach_message.ejs", {})); 
     
    51495268                                jQuery.each(selectedMessages[folder_name], function(message_number, message) {  
    51505269                                        if (message) { 
    5151                                                 fileUploadMSG.find(' .attachments-list').show();         
    5152                                                 var att = new Object(); 
    5153                                                 att.folder = folder_name; 
    5154                                                 att.uid = message_number; 
    5155                                                 att.type = 'imapMSG'; 
    5156                                                 att.name = Base64.encode(onceOpenedMessages[folder_name][message_number].subject + '.eml'); 
    5157                                                 var idATT = JSON.stringify(att); 
    5158                                                 addAttachment( ID , idATT);                         
    5159                                                 var attach = {}; 
    5160                                                 attach.fileName = onceOpenedMessages[folder_name][message_number].subject + '.eml'; 
    5161                                                 attach.fullFileName = onceOpenedMessages[folder_name][message_number].subject + '.eml'; 
    5162                                                 if(attach.fileName.length > 20) 
    5163                                                         attach.fileName = attach.fileName.substr(0, 17) + "... " + attach.fileName.substr(attach.fileName.length-9, attach.fileName.length); 
    5164  
    5165                                                 attach.error = false; 
    5166                         attach.OK = true; 
    5167                                                 attach.fileSize = formatBytes(onceOpenedMessages[folder_name][message_number].size); 
    5168                                                 var upload = $(DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist.ejs", {file : attach})); 
    5169                                                 $("#content_id_"+currentTab+" .save").button("enable"); 
    5170                         upload.find('.att-box-loading').remove(); 
    5171                                                 upload.append('<input type="hidden" name="fileId[]" value=\''+idATT+'\'/>'); 
    5172                                                  
    5173                                                 upload.find('.att-box-delete').click(function(){ 
    5174                             $("#content_id_"+currentTab+" .save").button("enable"); 
    5175                                                         var idAttach = $(this).parent().find('input[name="fileId[]"]').val(); 
    5176                                                         fileUploadMSG.find(' .attachments-list').find('input[value="'+idAttach+'"]').remove(); 
    5177                                                         delAttachment(ID,idAttach);  
    5178                                                         $(this).parent().qtip("destroy"); 
    5179                                                         $(this).parent().remove(); 
    5180                                                         if(!fileUploadMSG.find(' .attachments-list').find(".att-box").length){ 
    5181                                                                 fileUploadMSG.find(' .attachments-list').hide(); 
    5182                                                         } 
    5183                                                 });      
    5184                                                          
    5185                                                 fileUploadMSG.find('.attachments-list').append(upload); 
    5186  
    5187                                                 upload.find('.att-box-loading').remove(); 
    5188  
    5189                                                 fileUploadMSG.find('.attachments-list .att-box:last').qtip({ 
    5190                                         content: DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist_tooltip.ejs", {attach : attach}), 
    5191                                                         position: { 
    5192                                                                 corner: { 
    5193                                                                         tooltip: 'bottomMiddle',