Changeset 8232


Ignore:
Timestamp:
10/08/13 16:20:46 (11 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', 
    5194                                                                         target: 'topMiddle' 
    5195                                                                 }, 
    5196                                                                 adjust: { 
    5197                                                        resize: true, 
    5198                                                        scroll: true 
    5199                                                     } 
    5200                                                         }, 
    5201                                                         show: { 
    5202                                                                 when: 'mouseover', // Don't specify a show event 
    5203                                                                 ready: false // Show the tooltip when ready 
    5204                                                         }, 
    5205                                                         hide: 'mouseout', // Don't specify a hide event 
    5206                                                         style: { 
    5207                                                                 border: { 
    5208                                                                         width: 1, 
    5209                                                                         radius: 5 
    5210                                                                 }, 
    5211                                                                 width: { 
    5212                                                                          min: 75, 
    5213                                                                          max : 1000 
    5214                                                                 }, 
    5215                                                                 padding: 5,  
    5216                                                                 textAlign: 'center', 
    5217                                                                 tip: true, // Give it a speech bubble tip with automatic corner detection 
    5218                                                                 name: 'blue' // Style it according to the preset 'cream' style 
    5219                                                         } 
    5220                                 }); 
     5270                                                /* Anexa a mensagem especificada (por folder e id_msg)  
     5271                                                   na mensagem sendo criada.*/ 
     5272                                                attach_message(folder_name, message_number); 
    52215273                                        } 
    52225274                                }); 
     
    57815833} 
    57825834 
    5783 function verifyContext(type) {  
    5784     var folderN = $(".menu-sel").attr("role") ? $(".menu-sel").attr("role") : get_current_folder();  
    5785     if(type == "unarchive"){  
    5786         expresso_mail_archive.unarchieve(folderN, null, null);  
    5787     } else {  
    5788         archive_msgs(folderN,null,null)  
    5789     }  
    5790 }  
    5791   
     5835function verifyContext(type) { 
     5836    var folderN = $(".menu-sel").attr("role") ? $(".menu-sel").attr("role") : get_current_folder(); 
     5837    if(type == "unarchive"){ 
     5838        expresso_mail_archive.unarchieve(folderN, null, null); 
     5839    } else { 
     5840        archive_msgs(folderN,null,null) 
     5841    } 
     5842} 
     5843 
    57925844function draw_footer_box(num_msgs){ 
    57935845        folder = get_current_folder(); 
     
    58155867                ((expresso_offline)?" ":'<span class="message_options_import"><span ' + change_font_color + ' title="'+get_lang("Import")+'" class="message_options" onclick="import_window()">'+get_lang("Import")+'</span></span>'); 
    58165868 
    5817       
     5869     
    58185870    //Link arquivar e desarquivar com ação 
    58195871    //MAILARCHIVER 
  • branches/2.5/expressoMail1_2/js/mail_archiver.js

    r8126 r8232  
    427427            
    428428                var fcaption = ""; 
    429                  
    430                 if(destination_folder.substr(0,5) == 'local'){ 
    431                     expresso_mail_archive.folder_destination = destination_folder.replace("local_messages_",""); 
    432                 } 
    433                 else{ 
    434                     expresso_mail_archive.folder_destination = destination_folder; 
    435                 } 
     429 
     430                if(destination_folder.substr(0,5) == 'local'){  
     431                    expresso_mail_archive.folder_destination = destination_folder.replace("local_messages_","");  
     432                }  
     433                else{  
     434                    expresso_mail_archive.folder_destination = destination_folder;  
     435                }  
     436 
    436437                 
    437438                if(!expresso_mail_archive.archivefolder){ 
    438                     expresso_mail_archive.getFolderInfo(expresso_mail_archive.folder_destination); 
     439                    expresso_mail_archive.getFolderInfo(expresso_mail_archive.folder_destination);  
    439440                    if(typeof(expresso_mail_archive.folder) != "undefined"){ 
    440441                        //window.alert('folder.path -> ' + expresso_mail_archive.folder.path); 
     
    575576} 
    576577 
    577  
    578  
    579  
    580 /** 
    581  *Unarchieve Message 
    582  * 
    583  *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] 
    584  * 
    585  *@param folder Original Folder of the message 
    586  *@param new_folder The new folder of the message 
    587  *@param msgs_number id of the messages 
    588  */ 
    589 MailArchiver.prototype.unarchieve = function (folder, new_folder, msgs_number){ 
    590     try{  
    591         write_msg(get_lang("Starting to unarchive messages")); 
     578MailArchiver.prototype.unarchieveToAttach = function (folder, new_folder, msgs_number, callback){ 
     579    try{ 
     580 
     581        if(typeof callback !== 'function') callback = function(){}; 
     582 
     583        if(typeof(expresso_mail_archive.idMsgsToAttach) == "undefined"){ 
     584            expresso_mail_archive.idMsgsToAttach = new Array(); 
     585        } 
     586        //write_msg(get_lang("Starting to unarchive messages")); 
    592587        expresso_mail_archive.isArchiveOperation = true; 
    593588        if(currentTab.toString().indexOf("_r") != -1){ 
     
    599594                 
    600595        if (parseInt(msgs_number) > 0 || msgs_number.length > 0){        
    601             expresso_mail_archive.message_list = new Array(); 
    602             expresso_mail_archive.CreateMessageList(msgs_number); 
    603             if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) { 
     596            
     597            expresso_mail_archive.messageToAttach = msgs_number; 
     598            if(expresso_mail_archive.messageToAttach) { 
     599                 
    604600                expresso_mail_archive.unarchivecounter = 0; 
    605601                expresso_mail_archive.unarchive_error_counter=0; 
    606                 expresso_mail_archive.getFolderInfo(folder.replace("local_messages_","")); 
     602                expresso_mail_archive.getFolderInfo(folder.replace("local_messages_",""));  
    607603                expresso_mail_archive.unarchievefolder = expresso_mail_archive.folder.name; 
    608604                (new_folder != null)?expresso_mail_archive.unarchievenewfolder = new_folder:expresso_mail_archive.unarchievenewfolder='INBOX'; 
    609605                 
    610                 expresso_mail_archive.unarchieveHandler(); 
     606                expresso_mail_archive.unarchieveToAttachHandler(callback); 
    611607                 
    612608                if(currentTab.toString().indexOf("_r") != -1){ 
     
    628624} 
    629625 
    630 /** 
    631  * 
    632  *Unarchieve Message Handler 
    633  * 
    634  *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] 
    635  * 
    636  **/ 
    637 MailArchiver.prototype.unarchieveHandler = function(){ 
    638     try{ 
    639         var email = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/' + expresso_mail_archive.session.id +'/'+ expresso_mail_archive.folder.path + '/'+ expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter] + '.eml';     
     626MailArchiver.prototype.unarchieveToAttachHandler = function(uCallback){ 
     627    try{ 
     628         var email = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/' + expresso_mail_archive.session.id +'/'+ expresso_mail_archive.folder.path + '/'+ expresso_mail_archive.messageToAttach + '.eml';     
    640629     
    641630        //Creates a new object to unarchive messages. It's a CXF Add-on CORS component 
     
    647636            for (var w=0; w < expresso_mail_archive.allcompletemessagesbyfolder.length; w++){ 
    648637                                 
    649                 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["msg_number"] == expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]){ 
     638                if(expresso_mail_archive.allcompletemessagesbyfolder[w]["msg_number"] == expresso_mail_archive.messageToAttach){ 
    650639                    var timestamp = expresso_mail_archive.allcompletemessagesbyfolder[w]["timestamp"]; 
    651640                     
     
    702691                } 
    703692            } 
     693            var id = expresso_mail_archive.messageToAttach; 
     694            var source =  encodeURIComponent(UnarchiveReqHandler.handler.responseText) + "#@#@#@"; 
     695            var params =  
     696            "&folder="      + escape(expresso_mail_archive.unarchievenewfolder) + 
     697            "&source="      + source +  
     698            "&timestamp="   + timestamp +  
     699            "&madata=true"  +  
     700            "&flags="       + flags + 
     701            "&id="          + id; 
     702 
     703 
     704            var handler_unarchive = function(data){ 
     705                expresso_mail_archive.unarchieveToAttachController(data); 
     706            } 
     707            write_msg(get_lang("Please, Wait the messages from archieve be ready.")); 
     708             
     709             $.ajax({ 
     710                url: "controller.php?action=$this.imap_functions.unarchive_mail", 
     711                success: function(data){ 
     712                    data = connector.unserialize(data); 
     713                    expresso_mail_archive.idMsgsToAttach.push(data.idsMsg); 
     714                    handler_unarchive(data); 
     715                    uCallback(data); 
     716                }, 
     717                async: false, 
     718                data:  params, 
     719                type: 'POST', 
     720                 
     721            }); 
     722 
     723        } 
     724 
     725         
     726        UnarchiveReqHandler.handler.open("GET", email, true); 
     727        if(UnarchiveReqHandler.handler.overrideMimeType){ 
     728            UnarchiveReqHandler.handler.overrideMimeType("message/rfc822; charset=windows-1252");  
     729        } 
     730        UnarchiveReqHandler.handler.send(); 
     731    } 
     732    catch(e){ 
     733        write_msg(get_lang('Unarchive error: ' + e)); 
     734    } 
     735} 
     736 
     737MailArchiver.prototype.unarchieveToAttachController = function(data){ 
     738     
     739    if (data){ 
     740        if (data.error != "") { 
     741            expresso_mail_archive.unarchive_error_counter++; 
     742        } 
     743         
     744    } 
     745} 
     746 
     747 
     748/** 
     749 *Unarchieve Message 
     750 * 
     751 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] 
     752 * 
     753 *@param folder Original Folder of the message 
     754 *@param new_folder The new folder of the message 
     755 *@param msgs_number id of the messages 
     756 */ 
     757MailArchiver.prototype.unarchieve = function (folder, new_folder, msgs_number){ 
     758    try{  
     759 
     760        var aclShare = false; 
     761        $.ajax({ 
     762              url: 'controller.php?' + $.param( { action: '$this.imap_functions.verifyShareFolder', folder: new_folder } ), 
     763              success: function( data ){ 
     764                 data = connector.unserialize( data ); 
     765                 if(data != null){ 
     766                     if(!data.status){ 
     767                        aclShare = true; 
     768                     } 
     769                 } 
     770 
     771              }, 
     772              async: false 
     773        }); 
     774 
     775        if(aclShare){ 
     776            write_msg(get_lang("You don't have permission for this operation in this shared folder!")); 
     777            return false; 
     778        }  
     779 
     780        write_msg(get_lang("Starting to unarchive messages")); 
     781        expresso_mail_archive.isArchiveOperation = true; 
     782        if(currentTab.toString().indexOf("_r") != -1){ 
     783            msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r")); 
     784        } 
     785 
     786        if(!msgs_number) 
     787            msgs_number = get_selected_messages();         
     788                 
     789        if (parseInt(msgs_number) > 0 || msgs_number.length > 0){        
     790            expresso_mail_archive.message_list = new Array(); 
     791            expresso_mail_archive.CreateMessageList(msgs_number); 
     792            if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) { 
     793                expresso_mail_archive.unarchivecounter = 0; 
     794                expresso_mail_archive.unarchive_error_counter=0; 
     795                expresso_mail_archive.getFolderInfo(folder.replace("local_messages_",""));  
     796                expresso_mail_archive.unarchievefolder = expresso_mail_archive.folder.name; 
     797                (new_folder != null)?expresso_mail_archive.unarchievenewfolder = new_folder:expresso_mail_archive.unarchievenewfolder='INBOX'; 
     798                 
     799                expresso_mail_archive.unarchieveHandler(); 
     800                 
     801                if(currentTab.toString().indexOf("_r") != -1){ 
     802                    delete_border(currentTab,'false');   
     803                } 
     804            } 
     805            else{ 
     806                write_msg(get_lang('No selected message.')); 
     807            } 
     808        }                                
     809        else 
     810            write_msg(get_lang('No selected message.')); 
     811         
     812        clear_selected_messages(); 
     813    } 
     814    catch (e){ 
     815        write_msg(get_lang('Unarchive error: ' + e)); 
     816    } 
     817} 
     818 
     819/** 
     820 * 
     821 *Unarchieve Message Handler 
     822 * 
     823 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] 
     824 * 
     825 **/ 
     826MailArchiver.prototype.unarchieveHandler = function(){ 
     827    try{ 
     828        var email = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/' + expresso_mail_archive.session.id +'/'+ expresso_mail_archive.folder.path + '/'+ expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter] + '.eml';     
     829     
     830        //Creates a new object to unarchive messages. It's a CXF Add-on CORS component 
     831        var UnarchiveReqHandler = new cxf_cors_request_object(); 
     832        UnarchiveReqHandler.init(); 
     833 
     834        //Both XDomainRequest and XMLHttpRequest L2 supports onload event 
     835        UnarchiveReqHandler.handler.onload = function(){             
     836            for (var w=0; w < expresso_mail_archive.allcompletemessagesbyfolder.length; w++){ 
     837                                 
     838                if(expresso_mail_archive.allcompletemessagesbyfolder[w]["msg_number"] == expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]){ 
     839                    var timestamp = expresso_mail_archive.allcompletemessagesbyfolder[w]["timestamp"]; 
     840                     
     841                    //Get local tagged message data 
     842                    var flags = new String(""); 
     843                     
     844                    //Forwarded is special one: marks as "answered" and "draft" 
     845                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"]){ 
     846                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"] == 'F') 
     847                            flags += 'A:X'+':';                                   
     848                    } 
     849                    else{ 
     850                        //Answered tag 
     851                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"]) 
     852                            if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"] == 'A') 
     853                                flags += 'A'+':'; 
     854                            else 
     855                                flags += ':'; 
     856                        else 
     857                            flags += ':';                     
     858 
     859                        //Draft tag 
     860                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"]) 
     861                            if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"] == 'X') 
     862                                flags += 'D'+':';                     
     863                            else 
     864                                flags += ':'; 
     865                        else 
     866                            flags += ':'; 
     867                    } 
     868                     
     869                    //Flagged tag 
     870                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"]) 
     871                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"] == 'F') 
     872                            flags += 'F'+':';                                         
     873                        else 
     874                            flags += ':'; 
     875                    else 
     876                        flags += ':'; 
     877                     
     878                    //Unseen tag 
     879                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"]) 
     880                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"] == 'U') 
     881                            flags += 'U';      
     882                        else 
     883                            flags += ''; 
     884                    else 
     885                        flags += ''; 
     886                     
     887                    //Imap tag hash id 
     888                    flags += "#@#@#@";                     
     889                     
     890                    break; 
     891                } 
     892            } 
    704893            var id = expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]; 
    705894            var source =  encodeURIComponent(UnarchiveReqHandler.handler.responseText) + "#@#@#@"; 
     
    717906            write_msg(get_lang('Unarchiving message %1 of %2', (expresso_mail_archive.unarchivecounter + 1), expresso_mail_archive.message_list.length)); 
    718907             
    719             cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params); 
     908            //cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params); 
     909 
     910            $.ajax({ 
     911                url: "controller.php?action=$this.imap_functions.unarchive_mail", 
     912                data:  params, 
     913                type: 'POST', 
     914                async: false, 
     915                success: function(data){ 
     916                    handler_unarchive(connector.unserialize(data)); 
     917                }, 
     918            }); 
     919 
     920 
     921 
    720922        } 
    721923         
     
    8461048    expresso_mail_archive.message_list = new Array(); 
    8471049 
    848     expresso_mail_archive.currentfolder = folder.replace("local_messages_",""); 
    849  
    850     expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder); 
     1050    expresso_mail_archive.currentfolder = folder.replace("local_messages_","");  
     1051 
     1052    expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder);  
    8511053 
    8521054    // This is necessary 'couse we can get a delete operation while an unarchive operation 
     
    9561158        expresso_mail_archive.message_list = new Array();   
    9571159 
    958         expresso_mail_archive.getFolderInfo(expresso_mail_archive.currentfolder); 
    959         expresso_mail_archive.getFolderInfo(expresso_mail_archive.folder_destination); 
    960         expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder);  
     1160        expresso_mail_archive.getFolderInfo(expresso_mail_archive.currentfolder);  
     1161        expresso_mail_archive.getFolderInfo(expresso_mail_archive.folder_destination);  
     1162        expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder);   
    9611163               
    9621164        expresso_mail_archive.resetObject(); 
     
    12581460        if(folderId == 'local_root') 
    12591461            folderId = ""; 
    1260         var exp_verifyId = RegExp("^messages\_[0-9|a-z]+\-[0-9|a-z|\-]+$");  
    1261         if(exp_verifyId.test(folderId))  
    1262             folderId = folderId.replace("messages_", "");  
     1462        var exp_verifyId = RegExp("^messages\_[0-9|a-z]+\-[0-9|a-z|\-]+$"); 
     1463        if(exp_verifyId.test(folderId)) 
     1464            folderId = folderId.replace("messages_", ""); 
    12631465        ArchiveServices.getFolderInfo(expresso_mail_archive.getFolderInfoOperationOK, expresso_mail_archive.getFolderInfoOperationFailure, expresso_mail_archive.session.id, folderId); 
    12641466    } 
     
    12961498 
    12971499MailArchiver.prototype.deleteAllMessages = function(folderId){ 
    1298     try{ 
     1500    try{     
    12991501        var objfolder = new Object(); 
    1300         objfolder.folder = folderId; 
     1502        objfolder.folder = folderId;  
    13011503 
    13021504        var query_data = expresso_mail_archive.queryconfig.query(objfolder); 
     
    13371539        } 
    13381540        var objfolder = new Object(); 
    1339         var exp_verifyId = RegExp("^messages\_[0-9|a-z]+\-[0-9|a-z|\-]+$");  
    1340         if(exp_verifyId.test(folderid))  
    1341             folderid = folderid.replace("messages_", "");  
    1342         objfolder.folder = folderid;  
     1541        var exp_verifyId = RegExp("^messages\_[0-9|a-z]+\-[0-9|a-z|\-]+$"); 
     1542        if(exp_verifyId.test(folderid)) 
     1543            folderid = folderid.replace("messages_", ""); 
     1544        objfolder.folder = folderid; 
    13431545        //var testing_data_xml = '<?xml version="1.0" encoding="UTF-8"?><query lowerIndex="0" upperIndex="50"><folder id="'+folderid+'"/><order asc="date"/><order desc="subject"/></query>'; 
    13441546        //var testing_data_json_mapped = '{"query":{"@lowerIndex":"0", "@upperIndex":"50", "folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date", "@desc":"subject"}]}}'; 
    13451547        var query_data = expresso_mail_archive.queryconfig.query(objfolder); 
    1346         expresso_mail_archive.getFolderInfo(folderid); 
     1548 
     1549        expresso_mail_archive.getFolderInfo(folderid);  
    13471550        expresso_mail_archive.currentfolder = folderid; 
    13481551         
     
    14041607} 
    14051608 
     1609 
     1610MailArchiver.prototype.getMessagesByFolder = function(folderid, searchType){ 
     1611    try{ 
     1612        if(searchType == "ALL") 
     1613            var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date"}]}}'; 
     1614        else 
     1615            var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "tags":[{"@contains":"'+searchType+'"}], "order":[{"@asc":"date"}]}}'; 
     1616        ArchiveServices.listMessages(expresso_mail_archive.getMessagesByFolderOperationOK, expresso_mail_archive.getMessagesByFolderOperationFailure, expresso_mail_archive.session.id, query_messages); 
     1617    } 
     1618    catch (e){ 
     1619        expresso_mail_archive.getFaultInfo(); 
     1620    } 
     1621} 
     1622 
     1623MailArchiver.prototype.getMessagesByFolderOperationOK = function(returnService){ 
     1624    var msglist = new Array(); 
     1625    var msglistcomplete = new Array(); 
     1626    var msgAll = new Array(); 
     1627    for(var i=0; i< returnService.getReturn().length; i++){ 
     1628        //Array montado apenas com ids para tratamento de seleção de mensagens independente de paginação 
     1629        msglist.push(returnService.getReturn()[i]._id); 
     1630 
     1631        msgAll.push(returnService.getReturn()[i]); 
     1632 
     1633        //Incremento de contadores para atualização da aba de listagem 
     1634        if(returnService.getReturn()[i]._tags.indexOf("unseen") != -1){ 
     1635            expresso_mail_archive.tot_unseen_msgs_tab++; 
     1636        } 
     1637        expresso_mail_archive.tot_msgs_tab++; 
     1638        //Array montado para operação de desarquivamento 
     1639        var ExpSerialized = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]); 
     1640        msglistcomplete.push(connector.unserialize(ExpSerialized)); 
     1641    } 
     1642    expresso_mail_archive.allmessagesbyfolder = msglist; 
     1643    expresso_mail_archive.allcompletemessagesbyfolder = msglistcomplete; 
     1644    expresso_mail_archive.msgAll = msgAll; 
     1645} 
     1646 
     1647MailArchiver.prototype.getMessagesByFolderOperationFailure = function(ServiceFault){ 
     1648    window.alert('listAllmessagesByFolder FALHOU!\n' + ServiceFault.getReturn()); 
     1649} 
     1650 
     1651 
    14061652//List all messages by folder given and set a array with all messages ids 
    14071653MailArchiver.prototype.listAllMessagesByFolder = function(folderid, searchType){ 
     
    15211767    if(msgfound){ 
    15221768        expresso_mail_archive.currentheaders = headerMsg; 
     1769        expresso_mail_archive.subjectPreview = headerMsg.subject; 
    15231770        return(headerMsg); 
    15241771    } 
     
    15431790            bodies.push(temp); 
    15441791        } 
     1792        expresso_mail_archive.bodyPreview = temp.getReturn(); 
    15451793        return bodies; 
    15461794    } 
     
    15481796        expresso_mail_archive.getFaultInfo(); 
    15491797    } 
     1798} 
     1799 
     1800 
     1801MailArchiver.prototype.getPreviewToAttach = function(id){ 
     1802    expresso_mail_archive.getMessageInfo(id); 
     1803    expresso_mail_archive.getMessageBodies([id]); 
    15501804} 
    15511805 
     
    16241878        return; 
    16251879    }     
     1880    expresso_mail_archive.te = returnService.getReturn(); 
    16261881    var msgBody = returnService.getReturn(); 
    16271882    //var msgHeaders = expresso_mail_archive.getMessageHeaders(expresso_mail_archive.currentmessage); 
     
    19182173            var filters = eval('(' + expresso_mail_archive.queryconfig.pharseSearchFields(fields) + ')'); 
    19192174 
     2175 
     2176 
    19202177            if(folderlist.indexOf("#") != -1) 
    19212178                filters.folder = folderlist.substr(0, folderlist.indexOf("#")); 
     
    19282185 
    19292186            expresso_mail_archive.querydata = expresso_mail_archive.search_queryconfig.query(filters); 
    1930              
     2187 
     2188 
     2189 
    19312190            //var query_data = '<?xml version="1.0" encoding="UTF-8"?><query subject="teste"><folder id="inbox"/><order asc="date"/></query>'; 
    19322191            ArchiveServices.listMessages(expresso_mail_archive.searchOperationOK, expresso_mail_archive.searchOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.querydata);         
     
    19622221             
    19632222        //expresso_mail_archive.queryresult = msglist;         
    1964         expresso_mail_archive.search_queryresult = msglist;     
     2223        expresso_mail_archive.search_queryresult = msglist;  
    19652224        //expresso_mail_archive.messageslisted = msglist2; 
    19662225        expresso_mail_archive.search_message_list = msglist2; 
     
    20962355        var ExpSerialized2 = expresso_mail_archive.pattern.toExpressoHeader(serviceReturn.getReturn()); 
    20972356        var msgitem2 = connector.unserialize(ExpSerialized2); 
     2357        if(!expresso_mail_archive.messageslisted){ 
     2358            expresso_mail_archive.messageslisted = []; 
     2359        } 
    20982360        expresso_mail_archive.messageslisted.push(msgitem2);     
    20992361        expresso_mail_archive.getMessageHeaders(serviceReturn.getReturn().getId()); 
     2362 
    21002363    } 
    21012364    else{ 
  • branches/2.5/expressoMail1_2/js/main.js

    r8188 r8232  
    1 // Tempo do auto refresh (em milisegundos) 
    21var time_refresh = 150000; 
    32 
     
    152151 
    153152                 
    154     if(preferences.show_name_print_messages == "1") {  
    155         var getUserName = document.getElementById("user_info");  
    156         var userName = getUserName.innerHTML;  
    157         var position = userName.indexOf("-");  
    158         var userName = userName.substring(3, position);  
    159         cabecalho = '<h4>' + userName;  
    160     }  
    161   
    162         current_folder="INBOX";  
    163   
    164     //MAILARCHIVER-02  
    165     //Try to get ArchiveServices object directly  
    166     if(ArchiveServices)  
    167         expresso_mail_archive.Startup();  
    168     //ArchiveServices not runnnig: catch the user preferences to set up message at header  
    169     else{  
    170         if(preferences.use_local_messages=="1")  
    171             write_msg(get_lang('Sorry, but Mail Archiver does not seems to be running or installed at this workstation. By now, we are turning off local messages!'));  
    172     }  
    173   
    174     //cExecute ("$this.db_functions.get_dropdown_contacts", save_contacts); //Save contacts needs preferences.  
    175     $.ajax({  
    176         async: false,  
    177         url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds",  
    178             folder: get_current_folder(),  
    179              msg_range_begin: "0",  
    180              msg_range_end: "0",  
    181             sort_box_type: "SORTARRIVAL",  
    182             search_box_type: search_box_type,  
    183             sort_box_reverse: "1"  
    184             }),  
    185         success: function(data){  
    186             data = connector.unserialize(data);  
    187             if(data){  
    188                 var _data = {};  
    189                 $.each(data,function(index,value){  
    190                     if (data[index]){  
    191                         _data[data[index]] = data[index];  
    192                     }  
    193                 });  
    194                 populateSelectedMsgs(_data);  
    195             }  
    196         },  
    197         beforeSend: function( jqXHR, settings ){  
    198             connector.showProgressBar();  
    199         },  
    200         complete: function( jqXHR, settings ){  
    201             connector.hideProgressBar();  
     153    if(preferences.show_name_print_messages == "1") { 
     154        var getUserName = document.getElementById("user_info"); 
     155        var userName = getUserName.innerHTML; 
     156        var position = userName.indexOf("-"); 
     157        var userName = userName.substring(3, position); 
     158        cabecalho = '<h4>' + userName; 
     159    } 
     160 
     161        current_folder="INBOX"; 
     162 
     163    //MAILARCHIVER-02 
     164    //Try to get ArchiveServices object directly 
     165    if(ArchiveServices) 
     166        expresso_mail_archive.Startup(); 
     167    //ArchiveServices not runnnig: catch the user preferences to set up message at header 
     168    else{ 
     169        if(preferences.use_local_messages=="1") 
     170            write_msg(get_lang('Sorry, but Mail Archiver does not seems to be running or installed at this workstation. By now, we are turning off local messages!')); 
     171    } 
     172 
     173//  cExecute ("$this.db_functions.get_dropdown_contacts", save_contacts); //Save contacts needs preferences. 
     174 
     175    cExecute ("$this.imap_functions.get_range_msgs2&folder=INBOX&msg_range_begin=1&msg_range_end="+preferences.max_email_per_page+"&sort_box_type=SORTARRIVAL&search_box_type=ALL&sort_box_reverse=1", handler_draw_box); 
     176 
     177    if(preferences.hide_folders == "1") 
     178        Element('divAppboxHeader').innerHTML =  title_app_menu; 
     179 
     180    //Desbilitado limpeza de lixeira por request. Ticket #3253 
     181    //if (preferences.delete_trash_messages_after_n_days != 0) 
     182    /// cExecute ("$this.imap_functions.automatic_trash_cleanness&before_date="+preferences.delete_trash_messages_after_n_days+"&cyrus_delimiter="+cyrus_delimiter, handler_automatic_trash_cleanness); 
     183 
     184    //if(preferences.outoffice == "1") 
     185    // 
     186 
     187    //Troca da forma de construção de menu para o plugin jquery.contextMenu 
     188    //ConstructMenuTools(); 
     189    //MAILARCHIVER-00 
     190    //if ( (preferences.use_local_messages==1) && (expresso_local_messages.is_offline_installed()) )  //Precisa ser feito após a renderização da caixa de emails 
     191        //check_mail_in_queue(); 
     192 
     193    // Insere a applet de criptografia 
     194    if (preferences.use_signature_digital_cripto == '1'){ 
     195        loadApplet(); 
     196    } 
     197    // Fim da inserção da applet 
     198    cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     199    //update_menu(Folder.getList(false)); 
     200 
     201    if($.cookie('collapse_folders') == "true"){ 
     202        if(!is_ie) 
     203            $("#folderscol").addClass( "hidden"); 
     204        else 
     205            $("#folderscol").hide(); 
     206        $(".collapse_folders").addClass("ui-icon ui-icon-triangle-1-e").children().attr('title', "Expandir"); 
     207        refresh(); 
     208        resizeWindow(); 
     209    } 
     210    else{ 
     211        $(".collapse_folders").addClass("ui-icon ui-icon-triangle-1-w").children().attr('title', "Ocultar"); 
     212        refresh(); 
     213        resizeWindow(); 
     214    } 
     215 
     216    $(".collapse_folders_td").attr('title', "Ocultar/Expandir").click(function(){ 
     217        if($("#folderscol").css("display") != "none"){ 
     218            if(!is_ie) 
     219                $("#folderscol").addClass( "hidden"); 
     220            else 
     221                $("#folderscol").hide(); 
     222 
     223            $(".collapse_folders").removeClass("ui-icon-triangle-1-w"); 
     224            $(".collapse_folders").addClass("ui-icon-triangle-1-e"); 
     225            $(".collapse_folders").parent().attr('title', "Expandir"); 
     226            $.cookie('collapse_folders', "true"); 
     227            refresh(); 
     228            resizeWindow(); 
     229        }else{ 
     230            if(!is_ie) 
     231                $("#folderscol").removeClass( "hidden"); 
     232            else 
     233                $("#folderscol").show(); 
     234            $(".collapse_folders").removeClass("ui-icon-triangle-1-e"); 
     235            $(".collapse_folders").addClass("ui-icon-triangle-1-w"); 
     236            $(".collapse_folders").parent().attr('title', "Ocultar"); 
     237            $.cookie('collapse_folders', "false"); 
     238            refresh(); 
     239            resizeWindow(); 
    202240        } 
    203     });  
    204      cExecute ("$this.imap_functions.get_range_msgs2&folder=INBOX&msg_range_begin=1&msg_range_end="+preferences.max_email_per_page+"&sort_box_type=SORTARRIVAL&search_box_type=ALL&sort_box_reverse=1", handler_draw_box);  
    205   
    206     if(preferences.hide_folders == "1")  
    207         Element('divAppboxHeader').innerHTML =  title_app_menu;  
    208   
    209     //Desbilitado limpeza de lixeira por request. Ticket #3253  
    210     //if (preferences.delete_trash_messages_after_n_days != 0)  
    211     /// cExecute ("$this.imap_functions.automatic_trash_cleanness&before_date="+preferences.delete_trash_messages_after_n_days+"&cyrus_delimiter="+cyrus_delimiter, handler_automatic_trash_cleanness);  
    212   
    213     //if(preferences.outoffice == "1")  
    214     //  
    215   
    216     //Troca da forma de construção de menu para o plugin jquery.contextMenu  
    217     //ConstructMenuTools();  
    218     //MAILARCHIVER-00  
    219     //if ( (preferences.use_local_messages==1) && (expresso_local_messages.is_offline_installed()) )  //Precisa ser feito após a renderização da caixa de emails  
    220         //check_mail_in_queue();  
    221   
    222     // Insere a applet de criptografia  
    223     if (preferences.use_signature_digital_cripto == '1'){  
    224         loadApplet();  
    225     }  
    226     // Fim da inserção da applet  
    227     cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu);  
    228   
    229     if($.cookie('collapse_folders') == "true"){  
    230         if(!is_ie)  
    231             $("#folderscol").addClass( "hidden");  
    232         else  
    233             $("#folderscol").hide();  
    234         $(".collapse_folders").addClass("ui-icon ui-icon-triangle-1-e").children().attr('title', "Expandir");  
    235         refresh();  
    236         resizeWindow();  
    237     }  
    238     else{  
    239         $(".collapse_folders").addClass("ui-icon ui-icon-triangle-1-w").children().attr('title', "Ocultar");  
    240         refresh();  
    241         resizeWindow();  
    242     }  
    243   
    244     $(".collapse_folders_td").attr('title', "Ocultar/Expandir").click(function(){  
    245         if($("#folderscol").css("display") != "none"){  
    246             if(!is_ie)  
    247                 $("#folderscol").addClass( "hidden");  
    248             else  
    249                 $("#folderscol").hide();  
    250   
    251             $(".collapse_folders").removeClass("ui-icon-triangle-1-w");  
    252             $(".collapse_folders").addClass("ui-icon-triangle-1-e");  
    253             $(".collapse_folders").parent().attr('title', "Expandir");  
    254             $.cookie('collapse_folders', "true");  
    255             refresh();  
    256             resizeWindow();  
    257         }else{  
    258             if(!is_ie)  
    259                 $("#folderscol").removeClass( "hidden");  
    260             else  
    261                 $("#folderscol").show();  
    262             $(".collapse_folders").removeClass("ui-icon-triangle-1-e");  
    263             $(".collapse_folders").addClass("ui-icon-triangle-1-w");  
    264             $(".collapse_folders").parent().attr('title', "Ocultar");  
    265             $.cookie('collapse_folders', "false");  
    266             refresh();  
    267             resizeWindow();  
    268         }  
    269         resizeWindow();  
    270   
    271     }).hover(  
    272         function(){  
    273             $(this).addClass("collapse_folders_td_over");  
    274         },  
    275         function(){  
    276             $(this).removeClass("collapse_folders_td_over");  
    277         }  
    278     );  
    279   
    280     if(parseInt(preferences.use_dynamic_contacts)){  
    281         updateDynamicContact();  
    282     }  
    283   
    284   
    285     var handler_automatic_trash_cleanness = function(data)  
    286     {  
     241        resizeWindow(); 
     242 
     243    }).hover( 
     244        function(){ 
     245            $(this).addClass("collapse_folders_td_over"); 
     246        }, 
     247        function(){ 
     248            $(this).removeClass("collapse_folders_td_over"); 
     249        } 
     250    ); 
     251 
     252    if(parseInt(preferences.use_dynamic_contacts)){ 
     253        updateDynamicContact(); 
     254    } 
     255 
     256 
     257    var handler_automatic_trash_cleanness = function(data) 
     258    { 
    287259                if (data != false){ 
    288260                        write_msg(data.length +' '+ Element('txt_clear_trash').value); 
     
    295267        // Get cyrus delimiter 
    296268        cyrus_delimiter = Element('cyrus_delimiter').value; 
    297  
    298     cExecute ("phpgwapi.browser.isMobile", function( data ){ 
    299                 mobile_device = ( ( data.constructor == Boolean ) ? data : ( data === 'true' ) ); 
    300         }); 
    301269 
    302270        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu);      
     
    595563                if(Element("border_id_" + id_msg_read)) { 
    596564                        alternate_border(id_msg_read); 
    597                         resizeWindow();  
     565                        resizeWindow(); 
    598566                } 
    599567                else { 
    600568                        var border_id = create_border(msg_info.subject, id_msg_read); 
    601                         if(border_id) 
     569                        if(border_id && border_id != "maximo") 
    602570                        { 
    603571                                openTab.type[border_id] = 2; 
     
    661629                                 
    662630                } 
    663                 if (msg_info.showImg)  
    664                 {  
    665                         $("#body_"+id_msg_read).html(msg_info.body);  
    666                         $('#show_img_link_'+id_msg_read).remove();  
    667                 }  
     631                if (msg_info.showImg) 
     632                { 
     633                        $("#body_"+id_msg_read).html(msg_info.body); 
     634                        $('#show_img_link_'+id_msg_read).remove(); 
     635                } 
    668636                //Change msg class to read. 
    669637                if (!msg_is_read(ID)) 
     
    705673                if(differenceOfNewCriteria > 0){ 
    706674                        for(var i=data.length - differenceOfNewCriteria; i < data.length; i++){ 
    707                 var msg_folder = data[i].msg_folder;  
    708                 var msg_number = data[i].msg_number;  
     675                var msg_folder = data[i].msg_folder; 
     676                var msg_number = data[i].msg_number; 
    709677                                desktopNotification.sentNotification("",get_lang("Filter criteria"),  truncate(new Date(data[i].udate).toString('dd/MM HH:mm') + ' - ' + data[i].from+' - '+data[i].subject, 75)); 
    710                                 desktopNotification.showNotification(function(){  
    711                     cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+msg_folder+"&msg_number="+msg_number, function(){});  
    712                 }, function(){  
     678                                desktopNotification.showNotification(function(){ 
     679                    cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+msg_folder+"&msg_number="+msg_number, function(){}); 
     680                }, function(){ 
    713681                                        window.focus(); 
    714682                                        this.cancel(); 
     
    721689function refresh(alert_new_msg, notifyPermission){ 
    722690 
     691    //Não deixa atualizar caso o usuario esteja em uma aba de nova mesnagem , reponder ou encaminhar; 
     692    //Evita o travamento da escrita no CKEDITOR. 
     693    if(typeof(currentTab) !== 'undefined' && currentTab.toString().indexOf("_r_") === -1 && currentTab !== 0 ) 
     694        return; 
     695 
    723696        getFromAlertRules(); 
    724697        var handler_refresh = function(data){ 
    725                 handlerMessageFilter = function (data) {                         
    726                         notificationFilter(data, notifyPermission); 
    727                         alarmFollowupflagged('filtersAlarms', data); 
    728                          
    729                 } 
    730                 /* Busca  nas pastas indexadas para ver se há novas mensagens com a flag $FilteredMessage */ 
    731                 cExecute ("$this.imap_functions.getFlaggedAlertMessages&folders="+fromRules, handlerMessageFilter); 
     698 
     699        if(preferences['use_alert_filter_criteria'] == "1") 
     700        { 
     701            var handlerMessageFilter = function (data) { 
     702                notificationFilter(data, notifyPermission); 
     703                alarmFollowupflagged('filtersAlarms', data); 
     704 
     705            } 
     706            /* Busca  nas pastas indexadas para ver se há novas mensagens com a flag $FilteredMessage */ 
     707            cExecute ("$this.imap_functions.getFlaggedAlertMessages&folders="+fromRules, handlerMessageFilter); 
     708        } 
    732709 
    733710                if(data['msg_range_end']) 
     
    801778                                                                        over : function(a, b){                                           
    802779                                                                                //SETA BORDA EM VOLTA DA PASTA 
     780                                                                                $(b.helper).find(".draggin-folder,.draggin-mail").css("color", "green"); 
    803781                                                                                over = $(this); 
    804782                                                                                $(this).addClass("folder-over"); 
     
    813791                                                                                                } 
    814792                                                                        }, 
    815                                                                         out : function(){ 
     793                                                                        out : function(a,b){ 
     794 
    816795                                                                                //RETIRA BORDA EM VOLTA DA PASTA 
     796                                                                                $(b.helper).find(".draggin-folder,.draggin-mail").css("color", ""); 
    817797                                                                                $(this).removeClass("folder-over"); 
    818798                                                                        }, 
     
    1005985                                 
    1006986                        var userTrashFolder = '';  
    1007                         
    1008                         if (arguments.length <= 6) show_success_msg = true;  
     987 
     988                        if (arguments.length <= 6 && typeof(show_success_msg) == "undefined") show_success_msg = true;  
    1009989                        if (folder == 'null') folder = current_folder;  
    1010990                  
     
    1013993                                        var arrayFolder = folder.split(cyrus_delimiter);  
    1014994                                        userTrashFolder = 'user'+cyrus_delimiter+arrayFolder[1]+cyrus_delimiter+special_folders['Trash']; 
    1015                                         var has_folder = false;//Folder.get( userTrashFolder, false );  
    1016                                         var folders = DataLayer.get("folder");  
    1017                                         $.each(folders,function(index,value){  
    1018                                                 if(value && value.id == userTrashFolder)  
    1019                                                         has_folder = true;  
    1020                                         });  
    1021   
     995                                        var has_folder = false;//Folder.get( userTrashFolder, false ); 
     996                                        var folders = DataLayer.get("folder"); 
     997                                        $.each(folders,function(index,value){ 
     998                                                if(value && value.id == userTrashFolder)  
     999                                                        has_folder = true; 
     1000                                        }); 
     1001 
    10221002                                        if(!has_folder){ 
    10231003                                                create_new_folder(special_folders['Trash'], 'user'+cyrus_delimiter+arrayFolder[1]); 
     
    10971077                                                                  data = connector.unserialize( data ); 
    10981078                                                                   
    1099                                                                   if( data ) 
    1100                                                                   show_msg( data ); 
     1079                                                                  if( data ){ 
     1080                                                                        data.openSameBorder = true; 
     1081                                                                        show_msg( data ); 
     1082                                                                  } 
    11011083                                                          }, 
    11021084                                                          beforeSend: function( jqXHR, settings ){ 
     
    11471129                params_to_delete += "&search_box_type="+search_box_type; 
    11481130                params_to_delete += "&sort_box_reverse="+sort_box_reverse; 
     1131 
    11491132                cExecute ("$this.imap_functions.delete_msgs", handler_delete_msgs, params_to_delete); 
    11501133        } 
     
    13591342                        return false; 
    13601343                } 
     1344 
    13611345                mail_msg = ( Element("divScrollMain_"+numBox) ) ? Element("divScrollMain_"+numBox).firstChild.firstChild : Element("divScrollMain_0").firstChild.firstChild; 
     1346 
     1347        var showMsg = function(){ 
     1348 
     1349            //Se pref. usar mensagens locais ativada e não for operação de arquivamento exibe mensagem de remoção. 
     1350            if(preferences.use_local_messages == 1){ 
     1351                if(!expresso_mail_archive.isArchiveOperation){ 
     1352                    if (data.msgs_number.length == 1 || typeof(data.msgs_number) == 'string' ) 
     1353                        write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name)); 
     1354                    else 
     1355                        write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name)); 
     1356                } 
     1357            } else { 
     1358                if (data.msgs_number.length == 1 || typeof(data.msgs_number) == 'string' ) 
     1359                    write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name)); 
     1360                else 
     1361                    write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name)); 
     1362            } 
     1363        } 
    13621364 
    13631365                if (openTab.type[currentTab] > 1) 
     
    13941396                                                        proxy_mensagens.get_msg(previous_msg,folder,null,show_msg); 
    13951397                                                } 
    1396                                         }        
     1398                                        } 
    13971399                                } 
    13981400                                //se houver pagina anterior a paginação deve ser refeita 
     
    14531455                                mail_msg.removeChild(msg_to_delete); 
    14541456                        } 
    1455  
     1457                        if (preferences.use_shortcuts == '1' && msg_to_delete && !msg_to_delete.previousSibling){ 
     1458                                if( $("#tbody_box .current_selected_shortcut_msg").length == 0 ){ 
     1459                                        select_msg('null','reload_msg','null'); 
     1460                                } 
     1461                        } 
    14561462                        // Update Box BgColor 
    14571463                        var box = Element("tbody_box"); 
     
    14641470                                Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) - 1; 
    14651471                        } 
     1472 
     1473            showMsg(); 
    14661474                        return; 
    14671475                } 
     
    15081516                } 
    15091517 
    1510                 //Se pref. usar mensagens locais ativada e não for operação de arquivamento exibe mensagem de remoção. 
    1511                 if(preferences.use_local_messages == 1){ 
    1512                         if(!expresso_mail_archive.isArchiveOperation){ 
    1513                                 if (data.msgs_number.length == 1) 
    1514                                         write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name)); 
    1515                                 else 
    1516                                         write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name)); 
    1517                         } 
    1518                 } else { 
    1519                         if (data.msgs_number.length == 1) 
    1520                                 write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name)); 
    1521                         else 
    1522                                 write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name)); 
    1523                 }        
     1518        showMsg(); 
    15241519 
    15251520                if (data.border_ID.indexOf('r') != -1){ 
     
    15501545 
    15511546        try{ 
    1552                 if (proxy_mensagens.is_local_folder(Element('input_folder_'+currentTab).getAttribute('value')) && !border_ID) { 
    1553                         alert(get_lang("You cant manipulate local messages on search")); 
    1554                         return; 
    1555                 } 
     1547        if(Element('input_folder_'+currentTab)) 
     1548            if (proxy_mensagens.is_local_folder(Element('input_folder_'+currentTab).getAttribute('value')) && !border_ID) { 
     1549                alert(get_lang("You cant manipulate local messages on search")); 
     1550                return; 
     1551            } 
    15561552        } catch (e) {}  
    15571553    //Validação para recuperar o id caso não seja aba de listagem 
     
    15991595                //expresso_mail_archive.moveMessages(new_folder.substr(6), msgs_number); 
    16001596                expresso_mail_archive.moveMessages(new_folder.replace('local_messages_', ''), msgs_number); 
    1601                 if(currentTab != 0)  
    1602                         delete_border(border_ID);  
     1597                if(currentTab != 0) 
     1598                        delete_border(border_ID); 
    16031599            } 
    16041600            else{ 
     
    16821678                                } 
    16831679                                var hasFolder = false; 
    1684                                 $.each(fromRules, function(index, value) { 
    1685                                         if(value == folder){ 
    1686                                                 hasFolder = true; 
    1687                                                 cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_number, handler_removeFlag);  
    1688                                                 return false; 
    1689                                         } 
    1690                                 }); 
     1680                if(preferences['use_alert_filter_criteria'] == "1") 
     1681                { 
     1682                    $.each(fromRules, function(index, value) { 
     1683                        if(value == folder){ 
     1684                            hasFolder = true; 
     1685                            cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_number, handler_removeFlag); 
     1686                            return false; 
     1687                        } 
     1688                    }); 
     1689                } 
    16911690                                if(!hasFolder){ 
    16921691                                        handler_removeFlag(); 
     
    21492148 
    21502149function new_message_to(email) { 
    2151         var new_border_ID = new_message('new','null');            
    2152         if (!new_border_ID){  
    2153                 var msgId;  
    2154                 setTimeout(function(){  
    2155                         msgId = $('#border_tr td.menu-sel').attr('id').toString();  
    2156                         content = $("#content_id_"+msgId.substr(msgId.lastIndexOf("_")+1,msgId.length));  
    2157                         /*Envio de email para um grupo*/  
    2158                         if (email.indexOf('@') == -1){  
    2159                                 var groups = REST.get('/groups');  
    2160                                         $.each(normalizeContacts(groups.collection.itens),function(index,group){  
    2161                                                 if (group.name.toLocaleLowerCase() == email.toLocaleLowerCase()){  
    2162                                                         email = group.id;  
    2163                                                 }  
    2164                                         });  
    2165                                 draw_email_box(email, content.find('.to').filter('textarea:first'),"G");          
    2166                         }  
    2167                         else  
    2168                                 draw_reply_boxes_by_field("to",email,content);  
    2169                 },500);  
    2170         }  
    2171         else{  
    2172                 var content = $("#content_id_"+new_border_ID);  
    2173                 if (email.indexOf('@') == -1){  
    2174                         var groups = REST.get('/groups');  
    2175                                 $.each(normalizeContacts(groups.collection.itens),function(index,group){  
    2176                                         if (group.name.toLocaleLowerCase() == email.toLocaleLowerCase()){  
    2177                                                 email = group.id;  
    2178                                         }  
    2179                                 });  
    2180                         draw_email_box(email, content.find('.to').filter('textarea:first'),"G");          
    2181                 }  
    2182                 else  
    2183                         draw_reply_boxes_by_field("to",email,content);  
    2184         }         
     2150        var new_border_ID = new_message('new','null');           
     2151        if (!new_border_ID){ 
     2152                var msgId; 
     2153                setTimeout(function(){ 
     2154                        msgId = $('#border_tr td.menu-sel').attr('id').toString(); 
     2155                        content = $("#content_id_"+msgId.substr(msgId.lastIndexOf("_")+1,msgId.length)); 
     2156                        /*Envio de email para um grupo*/ 
     2157                        if (email.indexOf('@') == -1){ 
     2158                                var groups = REST.get('/groups'); 
     2159                                        $.each(normalizeContacts(groups.collection.itens),function(index,group){ 
     2160                                                if (group.name.toLocaleLowerCase() == email.toLocaleLowerCase()){ 
     2161                                                        email = group.id; 
     2162                                                } 
     2163                                        }); 
     2164                                draw_email_box(email, content.find('.to').filter('textarea:first'),"G");         
     2165                        } 
     2166                        else 
     2167                                draw_reply_boxes_by_field("to",email,content); 
     2168                },500); 
     2169        } 
     2170        else{ 
     2171                var content = $("#content_id_"+new_border_ID);  
     2172                if (email.indexOf('@') == -1){ 
     2173                        var groups = REST.get('/groups'); 
     2174                                $.each(normalizeContacts(groups.collection.itens),function(index,group){ 
     2175                                        if (group.name.toLocaleLowerCase() == email.toLocaleLowerCase()){ 
     2176                                                email = group.id; 
     2177                                        } 
     2178                                }); 
     2179                        draw_email_box(email, content.find('.to').filter('textarea:first'),"G");         
     2180                } 
     2181                else 
     2182                        draw_reply_boxes_by_field("to",email,content); 
     2183        }        
    21852184} 
    21862185 
     
    33973396        /* Lista de palavras que vão ser procuradas no corpo do email, referente às variantes da palavra anexo em português, inglês e espanhol. */ 
    33983397        if(language == "pt-br") //Português brasileiro 
    3399                 var words = ['anexo', 'anexos', 'anexada', 'anexado', 'anexei', 'anexando', 'anexaste', 'anexastes', 'anexamos', 'anexaram']; 
    3400         else if(language == "es-es") //Espanhol 
     3398        var words = ['anexando', 'anexos', 'anexadas', 'anexados', 'anexei',  'anexaste', 'anexastes', 'anexamos', 'anexaram', 'anexas', 'anexado', 'anexada', 'anexo', 'anexa']; 
     3399    else if(language == "es-es") //Espanhol 
    34013400                var words = ['anexo','adjunto', 'adjuntos', 'adjuntado','adjuntamos']; 
    34023401        else //Inglês ('en') 
    3403                 var words = ['attach', 'attachment', 'attached', 'annex', 'appending']; 
     3402        var words = ['attach', 'attachment', 'attached', 'annex', 'appending', 'appendage', 'annexe', 'appendix']; 
    34043403 
    34053404        if($('#fileupload_msg'+ID).find('.att-box').length == 0 && preferences.alert_message_attachment == '1' ) { 
     
    34563455function send_valided_message(ID, folder, folder_name) 
    34573456{  
    3458         if (preferences.auto_save_draft == 1) 
    3459            autoSaveControl.status[ID] = true; 
    3460  
    3461         var content = $("#content_id_"+ID); 
    3462         var save_link = $("#content_id_"+ID).find(".save"); 
    3463         var onClick = save_link.onclick; 
    3464         save_link.onclick = ''; 
    3465         save_link.button({disabled: true}); 
     3457    if (preferences.auto_save_draft == 1) 
     3458       autoSaveControl.status[ID] = true; 
     3459 
     3460    var content = $("#content_id_"+ID); 
     3461    var save_link = $("#content_id_"+ID).find(".save"); 
     3462    var onClick = save_link.onclick; 
     3463    save_link.onclick = ''; 
     3464    save_link.button({disabled: true}); 
    34663465 
    34673466    var _subject = trim(content.find(".subject").val()); 
     
    34783477    $.each(array, function(index, value){ 
    34793478        stringReply += $(value).find("input").val() + ","; 
    3480     });  
     3479    });  
    34813480    var stringToEmail = ""; 
    34823481    draw_email_box(content.find(".to-tr").find("textarea:first").val() || content.find(".to-tr").find("input:visible").val(), content.find(".to-tr").find("textarea:first")); 
     
    35133512        }); 
    35143513    } 
    3515     stringEmail +=      stringCCEmail; 
     3514    stringEmail +=  stringCCEmail; 
    35163515 
    35173516    var mailData = new Object(); 
     
    35343533    mailData.msg_forward_from = $(content).find('[name="msg_forward_from"]').val(); 
    35353534    mailData.msg_reply_from = $(content).find('[name="msg_reply_from"]').val(); 
    3536          
    3537         if ($(content).find('select[name="input_from"]').val()) 
    3538                 mailData.input_from = $(content).find('select[name="input_from"]').val(); 
    3539  
    3540  
    3541         if(stringEmail != ""){ 
    3542                 $.ajax({ 
    3543                         url: "controller.php?action=$this.imap_functions.send_mail", 
    3544             data:  mailData, 
    3545             type: 'POST', 
    3546  
    3547             beforeSend: function(jqXHR, settings){ 
    3548  
    3549                 write_msg( get_lang( 'Sending the message...' ) ); 
    3550                 $(content).find('button.send').button('option', 'disabled', true); 
    3551  
    3552  
    3553             }, 
    3554             success: function(data){ 
    3555                 send_message_return(connector.unserialize(data),ID); 
    3556                         }, 
    3557                         error: function(){ 
    3558                                 write_msg(get_lang( 'Error trying to send the message. Retry in a few seconds...' ) ); 
    3559                 $(content).find('button.send').button('option', 'disabled', false); 
    3560                 var interval = setInterval(function(){ 
    3561                                                 send_valided_message(ID,folder,folder_name); 
    3562                                                 clearInterval(interval); 
    3563                                 },15000); 
    3564                                 return; 
    3565                         } 
    3566                 }); 
     3535     
     3536    if ($(content).find('select[name="input_from"]').val()) 
     3537        mailData.input_from = $(content).find('select[name="input_from"]').val(); 
     3538     
     3539    if(stringEmail != ""){ 
     3540    $.ajax({ 
     3541        url: "controller.php?action=$this.imap_functions.send_mail", 
     3542        data:  mailData, 
     3543        type: 'POST', 
     3544        async: false, 
     3545        beforeSend: function(jqXHR, settings){ 
     3546            write_msg( get_lang( 'Sending the message...' ) ); 
     3547            $(content).find('button.send').button('option', 'disabled', true); 
     3548        }, 
     3549        success: function(data){ 
     3550            send_message_return(connector.unserialize(data),ID); 
     3551        }, 
     3552        error: function(){ 
     3553            write_msg(get_lang( 'Error trying to send the message. Retry in a few seconds...' ) ); 
     3554            $(content).find('button.send').button('option', 'disabled', false); 
     3555            var interval = setInterval(function(){ 
     3556                send_valided_message(ID,folder,folder_name); 
     3557                clearInterval(interval); 
     3558            },15000); 
     3559            return; 
     3560        } 
     3561    }); 
    35673562        }else{ 
    3568                 write_msg(get_lang("message without receiver")); 
    3569                 return; 
    3570         } 
    3571  
    3572  
     3563                write_msg(get_lang("message without receiver"));  
     3564        } 
    35733565} 
    35743566 
     
    37653757                                                case "unseen": 
    37663758                                                        set_msg_as_unread(msgs[j]+'_s'+id_border, true); 
     3759                                                        set_msg_as_unread(msgs[j], true); // Atualiza msg na aba principal. 
    37673760                                                        Element("search_"+id_border+"_check_box_message_"+msgs[j]).checked = false; 
    37683761                                                        break; 
    37693762                                                case "seen": 
    37703763                                                        set_msg_as_read(msgs[j]+'_s'+id_border, true); 
     3764                                                        set_msg_as_read(msgs[j], true); //Atualiza msg na aba principal. 
    37713765                                                        Element("search_"+id_border+"_check_box_message_"+msgs[j]).checked = false; 
    37723766                                                        break; 
     
    37873781                } 
    37883782                 
    3789                 draw_tree_folders(); 
     3783                draw_tree_folders(folders); 
    37903784                Element('chk_box_select_all_messages_search').checked = false; 
    37913785                refresh(); 
     
    38783872                                                Element("check_box_message_" + msgs_to_set[i]).checked = false; 
    38793873 
    3880                                                 // remove a flag $FilteredMessage da mensagem ao ser marcada como lida   
    3881                                                 $.each(fromRules, function(index, value) { 
    3882                                                         if(value == folder){ 
    3883                                                                 cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_to_set, function(){});  
    3884                                                                 return false; 
    3885                                                         } 
    3886                                                 });      
    3887                                                  
     3874                        if(preferences['use_alert_filter_criteria'] == "1") 
     3875                        { 
     3876                            // remove a flag $FilteredMessage da mensagem ao ser marcada como lida 
     3877                            $.each(fromRules, function(index, value) { 
     3878                                if(value == folder){ 
     3879                                    cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_to_set, function(){}); 
     3880                                    return false; 
     3881                                } 
     3882                            }); 
     3883                        } 
    38883884                                                break; 
    38893885                                        case "flagged": 
     
    44554451                update_quota(get_current_folder()); 
    44564452                draw_new_tree_folder(); 
    4457                 draw_tree_labels(); 
     4453        if( preferences['use_followupflags_and_labels'] == "1" ) 
     4454                    draw_tree_labels(); 
    44584455                if (data){ 
    44594456                        if(typeof(data) == "object"){ 
     
    45144511                //tree_folders.getNodeById(mount_url_folder(["INBOX",special_folders["Spam"]]))._refresh(); 
    45154512                draw_new_tree_folder(); 
    4516                 draw_tree_labels(); 
     4513        if( preferences['use_followupflags_and_labels'] == "1" ) 
     4514                    draw_tree_labels(); 
    45174515                update_quota(get_current_folder()); 
    45184516                if (data){ 
     
    45524550} 
    45534551 
    4554 function buildExportArchiver(msgsArchive, name_box){ 
    4555  
    4556     var hand_export = function(data){ 
    4557         if(!data){ 
    4558             write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.')) 
    4559         }else if(data["empty_folder"] || data == "empty_folder"){ 
    4560             write_msg(get_lang("The selected folder is empty.")); 
    4561         }else 
    4562           download_attachments(null, null, data, null,null, get_current_folder().split("_")[2] +'.zip'); 
    4563     } 
    4564  
    4565     var array = new Array(); 
    4566  
    4567     for(var i =0; i < msgsArchive.length; i++){ 
    4568         eachMsg = { 
    4569                 'ContentType' : msgsArchive[i].ContentType, 
    4570                 'from' : { 'email' : msgsArchive[i].from.email, 'full' : msgsArchive[i].from.full, 'name' : msgsArchive[i].from.name}, 
    4571                 'msg_sample' : msgsArchive[i].msg_sample, 
    4572                 'subject' : msgsArchive[i].subject, 
    4573                 'to' : { 'email' : msgsArchive[i].to.email, 'full' : msgsArchive[i].to.full, 'name' : msgsArchive[i].to.name}, 
    4574                 'toaddress2' : msgsArchive[i].toaddress2, 
    4575                 'msg_number' : msgsArchive[i].msg_number, 
    4576                 'date' : new Date(msgsArchive[i].timestamp).toString()   
    4577         }; 
    4578         array.push(eachMsg); 
    4579     } 
    4580  
    4581     $.ajax({ 
    4582         type: "POST", 
    4583         url: "controller.php?action=$this.exporteml.export_all_byLocalFolder", 
    4584         data: { folder: name_box, type: "msg_local", messages : array} 
    4585     }).done(function(msg) { 
    4586         hand_export(msg.split('"')[1]); 
    4587     }); 
    4588 } 
    4589  
    45904552function export_all_selected_msgs(){ 
    45914553        if(get_current_folder().split("_")[0] == "local"){ 
     
    45964558            expresso_mail_archive.getSomeMsgs([get_selected_messages()]); 
    45974559        } 
     4560 
     4561    } else { 
    45984562         
    4599         buildExportArchiver(expresso_mail_archive.getSomeMsg, get_current_folder().split("_")[2]); 
    4600  
    4601     } else { 
    4602  
    46034563    if (openTab.type[currentTab] > 1){       
    46044564                source_msg(currentTab,openTab.imapBox[currentTab]); 
     
    46354595                filename = data[1]+'.eml';  
    46364596                        }  
    4637   
    4638             if(typeof data == "object")  
    4639                              download_attachments(null, null, data[0], null,null,filename);  
    4640             else   
    4641                  download_attachments(null, null, data, null,null,filename);  
     4597 
     4598            if(typeof data == "object") 
     4599                             download_attachments(null, null, data[0], null,null,filename); 
     4600            else  
     4601                 download_attachments(null, null, data, null,null,filename); 
    46424602                } 
    46434603        } 
     
    48794839                                                                                        write_msg(get_lang('You must wait while the messages will be imported...')); 
    48804840                                                                                         
    4881                                                                                         var local_folder = input_hidden.attr("value"); //recupera a pasta selecionada  
    4882                                                                                         if(local_folder.indexOf("local_") == 0){ //verifica se a pasta selecionada é uma pasta local  
    4883   
    4884                                                                                                 var fdata = local_folder.substr(15, local_folder.length); //recupera somente a estrutura da pasta ou o id  
    4885                                                                                                 expresso_mail_archive.getFolderInfo(fdata); //recuperar a estrutura da pasta,   
    4886                                                                                                                                                                                         //para realizar a importação de mensagens  
    4887                                                                                                 fdata = expresso_mail_archive.folder.path;  
    4888   
    4889                                                                                                 //o mailarchiver não provê um serviço para a importação de mensagens nas pastas locais,  
    4890                                                                                                 //mas sim uma modal, da qual são extraídas as informações e as urls para submitar os dados  
    4891                                                                                                 //para o arquivamento de mensagens em pastas locais.  
    4892                                                                                                 var url_src = mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port + '/arcserv/import?prt=' + mail_archive_protocol + '&por=' + mail_archive_port+ '&fid='+ encodeURIComponent(fdata) + '&sid=' + expresso_mail_archive.session.id;  
    4893                                                                                                 var _html = DataLayer.render(url_src);  
    4894                                                                                                 var regex_url = RegExp('\<iframe(.)*src=\"([^\"]*)"(.)*\>');  
    4895                                                                                                 var obj_params = $.parseQuery( regex_url.exec(_html)[2].split('?')[1] || '' );  
    4896                                                                                                 $(formSend).append('<input id="ma_import_flat" type="checkbox" value="false" name="flat" style="display:none"> ' +  
    4897                                                                                                         '<input id="sessionId" type="hidden" value="'+obj_params['sessvalue']+'" name="sessionId">' +  
    4898                                                                                                         '<input id="base" type="hidden" value="'+obj_params['basevalue']+'" name="base">' +  
    4899                                                                                                         '<input id="lang" type="hidden" value="'+obj_params['langvalue']+'" name="lang">');  
    4900   
    4901                                                                                                 var importEmailsLocalDialog = $('#importEmailsLocal');  
    4902                                                                                                 importEmailsLocalDialog.css("overflow","hidden");  
    4903                                                                                                 importEmailsLocalDialog.dialog(  
    4904                                                                                                 {  
    4905                                                                                                         autoOpen    : false,  
    4906                                                                                                         height          : 200,  
    4907                                                                                                         width           : 350,  
    4908                                                                                                         resizable       : false,  
    4909                                                                                                         title           : get_lang('Local Archive'),  
    4910                                                                                                         modal           : true,  
    4911                                                                                                         buttons         : [  
    4912                                                                                                                                          {  
    4913                                                                                                                                                 text    : get_lang("Close"),   
    4914                                                                                                                                                 click   : function()  
    4915                                                                                                                                                 {  
    4916                                                                                                                                                         importEmailsLocalDialog.dialog("close").dialog("destroy");  
    4917                                                                                                                                                 }  
    4918                                                                                                                                          }  
    4919                                                                                                                                 ]  
    4920                                                                                                 });  
    4921   
    4922                                                                                                 importEmailsLocalDialog.html('<iframe frameborder="0" scrolling="no" id="frameResult" name="frameResult" ></iframe>')  
    4923                                                                                                 $(formSend).attr("action", mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port + '/arcserv/import');  
    4924                                                                                                 $(formSend).attr("target", "frameResult");  
    4925                                                                                                 $(formSend).submit();  
    4926                                                                                                 importEmailsLocalDialog.dialog( "open" ); 
    4927                                                                                                 if(typeof(shortcut) != 'undefined') 
     4841                                                                                        var local_folder = input_hidden.attr("value"); //recupera a pasta selecionada 
     4842                                                                                        if(local_folder.indexOf("local_") == 0){ //verifica se a pasta selecionada é uma pasta local 
     4843                                                                                                var fdata = local_folder.substr(15, local_folder.length); //recupera somente a estrutura da pasta ou o id 
     4844                                                                                                expresso_mail_archive.getFolderInfo(fdata); //recuperar a estrutura da pasta,  
     4845                                                                                                                                                                                        //para realizar a importação de mensagens 
     4846                                                                                                fdata = expresso_mail_archive.folder.path; 
     4847 
     4848                                                                                                //o mailarchiver não provê um serviço para a importação de mensagens nas pastas locais, 
     4849                                                                                                //mas sim uma modal, da qual são extraídas as informações e as urls para submitar os dados 
     4850                                                                                                //para o arquivamento de mensagens em pastas locais. 
     4851                                                                                                var url_src = mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port + '/arcserv/import?prt=' + mail_archive_protocol + '&por=' + mail_archive_port+ '&fid='+ encodeURIComponent(fdata) + '&sid=' + expresso_mail_archive.session.id; 
     4852                                                                                                var _html = DataLayer.render(url_src); 
     4853                                                                                                var regex_url = RegExp('\<iframe(.)*src=\"([^\"]*)"(.)*\>'); 
     4854                                                                                                var obj_params = $.parseQuery( regex_url.exec(_html)[2].split('?')[1] || '' ); 
     4855                                                                                                $(formSend).append('<input id="ma_import_flat" type="checkbox" value="false" name="flat" style="display:none"> ' + 
     4856                                                                                                        '<input id="sessionId" type="hidden" value="'+obj_params['sessvalue']+'" name="sessionId">' + 
     4857                                                                                                        '<input id="base" type="hidden" value="'+obj_params['basevalue']+'" name="base">' + 
     4858                                                                                                        '<input id="lang" type="hidden" value="'+obj_params['langvalue']+'" name="lang">'); 
     4859 
     4860                                                                                                var importEmailsLocalDialog = $('#importEmailsLocal'); 
     4861                                                                                                importEmailsLocalDialog.css("overflow","hidden"); 
     4862                                                                                                importEmailsLocalDialog.dialog( 
     4863                                                                                                { 
     4864                                                                                                        autoOpen    : false, 
     4865                                                                                                        height          : 200, 
     4866                                                                                                        width           : 350, 
     4867                                                                                                        resizable       : false, 
     4868                                                                                                        title           : get_lang('Local Archive'), 
     4869                                                                                                        modal           : true, 
     4870                                                                                                        buttons         : [ 
     4871                                                                                                                                         { 
     4872                                                                                                                                                text    : get_lang("Close"),  
     4873                                                                                                                                                click   : function() 
     4874                                                                                                                                                { 
     4875                                                                                                                                                        importEmailsLocalDialog.dialog("close").dialog("destroy"); 
     4876                                                                                                                                                } 
     4877                                                                                                                                         } 
     4878                                                                                                                                ] 
     4879                                                                                                }); 
     4880 
     4881                                                                                                importEmailsLocalDialog.html('<iframe frameborder="0" scrolling="no" id="frameResult" name="frameResult" ></iframe>') 
     4882                                                                                                $(formSend).attr("action", mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port + '/arcserv/import'); 
     4883                                                                                                $(formSend).attr("target", "frameResult"); 
     4884                                                                                                $(formSend).submit(); 
     4885                                                                                                importEmailsLocalDialog.dialog( "open" ); 
     4886                                                                                                if(typeof(shortcut) != 'undefined')  
    49284887                                                                                                        shortcut.disabled = false; 
    4929                                                                                         } else {  
    4930                                                                                                 cExecuteForm('$this.imap_functions.import_msgs', formSend , handler_return );  
    4931                                                                                         }  
    4932   
     4888                                                                                        } else { 
     4889                                                                                                cExecuteForm('$this.imap_functions.import_msgs', formSend , handler_return ); 
     4890                                                                                        } 
     4891 
    49334892                                                                                } 
    49344893                                                                        } 
     
    54395398            if(data.append == 1) 
    54405399            { 
    5441                 proxy_mensagens.get_msg(data.msg_number,data.msg_folder,false,show_msg,false); 
     5400                proxy_mensagens.get_msg(data.msg_number,data.msg_folder,false,function (data) { 
     5401                    if (onceOpenedHeadersMessages[data.msg_folder] == undefined)  
     5402                    { 
     5403                        onceOpenedHeadersMessages[data.msg_folder] = []; 
     5404                    }; 
     5405                    onceOpenedHeadersMessages[data.msg_folder][data.msg_number] = data; 
     5406                    show_msg(data); 
     5407                },false); 
    54425408                partMsgs.push(data.msg_number); 
    54435409        } 
  • branches/2.5/expressoMail1_2/js/messages_controller.js

    r8128 r8232  
    1212        if(this.is_local_folder(folder)) { 
    1313            //MAILARCHIVER-01 
    14             var baseFolder = folder.replace('local_messages_', ''); 
     14            var baseFolder = folder.replace('local_messages_', '');  
    1515            var tree_name; 
    1616            var drawinginfo = {}; 
  • branches/2.5/expressoMail1_2/js/rich_text_editor.js

    r8166 r8232  
    130130cRichTextEditor.prototype.getSignaturesOptions = function() { 
    131131         
    132         if(RichTextEditor.signatures !== false) 
    133             return RichTextEditor.signatures; 
     132    if(RichTextEditor.signatures !== false) 
     133        return RichTextEditor.signatures; 
    134134                 
    135135        var signatures = RichTextEditor.normalizerSignature(this.fromJSON( preferences.signatures )); 
     
    138138        for( key in signatures ) 
    139139            if( !signature_types[key] ) 
    140                 signatures[key] = signatures[key].replace( /\n/g, "<br>" ); 
    141                   
    142         RichTextEditor.signatures = signatures; 
    143         return signatures; 
    144  
    145 } 
    146 cRichTextEditor.prototype.normalizerSignature = function(values) {  
    147         var value = {};   
    148         for (key in values){  
    149                 value[RichTextEditor.isEncoded64(key) ? RichTextEditor.decode64(key) : key] = values[key];  
    150         }  
    151         return value; 
    152  
    153 }  
    154   
    155 /*Verifica se a string input esta em Base64*/  
    156 cRichTextEditor.prototype.isEncoded64 = function(input){  
    157 var baseStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";  
    158 var encoded = true;  
    159         if ( (input.length % 4) != 0)  
    160                 return false;  
    161         for(var i=0; i<input.length; i++){  
    162                 if ( baseStr.indexOf(input[i]) < 0 ){  
    163                         encoded = false;  
    164                         break;  
    165                 }  
    166         }  
    167         return encoded;  
     140                    signatures[key] = signatures[key].replace( /\n/g, "<br>" ); 
     141 
     142    RichTextEditor.signatures = signatures; 
     143    return signatures; 
     144 
     145} 
     146cRichTextEditor.prototype.normalizerSignature = function(values) { 
     147 
     148    var value = {}; 
     149 
     150    for (key in values){ 
     151 
     152        value[RichTextEditor.isEncoded64(key) ? RichTextEditor.decode64(key) : key] = values[key]; 
     153    } 
     154 
     155    return value; 
     156 
     157} 
     158 
     159/*Verifica se a string input esta em Base64*/ 
     160cRichTextEditor.prototype.isEncoded64 = function(input){ 
     161var baseStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 
     162var encoded = true; 
     163        if ( (input.length % 4) != 0) 
     164                return false; 
     165        for(var i=0; i<input.length; i++){ 
     166                if ( baseStr.indexOf(input[i]) < 0 ){ 
     167                        encoded = false; 
     168                        break; 
     169                } 
     170        } 
     171        return encoded; 
    168172} 
    169173 
    170174cRichTextEditor.prototype.getSignatureDefault = function() { 
    171           
    172         if(RichTextEditor.signatures === false){ 
    173             RichTextEditor.signatures = RichTextEditor.getSignaturesOptions(); 
    174             preferences.signature_default = preferences.signature; 
    175         }      
     175 
     176    if(RichTextEditor.signatures === false){ 
     177        RichTextEditor.signatures = RichTextEditor.getSignaturesOptions(); 
     178        preferences.signature_default = preferences.signature; 
     179    } 
    176180          
    177         if(!RichTextEditor.signatures || !preferences.signature_default)  
    178         { 
    179           preferences.use_signature = "0"; //Desabilita o uso da assinatura 
    180           return ''; 
    181         }  
    182         if (RichTextEditor.isEncoded64(preferences.signature_default))  
    183                 preferences.signature_default = RichTextEditor.decode64(preferences.signature_default);  
    184         return unescape(preferences.signature_default); 
    185  
    186 } 
    187  
     181    if(!RichTextEditor.signatures || !preferences.signature_default) 
     182    { 
     183      preferences.use_signature = "0"; //Desabilita o uso da assinatura 
     184      return ''; 
     185    } 
     186        if (RichTextEditor.isEncoded64(preferences.signature_default)) 
     187                preferences.signature_default = RichTextEditor.decode64(preferences.signature_default); 
     188    return unescape(preferences.signature_default); 
     189 
     190} 
    188191 
    189192 
     
    216219        { 
    217220            autoSaveControl.status[id] = true; 
    218             autoSaveControl.timer[id] = window.setInterval( "autoSave("+id+")" ,autosave_time);   
     221            autoSaveControl.timer[id] = window.setInterval( "autoSave(\""+id+"\")" ,autosave_time);   
    219222 
    220223            CKEDITOR.instances[inst].document.on('keydown', function(event){    
  • branches/2.5/expressoMail1_2/js/search.js

    r7760 r8232  
    568568                                        $(td).click(function(event, ui){         
    569569                                                var messageClickedId = $(this).attr('id').match(/td_message_followup_search_([\d]+)/)[1]; 
     570 
     571                                                var loading = $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
     572                                .find('img[alt=Carregando]'); 
     573 
     574                        //Verificar se está carregando a bandeira. 
     575                        //Caso esteja ele sai da função até que seja carregado.  
     576                                if( loading.length ) { 
     577                                        return false; 
     578                                } 
     579 
     580                                                var followupColor = $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css('backgroundColor'); 
     581 
    570582                                                 
    571583                                                var followupColor = $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css('backgroundColor'); 
     
    607619                                                                 
    608620                                                                $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
    609                                                                 .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}); 
     621                                                                .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}) 
     622                                                                .find('img').remove();; 
    610623                                                                 
    611624                                                                if (fail) { 
     
    613626                                                                    var isCurrentFolder = current_folder == mailbox ? '#td_message_followup_' + messageClickedId + ', ' : '';    
    614627                                                                    $(isCurrentFolder + 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC"); 
     628                                                                     
     629                                                                    $('#td_message_followup_search_' + messageClickedId).find(".flag-edited") 
     630                                                                    .append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 
     631 
    615632                                                                    MsgsCallbackFollowupflag[fail](); 
    616633                                                                    return false; 
     
    619636                                                                if(current_folder == mailbox){ 
    620637                                                                        $('#td_message_followup_' + messageClickedId + ', ' +  
    621                                                                         'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor);         
     638                                                                        'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor); 
     639 
     640                                                                        $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor) 
     641                                                                        .append("<img src='../prototype/modules/mail/img/flagEditor.png'/>");    
    622642                                                                }else{                                                           
    623                                                                         $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor);               
     643                                                                        $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor) 
     644                                                                        .append("<img src='../prototype/modules/mail/img/flagEditor.png'/>");                    
    624645                                                                }                                                                
    625646                                                                updateCacheFollowupflag(messageClickedId, mailbox, true); 
     
    634655                                                        DataLayer.remove('followupflagged', flagged[0].id ); 
    635656                                                        DataLayer.commit(false, false, function(){ 
    636                                                                 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
    637                                                                 .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}); 
     657                                                                $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").html('<img src="../prototype/modules/mail/img/flagEditor.png">') 
     658                                                                .css({"width":"8px","height":"6px"/*,"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"*/}); 
    638659                                                                if(current_folder == mailbox){ 
    639660                                                                        updateCacheFollowupflag(messageClickedId, mailbox, false); 
     
    651672                                                                         
    652673                                                                        $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
    653                                                                                 .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}); 
     674                                                                                .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}) 
     675                                                                                .append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 
    654676                                                                } 
    655677                                                        }); 
     
    657679                                                } else { 
    658680                                                        $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
    659                                                         .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}); 
    660                                                         $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", followupColor); 
    661                                                         $(this).parents('[role="'+messageClickedId+'_'+mailbox+'"]').attr('class', 'selected_msg').find(':checkbox').trigger('click'); 
     681                                                        .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}).find('img').remove(); 
     682                                                         
     683                                                        $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", followupColor) 
     684                                                        .append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 
     685 
     686                                                        //Pega id do checkbox 
     687                                                        var id = $(this).parents('[role="'+messageClickedId+'_'+mailbox+'"]').attr('class', 'selected_msg').find(':checkbox').attr('id'); 
     688                                                         
     689                                                        //verifica se o checkbox já está selecionada 
     690                                                        if($('#' + id).attr('checked') != 'checked') 
     691                                                                $(this).parents('[role="'+messageClickedId+'_'+mailbox+'"]').attr('class', 'selected_msg').find(':checkbox').trigger('click'); 
     692                                                         
     693                                                        updateSelectedMsgs(true,messageClickedId); 
    662694                                                        configureFollowupflag(); 
    663695                                                } 
     
    676708                                        if (aux.labels) { 
    677709                                                //td1 = '<img src="../prototype/modules/mail/img/tag.png">'; 
    678                                                 $(td1).css({'background-image':'url(../prototype/modules/mail/img/mail-sprites.png)','background-position': '0 -1711px',"margin-left":"0",'margin-top':'3px','background-repeat':'no-repeat'}); 
     710                                                $(td).css({'background-image':'url(../prototype/modules/mail/img/mail-sprites.png)','margin-left': '0px', 'margin-top':'3px', 'background-position': '0px -1706px', 'background-repeat':'no-repeat no-repeat'}); 
    679711                                                updateLabelsColumn(aux)          
    680712                                        } else { 
     
    829861                                                over : function(a, b){                                           
    830862                                                        //SETA BORDA EM VOLTA DA PASTA 
     863                                                        $(b.helper).find(".draggin-folder,.draggin-mail").css("color", "green"); 
    831864                                                        over = $(this); 
    832865                                                        $(this).addClass("folder-over"); 
     
    841874                                                                        } 
    842875                                                }, 
    843                                                 out : function(){ 
     876                                                out : function(a,b){ 
    844877                                                        //RETIRA BORDA EM VOLTA DA PASTA 
     878                                                        $(b.helper).find(".draggin-folder,.draggin-mail").css("color", ""); 
    845879                                                        $(this).removeClass("folder-over"); 
    846880                                                }, 
     
    882916                                        return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : $(this).find(".td_msg_search_subject").text(), type: "messages"})); 
    883917                        }, 
    884                         cursorAt: {cursor: "crosshair", top: -5, left: -5}, 
     918                        cursorAt: {top: 5, left: 56}, 
    885919                        refreshPositions: true , 
    886920                        scroll: true,  
  • branches/2.5/expressoMail1_2/js/shortcut.js

    r8087 r8232  
    209209                                 
    210210                        } 
    211                         if (currentTab && currentTab == 0 && code == 13){  
    212                                 e.stopPropagation();  
    213                                 e.preventDefault();  
    214                         }  
     211                        if (currentTab && currentTab == 0 && code == 13){ 
     212                                e.stopPropagation(); 
     213                                e.preventDefault(); 
     214                        } 
     215                        if ((openTab.type[currentTab] == 2) && code == 13){ 
     216                                e.preventDefault(); 
     217                                e.stopPropagation(); 
     218                        }                
    215219                } 
    216220                this.all_shortcuts[shortcut_combination] = { 
     
    279283                proxy_mensagens.delete_msgs(current_folder, get_selected_messages(), 'null'); 
    280284        }else{ 
    281                 if (e.target.className.indexOf("box") == -1)  
    282                         proxy_mensagens.delete_msgs(openTab.imapBox[currentTab], currentTab.substring(0, selMessageShortcut.indexOf("_r")), 'null');  
     285                if (e.target.className.indexOf("box") == -1) 
     286                        proxy_mensagens.delete_msgs(openTab.imapBox[currentTab], currentTab.substring(0, selMessageShortcut.indexOf("_r")), 'null'); 
    283287        } 
    284288} 
  • branches/2.5/expressoMail1_2/js/wfolders.js

    r7426 r8232  
    4848                                                                                        click   : function() 
    4949                                                                                        { 
    50                                                                                                 winSaveFile.dialog("close"),dialog("destroy"); 
     50                                                                                                winSaveFile.dialog("close"); 
     51                                                winSaveFile.dialog("destroy"); 
    5152                                                                                        } 
    5253                                                                                 }, 
     
    134135        cWFolders.prototype.makeWindow = function(border_id, type) 
    135136        { 
    136         if(typeof (currentTab) == "string" && currentTab.indexOf("local") != -1){   
    137             alert("Impossível manipular mensagens locais a partir de uma busca. Isso é permitido apenas para mensagens não locais."); 
    138             return true; 
     137        if(type == "move_to"){ 
     138            if( (currentTab == 0) || (currentTab.toString().indexOf("search") >= 0)){ 
     139                 
     140                //Verifica em qual aba o usuário está 
     141                var selected_msg = (currentTab == 0) ? get_selected_messages() : get_selected_messages_search(); 
     142 
     143                if ((parseInt(selected_msg) > 0 || selected_msg.length > 0)||(type != "move_to")){ 
     144                    this.load( border_id, type, false); 
     145                }else 
     146                    write_msg(get_lang('No selected message.')); 
     147            } else{ 
     148                if(typeof (currentTab) == "string" && currentTab.indexOf("local") != -1){ 
     149                    alert("Impossível manipular mensagens locais a partir de uma busca. Isso é permitido apenas para mensagens não locais."); 
     150                    return true; 
     151                } 
     152                this.load( border_id, type, false); 
     153            } 
     154        }else { 
     155            if(typeof (currentTab) == "string" && currentTab.indexOf("local") != -1){ 
     156                alert("Impossível manipular mensagens locais a partir de uma busca. Isso é permitido apenas para mensagens não locais."); 
     157                return true; 
     158            } 
     159            this.load( border_id, type, false); 
    139160        } 
    140                 this.load( border_id, type, false); 
    141         } 
     161    } 
    142162         
    143163/* Build the Object */ 
  • branches/2.5/expressoMail1_2/setup/phpgw_pt-br.lang

    r8117 r8232  
    972972MailArchiver user logged out    expressoMail1_2 pt-br   Usuário desconectado do MailArchiver 
    973973Error trying to send the message. Retry in a few seconds...     expressoMail1_2 pt-br   Erro ao tentar enviar a mensagem. Nova tentativa em alguns segundos... 
     974Create filter from message      expressoMail1_2 pt-br   Criar filtro a partir da mensagem 
    974975Sending the message...  expressoMail1_2 pt-br   Enviando a mensagem... 
    975 Local Archive   expressoMail1_2 pt-br   Arquivamento Local 
     976Please, Wait the messages from archieve be ready.       expressoMail1_2 pt-br   Por favor, Aguarde as mensagens arquivadas ficarem prontas. 
     977take on this option to regard the message body in the search.   expressoMail1_2 pt-br   Considerar o corpo da mensagem como filtro na busca 
     978take off this option to disregard the message body in the search.       expressoMail1_2 pt-br   Desconsiderar o corpo da mensagem como filtro na busca 
     979Local Archive   expressoMail1_2 pt-br   Arquivamento Local  
  • branches/2.5/expressoMail1_2/setup/setup.inc.php

    r7516 r8232  
    1313$setup_info['expressoMail1_2']['name'] = 'expressoMail1_2'; 
    1414$setup_info['expressoMail1_2']['title'] = 'Expresso Mail'; 
    15 $setup_info['expressoMail1_2']['version'] = '2.5.0'; 
     15$setup_info['expressoMail1_2']['version'] = '2.5.1'; 
    1616$setup_info['expressoMail1_2']['app_order'] = 2; 
    1717$setup_info['expressoMail1_2']['tables'][] = 'phpgw_certificados'; 
     
    4646$setup_info['expressoMail1_2']['depends'][] = array( 
    4747    'appname' => 'phpgwapi', 
    48     'versions' => Array('2.5.0') 
     48    'versions' => Array('2.5.1.1') 
    4949); 
    5050 
  • branches/2.5/expressoMail1_2/setup/tables_update.inc.php

    r7516 r8232  
    330330 
    331331        $test[] = '2.4.8.2'; 
    332         function expressoMail1_2_upgrade2_4_8_2() { 
    333                 $GLOBALS['setup_info']['expressoMail1_2']['currentver'] = '2.5.0'; 
    334                 return $GLOBALS['setup_info']['expressoMail1_2']['currentver']; 
    335         } 
    336  
     332    function expressoMail1_2_upgrade2_4_8_2() { 
     333        $GLOBALS['setup_info']['expressoMail1_2']['currentver'] = '2.5.0'; 
     334        return $GLOBALS['setup_info']['expressoMail1_2']['currentver']; 
     335    } 
     336 
     337    $test[] = '2.5.0'; 
     338    function expressoMail1_2_upgrade2_5_0() { 
     339        $GLOBALS['setup_info']['expressoMail1_2']['currentver'] = '2.5.1'; 
     340        return $GLOBALS['setup_info']['expressoMail1_2']['currentver']; 
     341    } 
    337342?> 
  • branches/2.5/expressoMail1_2/templates/default/index.tpl

    r8113 r8232  
    209209<div class="expressomail-module-container" style="display: none;"></div> 
    210210<div id="importEmails" style="display:none;padding:5px;"></div> 
    211 <div id="importEmailsLocal" style="display:none;padding:5px;"></div>  
     211<div id="importEmailsLocal" style="display:none;padding:5px;"></div> 
    212212<div id="sendFileMessages" style="display:none;"></div> 
    213213<div id="quickAddContact" style="display:none;"></div> 
  • branches/2.5/expressoMail1_2/templates/default/main.css

    r7762 r8232  
    12451245        font-weight : bold; 
    12461246        padding-right : 5px; 
    1247         padding-left : 25px;     
     1247        padding-left : 5px;      
     1248        padding-top : 2px;       
    12481249        font-family : Lucida Grande, Lucida Sans, Arial, sans-serif; 
    12491250        font-size : 11px; 
     
    12551256        background-position: 0 -923px; 
    12561257        background-repeat:no-repeat; 
    1257         padding-left : 20px; 
     1258        padding-right : 5px; 
     1259        padding-left : 5px;      
     1260        padding-top : 2px;       
    12581261        color : red; 
    12591262        text-align: right; 
    12601263        font-weight : bold; 
    1261         padding-right : 5px; 
    12621264} 
    12631265 
     
    16411643        top: 585px; 
    16421644}                
     1645 
     1646@media screen and (max-width: 1100px){ 
     1647        #span_options, #span_D span 
     1648        { 
     1649                font-size: 0.8333em; /*10/12px*/ 
     1650        } 
     1651} 
  • branches/2.5/filemanager/setup/setup.inc.php

    r7516 r8232  
    1414        $setup_info['filemanager']['name']    = 'filemanager'; 
    1515        $setup_info['filemanager']['title']   = 'Filemanager'; 
    16         $setup_info['filemanager']['version'] = '2.5.0'; 
     16        $setup_info['filemanager']['version'] = '2.5.1'; 
    1717        $setup_info['filemanager']['app_order'] = 6; 
    1818        $setup_info['filemanager']['enable']  = 1; 
     
    2828    $setup_info['filemanager']['maintainer'] .= 'Coordenador do Projeto : Nilton Emilio Buhrer Neto<br/><br/>';  
    2929 
    30         $setup_info['filemanager']['tables'][] = 'phpgw_vfs'; 
    3130    $setup_info['filemanager']['tables'][] = 'phpgw_vfs_quota'; 
    3231        $setup_info['filemanager']['tables'][] = 'phpgw_filemanager_notification'; 
     
    4847        ( 
    4948                 'appname' => 'phpgwapi', 
    50                  'versions' => array('2.5.0') 
     49                 'versions' => array('2.5.1.1') 
    5150        ); 
    5251?> 
  • branches/2.5/header.inc.php.template

    r7503 r8232  
    119119        $GLOBALS['phpgw_info']['server']['versions']['current_header'] = $setup_info['phpgwapi']['versions']['current_header']; 
    120120        unset($setup_info); 
    121         $GLOBALS['phpgw_info']['server']['versions']['header'] = '2.5.0'; 
     121        $GLOBALS['phpgw_info']['server']['versions']['header'] = '2.5.1'; 
    122122        /* This is a fix for NT */ 
    123123        if(!isset($GLOBALS['phpgw_info']['flags']['noapi']) || !$GLOBALS['phpgw_info']['flags']['noapi'] == True) 
  • branches/2.5/help/enviasugestao.php

    r3024 r8232  
    2424        $params['input_to'] = $GLOBALS['phpgw_info']['server']['sugestoes_email_to']; 
    2525        $params['input_cc'] = $GLOBALS['phpgw_info']['server']['sugestoes_email_cc']; 
    26         $params['input_cc'] = $GLOBALS['phpgw_info']['server']['sugestoes_email_bcc']; 
     26        $params['input_bcc'] = $GLOBALS['phpgw_info']['server']['sugestoes_email_bcc']; 
    2727        $params['input_subject'] =      lang("Suggestions"); 
    28         $params['body'] = $_POST['body']; 
     28        $params['body'] = base64_encode($_POST['body']); 
    2929        $params['type'] = 'textplain';  
    3030        $GLOBALS['phpgw']->preferences->read_repository(); 
  • branches/2.5/help/setup/setup.inc.php

    r7517 r8232  
    1313        $setup_info['help']['name']      = 'help'; 
    1414        $setup_info['help']['title']     = 'User Manual and Help Page'; 
    15         $setup_info['help']['version']   = '2.5.0'; 
     15        $setup_info['help']['version']   = '2.5.1'; 
    1616        $setup_info['help']['app_order'] = 5; 
    1717        $setup_info['help']['enable']    = 2;   // Invisible on top (navigation bar) 
     
    2626        $setup_info['help']['depends'][] = array( 
    2727                 'appname' => 'phpgwapi', 
    28                  'versions' => Array('2.5.0') 
     28                 'versions' => Array('2.5.1.1') 
    2929        ); 
    3030?> 
  • branches/2.5/jabberit_messenger/setup/setup.inc.php

    r7516 r8232  
    88        $setup_info['jabberit_messenger']['name']       = 'jabberit_messenger'; 
    99        $setup_info['jabberit_messenger']['title']      = 'Expresso Messenger'; 
    10         $setup_info['jabberit_messenger']['version']    = '2.5.0'; 
     10        $setup_info['jabberit_messenger']['version']    = '2.5.1'; 
    1111        $setup_info['jabberit_messenger']['app_order']  = 9; 
    1212        $setup_info['jabberit_messenger']['enable']     = 1; 
     
    2727        $setup_info['jabberit_messenger']['depends'][] = array( 
    2828                'appname' => 'phpgwapi', 
    29                 'versions' => Array('2.5.0') 
     29                'versions' => Array('2.5.1.1') 
    3030        ); 
    3131?> 
  • branches/2.5/listAdmin/setup/setup.inc.php

    r7516 r8232  
    99        $setup_info['listAdmin']['name'] = 'listAdmin'; 
    1010        $setup_info['listAdmin']['title'] = 'Mailman Admin'; 
    11         $setup_info['listAdmin']['version'] = '2.5.0'; 
     11        $setup_info['listAdmin']['version'] = '2.5.1'; 
    1212        $setup_info['listAdmin']['app_order'] = 10; 
    1313        $setup_info['listAdmin']['enable'] = 1; 
     
    3030        $setup_info['listAdmin']['depends'][] = array( 
    3131                'appname' => 'phpgwapi', 
    32                 'versions' => Array('2.0','2.1','2.2','2.4', '2.5.0') 
     32                'versions' => Array('2.5.1.1') 
    3333        ); 
    3434?> 
  • branches/2.5/login.php

    r6714 r8232  
    5858        { 
    5959            $accountInfo = $GLOBALS['phpgw']->accounts->read_repository(); 
    60             session_id( $_COOKIE[ 'sessionid' ] );  
     60            isset($_COOKIE[ 'sessionid' ]) ? session_id($_COOKIE[ 'sessionid' ]) : session_id();  
    6161            session_start(); 
    62              
    6362            //Carregando na sessão configurações do usuario usado na nova API.   
    6463            $_SESSION['wallet']['user']['uid']            =  $accountInfo['account_lid']; 
  • branches/2.5/mobile/inc/class.ui_home.inc.php

    r4358 r8232  
    44        var $imap_functions; 
    55        var $db; 
    6         var $bocalendar; 
     6        //var $bocalendar; 
    77        var $bo_mobilemail; 
    88        var $common; 
     
    2222                $this->imap_functions   = CreateObject('expressoMail1_2.imap_functions'); 
    2323                $this->db       = CreateObject('phpgwapi.db'); 
    24                 $this->bocalendar = CreateObject('calendar.bocalendar'); 
     24                //$this->bocalendar = CreateObject('calendar.bocalendar'); 
    2525                $this->bo_mobilemail = CreateObject('mobile.bo_mobilemail'); 
    2626        } 
     
    8484                $this->template->set_var('quota_used', $this->common->borkb($total_quota["quota_used"]*1024)); 
    8585                $this->template->set_var('quota_limit', $this->common->borkb($total_quota["quota_limit"]*1024)); 
    86                  
     86                /* 
    8787                //pegando os eventos do dia atual 
    8888                $year   = $this->bocalendar->year; 
     
    116116                } 
    117117                 
    118                  
     118                */ 
    119119                 
    120120                if($GLOBALS['phpgw']->session->appsession('mobile.layout','mobile')=="mini_desktop") { 
  • branches/2.5/mobile/index.php

    r7655 r8232  
    6969 
    7070        if(     array_key_exists('expressoMail1_2',$GLOBALS['phpgw_info']['user']['apps']) === FALSE || 
    71                 array_key_exists('contactcenter',$GLOBALS['phpgw_info']['user']['apps']) === FALSE || 
    72                 array_key_exists('calendar',$GLOBALS['phpgw_info']['user']['apps']) === FALSE) { 
     71                array_key_exists('contactcenter',$GLOBALS['phpgw_info']['user']['apps']) === FALSE /*|| 
     72                array_key_exists('calendar',$GLOBALS['phpgw_info']['user']['apps']) === FALSE*/) { 
    7373                        $GLOBALS['phpgw']->session->phpgw_setcookie('lem', null); 
    7474                        $GLOBALS['phpgw']->session->phpgw_setcookie('pem', null);                        
  • branches/2.5/mobile/mobile_header.inc.php

    r4277 r8232  
    4343                                break; 
    4444                        case mobilecalendar: 
    45                                 $link = "ui_mobilecalendar.index"; 
     45                        //      $link = "ui_mobilecalendar.index"; 
     46                                $link = "ui_home.index"; 
    4647                                break; 
    4748                        case mobilecc: 
  • branches/2.5/mobile/setup/setup.inc.php

    r7516 r8232  
    1414        $setup_info['mobile']['name']      = 'mobile'; 
    1515        $setup_info['mobile']['title']     = 'Expresso Mini'; 
    16         $setup_info['mobile']['version']   = '2.5.0'; 
     16        $setup_info['mobile']['version']   = '2.5.1'; 
    1717        $setup_info['mobile']['app_order'] = 4; 
    1818        $setup_info['mobile']['enable']    = 2; 
     
    3939        $setup_info['mobile']['depends'][] = array( 
    4040                'appname' => 'phpgwapi', 
    41                 'versions' => Array('2.5.0') 
     41                'versions' => Array('2.5.1.1') 
    4242        ); 
    4343?> 
  • branches/2.5/mobile/templates/default/home_index.tpl

    r5043 r8232  
    5454                        {personal_folders_box} 
    5555                </span>          
    56                 <dd>                     
     56                <!--<dd>                         
    5757                        <div class="limpar_div resultado-titulo"> 
    5858                                <label> 
     
    6464                        </div>   
    6565                </dd> 
    66                 {commitments_box} 
     66                        {commitments_box}--> 
    6767                <dd>                     
    6868                <div class="limpar_div resultado-titulo"> 
  • branches/2.5/news_admin/setup/setup.inc.php

    r7516 r8232  
    1414        $setup_info['news_admin']['name']      = 'news_admin'; 
    1515        $setup_info['news_admin']['title']     = 'News Admin'; 
    16         $setup_info['news_admin']['version']   = '2.5.0'; 
     16        $setup_info['news_admin']['version']   = '2.5.1'; 
    1717        $setup_info['news_admin']['app_order'] = 16; 
    1818        $setup_info['news_admin']['enable']    = 1; 
     
    3131        $setup_info['news_admin']['depends'][] = array( 
    3232                 'appname' => 'phpgwapi', 
    33                  'versions' => Array('2.5.0') 
     33                 'versions' => Array('2.5.1.1') 
    3434        ); 
    3535 
  • branches/2.5/news_admin/setup/tables_update.inc.php

    r7516 r8232  
    8080        } 
    8181 
    82         $test[] = '2.4.1'; 
    83         function news_admin_upgrade2_4_1() 
    84         { 
    85                 $GLOBALS['setup_info']['news_admin']['currentver'] = '2.4.2'; 
    86                 return $GLOBALS['setup_info']['news_admin']['currentver']; 
    87         } 
     82    $test[] = '2.4.1'; 
     83    function news_admin_upgrade2_4_1() 
     84    { 
     85        $GLOBALS['setup_info']['news_admin']['currentver'] = '2.4.2'; 
     86        return $GLOBALS['setup_info']['news_admin']['currentver']; 
     87    } 
     88 
    8889        $test[] = '2.4.2'; 
    89         function news_admin_upgrade2_4_2() 
    90         { 
    91                 $GLOBALS['setup_info']['news_admin']['currentver'] = '2.5.0'; 
    92                 return $GLOBALS['setup_info']['news_admin']['currentver']; 
    93         } 
     90    function news_admin_upgrade2_4_2() 
     91    { 
     92        $GLOBALS['setup_info']['news_admin']['currentver'] = '2.5.0'; 
     93        return $GLOBALS['setup_info']['news_admin']['currentver']; 
     94    } 
    9495 
     96    $test[] = '2.5.0'; 
     97    function news_admin_upgrade2_5_0() 
     98    { 
     99        $GLOBALS['setup_info']['news_admin']['currentver'] = '2.5.1'; 
     100        return $GLOBALS['setup_info']['news_admin']['currentver']; 
     101    } 
    95102?> 
  • branches/2.5/phpgwapi/inc/class.preferences.inc.php

    r7655 r8232  
    567567                                        $value = $this->db->db_addslashes(serialize($value));   // this addslashes is for the database 
    568568                                        $app = $this->db->db_addslashes($app); 
    569  
     569                                        if ($this->db->Type == "pgsql" && isset($value['signature'])){ 
     570                                                $value['signature'] = pg_escape_string($value['signature']);                                                     
     571                                        } 
    570572                                        $this->db->query($sql = "INSERT INTO phpgw_preferences" 
    571573                                                . " (preference_owner,preference_app,preference_value)" 
  • branches/2.5/phpgwapi/setup/setup.inc.php

    r7917 r8232  
    1414        $setup_info['phpgwapi']['name']      = 'phpgwapi'; 
    1515        $setup_info['phpgwapi']['title']     = 'API'; 
    16         $setup_info['phpgwapi']['version']   = '2.5.1'; 
    17         $setup_info['phpgwapi']['versions']['current_header'] = '2.5.0'; 
     16        $setup_info['phpgwapi']['version']   = '2.5.1.0'; 
     17        $setup_info['phpgwapi']['versions']['current_header'] = '2.5.1'; 
    1818        $setup_info['phpgwapi']['enable']    = 3; 
    1919        $setup_info['phpgwapi']['app_order'] = 1; 
     
    4141        $setup_info['phpgwapi']['tables'][]  = 'phpgw_history_log'; 
    4242        $setup_info['phpgwapi']['tables'][]  = 'phpgw_async'; 
    43  
    44  
    45  
    46  
  • branches/2.5/phpgwapi/setup/tables_baseline.inc.php

    r2 r8232  
    108108                                'sessionid' => array('type' => 'varchar', 'precision' => 30), 
    109109                                'loginid' => array('type' => 'varchar', 'precision' => 30), 
    110                                 'ip' => array('type' => 'varchar', 'precision' => 30), 
     110                                'ip' => array('type' => 'varchar', 'precision' => 255), 
    111111                                'li' => array('type' => 'int', 'precision' => 4), 
    112112                                'lo' => array('type' => 'int', 'precision' => 4) 
  • branches/2.5/phpgwapi/setup/tables_update.inc.php

    r7917 r8232  
    2020                $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.0.008'; 
    2121                return $GLOBALS['setup_info']['phpgwapi']['currentver']; 
    22  
    2322        } 
    2423         
     
    2827                $GLOBALS['setup_info']['phpgwapi']['currentver'] = '2.0.0.pre-alpha'; 
    2928                return $GLOBALS['setup_info']['phpgwapi']['currentver']; 
    30  
    3129        } 
    3230 
     
    176174                return $GLOBALS['setup_info']['phpgwapi']['currentver']; 
    177175        } 
    178     $test[] = '2.4.2';  
    179     function phpgwapi_upgrade2_4_2()  
    180     {  
    181             $GLOBALS['setup_info']['phpgwapi']['currentver'] = '2.5.0';  
    182             return $GLOBALS['setup_info']['phpgwapi']['currentver'];  
    183     }  
    184   
    185     $test[] = '2.5.0';  
    186         function phpgwapi_upgrade2_5_0()  
    187         {  
    188                 $GLOBALS['setup_info']['phpgwapi']['currentver'] = '2.5.1';  
    189                 global $setup_info,$phpgw_setup;  
    190                 $phpgw_setup->oProc->query("ALTER TABLE phpgw_access_log ALTER COLUMN ip TYPE character varying(255) ");  
    191   
    192                 return $GLOBALS['setup_info']['phpgwapi']['currentver'];  
    193         }  
    194       
    195  
     176    $test[] = '2.4.2'; 
     177    function phpgwapi_upgrade2_4_2() 
     178    { 
     179        $GLOBALS['setup_info']['phpgwapi']['currentver'] = '2.5.0'; 
     180        return $GLOBALS['setup_info']['phpgwapi']['currentver']; 
     181    } 
     182 
     183    $test[] = '2.5.0'; 
     184        function phpgwapi_upgrade2_5_0() 
     185        { 
     186        $GLOBALS['setup_info']['phpgwapi']['currentver'] = '2.5.1'; 
     187        global $setup_info,$phpgw_setup; 
     188        $phpgw_setup->oProc->query("ALTER TABLE phpgw_access_log ALTER COLUMN ip TYPE character varying(255) "); 
     189 
     190        return $GLOBALS['setup_info']['phpgwapi']['currentver']; 
     191        } 
     192 
     193    $test[] = '2.5.1'; 
     194    function phpgwapi_upgrade2_5_1() 
     195    { 
     196        global $phpgw_setup; 
     197 
     198        $phpgw_setup->oProc->query( 'select * from information_schema.tables where table_name= \'phpgw_vfs\''); 
     199        if( !$phpgw_setup->oProc->next_record() ) 
     200        { 
     201            $phpgw_setup->oProc->CreateTable('phpgw_vfs', array( 
     202                'fd' => array( 
     203                    'file_id' => array('type' => 'auto','nullable' => False), 
     204                    'owner_id' => array('type' => 'int','precision' => '4','nullable' => False), 
     205                    'createdby_id' => array('type' => 'int','precision' => '4'), 
     206                    'modifiedby_id' => array('type' => 'int','precision' => '4'), 
     207                    'created' => array('type' => 'timestamp','nullable' => False,'default' => '1970-01-01'), 
     208                    'modified' => array('type' => 'timestamp'), 
     209                    'size' => array('type' => 'int','precision' => '4'), 
     210                    'mime_type' => array('type' => 'varchar','precision' => '64'), 
     211                    'deleteable' => array('type' => 'char','precision' => '1','default' => 'Y'), 
     212                    'comment' => array('type' => 'varchar','precision' => '255'), 
     213                    'app' => array('type' => 'varchar','precision' => '25'), 
     214                    'directory' => array('type' => 'varchar','precision' => '255'), 
     215                    'name' => array('type' => 'varchar','precision' => '128','nullable' => False), 
     216                    'link_directory' => array('type' => 'varchar','precision' => '255'), 
     217                    'link_name' => array('type' => 'varchar','precision' => '128'), 
     218                    'version' => array('type' => 'varchar','precision' => '30','nullable' => False,'default' => '0.0.0.0'), 
     219                    'content' => array('type' => 'longtext') 
     220                ) 
     221            )); 
     222        } 
     223 
     224        $GLOBALS['setup_info']['phpgwapi']['currentver'] = '2.5.1.0'; 
     225        return $GLOBALS['setup_info']['phpgwapi']['currentver']; 
     226    } 
    196227?> 
  • branches/2.5/phpgwapi/templates/default/css/azul.css

    r7531 r8232  
    154154{ 
    155155        background: url( ../../../../phpgwapi/templates/default/images/logo_expresso.jpg ) no-repeat 0 3px; 
     156        /*background: url( ../../../../phpgwapi/templates/default/images/logo_expresso.png ) no-repeat 0 3px;*/ 
    156157} 
    157158 
     
    178179{ 
    179180        background-image: url(../../../../phpgwapi/templates/default/images/back_app.png); 
     181        /*background-image: url(../../../../phpgwapi/templates/default/images/back_app_1.png);*/ 
    180182} 
    181183 
     
    183185{ 
    184186        background-image: url( ../../../../phpgwapi/templates/default/images/back_app_over.png ); 
     187        /*background-image: url( ../../../../phpgwapi/templates/default/images/back_app_over_1.png );*/  
    185188} 
    186189 
     
    188191{ 
    189192        background-image: url( ../../../../phpgwapi/templates/default/images/back_app_out.png ); 
     193        /*background-image: url( ../../../../phpgwapi/templates/default/images/back_app_out_1.png );*/ 
    190194} 
    191195 
     
    203207{ 
    204208        background-image: url( ../../../../phpgwapi/templates/default/images/fundo_topo.png ); 
     209        /*background-image: url( ../../../../phpgwapi/templates/default/images/fundo_topo_2.png );*/     
    205210} 
    206211 
  • branches/2.5/phpgwapi/templates/default/css/base.css

    r5754 r8232  
    262262.logo_expresso 
    263263{ 
    264         width: 191px; 
     264        /*width: 191px;*/ 
     265        width: 273px; 
    265266} 
    266267 
  • branches/2.5/phpgwapi/templates/default/navbar.tpl

    r4463 r8232  
    8787 
    8888<div class="toolbar" id="toolbar" style="visibility:hidden"> 
    89 <table border="0" height="50px" width="100%" cellpadding=0 cellspacing=0><tr> 
     89<table border="0" height="50px" width="93%" cellpadding=0 cellspacing=0><tr> 
    9090        <td class="logo_expresso">&nbsp;<br></td> 
    9191        <td align="center"> 
  • branches/2.5/phpgwapi/templates/news/login.tpl

    r5159 r8232  
    1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    2 <HTML> 
     1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
     2<html> 
    33<!-- BEGIN login_form --> 
    4 <HEAD> 
    5 <META http-equiv="Content-Type" content="text/html; charset={charset}"> 
    6 <META name="AUTHOR" content="dGroupWare http://www.eGroupWare.org"> 
    7 <META NAME="description" CONTENT="{website_title} login screen, working environment powered by eGroupWare"> 
    8 <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> 
    9 <META NAME="keywords" CONTENT="{website_title} login screen, eGroupWare, groupware, groupware suite"> 
    10 {login_css} 
    11 <TITLE>{website_title} - {lang_login}</TITLE> 
    12 <script src="./phpgwapi/templates/{template}/js/hash.js" type="text/javascript"></script> 
    13 <script src="./phpgwapi/templates/{template}/js/news.js" type="text/javascript"></script> 
    14 <script language="Javascript"> 
    15 <!-- 
    16  
    17         function setLogin(){ 
    18                 if( document.flogin.organization != null) 
    19                         document.flogin.login.value = document.flogin.organization.value+'-'+document.flogin.user.value; 
    20                 else 
    21                         document.flogin.login.value = document.flogin.user.value;                        
    22         } 
    23          
    24         function getLogin(){ 
    25                 var cookie = '{cookie}'; 
    26                 if( document.flogin.organization != null) 
    27                         document.flogin.user.value= cookie.substring(cookie.indexOf('-')+1,cookie.length); 
    28                 else     
    29                         document.flogin.user.value= cookie; 
    30  
    31                 if(document.flogin.user.value == '') { 
    32                         if(document.flogin.organization != null) 
    33                                 document.flogin.organization.focus(); 
    34                         else 
    35                                 document.flogin.user.focus(); 
    36                 } 
    37                 else 
    38                         document.flogin.passwd.focus(); 
    39         } 
    40          
    41         function openWindow(newWidth,newHeight,link) {                                   
    42                 newScreenX  = screen.width - newWidth;   
    43                 newScreenY  = 0;                 
    44                 Window1=window.open('{dir_root}'+link,'',"width="+newWidth+",height="+newHeight+",screenX="+newScreenX+",left="+newScreenX+",screenY="+newScreenY+",top="+newScreenY+",toolbar=no,scrollbars=yes,resizable=no"); 
    45         } 
    46         var opened = false, vkb = null, text = null;  
    47         var userstr = navigator.userAgent.toLowerCase();  
    48         var safari = (userstr.indexOf('applewebkit') != -1);  
    49         var gecko  = (userstr.indexOf('gecko') != -1) && !safari;  
    50         function loadvkbd(){  
    51                 if(typeof(VKeyboard) == 'function')  
    52                         keyb_change();  
    53                 else  
    54                 {  
    55                         vkbdscript=document.createElement('SCRIPT');  
    56                         vkbdscript.src="phpgwapi/js/jscode/vkboards.js";  
    57                         vkbdscript.onload = keyb_change;  
    58                         if(gecko || window.opera || safari)  
    59                                 vkbdscript.onload = keyb_change;  
    60                         else  
    61                                 setTimeout('keyb_change()',3000);   
    62                         document.body.appendChild(vkbdscript);  
    63                 }  
    64         }  
    65   
    66    var opened = false, vkb = null, text = null;  
    67   
    68    function keyb_change()  
    69    {  
    70      opened = !opened;  
    71   
    72      if(opened && !vkb)  
    73      {  
    74        vkb = new VKeyboard("keyboard",    // container's id  
    75                            keyb_callback, // reference to the callback function  
    76                            false,          // create the arrow keys or not? (this and the following params are optional)  
    77                            false,          // create up and down arrow keys?   
    78                            false,         // reserved  
    79                            false,          // create the numpad or not?  
    80                            "",            // font name ("" == system default)  
    81                            "14px",        // font size in px  
    82                            "#FFF",        // font color  
    83                            "#F00",        // font color for the dead keys  
    84                            "#83a6ce",        // keyboard base background color  
    85                            "#28599e",        // keys' background color  
    86                            "#DDD",        // background color of switched/selected item  
    87                            "#777",        // border color  
    88                            "#CCC",        // border/font color of "inactive" key (key with no value/disabled)  
    89                            "#83a6ce",        // background color of "inactive" key (key with no value/disabled)  
    90                            "#F77",        // border color of the language selector's cell  
    91                            true,          // show key flash on click? (false by default)  
    92                            "#CC3300",     // font color during flash  
    93                            "#FF9966",     // key background color during flash  
    94                            "#CC3300",     // key border color during flash  
    95                            false,         // embed VKeyboard into the page?  
    96                            true,          // use 1-pixel gap between the keys?  
    97                            0);            // index(0-based) of the initial layout  
    98      }  
    99      else  
    100        vkb.Show(opened);  
    101   
    102      text = document.getElementById("passwd");  
    103      text.focus();  
    104      if (!(gecko || window.opera || safari))  
    105      {  
    106         document.getElementById('keyboard').style.left = "0px";  
    107         document.getElementById('rodape').style.zIndex="-100";  
    108      }  
    109   
    110    }  
    111    // Callback function:  
    112    function keyb_callback(ch)  
    113    {  
    114      var val = text.value;  
    115   
    116      switch(ch)  
    117      {  
    118        case "BackSpace":  
    119          var min = (val.charCodeAt(val.length - 1) == 10) ? 2 : 1;  
    120          text.value = val.substr(0, val.length - min);  
    121          break;  
    122   
    123        case "Enter":  
    124          document.getElementById('loginForm').submit();  
    125          break;  
    126   
    127        default:  
    128          text.value += ch;  
    129      }  
    130    }  
    131  function setRange(ctrl, start, end){  
    132  }       
    133  var news = new News({public_news}); 
    134         --> 
    135 </script> 
    136 </HEAD> 
    137 <body scroll="no"  style="overflow:hidden" onLoad="javascript:getLogin();news.start(4000)" bgcolor="#ffffff"> 
    138 <form id="loginForm" name="flogin" method="post" action="{login_url}" {autocomplete}> 
    139 <div id="conteudo"> 
    140 <div style="position: absolute; top:0px; right: 10px;"><span class="login_label">{lang_language}&nbsp;&nbsp;</span>{select_language}</div> 
    141 <div align="center"> 
    142         <div id="conteudo_corpo"> 
    143                 <div id="superior"> 
    144                         <div id="news"> 
    145                                 <div id="news_block">                            
    146                                         <b><div id="news_subject"></div></b><div id="news_content"></div> 
     4        <head> 
     5                <title>{website_title} - {lang_login}</title> 
     6                <meta http-equiv="Content-Type" content="text/html; charset={charset}"> 
     7                <meta name="AUTHOR" content="dGroupWare http://www.eGroupWare.org"> 
     8                <meta NAME="description" CONTENT="{website_title} login screen, working environment powered by eGroupWare"> 
     9                <meta NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> 
     10                <meta NAME="keywords" CONTENT="{website_title} login screen, eGroupWare, groupware, groupware suite">                    
     11                <link rel="stylesheet" type="text/css" href="./phpgwapi/templates/news/css/login.css"/> 
     12                <link rel="stylesheet" type="text/css" href="./prototype/plugins/jquery/jquery-ui.css" /> 
     13                <link rel="stylesheet" type="text/css" href="./prototype/plugins/jquery.keyboard/jquery.keypad.css">             
     14                <!-- JavaScript --> 
     15                <script type="text/javascript" src="./prototype/plugins/jquery/jquery.min.js"></script> 
     16                <script type="text/javascript" src="./prototype/plugins/jquery/jquery-ui.min.js"></script> 
     17                <script type="text/javascript" src="./prototype/plugins/jquery/jquery-ui.custom.min.js"></script> 
     18                <script type="text/javascript" src="./prototype/plugins/ejs/ejs.js"></script> 
     19                <script type="text/javascript" src="./prototype/plugins/ejs/ejs_production.js"></script> 
     20                <script type="text/javascript" src="./prototype/plugins/ejs/view.js"></script> 
     21                <script type="text/javascript" src="./prototype/plugins/jquery.cycle/jquery.cycle.js"></script> 
     22                <script type="text/javascript" src="./prototype/plugins/jquery.keyboard/jquery.keypad.js"></script> 
     23                <script type="text/javascript" src="./prototype/plugins/jquery.keyboard/jquery.keypad-pt-BR.js"></script>                
     24                <script type="text/javascript" src="./phpgwapi/templates/news/js/slider.js"></script> 
     25                <script type="text/javascript" src="./phpgwapi/templates/news/js/loginExpresso.js"></script> 
     26        </head> 
     27        <body> 
     28                <div id="container"> 
     29                        <div id="main"> 
     30                                <div id="login"> 
     31                                        <h1 id="logo-expresso">Expresso Livre</h1> 
     32                                        <form id="loginForm" name="flogin" method="post" action="{login_url}" {autocomplete}> 
     33                                                <input type="hidden" name="passwd_type" value="text"> 
     34                                        <input type="hidden" name="account type" value="u"> 
     35                                        <input type="hidden" name="login"> 
     36                                        <input type="hidden" name="show_kbd" value="{show_kbd}"> 
     37                                        <div style="display:{show_organization}">        
     38                                                        <label for="organizacao">Organização</label> 
     39                                                        <select name="organizacao" id="organizacao">{select_organization}</select> 
     40                                                </div> 
     41                                                <div id="captcha"> 
     42                                                        {captcha} 
     43                                                </div> 
     44                                                <label for="user">{lang_username}</label> 
     45                                                <input type="text" name="user" id="user"  value="{cookie}"/> 
     46                                                <label for="passwd">{lang_password}</label> 
     47                                                <input type="password" name="passwd" id="passwd" value=""/> 
     48                                                <br/> 
     49                                                <input type="submit" name="submitit" id="submitit" value="{lang_login}" onclick="loginExpresso.setLogin();" /> 
     50                                        </form> 
     51                                        <div id="keyboard"></div> 
     52                                        <div id="msg-login" class="sucesso" style="display:none;">{cd}</div> 
    14753                                </div> 
    148                                 <img onmouseover="this.className='news_button_over'" onmouseout="this.className='news_button'" class="news_button" onclick="javascript:news.update('previous')" title="{lang_previous}" src="./phpgwapi/templates/{template}/images/player-previous.png"/> 
    149                         <img onmouseover="this.className='news_button_over'" onmouseout="this.className='news_button'" class="news_button" onclick="javascript:news.pause()" title="{lang_pause}" src="./phpgwapi/templates/{template}/images/player-pause.png" id="img_player_pause" /> 
    150                         <img onmouseover="this.className='news_button_over'" onmouseout="this.className='news_button'" style="display:none" class="news_button" onclick="javascript:news.pause()" title="{lang_resume}" src="./phpgwapi/templates/{template}/images/player-resume.png" id="img_player_resume" /> 
    151                                 <img onmouseover="this.className='news_button_over'" onmouseout="this.className='news_button'" class="news_button"  onclick="javascript:news.update('next')" title="{lang_next}" src="./phpgwapi/templates/{template}/images/player-next.png"/>                                          
     54                                <div id="informacao-login"></div> 
    15255                        </div> 
    153                 <div id="login"> 
    154       <div align="center"> 
    155 <input type="hidden" name="passwd_type" value="text"> 
    156 <input type="hidden" name="account type" value="u"> 
    157 <input type="hidden" name="login"> 
    158 <div id="caixa_login"> 
    159           <div id="reflexo"> 
    160            <div class="titulo_login">Expresso Livre</div> 
    161            <div id="mensagem" class="msgInicial" >{cd}<br>{lang_message}</div> 
    162            {action} 
    163             <div id="conteudo_login" style="display:{show};">{select_organization} 
    164               <div class="login_label"> 
    165                 <label for="usuario">{lang_username}</label> 
    166                 <br /> 
    167                 <input class="input" type="text" maxlength="70" size="20" name="user" id="user" value=""> 
    168               </div> 
    169  
    170               <div class="login_label"> 
    171                 <label for="senha">{lang_password}</label> 
    172                 <br /> 
    173                 <input class="input" type="password" maxlength="50" size="20" name="passwd" id="passwd" value=""> 
    174                 <div id="keyboard"></div> 
    175               </div> 
    176                 {captcha} 
    177        
    178               <input value="{lang_login}" name="submitit" class="button" onclick="javascript:setLogin()" type="submit" style="margin-top:10px"/> 
    179               <img style="display:{show_kbd};" src="phpgwapi/templates/default/images/keyboard.png" alt="virtualkeyboard" title="virtualkeyboard" onclick="loadvkbd()" />  
    180             </div>  
    181                         <div id="alterna_login"> 
    182                          {link_alterna_login} 
    183                         </div> 
    184           </div> 
    185           <div id="rodape_login"> 
    186                 <div class="ajuda" style="display:{display_help}"> 
    187                                 <img src="./phpgwapi/templates/{template}/images/help.png"/> 
    188                                 <a title="{lang_help}" target="help" href="./help.php?lang={lang}">{lang_help}</a> 
    189                         </div> 
    190           </div> 
    191         </div> 
    192 </form> 
    193 </div> 
    194 </div> 
    195 </div> 
    196 <div id="inferior"><br /> 
    197 <div id="rodape"> 
    198 <table align="center" cellspacing="0" cellpadding="0" border="0"> 
    199         <tr> 
    200                 <td> 
    201                         <table border="0" cellpadding="0" cellspacing="0" width="300px"> 
    202                         <tbody> 
    203                                 <tr>  
    204                                 <td>{logo_config} 
    205                                 <br><a title="Projeto Expresso Livre" target="_blank" href="http://www.expressolivre.org/">Expresso Livre</a> {version} 
    206                                 {ultima_rev} 
    207                                 <br><a title="eGroupWare" target="_blank" href="http://www.egroupware.org/"> Powered by eGroupWare </a></div></td> 
    208                                 </tr> 
    209                         </tbody> 
    210                 </table> 
    211         </td> 
    212         </tr> 
    213 </table> 
    214 </div> 
    215 </div> 
    216 </div> 
    217 </div> 
    218 </div> 
    219 <div>{applet}</div> 
    220 </body></html> 
     56                        <center> 
     57                                <div id="footer"> 
     58                                        <ul id="footer-logos"> 
     59                                                <li><a href="http://www.pr.gov.br/" class="logo-governo">Governo do Paraná</a></li> 
     60                                                <li> 
     61                                                        <a href="http://www.pr.gov.br/" class="logo-celepar">Celepar - Tecnologia da Informação e Comunicação do Paraná</a> 
     62                                                        <span id="info-deploy"><a title="Projeto Expresso Livre" target="_blank" href="http://www.expressolivre.org/">Expresso Livre</a>&nbsp;{version} {ultima_rev}<br />Powered by <a title="eGroupWare" target="_blank" href="http://www.egroupware.org/">eGroupWare</a> 
     63                                                        </span> 
     64                                                </li> 
     65                                        </ul> 
     66                                </div> 
     67                        </center> 
     68                </div> 
     69                <div>{applet}</div> 
     70        </body> 
     71</html> 
  • branches/2.5/phpgwapi/templates/news/login_news.php

    r7681 r8232  
    1212        \**************************************************************************/ 
    1313 
    14         function check_logoutcode($code) 
    15         { 
    16                 switch($code) 
    17                 { 
    18                         case 1: 
    19                                 return lang('You have been successfully logged out'); 
    20                                  
    21                         case 2: 
    22                                 return lang('Sorry, your login has expired'); 
    23                                  
    24                         case 4: 
    25                                 return lang('Cookies are required to login to this site.'); 
    26                                  
    27                         case 5: 
    28                                 return '<font color="FF0000">' . lang('Bad login or password') . '</font>'; 
    29  
    30                         case 6: 
    31                                 return '<font color="FF0000">' . lang('Your password has expired, and you do not have access to change it') . '</font>'; 
    32                                  
    33                         case 98: 
    34                                 return '<font color="FF0000">' . lang('Account is expired') . '</font>'; 
    35                                  
    36                         case 99: 
    37                                 return '<font color="FF0000">' . lang('Blocked, too many attempts(%1)! Retry in %2 minute(s)',$GLOBALS['phpgw_info']['server']['num_unsuccessful_id'],$GLOBALS['phpgw_info']['server']['block_time']) . '</font>'; 
    38                         case 200: 
    39                             //return '<font color="FF0000">' . lang('Invalid code') . '</font>'; 
    40                 return '<font color="FF0000">' . lang('Bad login or password') . '</font>'; 
    41                             break; 
    42                         case 10: 
    43                                 $GLOBALS['phpgw']->session->phpgw_setcookie('sessionid'); 
    44                                 $GLOBALS['phpgw']->session->phpgw_setcookie('kp3'); 
    45                                 $GLOBALS['phpgw']->session->phpgw_setcookie('domain'); 
    46  
    47                                 //fix for bug php4 expired sessions bug 
    48                                 if($GLOBALS['phpgw_info']['server']['sessions_type'] == 'php4') 
    49                                 { 
    50                                         $GLOBALS['phpgw']->session->phpgw_setcookie(PHPGW_PHPSESSID); 
    51                                 } 
    52  
    53                                 return '<font color="#FF0000">' . lang('Your session could not be verified.') . '</font>'; 
    54                                  
    55                         default: 
    56                                 return ''; 
    57                 } 
    58         } 
    59          
    60         $ifMobile = false; 
    61         $browser = CreateObject('phpgwapi.browser'); 
    62         switch ( $browser->get_platform() ) 
    63         { 
    64                 case browser::PLATFORM_IPHONE: 
    65                 case browser::PLATFORM_IPOD: 
    66                 case browser::PLATFORM_IPAD: 
    67                 case browser::PLATFORM_BLACKBERRY: 
    68                 case browser::PLATFORM_NOKIA: 
    69                 case browser::PLATFORM_ANDROID: 
    70                         $ifMobile = true;                                                
    71                         break; 
    72         } 
    73          
    74         if( $ifMobile && $_GET['dont_redirect_if_moble'] != 1 )  
    75         { 
    76                 $GLOBALS['phpgw']->redirect_link('/mobile/login.php'); 
    77         } 
    78         else 
    79         { 
     14        require_once "logout_code.php"; 
     15 
    8016        /* Program starts here */ 
    8117        if($GLOBALS['phpgw_info']['server']['auth_type'] == 'http' && isset($_SERVER['PHP_AUTH_USER'])) 
     
    9430        # Apache + mod_ssl style SSL certificate authentication 
    9531        # Certificate (chain) verification occurs inside mod_ssl 
    96         if($GLOBALS['phpgw_info']['server']['auth_type'] == 'sqlssl' && isset($_SERVER['SSL_CLIENT_S_DN']) && !isset($_GET['cd'])) 
     32        if( $GLOBALS['phpgw_info']['server']['auth_type'] == 'sqlssl' && isset($_SERVER['SSL_CLIENT_S_DN']) && !isset($_GET['cd']) ) 
    9733        { 
    9834                # an X.509 subject looks like: 
     
    11349                        # login will be set here if the user logged out and uses a different username with 
    11450                        # the same SSL-certificate. 
    115                         if(!isset($_POST['login'])&&isset($sslattributes['Email'])) 
     51                        if( !isset($_POST['login']) && isset($sslattributes['Email']) ) 
    11652                        { 
    11753                                $login = $sslattributes['Email']; 
     
    12763    if( isset( $_GET[ 'cd' ] ) && ( $_GET['cd']=='1' || $_GET['cd'] == 10 ) ) 
    12864        { 
    129             $_SESSION['contador'] = 0; 
    130         } 
    131  
    132         if(isset($passwd_type) || $_POST['submitit_x'] || $_POST['submitit_y'] || $submit) 
    133         { 
    134          
     65                $_SESSION['contador_captcha'] = 0; 
     66        } 
     67 
     68        if( isset($passwd_type) || $_POST['submitit_x'] || $_POST['submitit_y'] || $submit ) 
     69        { 
    13570            // Primeiro testa o captcha....se houver...... 
    136             if($GLOBALS['phpgw_info']['server']['captcha']==1) 
    137               { 
    138                 if($_SESSION['contador'] > $GLOBALS['phpgw_info']['server']['num_badlogin']) 
    139                     { 
    140                         if ($_SESSION['CAPTCHAString'] != trim(strtoupper($_POST['codigo']))) 
    141                                 { 
    142                                         if(!$_GET['cd']) 
    143                                         { 
    144                                             $_GET['cd'] = '200'; 
    145                                         } 
    146                                 } 
    147                         unset($_SESSION['CAPTCHAString']); 
    148                     } 
    149               } 
    150                 if($_POST['user']) { 
    151                         if($GLOBALS['phpgw_info']['server']['use_prefix_organization']) { 
    152                                 $common = CreateObject('phpgwapi.common'); 
    153                                 $ldap_conn = $common->ldapConnect(); 
    154                                 $justthese = array("uid"); 
    155                                 $filter="(&(phpgwAccountType=u)(uid=".$_POST['user']."))"; 
    156                                 $ldap_search = ldap_search($ldap_conn, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    157                                 $ldap_info       = ldap_get_entries($ldap_conn, $ldap_search); 
     71        if( $GLOBALS['phpgw_info']['server']['captcha'] == 1 ) 
     72                { 
     73                        if( $_SESSION['contador_captcha'] > $GLOBALS['phpgw_info']['server']['num_badlogin'] ) 
     74                        { 
     75                                if ($_SESSION['CAPTCHAString'] != trim(strtoupper($_POST['codigo']))) 
     76                                { 
     77                                        if(!$_GET['cd']) 
     78                                        { 
     79                                                $_GET['cd'] = '200'; 
     80                                        } 
     81                                } 
     82                                 
     83                                unset($_SESSION['CAPTCHAString']); 
     84                        } 
     85                } 
     86                 
     87                if( $_POST['user'] ) 
     88                { 
     89                        if($GLOBALS['phpgw_info']['server']['use_prefix_organization']) 
     90                        { 
     91                                $common         = CreateObject('phpgwapi.common'); 
     92                                $ldap_conn      = $common->ldapConnect(); 
     93                                $justthese      = array("uid"); 
     94                                $filter         = "(&(phpgwAccountType=u)(uid=".$_POST['user']."))"; 
     95                                $ldap_search    = ldap_search($ldap_conn, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     96                                $ldap_info              = ldap_get_entries($ldap_conn, $ldap_search); 
     97                                 
    15898                                ldap_close($ldap_conn); 
    159                                 if ($ldap_info['count'] != 0) { 
     99                                 
     100                                if( $ldap_info['count'] != 0 ) 
     101                                { 
    160102                                        $_POST['login'] = $_POST['user']; 
    161103                                } 
    162104                        } 
    163105                        else 
     106                        { 
    164107                                $_POST['login'] = $_POST['user']; 
    165                 } 
     108                        } 
     109                } 
     110                 
    166111                if(getenv('REQUEST_METHOD') != 'POST' && $_SERVER['REQUEST_METHOD'] != 'POST' && 
    167112                        !isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['SSL_CLIENT_S_DN'])) 
    168113                { 
    169                         if(!$_GET['cd']) 
    170                             { 
    171                                 $_GET['cd'] = '5'; 
    172                             } 
     114            if(!$_GET['cd']) 
     115            { 
     116                $_GET['cd'] = '5'; 
     117            } 
    173118                } 
    174119                 
    175120                // don't get login data again when $submit is true 
    176                 if($submit == false) 
     121                if( $submit == false ) 
    177122                { 
    178123                        $login = $_POST['login']; 
    179124                } 
    180125                 
    181                 if(strstr($login,'@') === False && isset($_POST['logindomain'])) 
     126                if( strstr($login,'@') === False && isset($_POST['logindomain']) ) 
    182127                { 
    183128                        $login .= '@' . $_POST['logindomain']; 
     
    188133                } 
    189134                 
    190                 If(!$_GET['cd']) 
     135                if( !$_GET['cd'] ) 
     136                { 
    191137                        $GLOBALS['sessionid'] = $GLOBALS['phpgw']->session->create(strtolower($login),$passwd,$passwd_type,'u'); 
    192  
    193                 if(!isset($GLOBALS['sessionid']) || ! $GLOBALS['sessionid']) 
     138                } 
     139 
     140                if( !isset($GLOBALS['sessionid']) || ! $GLOBALS['sessionid'] ) 
    194141                { 
    195142                        If(!$_GET['cd']) $_GET['cd'] = $GLOBALS['phpgw']->session->cd_reason; 
     
    197144                else 
    198145                { 
    199                         if ($_POST['lang'] && preg_match('/^[a-z]{2}(-[a-z]{2}){0,1}$/',$_POST['lang']) && 
    200                             $_POST['lang'] != $GLOBALS['phpgw_info']['user']['preferences']['common']['lang']) 
     146                        if( $_POST['lang'] && preg_match('/^[a-z]{2}(-[a-z]{2}){0,1}$/',$_POST['lang']) && 
     147                            $_POST['lang'] != $GLOBALS['phpgw_info']['user']['preferences']['common']['lang'] ) 
    201148                        { 
    202149                                $GLOBALS['phpgw']->preferences->add('common','lang',$_POST['lang'],'session'); 
     
    207154                                $GLOBALS['phpgw']->translation->autoload_changed_langfiles(); 
    208155                        } 
     156                         
    209157                        $forward = isset($_GET['phpgw_forward']) ? urldecode($_GET['phpgw_forward']) : @$_POST['phpgw_forward']; 
    210                         if (!$forward) 
     158                         
     159                        if ( !$forward ) 
    211160                        { 
    212161                                $extra_vars['cd'] = 'yes'; 
     
    217166                                list($forward,$extra_vars) = explode('?',$forward,2); 
    218167                        } 
    219                 if ($GLOBALS['phpgw_info']['server']['use_https'] != 2) 
    220                         { 
    221                         //Modificacao feita para que o Expresso redirecione para o primeiro proxy caso haja um encadeamento de mais de um proxy. 
    222                         //$forward = 'http://'.$_SERVER['HTTP_HOST'].($GLOBALS['phpgw']->link($forward.'?cd=yes')); 
    223                         $forward = 'http://' . nearest_to_me() . $GLOBALS['phpgw']->link($forward.'?cd=yes'); 
    224                         echo "<script language='Javascript1.3'>location.href='".$forward."'</script>"; 
    225                         } 
    226                 else 
    227                         { 
    228                         $GLOBALS['phpgw']->redirect_link($forward,$extra_vars); 
    229                         } 
    230                 } 
    231         } 
    232         //else   // ================================================================================= 
    233         //{ 
    234             $valor_contador = $_SESSION['contador']; 
    235             $valor_contador = $valor_contador + 1; 
    236             $_SESSION['contador'] = $valor_contador; 
    237                 // !!! DONT CHANGE THESE LINES !!! 
    238                 // If there is something wrong with this code TELL ME! 
    239                 // Commenting out the code will not fix it. (jengo) 
    240                 if(isset($_COOKIE['last_loginid'])) 
    241                 { 
    242                         $accounts = CreateObject('phpgwapi.accounts'); 
    243                         $prefs = CreateObject('phpgwapi.preferences', $accounts->name2id($_COOKIE['last_loginid'])); 
    244  
    245                         if($prefs->account_id) 
    246                         { 
    247                                 $GLOBALS['phpgw_info']['user']['preferences'] = $prefs->read_repository(); 
    248                         } 
    249                 } 
    250                  
    251                 $_GET['lang'] = addslashes($_GET['lang']); 
    252                 if ($_GET['lang']) 
    253                 { 
    254                         $GLOBALS['phpgw_info']['user']['preferences']['common']['lang'] = $_GET['lang']; 
    255                 } 
    256                 elseif(!isset($_COOKIE['last_loginid']) || !$prefs->account_id) 
    257                 { 
    258                         // If the lastloginid cookies isn't set, we will default to the first language, 
    259                         // the users browser accepts. 
    260                         list($lang) = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']); 
    261                         /* 
    262                         if(strlen($lang) > 2) 
    263                         { 
    264                                 $lang = substr($lang,0,2); 
    265                         } 
    266                         */ 
    267                         $GLOBALS['phpgw_info']['user']['preferences']['common']['lang'] = $lang; 
    268                 } 
    269                 #print 'LANG:' . $GLOBALS['phpgw_info']['user']['preferences']['common']['lang'] . '<br>'; 
    270  
    271                 $GLOBALS['phpgw']->translation->init(); // this will set the language according to the (new) set prefs 
    272                 $GLOBALS['phpgw']->translation->add_app('login'); 
    273                 $GLOBALS['phpgw']->translation->add_app('loginscreen'); 
    274                 if(lang('loginscreen_message') == 'loginscreen_message*') 
    275                 { 
    276                         $GLOBALS['phpgw']->translation->add_app('loginscreen','en');    // trying the en one 
    277                 } 
    278                 if(lang('loginscreen_message') != 'loginscreen_message*') 
    279                 { 
    280                         $tmpl->set_var('lang_message',stripslashes(lang('loginscreen_message'))); 
    281                 } 
    282         //} 
    283  
    284         if($GLOBALS['phpgw_info']['server']['use_prefix_organization']) 
    285         { 
     168                         
     169                        if( $GLOBALS['phpgw_info']['server']['use_https'] != 2 ) 
     170                        { 
     171                                //Modificacao feita para que o Expresso redirecione para o primeiro proxy caso haja um encadeamento de mais de um proxy. 
     172                                //$forward = 'http://'.$_SERVER['HTTP_HOST'].($GLOBALS['phpgw']->link($forward.'?cd=yes')); 
     173                                $forward = 'http://' . nearest_to_me() . $GLOBALS['phpgw']->link($forward.'?cd=yes'); 
     174                                echo "<script language='Javascript1.3'>location.href='".$forward."'</script>"; 
     175                        } 
     176                        else 
     177                        { 
     178                                $GLOBALS['phpgw']->redirect_link($forward,$extra_vars); 
     179                        } 
     180                } 
     181        } 
     182 
     183        // Incrementar Contador para o Uso do Captcha 
     184    $_SESSION['contador_captcha']++; 
     185 
     186        // !!! DONT CHANGE THESE LINES !!! 
     187        // If there is something wrong with this code TELL ME! 
     188        // Commenting out the code will not fix it. (jengo) 
     189        if( isset( $_COOKIE['last_loginid'] ) ) 
     190        { 
     191                $accounts = CreateObject('phpgwapi.accounts'); 
     192 
     193                $prefs = CreateObject('phpgwapi.preferences', $accounts->name2id($_COOKIE['last_loginid'])); 
     194 
     195                if($prefs->account_id) 
     196                { 
     197                        $GLOBALS['phpgw_info']['user']['preferences'] = $prefs->read_repository(); 
     198                } 
     199        } 
     200         
     201        $_GET['lang'] = addslashes($_GET['lang']); 
     202         
     203        if ($_GET['lang']) 
     204        { 
     205                $GLOBALS['phpgw_info']['user']['preferences']['common']['lang'] = $_GET['lang']; 
     206        } 
     207        elseif(!isset($_COOKIE['last_loginid']) || !$prefs->account_id) 
     208        { 
     209                // If the lastloginid cookies isn't set, we will default to the first language, 
     210                // the users browser accepts. 
     211                list($lang) = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']); 
     212                $GLOBALS['phpgw_info']['user']['preferences']['common']['lang'] = $lang; 
     213        } 
     214 
     215        $GLOBALS['phpgw']->translation->init(); // this will set the language according to the (new) set prefs 
     216        $GLOBALS['phpgw']->translation->add_app('login'); 
     217        $GLOBALS['phpgw']->translation->add_app('loginscreen'); 
     218 
     219        // OUs LDAP 
     220        $show_Organization = "none"; 
     221         
     222        if( $GLOBALS['phpgw_info']['server']['use_prefix_organization'] ) 
     223        { 
     224                $show_Organization = "block"; 
     225 
    286226                $obj_organization = CreateObject('phpgwapi.sector_search_ldap'); 
     227                 
    287228                $organizations = $obj_organization->organization_search($GLOBALS['phpgw_info']['server']['ldap_context']); 
    288  
    289         $organizations_count = count($organizations); 
    290                 for ($i=0; $i<$organizations_count; ++$i) 
     229                 
     230                for ($i=0; $i<count($organizations); $i++) 
    291231                { 
    292232                        $tmp_array[strtolower($organizations[$i])] = $organizations[$i];         
     
    294234                 
    295235                $arrayOrganization = $tmp_array;                 
     236                 
    296237                ksort($arrayOrganization); 
    297238                 
    298                 foreach($arrayOrganization 
    299                          as $organization_name => $organization_vars) 
     239                foreach($arrayOrganization as $organization_name => $organization_vars) 
    300240                { 
    301241                        $organization_select .= '<option value="' . $organization_name . '"'; 
    302242 
    303                         if($organization_name == $_COOKIE['last_organization']) 
     243                        if( $organization_name == $_COOKIE['last_organization'] ) 
    304244                        { 
    305245                                $organization_select .= ' selected'; 
     
    307247                        $organization_select .= '>' . $organization_vars . "</option>\n"; 
    308248                } 
    309                 $organization_select =  '<div class="login_label"><label>'.lang("organization") 
    310                                                         .'</label><br><select name="organization">' 
    311                                                         .$organization_select.'</select></div>'; 
     249 
    312250                $tmpl->set_var('select_organization',$organization_select); 
    313251        } 
     252 
     253        $tmpl->set_var( 'show_organization', $show_Organization ); 
    314254                 
    315255        $domain_select = '&nbsp;'; 
     256 
    316257        $last_loginid = $_COOKIE['last_loginid']; 
    317         if($GLOBALS['phpgw_info']['server']['show_domain_selectbox']) 
     258         
     259        if( $GLOBALS['phpgw_info']['server']['show_domain_selectbox'] ) 
    318260        { 
    319261                $domain_select = "<select name=\"logindomain\">\n"; 
     262                 
    320263                foreach($GLOBALS['phpgw_domain'] as $domain_name => $domain_vars) 
    321264                { 
     
    333276        { 
    334277                reset($GLOBALS['phpgw_domain']); 
     278                 
    335279                list($default_domain) = each($GLOBALS['phpgw_domain']); 
    336280 
     
    340284                } 
    341285        } 
     286 
    342287        $tmpl->set_var('select_domain',$domain_select); 
    343288 
    344         foreach($_GET as $name => $value) 
    345         { 
    346                 if(preg_match('/phpgw_/',$name)) 
     289        foreach($_GET as $name => $value) 
     290        { 
     291                if(ereg('phpgw_',$name)) 
    347292                { 
    348293                        $extra_vars .= '&' . $name . '=' . urlencode($value); 
     
    350295        } 
    351296 
    352         if ( is_string( $extra_vars ) ) 
     297        if( is_string( $extra_vars ) ) 
    353298        { 
    354299                $extra_vars = '?' . substr($extra_vars,1); 
     
    364309        $config_reg = $cnf_reg->config_data; 
    365310 
    366         if($config_reg['enable_registration']=='True' && $config_reg['register_link']=='True') 
     311        if($config_reg[enable_registration]=='True' && $config_reg[register_link]=='True') 
    367312        { 
    368313                $reg_link='&nbsp;<a href="registration/">'.lang('Not a user yet? Register now').'</a><br/>'; 
     
    370315 
    371316        $template = $GLOBALS['phpgw_info']['login_template_set']; 
     317 
    372318        $GLOBALS['phpgw_info']['server']['template_set'] = $template; 
    373319 
     
    387333        $tmpl->set_var('template_set', $template); 
    388334 
    389         // loads the template's login.css 
    390         // and then the theme's login.css (if any) 
    391         $template_dir = $GLOBALS['phpgw_info']['server']['webserver_url'] . '/phpgwapi/templates/' . $template; 
    392         $login_dir = $template_dir . '/login.css'; 
    393         $login_css = "<link href='" . $login_dir . "' rel='stylesheet' type='text/css' />"; 
    394         $login_dir = $template_dir . '/themes/' . $GLOBALS['phpgw_info']['user']['preferences']['common']['theme'] . '/login.css'; 
    395         if(file_exists('./'.$login_dir)) 
    396         { 
    397                 $login_css .= "<link href='" . $login_dir . "' rel='stylesheet' type='text/css' />"; 
    398         } 
    399         $tmpl->set_var('login_css',$login_css); 
    400  
    401         $GLOBALS['phpgw']->translation->add_app('loginhelp',$_GET['lang']); 
    402  
    403         if(lang('loginhelp_message') != 'loginhelp_message*' && trim(lang('loginhelp_message')) != ""){                                  
    404                 $tmpl->set_var('lang_help',lang("Help"));        
    405         } 
    406         else  
    407                 $tmpl->set_var('display_help','none'); 
    408  
    409         $tmpl->set_var('bg_color',($GLOBALS['phpgw_info']['server']['login_bg_color']?$GLOBALS['phpgw_info']['server']['login_bg_color']:'FFFFFF')); 
    410         $tmpl->set_var('bg_color_title',($GLOBALS['phpgw_info']['server']['login_bg_color_title']?$GLOBALS['phpgw_info']['server']['login_bg_color_title']:'486591')); 
    411  
    412         if($GLOBALS['phpgw_info']['server']['use_frontend_name']) 
    413                 $tmpl->set_var('frontend_name', " - ".$GLOBALS['phpgw_info']['server']['use_frontend_name']); 
    414  
    415         if (substr($GLOBALS['phpgw_info']['server']['login_logo_file'],0,4) == 'http') 
    416         { 
    417                 $var['logo_file'] = $GLOBALS['phpgw_info']['server']['login_logo_file']; 
    418         } 
    419         else 
    420         { 
    421                 $var['logo_file'] = $GLOBALS['phpgw']->common->image('phpgwapi',$GLOBALS['phpgw_info']['server']['login_logo_file']?$GLOBALS['phpgw_info']['server']['login_logo_file']:'logo'); 
    422         } 
    423         $var['logo_url'] = $GLOBALS['phpgw_info']['server']['login_logo_url']?$GLOBALS['phpgw_info']['server']['login_logo_url']:'http://www.eGroupWare.org'; 
    424         if (substr($var['logo_url'],0,4) != 'http') 
    425         { 
    426                 $var['logo_url'] = 'http://'.$var['logo_url']; 
    427         } 
    428         $var['logo_title'] = $GLOBALS['phpgw_info']['server']['login_logo_title']?$GLOBALS['phpgw_info']['server']['login_logo_title']:'www.eGroupWare.org'; 
    429         $tmpl->set_var($var); 
    430  
    431         if (!@$GLOBALS['phpgw_info']['server']['login_virtual_keyboard'])  
    432                 $tmpl->set_var('show_kbd','none');  
    433  
    434         if (@$GLOBALS['phpgw_info']['server']['login_show_language_selection']) 
    435         { 
    436                 $select_lang = '<select name="lang" onchange="'."location.href=location.href+(location.search?'&':'?')+'lang='+this.value".'">'; 
    437                 $langs = $GLOBALS['phpgw']->translation->get_installed_langs(); 
    438                 uasort($langs,'strcasecmp'); 
    439                 foreach ($langs as $key => $name)       // if we have a translation use it 
    440                 { 
    441                         $select_lang .= "\n\t".'<option value="'.$key.'"'.($key == $GLOBALS['phpgw_info']['user']['preferences']['common']['lang'] ? ' selected="1"' : '').'>'.$name.'</option>'; 
    442                 } 
    443                 $select_lang .= "\n</select>\n"; 
    444                 $tmpl->set_var(array( 
    445                         'lang_language' => lang('Language'), 
    446                         'select_language' => $select_lang, 
    447                 )); 
    448         } 
    449         else 
    450         { 
    451                 $tmpl->set_block('login_form','language_select'); 
    452                 $tmpl->set_var('language_select',''); 
    453         } 
     335        // Keyboard Virtual 
     336        $tmpl->set_var('show_kbd',$GLOBALS['phpgw_info']['server']['login_virtual_keyboard']);  
    454337 
    455338        $tmpl->set_var('autocomplete', ($GLOBALS['phpgw_info']['server']['autocomplete_login'] ? 'autocomplete="off"' : '')); 
     
    458341        if($GLOBALS['phpgw_info']['server']['captcha'] && $_GET['cd']!='300' ) 
    459342        { 
    460                 $aux_captcha = '<input type="hidden" name="' . session_name() . '"  value="' . session_id() . '" >'; 
    461         //        setcookie(session_name(),base64_encode(session_convert($key_convert . session_id(),$key_convert)),0); 
    462                 if($valor_contador > $GLOBALS['phpgw_info']['server']['num_badlogin']) 
    463                 { 
    464                         $aux_captcha = '<div class="login_label" > 
    465                            <img id="id_captcha" src="./security/captcha.php?' . session_name() . '=' . session_id() . '" title="'.lang('Security code').'" alt="'.lang('Security code').'" style="position:static;"> 
    466                            <input class="input" type="text" maxlength="50" size="20" name="codigo" id="codigo" value="" > 
    467                            <input type="hidden" name="' . session_name() . '"  value="' . session_id() . '" > 
    468                            </div>'; 
    469                 } 
    470         } 
    471         $tmpl->set_var('captcha',$aux_captcha); 
     343                $aux_captcha = '<input type="hidden" name="'.session_name().'"  value="'.session_id().'">'; 
     344 
     345                if( $_SESSION['contador_captcha'] > $GLOBALS['phpgw_info']['server']['num_badlogin'] ) 
     346                { 
     347                        $aux_captcha = '<div>' 
     348                           .'<img id="id_captcha" src="./security/captcha.php?' . session_name() . '=' . session_id() . '" title="'.lang('Security code').'" alt="'.lang('Security code').'" style="position:static;">' 
     349                           .'<input class="input" type="text" maxlength="50" size="15" name="codigo" id="codigo" value="" >' 
     350                           .'<input type="hidden" name="' . session_name() . '"  value="' . session_id() . '" >' 
     351                           .'</div>'; 
     352                } 
     353 
     354                $tmpl->set_var('captcha',$aux_captcha); 
     355        } 
    472356 
    473357        // Testa se deve incluir applet para login com certificado...... 
    474         if ($_GET['cd']=='300' && $GLOBALS['phpgw_info']['server']['certificado']==1) 
     358        if ( $_GET['cd']=='300' && $GLOBALS['phpgw_info']['server']['certificado'] == 1 ) 
    475359        { 
    476360                //Zera o Cookie contador, responsavel pelo captcha 
    477                 $_SESSION['contador'] = 0; 
    478                 $valor_contador = 0; 
    479                 $link_alterna_login = '<img src="phpgwapi/templates/news/images/warning.gif"/><a href="login.php">' . lang('Access without Digital Certificate') . '</a>'; 
     361                $_SESSION['contador_captcha'] = 0; 
     362                $link_alterna_login = '<img src="phpgwapi/templates/default/images/warning.gif"/><a href="login.php">' . lang('Access without Digital Certificate') . '</a>'; 
    480363                $tmpl->set_var('show','none'); 
    481                 $tmpl->set_var('action','<div id="action"><img style="border:0px;margin:31px 0px 58px 0px;" src="phpgwapi/templates/news/images/acao.gif" /></div>'); 
     364                $tmpl->set_var('action','<div id="action"><img style="border:0px;margin:31px 0px 58px 0px;" src="phpgwapi/templates/default/images/acao.gif" /></div>'); 
    482365                // gera parametro com tokens suportados .... 
    483366                $var_tokens = ''; 
    484                 for($ii = 1; $ii < 11; ++$ii) 
     367                 
     368                for($ii = 1; $ii < 11; $ii++) 
    485369                { 
    486370                        if($GLOBALS['phpgw_info']['server']['test_token' . $ii . '1']) 
     
    492376                        $var_tokens = 'ePass2000Lx;/usr/lib/libepsng_p11.so,ePass2000Win;c:/windows/system32/ngp11v211.dll'; 
    493377                } 
    494                 $param1 = " 
    495                                                                                         '<param name=\"token\" value=\"" . substr($var_tokens,0,strlen($var_tokens)) . "\"> ' + 
    496                                                                                    "; 
    497                 $param2 = " 
    498                                                                                         'token=\"" . substr($var_tokens,0,strlen($var_tokens)) . "\" ' + 
    499                                                                                    "; 
     378                 
     379                $param1 = "'<param name=\"token\" value=\"" . substr($var_tokens,0,strlen($var_tokens)) . "\">'+"; 
     380                $param2 = "'token=\"" . substr($var_tokens,0,strlen($var_tokens)) . "\" ' +"; 
    500381 
    501382                $cod_applet = 
    502  
    503 /*    // com debug ativado 
    504             '<script type="text/javascript"> 
    505                                         if (navigator.userAgent.match(\'MSIE\')){ 
    506                                                 document.write(\'<object style="display:yes;width:0;height:0;vertical-align:bottom;" id="login_applet" \' + 
    507                                                 \'classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"> \' + 
    508                                                 \'<param name="type" value="application/x-java-applet;version=1.5"> \' + 
    509                                                 \'<param name="code" value="LoginApplet.class"> \' + 
    510                                                 \'<param name="locale" value="' . $lang . '"> \' + 
    511                                                 \'<param name="mayscript" value="true"> \' + ' 
    512                                                 . $param1 
    513                                                 . ' \'<param name="archive" value="ExpressoCertLogin.jar,ExpressoCert.jar,commons-httpclient-3.1.jar,commons-logging-1.1.1.jar,commons-codec-1.3.jar,bcmail-jdk15-142.jar,mail.jar,activation.jar,bcprov-jdk15-142.jar"> \' + 
    514                         \'<param name="debug" value="true"> \' + 
    515                                                 \'</object>\'); 
    516                                         } 
    517                                         else { 
    518                                                 document.write(\'<embed style="display:yes;width:0;height:0;vertical-align:bottom;" id="login_applet" code="LoginApplet.class" locale="' . $lang . '"\' + 
    519                                                 \'archive="ExpressoCertLogin.jar,ExpressoCert.jar,commons-httpclient-3.1.jar,commons-logging-1.1.1.jar,commons-codec-1.3.jar,bcmail-jdk15-142.jar,mail.jar,activation.jar,bcprov-jdk15-142.jar" \' + ' 
    520                                                 . $param2 
    521                                                 . ' \'type="application/x-java-applet;version=1.5" debug= "true" mayscript > \' + 
    522                                                 \'<noembed> \' + 
    523                                                 \'No Java Support. \' + 
    524                                                 \'</noembed> \' + 
    525                                                 \'</embed> \'); 
    526                                         } 
    527                                 </script>'; 
    528 */ 
    529383            // sem debug ativado 
    530384            '<script type="text/javascript"> 
     
    553407                                </script>'; 
    554408 
    555  
    556         } 
    557  
     409        } 
    558410        else 
    559411        { 
     
    561413                { 
    562414                        $tmpl->set_var('show','yes'); 
    563                         $link_alterna_login = '<img src="phpgwapi/templates/news/images/lock1_icon.gif"/><a title="' . lang('Link to use digital certificate') . '" href="login.php?cd=300">' . lang('Logon with my digital certificate') . '</a>'; 
     415                        $link_alterna_login = '<img src="phpgwapi/templates/default/images/lock1_icon.gif"/><a title="' . lang('Link to use digital certificate') . '" href="login.php?cd=300">' . lang('Logon with my digital certificate') . '</a>'; 
    564416                } 
    565417                $tmpl->set_var('lang_username',lang('username')); 
    566418                $tmpl->set_var('action',''); 
    567419                $cod_applet = ''; 
    568  
    569420        } 
    570421 
    571422        $tmpl->set_var('applet',$cod_applet); 
    572423        $tmpl->set_var('link_alterna_login',$link_alterna_login); 
    573                  
    574         // Load News from NewsAdmin module - BEGIN 
    575         define('PHPGW_TEMPLATE_DIR','./phpgwapi/templates/'.$GLOBALS['phpgw_info']['login_template_set']); 
    576         $news = CreateObject('news_admin.uinews'); 
    577         $public_news = $news->bo->get_all_public_news(); 
    578         rsort($public_news);     
    579         $newslist = array(); 
    580         foreach($public_news as $i => $news){ 
    581                 $newslist[] = array_map('utf8_encode', $news); 
    582         } 
    583         $tmpl->set_var('public_news',json_encode($newslist)); 
    584         $tmpl->set_var('lang_previous',lang('Previous')); 
    585         $tmpl->set_var('lang_next',lang('Next')); 
    586         $tmpl->set_var('lang_pause',lang('Pause')); 
    587         $tmpl->set_var('lang_resume',lang('Resume')); 
    588          
    589         // Load News from NewsAdmin module - END 
    590          
     424 
    591425        $tmpl->set_var('dir_root', 'http://' . nearest_to_me() . '/'); 
    592426        if(is_file(dirname( __FILE__ ) . '/../../../infodist/ultima-revisao-svn.php')) 
     
    594428        if(isset($ultima_revisao)) $tmpl->set_var('ultima_rev','<br>' . $ultima_revisao); 
    595429 
    596         // Adiciona código personalizado de outro template 
     430        // Adiciona código personalizado de outro template 
    597431        // que esteja utilizando o login_default.php 
    598         if(is_file('.'.$template_dir.'/login.inc.php')) { 
     432        if(is_file('.'.$template_dir.'/login.inc.php')) 
     433        { 
    599434                include_once('.'.$template_dir.'/login.inc.php'); 
    600435        } 
    601436 
    602437        $tmpl->pfp('loginout','login_form'); 
    603         } 
    604438 
    605439?> 
    606  
  • branches/2.5/preferences/changepassword.php

    r3296 r8232  
    108108        $GLOBALS['phpgw']->template->set_var('lang_change',lang('Change')); 
    109109        $GLOBALS['phpgw']->template->set_var('lang_cancel',lang('Cancel')); 
     110        $GLOBALS['phpgw']->template->set_var('cancel_action' , $GLOBALS['phpgw']->link('/preferences/'));  
    110111        $GLOBALS['phpgw']->template->set_var('form_action',$GLOBALS['phpgw']->link('/preferences/changepassword.php')); 
    111112 
  • branches/2.5/preferences/setup/setup.inc.php

    r7516 r8232  
    1313        $setup_info['preferences']['name']      = 'preferences'; 
    1414        $setup_info['preferences']['title']     = 'Preferences'; 
    15         $setup_info['preferences']['version']   = '2.5.0'; 
     15        $setup_info['preferences']['version']   = '2.5.1'; 
    1616        $setup_info['preferences']['app_order'] = 1; 
    1717        $setup_info['preferences']['tables']    = ''; 
     
    2828        $setup_info['preferences']['depends'][] = array( 
    2929                'appname' => 'phpgwapi', 
    30                 'versions' => Array('2.5.0') 
     30                'versions' => Array('2.5.1.1') 
    3131        ); 
    3232?> 
  • branches/2.5/prototype/api/datalayer.js

    r6444 r8232  
    657657 
    658658        } 
     659 
     660     if( typeof DataLayer.storage.cache[':diff'] != 'object') 
     661         DataLayer.storage.cache[':diff'] = {}; 
     662 
    659663    }, 
    660664     
  • branches/2.5/prototype/api/templates/foldertree.ejs

    r8113 r8232  
    44                        Inbox: {name:'Caixa de Entrada', classe:'inbox'},  
    55                }; 
    6     specialFolders[outboxfolder] = {name: 'Caixa de Saída', classe:'outbox'};  
    7         specialFolders[trashfolder] = {name:'Lixeira', classe:'trash'};  
    8         specialFolders[draftsfolder] = {name:'Rascunhos', classe:'drafts'};  
    9         specialFolders[spamfolder] = {name:'Spam', classe:'spam'};  
    10         specialFolders[sentfolder] = {name:'Enviados', classe:'sent'};  
     6    specialFolders[outboxfolder] = {name: 'Caixa de Saída', classe:'outbox'}; 
     7        specialFolders[trashfolder] = {name:'Lixeira', classe:'trash'}; 
     8        specialFolders[draftsfolder] = {name:'Rascunhos', classe:'drafts'}; 
     9        specialFolders[spamfolder] = {name:'Spam', classe:'spam'}; 
     10        specialFolders[sentfolder] = {name:'Enviados', classe:'sent'}; 
    1111 
    1212        function recursive_forest(array_trees) 
  • branches/2.5/prototype/config/calendarSignature.ini

    r7958 r8232  
    1414deepnessFindCalendarSignature = modules/calendar/interceptors/DBMapping.php 
    1515createDefaultGroup = modules/calendar/interceptors/DBMapping.php 
    16   
    17 [before.read]  
    18 calendarSignatureSecurity = modules/calendar/interceptors/DBMapping.php  
    19   
    20 [before.find]  
    21 calendarSignatureSecurity = modules/calendar/interceptors/DBMapping.php  
     16 
     17[before.read] 
     18calendarSignatureSecurity = modules/calendar/interceptors/DBMapping.php 
     19 
     20[before.find] 
     21calendarSignatureSecurity = modules/calendar/interceptors/DBMapping.php 
    2222 
    2323[after.read] 
  • branches/2.5/prototype/config/schedulable.ini

    r7958 r8232  
    1717 
    1818[before.find] 
    19 schedulableSecurity = modules/calendar/interceptors/DBMapping.php  
     19schedulableSecurity = modules/calendar/interceptors/DBMapping.php 
    2020findDeepnessOne = modules/calendar/interceptors/DBMapping.php 
    2121findSchedulable = modules/calendar/interceptors/DBMapping.php 
     
    3535createHistoric = modules/calendar/interceptors/DBMapping.php 
    3636 
    37 [before.read]  
    38 schedulableSecurity = modules/calendar/interceptors/DBMapping.php  
    39   
     37[before.read] 
     38schedulableSecurity = modules/calendar/interceptors/DBMapping.php 
     39 
    4040[after.read] 
    4141deepnessReadEvent = modules/calendar/interceptors/DBMapping.php 
     
    4444deleteSchedulable = modules/calendar/interceptors/DBMapping.php 
    4545deleteEvent = modules/calendar/interceptors/Notifications.php 
    46   
     46 
    4747 
    4848[PostgreSQL.mapping] 
  • branches/2.5/prototype/modules/attach_message/attach_message.css

    r5831 r8232  
    3636#mailpreview_container {margin:5px;padding:0px;height:220px; width:907px; float:left; margin:5px 5px 5px 5px;} 
    3737#mailpreview_container .ui-tabs-panel {height:183px;overflow:auto;padding:0px; width:905px;} 
    38 /*#mailpreview_tabs { max-height: 20px; }*/ 
     38#mailpreview_tabs { max-height: 25px; } 
    3939#buttons-container {text-align: right;margin:5px 5px 5px 5px;float:right;} 
    4040#selected_messages_counter {text-align:right;padding:0;} 
  • branches/2.5/prototype/modules/attach_message/attach_message.js

    r7543 r8232  
    216216                for (var message in selectedMessages[folder]) { 
    217217                        if (selectedMessages[folder][message]) { 
    218                                 byte_size += parseInt(onceOpenedMessages[folder][message].size); 
     218                                byte_size += parseInt(onceOpenedHeadersMessages[folder][message].size); 
    219219                                total_messages++; 
    220220                        } 
     
    227227var msgAttacherGrid = $("#message_attacher_grid"), msgsTotal = $("#selected_messages_number"); 
    228228var lastLoadedMessages = []; 
    229 var onceOpenedMessages = []; 
    230229var selectedMessages   = {}; 
    231230var selectedFolder     = {}; 
    232231 
     232function mount_children_localfolders_list(folder){  
     233    folder.children = new Array(); 
     234    folder.id_search = folder.id; 
     235    folder.id = 'local_messages_'+folder.id, 
     236    folder.commonName =  folder.name, 
     237    folder.parentId = folder.parentid, 
     238    folder.type = 'localFolder', 
     239    folder.name = folder.id, 
     240    folder.messageCount = { 
     241                             total: folder.messages, 
     242                             unseen: folder.unseen 
     243                          } 
     244 
     245    if(folder.haschild){ 
     246        expresso_mail_archive.getFoldersList(folder.id_search); 
     247        folder.children = expresso_mail_archive.folders; 
     248 
     249        for(var i = 0; i < folder.children.length; i++){ 
     250            mount_children_localfolders_list(folder.children[i]); 
     251        } 
     252 
     253    } 
     254} 
    233255function adaptOffline( data ) 
    234256{ 
     
    254276         
    255277    return( data ); 
    256          
    257 } 
     278} 
     279 
     280function archive_flag( flagObj ){ 
     281 
     282    var flags = {}; 
     283    var returns = ''; 
     284 
     285    $.each( flagObj.tag , function(i, flag){ 
     286        flags[ flag['@value'] ] = true; 
     287    }); 
     288 
     289        returns += (flags['seen'] ? '0,' : '1,') ; 
     290        returns += (flags['answered'] && !flags['forwarded'] ? '1,' : '0,') ; 
     291        returns += (flags['forwarded'] ? '1,' : '0,') ; 
     292        returns += (flags['flagged'] || flags['importance_high'] ? '1,' : '0,') ; 
     293        returns += '0,0'; 
     294             
     295    return returns; 
     296} 
     297 
     298function archive_flag_search( flagObj ){ 
     299    var flags = {}; 
     300    var returns = ''; 
     301 
     302    flagObj = flagObj.split(""); 
     303    $.each( flagObj , function(i, flag){ 
     304        flags[ flag ] = true; 
     305    }); 
     306 
     307    returns += (flags['U'] ? '1,' : '0,') ; 
     308    returns += (flags['A'] && !flags['X'] ? '1,' : '0,') ; 
     309    returns += (flags['X'] ? '1,' : '0,') ; 
     310    returns += (flags['F'] ? '1,' : '0,') ; 
     311    returns += '0,0'; 
     312             
     313    return returns; 
     314} 
     315 
    258316 
    259317$mailpreview_tabs_label_length = 15; 
     
    271329                var tree2 = new Array(); 
    272330                var tree3 = new Array(); 
     331 
     332        if(preferences.use_local_messages == 1){ 
     333            if(expresso_mail_archive.folders && !expresso_offline && expresso_mail_archive.enabled == true) { //MailArchive 
     334                //pega pastas locais do mailarchiver e insere no array de pastas 
     335                    expresso_mail_archive.getFoldersList("home"); 
     336                    treeFolders = expresso_mail_archive.folders; 
     337 
     338                    for(var i=0; i<treeFolders.length; i++ ){ 
     339                        mount_children_localfolders_list(treeFolders[i]); 
     340                    } 
     341                     
     342                    for(var i = 0; i < treeFolders.length; i++){ 
     343                        data.push(treeFolders[i]); 
     344                    } 
     345            } 
     346        } 
     347 
    273348                for (var i=0; i<data.length; i++) { 
    274349 
     
    286361                        } 
    287362                        else if (/^local_messages/.test(data[i].id)) { 
    288                                 if (!unorphanize(tree3, data[i])) { 
    289                                         data[i].children = new Array(); 
    290363                                        tree3.push(data[i]); 
    291                                 } 
    292364                        } 
    293365                         
     
    299371                .find("#foldertree").treeview() 
    300372                .click(function(event){ 
     373 
    301374                        //request new selected folder messages 
    302375                        var target = $(event.target); 
     
    325398                        var grid = $("#message_attacher_grid"), offlineCase = ""; 
    326399                         
    327                         if( !targetId.indexOf( 'local_messages/' ) ) 
    328                             offlineCase = ":offline"; 
    329                          
    330  
    331                         grid.jqGrid('setGridParam',{url:BASE_PATH + 'REST.php'+offlineCase+'?q=folder/'+targetId.replace(dashes, '.')+'/message'}) 
    332                             .trigger("reloadGrid") 
    333                             .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     400            if(targetId.indexOf( 'local_messages' ) == 0){ 
     401                 //Entrar caso: Clicar em uma pasta que seja do arquivamento local 
     402                targetId = targetId.split("_")[2]; 
     403 
     404                expresso_mail_archive.getMessagesByFolder(targetId,"ALL"); 
     405 
     406                msgAll = expresso_mail_archive.msgAll;                 
     407 
     408                var msgs = new Array(); 
     409                var from = ''; 
     410                var flag = ''; 
     411                 
     412                $.each(msgAll, function(i, msg){ 
     413                    from = $.parseJSON(msg['_from']); 
     414 
     415                    if(!from){ 
     416                        from = {"mailbox":{"name":"null","route":"null","localPart":"null","domain":"null"}}; 
     417                    } 
     418 
     419                    flag = $.parseJSON(msg['_tags']); 
     420                    id = msg['_id']; 
     421 
     422                    var message = {}; 
     423                     
     424                     
     425                    message['msg_number'] = id; 
     426                    message['flags'] = archive_flag( flag ); 
     427                    message['from.name'] = from['mailbox']['@name']; 
     428                    message['subject'] = msg['_subject']; 
     429                    message['timestamp'] = msg['_receivedDate']; 
     430                    message['size'] = msg['_size']; 
     431                    message['id'] = id; 
     432                    msgs.push( message ); 
     433 
     434                }); 
     435 
     436            grid.jqGrid("clearGridData", true); 
     437            grid.jqGrid('setGridParam',{datatype: "local",data: msgs}) 
     438                    .trigger("reloadGrid") 
     439                    .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     440 
     441            } else { 
     442                if( !targetId.indexOf( 'local_messages/' ) ) 
     443                    offlineCase = ":offline"; 
     444 
     445                grid.jqGrid('setGridParam',{datatype: "json", url:BASE_PATH + 'REST.php'+offlineCase+'?q=folder/'+targetId.replace(dashes, '.')+'/message'}) 
     446                    .trigger("reloadGrid") 
     447                    .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     448            } 
    334449                }) 
    335450                .find('span:first-child'); 
    336                 $('span.folder.inbox').addClass('selected'); 
     451                $('span.folder.inbox').parents(".ui-dialog").find("li#INBOX span").addClass('selected'); 
    337452                selectedFolder = { 
    338453                        id: firstFolder.parent().attr('id'),  
     
    360475                        ], 
    361476                        jsonReader : { 
    362                                   root:"rows", 
     477                                  root: function(obj){ 
     478                                        obj['data'] = {}; 
     479                            obj.data = {rows : obj.rows}; 
     480                                        if(obj.rows){ 
     481                                                if(!obj.rows[0].flag){ 
     482                                                        var msgs = []; 
     483                                                        $.each(obj.rows, function(i, msg){ 
     484                                                                flag = msg['flags']; 
     485                                        id = msg['msg_number']; 
     486                                        var message = {}; 
     487                                      
     488                                        message['msg_number'] = id; 
     489                                        message['flags'] = flag; 
     490                                        message['to'] = { 
     491                                                name: msg['toaddress2'], 
     492                                                email: msg['toaddress2'] 
     493                                        }; 
     494                 
     495                                        if(msg['from'] != undefined &&  msg['header']['from'] != undefined){ 
     496                                                message['from'] = { 
     497                                                        'email' : msg['from']['email'], 
     498                                                        'name' : msg['header']['from']['name'] 
     499                                                } 
     500                                            }else{ 
     501                                                message['from'] = { 
     502                                                        'email' : '', 
     503                                                        'name' : 'Rascunho' 
     504                                                } 
     505                                            } 
     506                                        //message['from']['name'] = msg['from']['name']; 
     507                                        message['subject'] = msg['subject'] ? msg['subject'] : "(sem assunto)"; 
     508                                        message['timestamp'] = parseInt(msg['timestamp']); 
     509                                        message['size'] = msg['size']; 
     510                                        message['id'] = id; 
     511                                        msgs.push( message ); 
     512                                        }); 
     513                                                        obj['data'] = {}; 
     514                                        obj.data = {rows : msgs}; 
     515                                    } 
     516                        } 
     517                                        return obj.data.rows; 
     518                                  }, 
    363519                                  page: "page", 
    364520                                  total: "total", 
     
    367523                                  id: "0" 
    368524                        }, 
     525                        hidegrid:false, 
    369526                        rowNum:10, 
    370527                        rowList:[10,25,50], 
     
    377534                        loadComplete: function(data) { 
    378535                                lastLoadedMessages = data.rows; 
    379                                  
     536                                $("#mailgrid-container").find(".loading").hide(); 
     537 
    380538                                // aplica o contador 
    381539                                jQuery('.timable').each(function (i) { 
     
    401559                                 
    402560                        }, 
    403                         onSelectRow: function (id, selected) { 
    404                                 var message = false; 
    405                                 for (var i=0; i<lastLoadedMessages.length; i++){ 
    406                                         if (lastLoadedMessages[i].msg_number == id) { 
    407                                                 message = lastLoadedMessages[i]; 
    408                                                 break; 
    409                                         } 
    410                                 } 
    411                                  
    412                                 var tabPanelTemplateId = 'mailpreview_tab_' + selectedFolder.id.replace(/[.\/]/g, '_') + '_' + message.msg_number; 
    413                                 var tabPanelTemplateId = tabPanelTemplateId.replace(/[\s\/]/g, '-');  
    414                                  
    415                                 if (selected) {  
    416                                         if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) { 
    417                                                 if (!selectedMessages[selectedFolder.id]) 
    418                                                         selectedMessages[selectedFolder.id] = {}; 
    419                                                          
    420                                                 selectedMessages[selectedFolder.id][message.msg_number] = true; 
    421                                                 $('#mailpreview-container').unblock();                                           
    422  
    423                                                 var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
    424                                                 if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
    425                                                         tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
    426                                                  
    427                                                 if (!$('#' + tabPanelTemplateId).length) {                                                               
    428                                                         $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
    429                                                         .find('.message.empty-container').hide().end() 
    430                                                         .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body); 
    431                                                 } else { 
    432                                                         $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
    433                                                         .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
    434                                                 } 
    435                                                  
    436                                         } else { 
    437                                                 jQuery('#mailpreview_container').block({   
    438                                                         message: '<div id="loading-content"><div class="image"></div></div>',   
    439                                                         css: {   
    440                                                                 backgroundImage: 'url('+BASE_PATH+'modules/attach_message/images/loading.gif)',   
    441                                                                 backgroundRepeat: 'no-repeat',  
    442                                                                 backgroundPosition: 'center',  
    443                                                                 backgroundColor: 'transparent',  
    444                                                                 width: '32px',  
    445                                                                 height: '32px',  
    446                                                                 border:'none'   
    447                                                         },  
    448                                                         overlayCSS: {   
    449                                                                 backgroundColor: '#CCC',   
    450                                                                 opacity:         0.5  
    451                                                         }   
    452                                                 });  
    453  
    454                                                 var offlineCase = ""; 
    455                                                  
    456                                                 if( !selectedFolder.id.indexOf( 'local_messages/' ) ) 
    457                                                     offlineCase = ":offline"; 
    458                                            
    459                                                 if (!selectedMessages[selectedFolder.id]) 
    460                                                         selectedMessages[selectedFolder.id] = {}; 
    461                                                 selectedMessages[selectedFolder.id][message.msg_number] = true; 
    462                                                 $.ajax({ 
    463                                                         accepts: 'text/html', 
    464                                                         url: BASE_PATH + 'REST.php'+offlineCase+'?q=folder/'+selectedFolder.id.replace(dashes, '.')+'/message/'+id, 
    465                                                         dataType: 'json', 
    466                                                         success: function( mail_preview ){               
    467                                                                 //selectedMessagesCount(); 
    468                                                                 if (!onceOpenedMessages[selectedFolder.id]) 
    469                                                                         onceOpenedMessages[selectedFolder.id] = {}; 
    470                                                                 onceOpenedMessages[selectedFolder.id][message.msg_number] = jQuery.extend(true, message, mail_preview); 
    471  
    472                                                                 $('#mailpreview_container').unblock(); 
    473  
    474                                                                 var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
    475                                                                 if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
    476                                                                         tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
    477                                                         selectedMessagesCount(); 
    478                                                                  
    479                                                                 if (!$('#' + tabPanelTemplateId).length) {                                                               
    480                                                                         $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
    481                                                                         .find('.message.empty-container').hide().end() 
    482                                                                         .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body) 
    483                                                                         .prepend( 
    484                                                                                 '<div class="mailpreview-message-info">' +  
    485                                                                                         get_lang('Subject') + ': ' + 
    486                                                                                         html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject) +  
    487                                                                                 '</div>' 
    488                                                                         ) 
    489                                                                         .find('[class^="ExpressoCssWrapper"]').addClass("mailpreview-message-body"); 
    490                                                                 } else { 
    491                                                                         $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
    492                                                                         .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
    493                                                                 } 
    494                                                         } 
    495                                                 }); 
    496                                         } 
    497                                 } else { 
    498                                         /** 
    499                                          * if you wants to remove tab on unselect message, 
    500                                          * but still needs to uselect message on remove tab. 
    501                                          *  
    502                                          */ 
    503                                         /* 
    504                                         if ($('#' + tabPanelTemplateId).length) { 
    505                                                 $mailpreview_tabs.tabs('remove', '#' + tabPanelTemplateId); 
    506                                         } 
    507                                          */ 
    508                                         selectedMessages[selectedFolder.id][message.msg_number] = false; 
    509                                         $mailpreview_tabs.find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').addClass('preview-message-unselected'); 
    510                                 } 
    511                                  
    512                                 if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) 
    513                                         selectedMessagesCount(); 
    514                         }, 
     561            onSelectRow: function(id, selected) 
     562            { 
     563                /* Funções auxiliares:*/ 
     564 
     565                /* 
     566                    Marca a mensagem como selecionada no grid de anexar mensagena. 
     567                    Parâmetros: 
     568                        folder: folder em que a mensagem a ser selecionada se encontra. 
     569                        msg_number: id da mensagem a ser selecionada. 
     570                */ 
     571                var mark_as_selected = function (folder, msg_number) { 
     572                    if(!selectedMessages[folder]) 
     573                    { 
     574                        selectedMessages[folder] = {}; 
     575                    } 
     576                    selectedMessages[folder][msg_number] = true; 
     577                } 
     578 
     579                /* 
     580                    Adiciona uma mensagem ao cache de mensagens. 
     581                        cache: vetor de cache de mensagens. 
     582                        msg: mensagem a ser armazenada. 
     583                */ 
     584                var add_msg_to_cache = function (cache, msg) { 
     585                    if(!cache[selectedFolder.id]) 
     586                    { 
     587                        cache[selectedFolder.id] = {}; 
     588                    } 
     589                    cache[selectedFolder.id][msg.msg_number] = msg; 
     590                } 
     591 
     592                /* 
     593                    Adiciona uma aba de preview para cada mensagem selecionada. 
     594                        subject: assunto da mensagem. 
     595                        body: corpo da mensagem. 
     596                */ 
     597                var add_preview_tab = function (subject, body) { 
     598                    // Trunca o assunto, para caber na aba de preview: 
     599                    var tabPanelTemplateLabel = html_entities(subject); 
     600                    if(tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
     601                    { 
     602                        tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
     603                    } 
     604 
     605                    // Se a aba não tiver sido adicionada: 
     606                    if(!$('#' + tabPanelTemplateId).length) 
     607                    { 
     608                        // adiciona-a: 
     609                        $mailpreview_tabs 
     610                        .tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
     611                        .find('.message.empty-container') 
     612                        .hide() 
     613                        .end() 
     614                        .find('#' + tabPanelTemplateId) 
     615                        .html(body) 
     616                        .prepend('<div class="mailpreview-message-info">' + get_lang('Subject') + ': ' + html_entities(subject) + '</div>') 
     617                        .find('[class^="ExpressoCssWrapper"]') 
     618                        .addClass("mailpreview-message-body"); 
     619                    } 
     620                    else 
     621                    { 
     622                        // Senão, só a seleciona: 
     623                        $mailpreview_tabs 
     624                        .tabs('select', '#' + tabPanelTemplateId) 
     625                        .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]') 
     626                        .removeClass('preview-message-unselected'); 
     627                    } 
     628                } 
     629 
     630                var message = false; 
     631                for(var i = 0; i < lastLoadedMessages.length; i++) 
     632                { 
     633                    if(lastLoadedMessages[i].msg_number == id) 
     634                    { 
     635                        message = lastLoadedMessages[i]; 
     636                        break; 
     637                    } 
     638                } 
     639                var tabPanelTemplateId = 'mailpreview_tab_' + selectedFolder.id.replace(/[.\/]/g, '_') + '_' + message.msg_number; 
     640                var tabPanelTemplateId = tabPanelTemplateId.replace(/[\s\/]/g, '-'); 
     641 
     642                if(selected) 
     643                { 
     644                    // Se a já mensagem (com preview) já estiver no cache: 
     645                    if(onceOpenedHeadersMessages[selectedFolder.id] && onceOpenedHeadersMessages[selectedFolder.id][message.msg_number]  && onceOpenedHeadersMessages[selectedFolder.id][message.msg_number].body) 
     646                    { 
     647 
     648                        mark_as_selected(selectedFolder.id, message.msg_number); 
     649 
     650                        add_preview_tab( 
     651                            onceOpenedHeadersMessages[selectedFolder.id][message.msg_number].subject, 
     652                            onceOpenedHeadersMessages[selectedFolder.id][message.msg_number].body 
     653                        ); 
     654                    } 
     655                    else // Mensagem não está no cache: 
     656                    { 
     657                        jQuery('#mailpreview_container').block( 
     658                        { 
     659                            message: '<div id="loading-content"><div class="image"></div></div>', 
     660                            css: { 
     661                                backgroundImage: 'url(' + BASE_PATH + 'modules/attach_message/images/loading.gif)', 
     662                                backgroundRepeat: 'no-repeat', 
     663                                backgroundPosition: 'center', 
     664                                backgroundColor: 'transparent', 
     665                                width: '32px', 
     666                                height: '32px', 
     667                                border: 'none' 
     668                            }, 
     669                            overlayCSS: { 
     670                                backgroundColor: '#CCC', 
     671                                opacity: 0.5 
     672                            } 
     673                        }); 
     674 
     675                        mark_as_selected(selectedFolder.id, message.msg_number); 
     676 
     677                        // Se for mensagem local: 
     678                        if(selectedFolder['id'].indexOf("local_messages_") != -1) 
     679                        { 
     680                            expresso_mail_archive.getPreviewToAttach(id); 
     681 
     682                            var body = expresso_mail_archive.bodyPreview; 
     683                            var subject = expresso_mail_archive.subjectPreview; 
     684 
     685                            add_preview_tab(subject, body); 
     686 
     687                            $('#mailpreview_container').unblock(); 
     688 
     689                            add_msg_to_cache(onceOpenedHeadersMessages, message); 
     690                        } 
     691                        else 
     692                        { 
     693                            proxy_mensagens.get_msg(id, selectedFolder.id, '', function (data) { 
     694                                message = $.extend(true, message, data); 
     695 
     696                                add_preview_tab(message.subject, message.body); 
     697 
     698                                $('#mailpreview_container').unblock(); 
     699 
     700                                add_msg_to_cache(onceOpenedHeadersMessages, message); 
     701 
     702 
     703                            }) 
     704                        } 
     705                    } 
     706                } 
     707                else 
     708                { 
     709                    /** 
     710                     * if you wants to remove tab on unselect message, 
     711                     * but still needs to uselect message on remove tab. 
     712                     * 
     713                     */ 
     714                    selectedMessages[selectedFolder.id][message.msg_number] = false; 
     715                    $mailpreview_tabs 
     716                    .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]') 
     717                    .addClass('preview-message-unselected'); 
     718                } 
     719 
     720                selectedMessagesCount(); 
     721            }, 
     722             
    515723                        caption: '<span class="'+selectedFolder['class']+'">'+selectedFolder.name+'</span>' 
    516724                }); 
    517                 //.jqGrid('navGrid','#message_attacher_grid_pager',{edit:false,add:false,del:false}); 
     725 
     726        var search_local_messsages = function(param, folder){ 
     727            if(preferences.use_local_messages != 0) 
     728            { 
     729                folder = folder.split("_")[2]; 
     730 
     731                var local_folders   = []; 
     732                expresso_mail_archive.search_queryresult = null; 
     733                 
     734                local_folders.push(folder); 
     735                 
     736                tmp = []; 
     737 
     738                groupResult = []; 
     739                    expresso_mail_archive.search(local_folders, "SUBJECT " +  "<=>" +url_encode(param) + "##"); 
     740                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     741                    expresso_mail_archive.search(local_folders, "FROM " + "<=>" + url_encode(param) + "##"); 
     742                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     743                    expresso_mail_archive.search(local_folders, "TO " + "<=>" + url_encode(param) + "##"); 
     744                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     745                    expresso_mail_archive.search(local_folders, "CC " + "<=>" + url_encode(param) + "##"); 
     746                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     747                     
     748                if($("#gbox_message_attacher_grid .attach-message-search-checkbox").is(":checked")){ 
     749                    expresso_mail_archive.search(local_folders, "BODY " + "<=>" + url_encode(param) + "##"); 
     750                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     751                } 
     752 
     753                 
     754                 $.each(groupResult, function(i, result){ 
     755                        if(result != null){ 
     756 
     757                                var existsMessage = true; 
     758 
     759                                $.each(result, function(i, each){ 
     760 
     761                                        $.each(tmp, function(i, ids){ 
     762 
     763                                            if(each.msg_number == ids.msg_number){ 
     764 
     765                                                    existsMessage = false; 
     766                                                    return false; 
     767 
     768                                            } 
     769 
     770                                        }); 
     771 
     772                                        if(existsMessage) tmp.push(each); 
     773                                }); 
     774 
     775                        } 
     776                }); 
     777 
     778 
     779                if(tmp == null) 
     780                { 
     781                    tmp = new Object(); 
     782                    tmp.length = 0; 
     783                } 
     784 
     785                msgs = []; 
     786 
     787                $.each(tmp, function(i, msg){ 
     788 
     789                    flag = msg['flag']; 
     790                    id = msg['msg_number']; 
     791 
     792                    var message = {}; 
     793 
     794                    var stamp =  msg['timestamp']; 
     795                    stamp = stamp.toString() + "000"; 
     796                    stamp = parseInt(stamp); 
     797 
     798                    message['msg_number'] = id; 
     799                    message['flags'] = archive_flag_search(flag);//"1,1,1,1,1,1";// 
     800                    message['from.name'] = msg['from']; 
     801                    message['subject'] = msg['subject']; 
     802                    message['timestamp'] = stamp; 
     803                    message['size'] = msg['size']; 
     804                    message['id'] = id; 
     805                    msgs.push( message ); 
     806                }); 
     807                return msgs; 
     808            } 
     809        } 
     810        var search_imap_messages = function(param, folder){ 
     811                var grid = $("#message_attacher_grid"); 
     812 
     813                DataLayer.storage.cache = {}; 
     814                if( $(".attach-message-search-checkbox:checked").length > 0 ){ 
     815                    var filters = [ 
     816                                [ 
     817                                        'from', 
     818                                        '*', 
     819                                        param 
     820                                ],               
     821                                [ 
     822                                'OR', 
     823                                'to', 
     824                                '*', 
     825                                param 
     826                        ], 
     827                                [ 
     828                                'OR', 
     829                                'subject', 
     830                                '*', 
     831                                param 
     832                        ], 
     833                        [ 
     834                                'OR', 
     835                                'folder', 
     836                                '*', 
     837                                folder 
     838                        ], 
     839                        [ 
     840                                'OR', 
     841                                'body', 
     842                                '*', 
     843                                param 
     844                        ] 
     845                    ]; 
     846                }else{ 
     847                        var filters = [ 
     848                                [ 
     849                                        'from', 
     850                                        '*', 
     851                                        param 
     852                                ],               
     853                                [ 
     854                                'OR', 
     855                                'to', 
     856                                '*', 
     857                                param 
     858                        ], 
     859                                [ 
     860                                'OR', 
     861                                'subject', 
     862                                '*', 
     863                                param 
     864                        ], 
     865                        [ 
     866                                'OR', 
     867                                'folder', 
     868                                '*', 
     869                                folder 
     870                        ] 
     871                    ]; 
     872                } 
     873                         
     874            var data = DataLayer.get( 'message', { filter: filters, criteria: { properties: { context: { folder: folder } } } }, true ); 
     875 
     876            if(DataLayer.criterias['message:jqGridSearch']){ 
     877                                delete DataLayer.criterias['message:jqGridSearch'];      
     878                        } 
     879 
     880                DataLayer.register( 'criterias', 'message:jqGridSearch', function( crit ){ 
     881                            crit.properties = { context: { folder: folder } }; 
     882 
     883                            return { filter: [ "msgNumber", "IN", data ], criteria: crit }; 
     884                        }); 
     885            if(typeof(data) == 'object'){ 
     886                                grid.jqGrid("clearGridData", true); 
     887                                grid.jqGrid('setGridParam',{datatype: "json", url: 'message:jqGridSearch'}).trigger("reloadGrid"); 
     888 
     889            }else{ 
     890                $("#mailgrid-container").find(".loading").hide(); 
     891                grid.jqGrid("clearGridData", true); 
     892            } 
     893        } 
     894 
     895                var search_messages = function(param){ 
     896            var grid = $("#message_attacher_grid"); 
     897            var folder = $("#foldertree li span.selected").parent().attr("id"); 
     898             
     899            if(param == ""){ 
     900                $('#foldertree [id="'+folder+'"]').trigger("click"); 
     901                return; 
     902            } 
     903            $(".attach-message-search-input").val(""); 
     904            if(folder.indexOf("local_messages_") == 0){ 
     905                // Pesquisa pelas mensagens locais... 
     906                msgs = search_local_messsages(param, folder); 
     907            } else { 
     908                // Pesquisa pelo Imap... 
     909                return search_imap_messages(param, folder); 
     910            } 
     911 
     912            // Monta as mensagens na grid... 
     913            grid.jqGrid("clearGridData", true); 
     914            grid.jqGrid('setGridParam',{datatype: "local",data: msgs}) 
     915            .trigger("reloadGrid"); 
     916            //.jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     917                } 
     918 
    518919                var title = [get_lang("First page"), get_lang("Prev page"), get_lang("Next page"), get_lang("Last page")]; 
    519920                $("#first_message_attacher_grid_pager").attr("title",title[0]); 
     
    521922                $("#next_message_attacher_grid_pager").attr("title",title[2]); 
    522923                $("#last_message_attacher_grid_pager").attr("title",title[3]); 
     924                $("#mailgrid-container .ui-jqgrid-titlebar") 
     925                .append( DataLayer.render("../prototype/modules/attach_message/attachment_search.ejs") ).find(".ui-jqgrid-titlebar-close").hide() 
     926                .end().find(".attach-message-search-input").Watermark("Pesquisa...").keydown(function(e){ 
     927                        var param = $(this).val(); 
     928                        if($.ui.keyCode.ENTER == e.keyCode){ 
     929                                $("#mailgrid-container").find(".loading").show("fast", function(){ 
     930                                        search_messages(param); 
     931                                }); 
     932                        } 
     933                         
     934                }).end().find(".attach-message-search-checkbox").click(function(){ 
     935            var msg; 
     936            if($(this).is(":checked")){ 
     937                msg = get_lang("take off this option to disregard the message body in the search."); 
     938            } else { 
     939                msg = get_lang("take on this option to regard the message body in the search."); 
     940            } 
     941            $(".attach-message-search-div .button-body-msg-title").attr("title",msg); 
     942        }); 
     943 
     944                $("#attach-message-search").button({ 
     945                        text: false, 
     946                        icons: { 
     947                                primary: "ui-icon-search" 
     948                        } 
     949                }).next().button({ 
     950                        text: false, 
     951                        icons: { 
     952                                primary: "ui-icon-script" 
     953                        } 
     954                }); 
     955                $("#attach-message-search").parent().buttonset(); 
     956 
     957                $("#attach-message-search").click(function(){ 
     958                        var param = $(this).parents(".attach-message-search-div:first").find(".attach-message-search-input").val(); 
     959                        $("#mailgrid-container").find(".loading").show("fast", function(){ 
     960                                search_messages(param); 
     961                        });      
     962                }); 
    523963        } 
    524964}); 
  • branches/2.5/prototype/modules/calendar/assetic.php

    r7664 r8232  
    8787 
    8888if (strpos($javaVersion,"java version") !== false){ 
    89     $filterManager->set('yui_js', $compressor);     
    90     $js->ensureFilter($filterManager->get('yui_js'));     
     89    $filterManager->set('yui_js', $compressor); 
     90    $js->ensureFilter($filterManager->get('yui_js')); 
    9191} 
    9292 
  • branches/2.5/prototype/modules/calendar/css/layout.css

    r7968 r8232  
    14081408        color: transparent; 
    14091409} 
    1410   
    1411 .occurrence-zebra{  
    1412     width: 440px !important;  
    1413 }  
     1410 
     1411.occurrence-zebra{ 
     1412    width: 440px !important; 
     1413} 
  • branches/2.5/prototype/modules/calendar/css/reset.css

    r5341 r8232  
    3333} 
    3434body { 
    35         line-height: 1; 
     35        /*line-height: 1;*/ 
    3636        color: black; 
    3737        background: white; 
  • branches/2.5/prototype/modules/calendar/css/style.css

    r8050 r8232  
    5151.new-event-win fieldset#calendar_addevent_details5 .button-files-upload, .new-task-win fieldset#calendar_addevent_details5 .button-files-upload{margin: 15px 0 0 0} 
    5252.new-event-win fieldset fieldset, .new-event-win fieldset.tab-level2 fieldset, .new-task-win fieldset fieldset, .new-event-win fieldset.tab-level2 fieldset { padding: 5px 0; } 
    53 .new-event-win .creation-date-label{ white-space: nowrap; float: right;}  
     53.new-event-win .creation-date-label{ white-space: nowrap; float: right;} 
    5454 
    5555.new-activity-win fieldset { border: none; margin: 0; padding: 0; } 
     
    559559.div-addtask #calendar_addtask_details1 .subitem .done { width: 45px;} 
    560560 
    561 @-moz-document url-prefix() {.div-addtask #calendar_addtask_details1 .ui-spinner-buttons{ top: -14px !important;}} 
    562  
    563 @media screen and (-webkit-min-device-pixel-ratio:0){.div-addtask #calendar_addtask_details1 .ui-spinner-buttons{ top: -2px !important;}} 
     561.div-addtask #calendar_addtask_details1 .ui-spinner-buttons{ top: -2px !important;;} 
     562/*@-moz-document url-prefix() {.div-addtask #calendar_addtask_details1 .ui-spinner-buttons{ top: -2px !important;}}*/ 
     563/*@media screen and (-webkit-min-device-pixel-ratio:0){.div-addtask #calendar_addtask_details1 .ui-spinner-buttons{ top: -2px !important;}}*/ 
    564564 
    565565.div-addtask #calendar_addtask_details1 .ui-spinner-buttons .ui-spinner-up{height: 7px !important;} 
  • branches/2.5/prototype/modules/calendar/interceptors/DAViCalAdapter.php

    r7799 r8232  
    206206        {   
    207207            $args =  Controller::parse( array( 'service' => 'iCal' ) , $data , $params); 
    208             ob_start();  
     208            ob_start(); 
    209209            include ROOTPATH.'/Sync.php'; 
    210210            ob_end_clean(); 
  • branches/2.5/prototype/modules/calendar/interceptors/DBMapping.php

    r8059 r8232  
    164164 
    165165    public function encodeSignatureAlarmType(&$uri, &$params, &$criteria, $original) { 
    166             $params['type'] = self::codeAlarmType($params['type']);  
    167     }  
    168   
    169     public function schedulableSecurity(&$uri, &$params, &$criteria, $original)  
     166            $params['type'] = self::codeAlarmType($params['type']); 
     167    } 
     168 
     169    public function schedulableSecurity(&$uri, &$params, &$criteria, $original) 
    170170    { 
    171   
    172         if( !isset($criteria['filter'][1]) || !$criteria['filter'][1] == 'uid')  
    173         {  
    174             $security = 'schedulable.id = calendarToSchedulable.schedulable';  
    175             $security .= ' AND calendar.id = calendarToSchedulable.calendar';  
    176             $security .= ' AND calendar.id = calendarSignature.calendar';  
    177             $security .= ' AND calendarSignature.user = ' . base64_encode(Config::me('uidNumber'));  
    178   
    179             $criteria['condition'] = $security;  
    180         }  
    181    
    182     }  
    183   
    184     public function calendarSecurity(&$uri, &$params, &$criteria, $original)  
    185     {  
    186         $security = 'calendar.id = calendarSignature.calendar';  
    187         $security .= ' AND calendarSignature.user = ' . base64_encode(Config::me('uidNumber'));  
    188   
    189         $criteria['condition'] = $security;  
    190     }  
    191   
    192     public function calendarSignatureSecurity(&$uri, &$params, &$criteria, $original)  
    193     {  
    194 //        $security = 'calendarSignature.user = ' . base64_encode(Config::me('uidNumber'));  
    195 //  
    196 //        $criteria['condition'] = $security;  
     171 
     172        if( !isset($criteria['filter'][1]) || !$criteria['filter'][1] == 'uid') 
     173        { 
     174            $security = 'schedulable.id = calendarToSchedulable.schedulable'; 
     175            $security .= ' AND calendar.id = calendarToSchedulable.calendar'; 
     176            $security .= ' AND calendar.id = calendarSignature.calendar'; 
     177            $security .= ' AND calendarSignature.user = ' . base64_encode(Config::me('uidNumber')); 
     178 
     179            $criteria['condition'] = $security; 
     180        } 
     181 
     182    } 
     183 
     184    public function calendarSecurity(&$uri, &$params, &$criteria, $original) 
     185    { 
     186        $security = 'calendar.id = calendarSignature.calendar'; 
     187        $security .= ' AND calendarSignature.user = ' . base64_encode(Config::me('uidNumber')); 
     188 
     189        $criteria['condition'] = $security; 
     190    } 
     191 
     192    public function calendarSignatureSecurity(&$uri, &$params, &$criteria, $original) 
     193    { 
     194//        $security = 'calendarSignature.user = ' . base64_encode(Config::me('uidNumber')); 
     195// 
     196//        $criteria['condition'] = $security; 
    197197    } 
    198198 
     
    347347        if (isset($original['properties']['exceptions'])) { 
    348348            $exceptions = explode(',', $original['properties']['exceptions']); 
    349             $event = Controller::read(array('concept' => 'schedulable', 'id' => $repeat['schedulable']));  
    350   
    351         if(array_key_exists(0, $event)) $event = $event[0];  
    352   
    353         $date = new DateTime('now', new DateTimeZone('UTC'));  
    354   
    355         foreach($exceptions as &$e){  
    356             $date->setTimestamp((int) ($e / 1000));  
    357             $date->setTimezone( new DateTimeZone( $event['timezone'] ));  
    358             $e = ($date->getTimestamp() - $date->getOffset()).'000';  
    359         }  
    360   
    361         unset($repeat['exceptions']);  
     349            $event = Controller::read(array('concept' => 'schedulable', 'id' => $repeat['schedulable'])); 
     350 
     351        if(array_key_exists(0, $event)) $event = $event[0]; 
     352 
     353        $date = new DateTime('now', new DateTimeZone('UTC')); 
     354 
     355        foreach($exceptions as &$e){ 
     356            $date->setTimestamp((int) ($e / 1000)); 
     357            $date->setTimezone( new DateTimeZone( $event['timezone'] )); 
     358            $e = ($date->getTimestamp() - $date->getOffset()).'000'; 
     359        } 
     360 
     361        unset($repeat['exceptions']); 
    362362        } 
    363363 
    364     unset($repeat['schedulable']);  
    365   
    366     $lastExceptions = Controller::find(array('concept' => 'repeatOccurrence'), array("occurrence"), array('filter' => array('AND', array('=', 'repeat', $id), array('=', 'exception', 1))));  
     364    unset($repeat['schedulable']); 
     365 
     366    $lastExceptions = Controller::find(array('concept' => 'repeatOccurrence'), array("occurrence"), array('filter' => array('AND', array('=', 'repeat', $id), array('=', 'exception', 1)))); 
    367367 
    368368        //Recurepa as execeções anteriores caso exista 
     
    379379        else if(!empty($exceptions)) 
    380380            Controller::service('PostgreSQL')->execResultSql("INSERT INTO calendar_repeat_occurrence(repeat_id,exception,occurrence)VALUES ('" . $id . "','1','" . implode("'),('" . $id . "','1','", $exceptions) . "')" ); 
    381     }  
     381    } 
    382382 
    383383    public function checkOccurrences($start, $end, $calendarIds) { 
     
    428428 
    429429            foreach ($result as $id => $res){ 
    430   
    431             $ocurrences = array_unique($res);  
    432   
    433             /*  
    434              * Check current range decoded  
    435              * */  
    436             $current = Controller::find(array('concept' => 'repeatOccurrence'), array("occurrence"), array('filter' => array('=', 'repeat', $id)));  
    437             $toDiff = array();  
    438   
    439             if(!empty($current))  
    440                 foreach($current as $c) $toDiff[] = $c['occurrence'];  
    441   
    442             $ocurrences = array_diff($ocurrences, $toDiff);  
    443   
    444             if(!empty($ocurrences))  
     430 
     431            $ocurrences = array_unique($res); 
     432 
     433            /* 
     434             * Check current range decoded 
     435             * */ 
     436            $current = Controller::find(array('concept' => 'repeatOccurrence'), array("occurrence"), array('filter' => array('=', 'repeat', $id))); 
     437            $toDiff = array(); 
     438 
     439            if(!empty($current)) 
     440                foreach($current as $c) $toDiff[] = $c['occurrence']; 
     441 
     442            $ocurrences = array_diff($ocurrences, $toDiff); 
     443 
     444            if(!empty($ocurrences)) 
    445445                Controller::service('PostgreSQL')->execResultSql("INSERT INTO calendar_repeat_occurrence(repeat_id,occurrence)VALUES('" . $id . "','" . implode("'),('" . $id . "', '", $ocurrences) . "')"); 
    446   
    447         }  
     446 
     447        } 
    448448            $data = array(); 
    449449 
     
    471471        $result = array(); 
    472472        $params = array(); 
    473     $realResult = array();  
     473    $realResult = array(); 
    474474        foreach ($return as $ret) { 
    475475            $currentId = $ret['schedulable']; 
     
    483483        } 
    484484 
    485     foreach($result as $i => $v)  
    486     {  
    487         $calendarToCalendarObj = self::schedulable2calendarToObject($v['id']);  
    488             foreach($calendarToCalendarObj as $vv)  
    489             {  
    490                 $v['calendar'] = $vv['calendar_id'];  
    491                 $realResult[] = $v;  
    492             }  
    493     }  
    494   
    495         return( $realResult );  
     485    foreach($result as $i => $v) 
     486    { 
     487        $calendarToCalendarObj = self::schedulable2calendarToObject($v['id']); 
     488            foreach($calendarToCalendarObj as $vv) 
     489            { 
     490                $v['calendar'] = $vv['calendar_id']; 
     491                $realResult[] = $v; 
     492            } 
     493    } 
     494 
     495        return( $realResult ); 
    496496    } 
    497497 
     
    633633            //necessário para atulizar a atividade de composta pela tarefa aqui sendo atualizada 
    634634            if(isset($criteria['historic']['startTime']) || isset($criteria['historic']['endTime'])){ 
    635                 /*  
    636                  * Verify current task is built-in activity  
    637                  * */  
     635                /* 
     636                 * Verify current task is built-in activity 
     637                 * */ 
    638638                $taskToActivity = Controller::find(array('concept' => 'taskToActivity'), false, array('filter' => array('AND', array('=', 'task', $uri['id']), array('=', 'owner', Config::me('uidNumber'))), 'deepness' => 2)); 
    639639                if(!empty($taskToActivity)){ 
     
    641641                    $isAllDay = 1; 
    642642 
    643                     /*  
    644                      * Get all task in activity  
    645                      * */  
    646                     $taskToActivity = Controller::find(array('concept' => 'taskToActivity'), false, array('filter' => array('AND', array('=', 'activity', $taskToActivity[0]['activity']), array('=', 'owner', Config::me('uidNumber'))), 'deepness' => 2));  
    647   
     643                    /* 
     644                     * Get all task in activity 
     645                     * */ 
     646                    $taskToActivity = Controller::find(array('concept' => 'taskToActivity'), false, array('filter' => array('AND', array('=', 'activity', $taskToActivity[0]['activity']), array('=', 'owner', Config::me('uidNumber'))), 'deepness' => 2)); 
     647 
    648648                    if(!empty($activity)){ 
    649649                        $start = $params['startTime']; 
    650650                        $end = $params['endTime']; 
    651651                        foreach($taskToActivity as $t){ 
    652   
    653   
    654                             if($t['task']['id'] != $params['id']){  
    655                                 $start = $t['task']['startTime'] < $start ? $t['task']['startTime'] : $start;  
    656                                 $end = $t['task']['endTime'] > $end ? $t['task']['endTime'] : $end;  
    657                                 $isAllDay = (($isAllDay == 1) && ($t['task']['allDay'] == '1')) ? 1 : 0;  
    658                             }  
     652 
     653 
     654                            if($t['task']['id'] != $params['id']){ 
     655                                $start = $t['task']['startTime'] < $start ? $t['task']['startTime'] : $start; 
     656                                $end = $t['task']['endTime'] > $end ? $t['task']['endTime'] : $end; 
     657                                $isAllDay = (($isAllDay == 1) && ($t['task']['allDay'] == '1')) ? 1 : 0; 
     658                            } 
    659659                        } 
    660660 
     
    680680                } 
    681681            } 
    682             /*  
    683              * Clean historic not used  
    684              * */  
     682            /* 
     683             * Clean historic not used 
     684             * */ 
    685685            unset($criteria['historic']['endTime']); 
    686686            unset($criteria['historic']['rangeEnd']); 
     
    771771            } 
    772772        } 
    773     }  
    774   
    775     static function autoImportCalendar(&$uri, &$params, &$criteria, $original){  
    776         $autoCommit = Controller::service('PostgreSQL')->execResultSql('Select config_value FROM phpgw_config WHERE config_app = \'expressoCalendar\' AND config_name = \'expressoCalendar_autoImportCalendars\'');  
    777   
    778   
    779         if(isset($autoCommit[0]) && $autoCommit[0]['config_value'] == 'true')  
    780         {  
    781             if(isset($original['properties']) && isset($original['properties']['user'])  && isset($original['properties']['isOrganizer']) &&  $original['properties']['isOrganizer'] != '1')  
    782             {  
    783                 $defaultCalendar = Controller::find(array('concept' => 'modulePreference'), array('value') , array('filter' => array( 'and' , array('=' , 'name' , 'dafaultImportCalendar') , array('=' , 'module' , 'expressoCalendar') , array('=' , 'user' , $original['properties']['user'])  )) );  
    784                 if(isset($defaultCalendar[0]) && $defaultCalendar[0]['value'] > 0)  
    785                 {  
    786                     Controller::create(array('concept' => 'calendarToSchedulable'),  
    787                         array('schedulable' => $original['properties']['schedulable'],  
    788                             'calendar' => $defaultCalendar[0]['value']  
    789                         )  
    790                     );  
    791                 }  
    792             }  
    793         }  
     773    } 
     774 
     775    static function autoImportCalendar(&$uri, &$params, &$criteria, $original){ 
     776        $autoCommit = Controller::service('PostgreSQL')->execResultSql('Select config_value FROM phpgw_config WHERE config_app = \'expressoCalendar\' AND config_name = \'expressoCalendar_autoImportCalendars\''); 
     777 
     778 
     779        if(isset($autoCommit[0]) && $autoCommit[0]['config_value'] == 'true') 
     780        { 
     781            if(isset($original['properties']) && isset($original['properties']['user'])  && isset($original['properties']['isOrganizer']) &&  $original['properties']['isOrganizer'] != '1') 
     782            { 
     783                $defaultCalendar = Controller::find(array('concept' => 'modulePreference'), array('value') , array('filter' => array( 'and' , array('=' , 'name' , 'dafaultImportCalendar') , array('=' , 'module' , 'expressoCalendar') , array('=' , 'user' , $original['properties']['user'])  )) ); 
     784                if(isset($defaultCalendar[0]) && $defaultCalendar[0]['value'] > 0) 
     785                { 
     786                    Controller::create(array('concept' => 'calendarToSchedulable'), 
     787                        array('schedulable' => $original['properties']['schedulable'], 
     788                            'calendar' => $defaultCalendar[0]['value'] 
     789                        ) 
     790                    ); 
     791                } 
     792            } 
     793        } 
    794794    } 
    795795 
     
    913913    } 
    914914 
    915     public function getCalendarTask( $task ){  
    916   
    917         $sql = 'select co.calendar_id as "calendar" from calendar_to_calendar_object as "co", calendar_signature as "cs" where cs.user_uidnumber = '. Config::me('uidNumber')  
    918             .' AND cs.is_owner = 1 AND cs.calendar_id = co.calendar_id AND co.calendar_object_id = '. $task;  
    919   
    920   
    921         $returns = Controller::service('PostgreSQL')->execResultSql($sql);  
    922   
    923         return $returns[0]['calendar'];  
    924     }  
    925   
     915    public function getCalendarTask( $task ){ 
     916 
     917        $sql = 'select co.calendar_id as "calendar" from calendar_to_calendar_object as "co", calendar_signature as "cs" where cs.user_uidnumber = '. Config::me('uidNumber') 
     918            .' AND cs.is_owner = 1 AND cs.calendar_id = co.calendar_id AND co.calendar_object_id = '. $task; 
     919 
     920 
     921        $returns = Controller::service('PostgreSQL')->execResultSql($sql); 
     922 
     923        return $returns[0]['calendar']; 
     924    } 
     925 
    926926    //TODO: Remover apos suporte a deepness na api  
    927927    public function deepnessFindTask(&$uri, &$result, &$criteria, $original) { 
    928         if (isset($criteria['deepness']) && $criteria['deepness'] != 0){  
    929   
    930             foreach($result as &$value){  
    931   
     928        if (isset($criteria['deepness']) && $criteria['deepness'] != 0){ 
     929 
     930            foreach($result as &$value){ 
     931 
    932932                $value['task'] = Controller::read(array('concept' => 'schedulable', 'id' => $value['task'])); 
    933                 $value['task']['calendar'] = self::getCalendarTask( $value['task']['id'] );  
    934             }  
    935   
    936             return $result;  
    937         }  
     933                $value['task']['calendar'] = self::getCalendarTask( $value['task']['id'] ); 
     934            } 
     935 
     936            return $result; 
     937        } 
    938938    } 
    939939 
     
    972972                .'calendar_object.tzid as "timezone", calendar_to_calendar_object.calendar_id as "calendar" ' 
    973973                .'FROM calendar_object, calendar_to_calendar_object ' 
    974                 .'WHERE ( calendar_object.id = '. $criteria['schedulable'] .' AND calendar_to_calendar_object.calendar_object_id = calendar_object.id'  
    975                 .' AND calendar_to_calendar_object.calendar_id IN (select calendar_id from calendar_signature where calendar_signature.user_uidnumber = '. Config::me('uidNumber') .' )         )';  
     974                .'WHERE ( calendar_object.id = '. $criteria['schedulable'] .' AND calendar_to_calendar_object.calendar_object_id = calendar_object.id' 
     975                .' AND calendar_to_calendar_object.calendar_id IN (select calendar_id from calendar_signature where calendar_signature.user_uidnumber = '. Config::me('uidNumber') .' )         )'; 
    976976 
    977977            $params = Controller::service('PostgreSQL')->execResultSql($sql); 
    978   
    979             foreach( $params as &$event ){  
    980   
    981   
    982                 if(isset( $event['repeat'] ) && isset( $event['repeat']['id'] ) ){  
    983                     $occurrences = Controller::service('PostgreSQL')->execResultSql('SELECT DISTINCT occurrence FROM calendar_object as "c", calendar_repeat_occurrence as "o", calendar_repeat as "r" WHERE r.object_id = '. $event['id'] .' AND o.repeat_id = r.id ' );  
    984   
    985                     if($occurrences){  
    986                         $event['occurrences'] = array();  
    987   
    988                         foreach($occurrences as $o)  
    989                             $event['occurrences'][] = $o['occurrence'];  
    990                     }else  
    991                         unset( $event['occurrences'] );  
    992                 }  
    993             }  
     978 
     979            foreach( $params as &$event ){ 
     980 
     981 
     982                if(isset( $event['repeat'] ) && isset( $event['repeat']['id'] ) ){ 
     983                    $occurrences = Controller::service('PostgreSQL')->execResultSql('SELECT DISTINCT occurrence FROM calendar_object as "c", calendar_repeat_occurrence as "o", calendar_repeat as "r" WHERE r.object_id = '. $event['id'] .' AND o.repeat_id = r.id ' ); 
     984 
     985                    if($occurrences){ 
     986                        $event['occurrences'] = array(); 
     987 
     988                        foreach($occurrences as $o) 
     989                            $event['occurrences'][] = $o['occurrence']; 
     990                    }else 
     991                        unset( $event['occurrences'] ); 
     992                } 
     993            } 
    994994 
    995995            $params = self::deepnessFindEvent($uri, $params, $criteria, $original); 
     
    10471047                if(isset( $v['occurrences'] ) && count( $v['occurrences'] ) > 0){ 
    10481048 
    1049                     $date->setTimestamp((int) ($v['startTime'] / 1000));  
    1050                     $date->setTimezone( new DateTimeZone( $v['timezone'] ));  
    1051   
     1049                    $date->setTimestamp((int) ($v['startTime'] / 1000)); 
     1050                    $date->setTimezone( new DateTimeZone( $v['timezone'] )); 
     1051 
    10521052                    foreach( $result[$i]['occurrences'] as &$o){ 
    10531053 
    1054                         $o = ($o + $date->getOffset()).'000';  
     1054                        $o = ($o + $date->getOffset()).'000'; 
    10551055 
    10561056                    } 
     
    14211421 
    14221422            Controller::delete(array('concept' => 'calendar', 'id' => $signature['calendar'])); 
    1423   
    1424         $autoCommit = Controller::service('PostgreSQL')->execResultSql('Select config_value FROM phpgw_config WHERE config_app = \'expressoCalendar\' AND config_name = \'expressoCalendar_autoImportCalendars\'');  
    1425   
    1426         if(isset($autoCommit[0]) && $autoCommit[0]['config_value'] == 'true')  
    1427         {  
    1428             $defaultCalendar = Controller::find(array('concept' => 'modulePreference'), array('value','id') , array('filter' => array( 'and' , array('=' , 'name' , 'dafaultImportCalendar') , array('=' , 'module' , 'expressoCalendar') , array('=' , 'user' , $signature['user'])  )) );  
    1429   
    1430   
    1431             if(isset($defaultCalendar[0])  && $defaultCalendar[0]['value'] == $signature['calendar'] )  
    1432             {  
    1433                 Controller::delete(array('concept' => 'modulePreference', 'id' => $defaultCalendar[0]['id']));  
    1434             }  
    1435         }  
    1436   
    1437         $permissions = Controller::find(array('concept' => 'calendarToPermission'), array('id'), array('filter' => array('=', 'calendar', $signature['calendar'])));  
    1438   
     1423 
     1424        $autoCommit = Controller::service('PostgreSQL')->execResultSql('Select config_value FROM phpgw_config WHERE config_app = \'expressoCalendar\' AND config_name = \'expressoCalendar_autoImportCalendars\''); 
     1425 
     1426        if(isset($autoCommit[0]) && $autoCommit[0]['config_value'] == 'true') 
     1427        { 
     1428            $defaultCalendar = Controller::find(array('concept' => 'modulePreference'), array('value','id') , array('filter' => array( 'and' , array('=' , 'name' , 'dafaultImportCalendar') , array('=' , 'module' , 'expressoCalendar') , array('=' , 'user' , $signature['user'])  )) ); 
     1429 
     1430 
     1431            if(isset($defaultCalendar[0])  && $defaultCalendar[0]['value'] == $signature['calendar'] ) 
     1432            { 
     1433                Controller::delete(array('concept' => 'modulePreference', 'id' => $defaultCalendar[0]['id'])); 
     1434            } 
     1435        } 
     1436 
     1437        $permissions = Controller::find(array('concept' => 'calendarToPermission'), array('id'), array('filter' => array('=', 'calendar', $signature['calendar']))); 
     1438 
    14391439                if($permissions && count($permissions) > 0){ 
    14401440                        $ids = array(); 
     
    15831583                } 
    15841584 
    1585                 if($i == 0)  
    1586                 {  
    1587                     $pref = array();  
    1588                     $pref['user'] = $_SESSION['wallet']['user']['uidNumber'];  
    1589                     $pref['value'] = $calCreated['id'];  
    1590                     $pref['name'] = 'dafaultImportCalendar' ;  
    1591                     $pref['module'] = 'expressoCalendar';  
    1592                     Controller::create(array('concept' => 'modulePreference'), $pref);  
    1593                 }  
    1594   
     1585                if($i == 0) 
     1586                { 
     1587                    $pref = array(); 
     1588                    $pref['user'] = $_SESSION['wallet']['user']['uidNumber']; 
     1589                    $pref['value'] = $calCreated['id']; 
     1590                    $pref['name'] = 'dafaultImportCalendar' ; 
     1591                    $pref['module'] = 'expressoCalendar'; 
     1592                    Controller::create(array('concept' => 'modulePreference'), $pref); 
     1593                } 
     1594 
    15951595                } 
    15961596            } else { 
     
    16141614 
    16151615                $sigCreated = Controller::create(array('concept' => 'calendarSignature'), $sig); 
    1616   
    1617   
    1618             $pref = array();  
    1619             $pref['user'] = $_SESSION['wallet']['user']['uidNumber'];  
    1620             $pref['value'] = $calCreated['id'];  
    1621             $pref['name'] = 'dafaultImportCalendar' ;  
    1622             $pref['module'] = 'expressoCalendar';  
    1623             Controller::create(array('concept' => 'modulePreference'), $pref);  
    1624   
    1625   
     1616 
     1617 
     1618            $pref = array(); 
     1619            $pref['user'] = $_SESSION['wallet']['user']['uidNumber']; 
     1620            $pref['value'] = $calCreated['id']; 
     1621            $pref['name'] = 'dafaultImportCalendar' ; 
     1622            $pref['module'] = 'expressoCalendar'; 
     1623            Controller::create(array('concept' => 'modulePreference'), $pref); 
     1624 
     1625 
    16261626        } 
    16271627     
     
    16341634    //TODO - Criar conceito separado para participantes externos e remover o criterio notExternal 
    16351635    public function findExternalPaticipants(&$uri, &$result, &$criteria, $original) { 
    1636         if (Config::me('uidNumber') && !isset($criteria['notExternal'])) {  
    1637             $newuri['concept'] = 'user';  
    1638             $newuri['service'] = 'PostgreSQL';  
    1639   
    1640             $newCriteria = $original['criteria'];  
    1641             $valid = true;  
    1642   
    1643             $newCriteria['filter'] = array('AND', $newCriteria['filter'], array('=', 'owner', Config::me('uidNumber')));  
    1644             $externalUsers = Controller::find($newuri, $original['properties'] ? $original['properties'] : null, $newCriteria );  
    1645   
    1646             if (!is_array($result))  
    1647                 $result = array();  
    1648   
    1649             if (is_array($externalUsers)) {  
    1650                 foreach ($externalUsers as $i => $v)  
    1651                     $externalUsers[$i]['isExternal'] = '1';  
    1652             }  
    1653             else  
    1654                 $externalUsers = array();  
    1655   
    1656             $result = array_merge($result, $externalUsers);  
    1657   
    1658   
    1659             if(isset($original['criteria']['externalCatalogs']) &&  $original['criteria']['externalCatalogs'] == true)  
    1660             {  
    1661                 $externalCatalogs = self::findExternalCatalogContacts($original['criteria']['filter'][2]);  
    1662   
    1663                 foreach($externalCatalogs as $i => $v)  
    1664                 {  
    1665                     $exist = false;  
    1666                     foreach($result as $vv)  
    1667                     {  
    1668                         if($v['mail'] == $vv['mail'] )  
    1669                             $exist = true;  
    1670                     }  
    1671                     if(!$exist)  
    1672                         $result[] = $v;  
    1673                 }  
    1674             }  
    1675   
    1676   
    1677             if(isset($original['criteria']['personalContacts']) &&  $original['criteria']['personalContacts'] == true)  
    1678             {  
    1679                 $personalContacts = self::findPersonalContacts($original['criteria']['filter'][2]);  
    1680   
    1681                 foreach($personalContacts as $i => $v)  
    1682                 {  
    1683                     $exist = false;  
    1684                     foreach($result as $vv)  
    1685                     {  
    1686                         if($v['mail'] == $vv['mail'] )  
    1687                             $exist = true;  
    1688                     }  
    1689                     if(!$exist)  
    1690                         $result[] = $v;  
    1691                 }  
    1692             }  
    1693   
    1694             return $result ;  
    1695         }  
     1636        if (Config::me('uidNumber') && !isset($criteria['notExternal'])) { 
     1637            $newuri['concept'] = 'user'; 
     1638            $newuri['service'] = 'PostgreSQL'; 
     1639 
     1640            $newCriteria = $original['criteria']; 
     1641            $valid = true; 
     1642 
     1643            $newCriteria['filter'] = array('AND', $newCriteria['filter'], array('=', 'owner', Config::me('uidNumber'))); 
     1644            $externalUsers = Controller::find($newuri, $original['properties'] ? $original['properties'] : null, $newCriteria ); 
     1645 
     1646            if (!is_array($result)) 
     1647                $result = array(); 
     1648 
     1649            if (is_array($externalUsers)) { 
     1650                foreach ($externalUsers as $i => $v) 
     1651                    $externalUsers[$i]['isExternal'] = '1'; 
     1652            } 
     1653            else 
     1654                $externalUsers = array(); 
     1655 
     1656            $result = array_merge($result, $externalUsers); 
     1657 
     1658 
     1659            if(isset($original['criteria']['externalCatalogs']) &&  $original['criteria']['externalCatalogs'] == true) 
     1660            { 
     1661                $externalCatalogs = self::findExternalCatalogContacts($original['criteria']['filter'][2]); 
     1662 
     1663                foreach($externalCatalogs as $i => $v) 
     1664                { 
     1665                    $exist = false; 
     1666                    foreach($result as $vv) 
     1667                    { 
     1668                        if($v['mail'] == $vv['mail'] ) 
     1669                            $exist = true; 
     1670                    } 
     1671                    if(!$exist) 
     1672                        $result[] = $v; 
     1673                } 
     1674            } 
     1675 
     1676 
     1677            if(isset($original['criteria']['personalContacts']) &&  $original['criteria']['personalContacts'] == true) 
     1678            { 
     1679                $personalContacts = self::findPersonalContacts($original['criteria']['filter'][2]); 
     1680 
     1681                foreach($personalContacts as $i => $v) 
     1682                { 
     1683                    $exist = false; 
     1684                    foreach($result as $vv) 
     1685                    { 
     1686                        if($v['mail'] == $vv['mail'] ) 
     1687                            $exist = true; 
     1688                    } 
     1689                    if(!$exist) 
     1690                        $result[] = $v; 
     1691                } 
     1692            } 
     1693 
     1694            return $result ; 
     1695        } 
    16961696    } 
    16971697 
     
    18121812            && ($timestamp >= ~PHP_INT_MAX); 
    18131813    } 
    1814   
    1815     static function findExternalCatalogContacts( $search )  
    1816     {  
    1817             $result = array();  
    1818             $external_srcs = array();  
    1819             $external_mappings = array();  
    1820   
    1821             include_once dirname(__DIR__) .'/../../../contactcenter/setup/external_catalogs.inc.php';  
    1822   
    1823             $search = str_replace(' ', '*', $search) ;  
    1824             $search = '*' . $search . '*';  
    1825   
    1826             foreach($external_srcs as $i => $v)  
    1827             {  
    1828                 $con = ldap_connect($v['host']);  
    1829   
    1830                 ldap_set_option( $con , LDAP_OPT_PROTOCOL_VERSION , 3 );  
    1831   
    1832                 if( isset( $v['acc'] ) && isset( $v['pw'] ) )  
    1833                     ldap_bind( $con, $v['acc'], $v['pw'] );  
    1834   
    1835                 $fields = array();  
    1836                 $fields[] = $external_mappings[$i]['contact.names_ordered'][0];  
    1837                 $fields[] = $external_mappings[$i]['contact.connection.typeof_connection.contact_connection_type_name']['email'][0];  
    1838   
    1839                 $ldapFilter = '(&(objectClass='.$v['obj'].')(|('.$fields[0].'='.$search.')('.$fields[1].'='.$search.')))';  
    1840                 $sr =  ldap_search( $con, utf8_encode($v['dn']) , $ldapFilter , $fields );  
    1841                 if($sr)  
    1842                 {  
    1843                     $search = ldap_get_entries($con, $sr);  
    1844   
    1845                     for ($j = 0; $j < $search["count"]; ++$j) {  
    1846                         $tmp = array();  
    1847                         $tmp['name'] = $search[$j][$fields[0]][0];  
    1848                         $tmp['mail'] = $search[$j][$fields[1]][0];  
    1849                         $tmp['isExternal'] = '1';  
    1850   
    1851                         $result[] = $tmp;  
    1852                     }  
    1853                 }  
    1854             }  
    1855             return $result;  
    1856     }  
    1857   
    1858     static function findPersonalContacts($search_for)  
    1859     {  
    1860   
    1861               $query = 'select'  
    1862   
    1863                 . ' C.id_connection,'  
    1864                 . ' A.id_contact,'  
    1865                 . ' A.names_ordered,'  
    1866                 . ' A.alias,'  
    1867                 . ' A.birthdate,'  
    1868                 . ' A.sex,'  
    1869                 . ' A.pgp_key,'  
    1870                 . ' A.notes,'  
    1871                 . ' A.web_page,'  
    1872                 . ' A.corporate_name,'  
    1873                 . ' A.job_title,'  
    1874                 . ' A.department,'  
    1875                 . ' C.connection_name,'  
    1876                 . ' C.connection_value,'  
    1877                 . ' B.id_typeof_contact_connection,'  
    1878                 . ' phpgw_cc_contact_addrs.id_typeof_contact_address,'  
    1879                 . ' phpgw_cc_addresses.address1,'  
    1880                 . ' phpgw_cc_addresses.address2,'  
    1881                 . ' phpgw_cc_addresses.complement,'  
    1882                 . ' phpgw_cc_addresses.postal_code,'  
    1883                 . ' phpgw_cc_city.city_name,'  
    1884                 . ' phpgw_cc_state.state_name,'  
    1885                 . ' phpgw_cc_addresses.id_country'  
    1886             ;  
    1887   
    1888             $query .= ' from'  
    1889                 . ' phpgw_cc_contact A'  
    1890                 . ' inner join phpgw_cc_contact_conns B on ( A.id_contact = B.id_contact )'  
    1891                 . ' inner join phpgw_cc_connections C on ( B.id_connection = C.id_connection )'  
    1892                 . ' left join phpgw_cc_contact_addrs on ( A.id_contact = phpgw_cc_contact_addrs.id_contact )'  
    1893                 . ' left join phpgw_cc_addresses on ( phpgw_cc_contact_addrs.id_address = phpgw_cc_addresses.id_address )'  
    1894                 . ' left join phpgw_cc_city on ( phpgw_cc_addresses.id_city = phpgw_cc_city.id_city )'  
    1895                 . ' left join phpgw_cc_state on ( phpgw_cc_addresses.id_state = phpgw_cc_state.id_state)'  
    1896             ;  
    1897   
    1898             $query .= ' where '  
    1899                 . 'A.id_owner=' . Config::me('uidNumber')  
    1900                 . ' and lower(translate(names_ordered, \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))'  
    1901                 . ' LIKE lower(translate(\'%' . $search_for . '%\', \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))';  
    1902   
    1903             //Se não existir parametro na busca, limita os usuarios no resultado da pesquisa.  
    1904             if(!$search_for){  
    1905                 $query .= 'LIMIT 11';  
    1906             }  
    1907   
    1908             $r = Controller::service('PostgreSQL')->execResultSql($query);  
    1909   
    1910   
    1911             $all_contacts = array();  
    1912             foreach( $r as $i => $object )  
    1913             {  
    1914                 if ( ! array_key_exists( $object[ 'id_contact' ], $all_contacts ) )  
    1915                     $all_contacts[ $object[ 'id_contact' ] ] = array(  
    1916                         'connection_value' => '',  
    1917                         'telephonenumber' => '',  
    1918                         'mobile' => '',  
    1919                         'cn' => '',  
    1920                         'id_contact' => '',  
    1921                         'id_connection' => '',  
    1922                         'alias' => '',  
    1923                         'birthdate' => '',  
    1924                         'sex' => '',  
    1925                         'pgp_key' => '',  
    1926                         'notes' => '',  
    1927                         'web_page' => '',  
    1928                         'corporate_name' => '',  
    1929                         'job_title' => '',  
    1930                         'department' => '',  
    1931                         'mail' => '',  
    1932                         'aternative-mail' => '',  
    1933                         'business-phone' => '',  
    1934                         'business-address' => '',  
    1935                         'business-complement' => '',  
    1936                         'business-postal_code' => '',  
    1937                         'business-city_name' => '',  
    1938                         'business-state_name' => '',  
    1939                         'business-id_country' => '',  
    1940                         'business-fax' => '',  
    1941                         'business-pager' => '',  
    1942                         'business-mobile' => '',  
    1943                         'business-address-2' => '',  
    1944                         'home-phone' => '',  
    1945                         'home-address' => '',  
    1946                         'home-complement' => '',  
    1947                         'home-postal_code' => '',  
    1948                         'home-city_name' => '',  
    1949                         'home-state_name' => '',  
    1950                         'home-fax' => '',  
    1951                         'home-pager' => '',  
    1952                         'home-address-2' => ''  
    1953   
    1954   
    1955                     );  
    1956   
    1957                 switch( $object[ 'id_typeof_contact_connection' ] )  
    1958                 {  
    1959                     case 1 :  
    1960                         $all_contacts[ $object[ 'id_contact' ] ][ 'connection_value' ] = $object[ 'connection_value' ];  
    1961                         switch ( strtolower( $object[ 'connection_name' ] ) )  
    1962                         {  
    1963                             case 'alternativo' :  
    1964                                 $all_contacts[ $object[ 'id_contact' ] ][ 'alternative-mail' ] = $object[ 'connection_value' ];  
    1965                                 break;  
    1966                             case 'principal' :  
    1967                                 $all_contacts[ $object[ 'id_contact' ] ][ 'mail' ] = $object[ 'connection_value' ];  
    1968                                 break;  
    1969                         }  
    1970                         break;  
    1971                     case 2 :  
    1972                         $all_contacts[ $object[ 'id_contact' ] ][ 'telephonenumber' ] = $object[ 'connection_value' ];  
    1973                         switch ( strtolower( $object[ 'connection_name' ] ) )  
    1974                         {  
    1975                             case 'casa' :  
    1976                                 $all_contacts[ $object[ 'id_contact' ] ][ 'home-phone' ] = $object[ 'connection_value' ];  
    1977                                 break;  
    1978                             case 'celular' :  
    1979                                 $all_contacts[ $object[ 'id_contact' ] ][ 'mobile' ] = $object[ 'connection_value' ];  
    1980                                 break;  
    1981                             case 'trabalho' :  
    1982                                 $all_contacts[ $object[ 'id_contact' ] ][ 'business-phone' ] = $object[ 'connection_value' ];  
    1983                                 break;  
    1984                             case 'fax' :  
    1985                                 $all_contacts[ $object[ 'id_contact' ] ][ 'home-fax' ] = $object[ 'connection_value' ];  
    1986                                 break;  
    1987                             case 'pager' :  
    1988                                 $all_contacts[ $object[ 'id_contact' ] ][ 'home-pager' ] = $object[ 'connection_value' ];  
    1989                                 break;  
    1990                             case 'celular corporativo' :  
    1991                                 $all_contacts[ $object[ 'id_contact' ] ][ 'business-mobile' ] = $object[ 'connection_value' ];  
    1992                                 break;  
    1993                             case 'pager corporativo' :  
    1994                                 $all_contacts[ $object[ 'id_contact' ] ][ 'business-pager' ] = $object[ 'connection_value' ];  
    1995                                 break;  
    1996                             case 'fax corporativo' :  
    1997                                 $all_contacts[ $object[ 'id_contact' ] ][ 'business-fax' ] = $object[ 'connection_value' ];  
    1998                                 break;  
    1999                         }  
    2000                         break;  
    2001                 }  
    2002   
    2003                 $all_contacts[ $object[ 'id_contact' ] ][ 'cn' ] = utf8_encode($object[ 'names_ordered' ]);  
    2004                 $all_contacts[ $object[ 'id_contact' ] ][ 'id_contact' ]    = $object[ 'id_contact' ];  
    2005                 $all_contacts[ $object[ 'id_contact' ] ][ 'id_connection' ] = $object[ 'id_connection' ];  
    2006                 $all_contacts[ $object[ 'id_contact' ] ][ 'alias' ]         = $object[ 'alias' ];  
    2007                 $all_contacts[ $object[ 'id_contact' ] ][ 'birthdate' ]         = $object[ 'birthdate' ];  
    2008                 $all_contacts[ $object[ 'id_contact' ] ][ 'sex' ]               = $object[ 'sex' ];  
    2009                 $all_contacts[ $object[ 'id_contact' ] ][ 'pgp_key' ]           = $object[ 'pgp_key' ];  
    2010                 $all_contacts[ $object[ 'id_contact' ] ][ 'notes' ]         = $object[ 'notes' ];  
    2011                 $all_contacts[ $object[ 'id_contact' ] ][ 'web_page' ]          = $object[ 'web_page' ];  
    2012                 $all_contacts[ $object[ 'id_contact' ] ][ 'corporate_name' ]= $object[ 'corporate_name' ];  
    2013                 $all_contacts[ $object[ 'id_contact' ] ][ 'job_title' ]         = $object[ 'job_title' ];  
    2014                 $all_contacts[ $object[ 'id_contact' ] ][ 'department' ]    = $object[ 'department' ];  
    2015   
    2016                 switch( $object[ 'id_typeof_contact_address' ] )  
    2017                 {  
    2018                     case 1 :  
    2019                         $all_contacts[ $object[ 'id_contact' ] ][ 'business-address' ]     = $object[ 'address1' ];  
    2020                         $all_contacts[ $object[ 'id_contact' ] ][ 'business-address-2' ]   = $object[ 'address2' ];  
    2021                         $all_contacts[ $object[ 'id_contact' ] ][ 'business-complement' ]  = $object[ 'complement' ];  
    2022                         $all_contacts[ $object[ 'id_contact' ] ][ 'business-postal_code' ] = $object[ 'postal_code' ];  
    2023                         $all_contacts[ $object[ 'id_contact' ] ][ 'business-city_name' ]   = $object[ 'city_name' ];  
    2024                         $all_contacts[ $object[ 'id_contact' ] ][ 'business-state_name' ]  = $object[ 'state_name' ];  
    2025                         $all_contacts[ $object[ 'id_contact' ] ][ 'business-id_country' ]  = $object[ 'id_country' ];  
    2026                         break;  
    2027                     case 2 :  
    2028                         $all_contacts[ $object[ 'id_contact' ] ][ 'home-address' ]     = $object[ 'address1' ];  
    2029                         $all_contacts[ $object[ 'id_contact' ] ][ 'home-address-2' ]   = $object[ 'address2' ];  
    2030                         $all_contacts[ $object[ 'id_contact' ] ][ 'home-complement' ]  = $object[ 'complement' ];  
    2031                         $all_contacts[ $object[ 'id_contact' ] ][ 'home-postal_code' ] = $object[ 'postal_code' ];  
    2032                         $all_contacts[ $object[ 'id_contact' ] ][ 'home-city_name' ]   = $object[ 'city_name' ];  
    2033                         $all_contacts[ $object[ 'id_contact' ] ][ 'home-state_name' ]  = $object[ 'state_name' ];  
    2034                         $all_contacts[ $object[ 'id_contact' ] ][ 'home-id_country' ]  = $object[ 'id_country' ];  
    2035                         break;  
    2036                 }  
    2037             }  
    2038             $all = array_values($all_contacts);  
    2039   
    2040             $result = array();  
    2041             foreach($all as $i => $v)  
    2042             {  
    2043                 if(!$v['mail']) continue;  
    2044   
    2045                 $tmp = array();  
    2046                 $tmp['mail'] = $v['mail'];  
    2047                 $tmp['name'] = $v['cn'];  
    2048                 $tmp['isExternal'] = '1';  
    2049                 $result[] = $tmp;  
    2050             }  
    2051   
    2052             return $result;  
    2053   
    2054     }  
     1814 
     1815    static function findExternalCatalogContacts( $search ) 
     1816    { 
     1817            $result = array(); 
     1818            $external_srcs = array(); 
     1819            $external_mappings = array(); 
     1820 
     1821            include_once dirname(__DIR__) .'/../../../contactcenter/setup/external_catalogs.inc.php'; 
     1822 
     1823            $search = str_replace(' ', '*', $search) ; 
     1824            $search = '*' . $search . '*'; 
     1825 
     1826            foreach($external_srcs as $i => $v) 
     1827            { 
     1828                $con = ldap_connect($v['host']); 
     1829 
     1830                ldap_set_option( $con , LDAP_OPT_PROTOCOL_VERSION , 3 ); 
     1831 
     1832                if( isset( $v['acc'] ) && isset( $v['pw'] ) ) 
     1833                    ldap_bind( $con, $v['acc'], $v['pw'] ); 
     1834 
     1835                $fields = array(); 
     1836                $fields[] = $external_mappings[$i]['contact.names_ordered'][0]; 
     1837                $fields[] = $external_mappings[$i]['contact.connection.typeof_connection.contact_connection_type_name']['email'][0]; 
     1838 
     1839                $ldapFilter = '(&(objectClass='.$v['obj'].')(|('.$fields[0].'='.$search.')('.$fields[1].'='.$search.')))'; 
     1840                $sr =  ldap_search( $con, utf8_encode($v['dn']) , $ldapFilter , $fields ); 
     1841                if($sr) 
     1842                { 
     1843                    $search = ldap_get_entries($con, $sr); 
     1844 
     1845                    for ($j = 0; $j < $search["count"]; ++$j) { 
     1846                        $tmp = array(); 
     1847                        $tmp['name'] = $search[$j][$fields[0]][0]; 
     1848                        $tmp['mail'] = $search[$j][$fields[1]][0]; 
     1849                        $tmp['isExternal'] = '1'; 
     1850 
     1851                        $result[] = $tmp; 
     1852                    } 
     1853                } 
     1854            } 
     1855            return $result; 
     1856    } 
     1857 
     1858    static function findPersonalContacts($search_for) 
     1859    { 
     1860 
     1861              $query = 'select' 
     1862 
     1863                . ' C.id_connection,' 
     1864                . ' A.id_contact,' 
     1865                . ' A.names_ordered,' 
     1866                . ' A.alias,' 
     1867                . ' A.birthdate,' 
     1868                . ' A.sex,' 
     1869                . ' A.pgp_key,' 
     1870                . ' A.notes,' 
     1871                . ' A.web_page,' 
     1872                . ' A.corporate_name,' 
     1873                . ' A.job_title,' 
     1874                . ' A.department,' 
     1875                . ' C.connection_name,' 
     1876                . ' C.connection_value,' 
     1877                . ' B.id_typeof_contact_connection,' 
     1878                . ' phpgw_cc_contact_addrs.id_typeof_contact_address,' 
     1879                . ' phpgw_cc_addresses.address1,' 
     1880                . ' phpgw_cc_addresses.address2,' 
     1881                . ' phpgw_cc_addresses.complement,' 
     1882                . ' phpgw_cc_addresses.postal_code,' 
     1883                . ' phpgw_cc_city.city_name,' 
     1884                . ' phpgw_cc_state.state_name,' 
     1885                . ' phpgw_cc_addresses.id_country' 
     1886            ; 
     1887 
     1888            $query .= ' from' 
     1889                . ' phpgw_cc_contact A' 
     1890                . ' inner join phpgw_cc_contact_conns B on ( A.id_contact = B.id_contact )' 
     1891                . ' inner join phpgw_cc_connections C on ( B.id_connection = C.id_connection )' 
     1892                . ' left join phpgw_cc_contact_addrs on ( A.id_contact = phpgw_cc_contact_addrs.id_contact )' 
     1893                . ' left join phpgw_cc_addresses on ( phpgw_cc_contact_addrs.id_address = phpgw_cc_addresses.id_address )' 
     1894                . ' left join phpgw_cc_city on ( phpgw_cc_addresses.id_city = phpgw_cc_city.id_city )' 
     1895                . ' left join phpgw_cc_state on ( phpgw_cc_addresses.id_state = phpgw_cc_state.id_state)' 
     1896            ; 
     1897 
     1898            $query .= ' where ' 
     1899                . 'A.id_owner=' . Config::me('uidNumber') 
     1900                . ' and lower(translate(names_ordered, \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))' 
     1901                . ' LIKE lower(translate(\'%' . $search_for . '%\', \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))'; 
     1902 
     1903            //Se não existir parametro na busca, limita os usuarios no resultado da pesquisa. 
     1904            if(!$search_for){ 
     1905                $query .= 'LIMIT 11'; 
     1906            } 
     1907 
     1908            $r = Controller::service('PostgreSQL')->execResultSql($query); 
     1909 
     1910 
     1911            $all_contacts = array(); 
     1912            foreach( $r as $i => $object ) 
     1913            { 
     1914                if ( ! array_key_exists( $object[ 'id_contact' ], $all_contacts ) ) 
     1915                    $all_contacts[ $object[ 'id_contact' ] ] = array( 
     1916                        'connection_value' => '', 
     1917                        'telephonenumber' => '', 
     1918                        'mobile' => '', 
     1919                        'cn' => '', 
     1920                        'id_contact' => '', 
     1921                        'id_connection' => '', 
     1922                        'alias' => '', 
     1923                        'birthdate' => '', 
     1924                        'sex' => '', 
     1925                        'pgp_key' => '', 
     1926                        'notes' => '', 
     1927                        'web_page' => '', 
     1928                        'corporate_name' => '', 
     1929                        'job_title' => '', 
     1930                        'department' => '', 
     1931                        'mail' => '', 
     1932                        'aternative-mail' => '', 
     1933                        'business-phone' => '', 
     1934                        'business-address' => '', 
     1935                        'business-complement' => '', 
     1936                        'business-postal_code' => '', 
     1937                        'business-city_name' => '', 
     1938                        'business-state_name' => '', 
     1939                        'business-id_country' => '', 
     1940                        'business-fax' => '', 
     1941                        'business-pager' => '', 
     1942                        'business-mobile' => '', 
     1943                        'business-address-2' => '', 
     1944                        'home-phone' => '', 
     1945                        'home-address' => '', 
     1946                        'home-complement' => '', 
     1947                        'home-postal_code' => '', 
     1948                        'home-city_name' => '', 
     1949                        'home-state_name' => '', 
     1950                        'home-fax' => '', 
     1951                        'home-pager' => '', 
     1952                        'home-address-2' => '' 
     1953 
     1954 
     1955                    ); 
     1956 
     1957                switch( $object[ 'id_typeof_contact_connection' ] ) 
     1958                { 
     1959                    case 1 : 
     1960                        $all_contacts[ $object[ 'id_contact' ] ][ 'connection_value' ] = $object[ 'connection_value' ]; 
     1961                        switch ( strtolower( $object[ 'connection_name' ] ) ) 
     1962                        { 
     1963                            case 'alternativo' : 
     1964                                $all_contacts[ $object[ 'id_contact' ] ][ 'alternative-mail' ] = $object[ 'connection_value' ]; 
     1965                                break; 
     1966                            case 'principal' : 
     1967                                $all_contacts[ $object[ 'id_contact' ] ][ 'mail' ] = $object[ 'connection_value' ]; 
     1968                                break; 
     1969                        } 
     1970                        break; 
     1971                    case 2 : 
     1972                        $all_contacts[ $object[ 'id_contact' ] ][ 'telephonenumber' ] = $object[ 'connection_value' ]; 
     1973                        switch ( strtolower( $object[ 'connection_name' ] ) ) 
     1974                        { 
     1975                            case 'casa' : 
     1976                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-phone' ] = $object[ 'connection_value' ]; 
     1977                                break; 
     1978                            case 'celular' : 
     1979                                $all_contacts[ $object[ 'id_contact' ] ][ 'mobile' ] = $object[ 'connection_value' ]; 
     1980                                break; 
     1981                            case 'trabalho' : 
     1982                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-phone' ] = $object[ 'connection_value' ]; 
     1983                                break; 
     1984                            case 'fax' : 
     1985                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-fax' ] = $object[ 'connection_value' ]; 
     1986                                break; 
     1987                            case 'pager' : 
     1988                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-pager' ] = $object[ 'connection_value' ]; 
     1989                                break; 
     1990                            case 'celular corporativo' : 
     1991                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-mobile' ] = $object[ 'connection_value' ]; 
     1992                                break; 
     1993                            case 'pager corporativo' : 
     1994                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-pager' ] = $object[ 'connection_value' ]; 
     1995                                break; 
     1996                            case 'fax corporativo' : 
     1997                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-fax' ] = $object[ 'connection_value' ]; 
     1998                                break; 
     1999                        } 
     2000                        break; 
     2001                } 
     2002 
     2003                $all_contacts[ $object[ 'id_contact' ] ][ 'cn' ] = utf8_encode($object[ 'names_ordered' ]); 
     2004                $all_contacts[ $object[ 'id_contact' ] ][ 'id_contact' ]    = $object[ 'id_contact' ]; 
     2005                $all_contacts[ $object[ 'id_contact' ] ][ 'id_connection' ] = $object[ 'id_connection' ]; 
     2006                $all_contacts[ $object[ 'id_contact' ] ][ 'alias' ]         = $object[ 'alias' ]; 
     2007                $all_contacts[ $object[ 'id_contact' ] ][ 'birthdate' ]         = $object[ 'birthdate' ]; 
     2008                $all_contacts[ $object[ 'id_contact' ] ][ 'sex' ]               = $object[ 'sex' ]; 
     2009                $all_contacts[ $object[ 'id_contact' ] ][ 'pgp_key' ]           = $object[ 'pgp_key' ]; 
     2010                $all_contacts[ $object[ 'id_contact' ] ][ 'notes' ]         = $object[ 'notes' ]; 
     2011                $all_contacts[ $object[ 'id_contact' ] ][ 'web_page' ]          = $object[ 'web_page' ]; 
     2012                $all_contacts[ $object[ 'id_contact' ] ][ 'corporate_name' ]= $object[ 'corporate_name' ]; 
     2013                $all_contacts[ $object[ 'id_contact' ] ][ 'job_title' ]         = $object[ 'job_title' ]; 
     2014                $all_contacts[ $object[ 'id_contact' ] ][ 'department' ]    = $object[ 'department' ]; 
     2015 
     2016                switch( $object[ 'id_typeof_contact_address' ] ) 
     2017                { 
     2018                    case 1 : 
     2019                        $all_contacts[ $object[ 'id_contact' ] ][ 'business-address' ]     = $object[ 'address1' ]; 
     2020                        $all_contacts[ $object[ 'id_contact' ] ][ 'business-address-2' ]   = $object[ 'address2' ]; 
     2021                        $all_contacts[ $object[ 'id_contact' ] ][ 'business-complement' ]  = $object[ 'complement' ]; 
     2022                        $all_contacts[ $object[ 'id_contact' ] ][ 'business-postal_code' ] = $object[ 'postal_code' ]; 
     2023                        $all_contacts[ $object[ 'id_contact' ] ][ 'business-city_name' ]   = $object[ 'city_name' ]; 
     2024                        $all_contacts[ $object[ 'id_contact' ] ][ 'business-state_name' ]  = $object[ 'state_name' ]; 
     2025                        $all_contacts[ $object[ 'id_contact' ] ][ 'business-id_country' ]  = $object[ 'id_country' ]; 
     2026                        break; 
     2027                    case 2 : 
     2028                        $all_contacts[ $object[ 'id_contact' ] ][ 'home-address' ]     = $object[ 'address1' ]; 
     2029                        $all_contacts[ $object[ 'id_contact' ] ][ 'home-address-2' ]   = $object[ 'address2' ]; 
     2030                        $all_contacts[ $object[ 'id_contact' ] ][ 'home-complement' ]  = $object[ 'complement' ]; 
     2031                        $all_contacts[ $object[ 'id_contact' ] ][ 'home-postal_code' ] = $object[ 'postal_code' ]; 
     2032                        $all_contacts[ $object[ 'id_contact' ] ][ 'home-city_name' ]   = $object[ 'city_name' ]; 
     2033                        $all_contacts[ $object[ 'id_contact' ] ][ 'home-state_name' ]  = $object[ 'state_name' ]; 
     2034                        $all_contacts[ $object[ 'id_contact' ] ][ 'home-id_country' ]  = $object[ 'id_country' ]; 
     2035                        break; 
     2036                } 
     2037            } 
     2038            $all = array_values($all_contacts); 
     2039 
     2040            $result = array(); 
     2041            foreach($all as $i => $v) 
     2042            { 
     2043                if(!$v['mail']) continue; 
     2044 
     2045                $tmp = array(); 
     2046                $tmp['mail'] = $v['mail']; 
     2047                $tmp['name'] = $v['cn']; 
     2048                $tmp['isExternal'] = '1'; 
     2049                $result[] = $tmp; 
     2050            } 
     2051 
     2052            return $result; 
     2053 
     2054    } 
    20552055} 
    20562056 
  • branches/2.5/prototype/modules/calendar/interceptors/Notifications.php

    r8003 r8232  
    3434        if (Config::regGet('noAlarm') !== false) 
    3535            return; //Escapa notificações caso a flag de noAlarm esteja ativa. 
    36   
    37   
     36 
     37 
    3838 
    3939        $organizers = array(); //Cache Organizadores 
     
    9999            $psUpdated = Controller::find(array('concept' => 'participant'), false, array('deepness' => '1', 'filter' => array('IN', 'id', $updated))); 
    100100 
    101   
     101 
    102102            foreach ($psUpdated as $i => $pUpdated) { 
    103103                if ($pUpdated['isOrganizer'] == '1' && $pUpdated['delegatedFrom'] == '0'){ 
     
    491491 
    492492            if (count($part) > 0) 
    493         {  
    494             $from = false;  
    495             foreach($schedulable['participants'] as $v)  
    496             {  
    497                 if($v['isOrganizer'] == 1)  
    498                     $from =  $v;  
    499             }  
    500   
    501             self::sendMail($data, $ical, implode(',', $part), $subject, 'notify_cancel_body' , $from );  
    502         }  
     493        { 
     494            $from = false; 
     495            foreach($schedulable['participants'] as $v) 
     496            { 
     497                if($v['isOrganizer'] == 1) 
     498                    $from =  $v; 
     499            } 
     500 
     501            self::sendMail($data, $ical, implode(',', $part), $subject, 'notify_cancel_body' , $from ); 
     502        } 
    503503        } 
    504504    } 
     
    522522            $method = 'CANCEL'; 
    523523            $notificationType = 'Cancelamento de Calendario'; 
    524             $part = 'me';  
    525             self::mountStruture($schedulable['id'], $schedulable, false, $data, $subject, $ical, $part, $method, $notificationType);  
    526   
    527         $from = false;  
    528         foreach($schedulable['participants'] as $v)  
    529         {  
    530             if($v['isOrganizer'] == 1)  
    531                 $from =  $v;  
    532         }  
    533             self::sendMail($data, $ical, $participant['user']['mail'], $subject, 'notify_cancel_body' , $from);  
     524            $part = 'me'; 
     525            self::mountStruture($schedulable['id'], $schedulable, false, $data, $subject, $ical, $part, $method, $notificationType); 
     526 
     527        $from = false; 
     528        foreach($schedulable['participants'] as $v) 
     529        { 
     530            if($v['isOrganizer'] == 1) 
     531                $from =  $v; 
     532        } 
     533            self::sendMail($data, $ical, $participant['user']['mail'], $subject, 'notify_cancel_body' , $from); 
    534534        } 
    535535    } 
  • branches/2.5/prototype/modules/calendar/js/activity.helpers.js

    r7977 r8232  
    222222    } 
    223223    */ 
    224         UI.dialogs.addActivity.find('select[name="activityStatus"], input[name="allDay"]').removeAttr('disabled'); 
    225     canDiscardActivityDialog = true; 
    226          
    227         UI.dialogs.addActivity.children().find('form.form-addactivity').submit(); 
    228         UI.dialogs.addActivity.dialog("close"); 
     224        //Código o qual será chamado para o salvamento da Atividade.  
     225        var handler_save = function (objsToSave){  
     226                UI.dialogs.addActivity.find('select[name="activityStatus"], input[name="allDay"]').removeAttr('disabled');  
     227                canDiscardActivityDialog = true;  
     228 
     229                var activity_tst = DataLayer.form( UI.dialogs.addActivity.children().find('form') );  
     230                if(objsToSave)  
     231                        objsToSave[objsToSave.length] = activity_tst;  
     232                 
     233                else   
     234                        objsToSave = activity_tst;  
     235                DataLayer.put('schedulable', objsToSave);  
     236                  
     237                UI.dialogs.addActivity.dialog("close");  
     238        }  
     239 
     240        //Verifica se o grupo da atividade mudou  
     241        if (group.id != UI.dialogs.addActivity.children().find('form select[name="group"] :selected').val() && typeof group.id != 'undefined') {  
     242                //Janela de dialogo  
     243                $.Zebra_Dialog('Você alterou o grupo da atividade, deseja alterar também o grupo das tarefas pertencentes à essa atividade?', {  
     244                        'type':     'question',  
     245                        'overlay_opacity': '0.5',  
     246                        'modal': true,  
     247                        'buttons':  ['Não Alterar', 'Alterar'],  
     248                        'onClose':  function(clicked) {  
     249                                if(clicked == 'Não Alterar') {  
     250                                    
     251                                        handler_save();  
     252                                }else{  
     253                                        var objsToSave = [];  
     254                                        //percorre as tarefas da atividade para verificar se o grupo mudou  
     255                                        for(var t in objActivity.tasks){  
     256                                                if(typeof objActivity.tasks[t].group != 'undefined')  
     257                                                        if (objActivity.tasks[t].group != UI.dialogs.addActivity.children().find('form select[name="group"] :selected').val()){  
     258                                                                objActivity.tasks[t].group = UI.dialogs.addActivity.children().find('form select[name="group"] :selected').val();  
     259                                                                objsToSave[objsToSave.length] = {'calendar' : objActivity.tasks[t].group, 'id': t};  
     260                                                        }  
     261                                        }  
     262                                        handler_save(objsToSave);  
     263                                          
     264                                }  
     265                                  
     266                        }  
     267                });  
     268                                                  
     269          
     270        } else {  
     271                handler_save();  
     272        } 
    229273 
    230274}).end() 
     
    259303                    ['=', 'type', '2'],  
    260304                    ['>=','startTime', $.now()],  
    261                     ['in', 'calendar', [$('div.new-activity-win.active select[name="groupFilter"]').val()]]  
     305                    ['in', 'calendar', [$('div.new-activity-win.active select[name="groupFilter"]').val()]] 
    262306                ], criteria: {filterTasks: true, deepness: 2} 
    263307        }; 
     
    410454    updateActivity = false; 
    411455 
    412     var idTask = UI.dialogs.addActivity.find('input[name="idActivity"]').val();  
    413   
    414     getSchedulable( idTask );  
    415   
    416     var objActivity = DataLayer.get('schedulable:activity', idTask );  
     456    var idTask = UI.dialogs.addActivity.find('input[name="idActivity"]').val(); 
     457 
     458    getSchedulable( idTask ); 
     459 
     460    var objActivity = DataLayer.get('schedulable:activity', idTask ); 
    417461    var blkAddTask = UI.dialogs.addActivity.find('#group_addactivity_details8'); 
    418462    var blkAuto = UI.dialogs.addActivity.find('#group_addactivity_details1'); 
     
    673717            text: false 
    674718        }).click(function () { 
    675   
    676             var idTask = $(this).parents('li').find('input[name="idtask[]"]').val()  
    677             getSchedulable(idTask);  
    678             var task = DataLayer.get('schedulable:task', idTask);  
    679             taskDetails(task, true, '',true, null, true);  
     719 
     720            var idTask = $(this).parents('li').find('input[name="idtask[]"]').val() 
     721            getSchedulable(idTask); 
     722            var task = DataLayer.get('schedulable:task', idTask); 
     723            taskDetails(task, true, '',true, null, true); 
    680724        }) 
    681725        .addClass('tiny disable ui-button-disabled ui-state-disabled') 
  • branches/2.5/prototype/modules/calendar/js/calendar.codecs.js

    r8051 r8232  
    7575                        Calendar.currentView =  DataLayer.encode('schedulable:calendar', DataLayer.dispatch('modules/calendar/schedules', DataLayer.criteria('schedulable:calendar', {start: start,end: end}))  );   //DataLayer.get( 'schedulable:calendar', {start: start,end: end} ); 
    7676                    } 
    77              if( !!Calendar.currentView[ signature.calendar.id ])  
    78             {  
    79                 if(signature.hidden == true  )  
    80                     Calendar.currentView[ signature.calendar.id ].hidden = true;  
    81                 else  
    82                     Calendar.currentView[ signature.calendar.id ].hidden = false;  
    83             }  
    84   
     77 
     78            if( !!Calendar.currentView[ signature.calendar.id ]) 
     79            { 
     80                if(signature.hidden == true  ) 
     81                    Calendar.currentView[ signature.calendar.id ].hidden = true; 
     82                else 
     83                    Calendar.currentView[ signature.calendar.id ].hidden = false; 
     84            } 
     85 
    8586                    var view = Calendar.currentView[ signature.calendar.id ]; 
    86   
    87   
     87 
     88 
    8889                    callback( view && !view.hidden ? view : [] ); 
    8990                }, 
     
    211212 
    212213            Calendar.rerenderView(true); 
    213             if(updateActivity){  
    214   
    215                 DataLayer.remove('taskToActivity', false);  
     214            if(updateActivity){ 
     215 
     216                DataLayer.remove('taskToActivity', false); 
    216217                refreshTaskActivity(); 
    217             }  
    218   
     218            } 
     219 
    219220        }); 
    220221    } 
     
    624625                calendars: Calendar.calendars, 
    625626                calendar: objEvent.calendar, 
    626         occurrences: objEvent.occurrences,  
     627        occurrences: objEvent.occurrences, 
    627628                summary: objEvent.summary, 
    628629        type: !!objEvent.type ? objEvent.type : 1, 
     
    632633                startDate: Timezone.getDate( (objEvent.DayLigth ? objEvent.DayLigth.event.startTime : objEvent.startTime), 'start', objEvent.allDay , true), 
    633634        startHour: objEvent.DayLigth ? Timezone.getHour( objEvent.DayLigth.event.startTime) : Timezone.formateHour( objEvent.startTime ), 
    634         startUnixTime: objEvent.DayLigth ? objEvent.DayLigth.event.startTime : objEvent.startTime,  
     635        startUnixTime: objEvent.DayLigth ? objEvent.DayLigth.event.startTime : objEvent.startTime, 
    635636        endDate: Timezone.getDate( (objEvent.DayLigth ? objEvent.DayLigth.event.endTime : objEvent.endTime), 'end', objEvent.allDay , true), 
    636637                endHour: objEvent.DayLigth ? Timezone.getHour( objEvent.DayLigth.event.endTime) : Timezone.formateHour( objEvent.endTime ), 
     
    832833        location: objEvent.location, 
    833834        category: objEvent.category, 
    834         calendar: objEvent.calendar,  
     835        calendar: objEvent.calendar, 
    835836        taskStatus: objEvent.status, 
    836837        groups: Calendar.groups, 
     
    840841        description: objEvent.description, 
    841842        timezone: objEvent.timezone, 
    842         startUnixTime: objEvent.startTime,  
     843        startUnixTime: objEvent.startTime, 
    843844        timezones: Timezone.timezones, 
    844845        percentage: (objEvent.percentage) ? objEvent.percentage : '0', 
     
    11891190                                        percentage: task.percentage, 
    11901191                                        priority: task.priority, 
    1191                                         summary: task.summary 
     1192                                        summary: task.summary, 
     1193                                        group: task.calendar 
    11921194                } 
    11931195 
     
    12171219        percentage: (objEvent.percentage) ? objEvent.percentage : '0', 
    12181220        priority: objEvent.priority, 
    1219         startUnixTime: objEvent.startTime,  
     1221        startUnixTime: objEvent.startTime, 
    12201222        startDate: new Date( parseInt(objEvent.startTime) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 
    12211223        startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 
     
    16371639        } 
    16381640 
    1639         var orderByStartUnixTime = function( a , b )  
    1640         {  
    1641             return parseInt(a.startUnixTime) > parseInt(b.startUnixTime);  
    1642         }  
    1643   
     1641        var orderByStartUnixTime = function( a , b ) 
     1642        { 
     1643            return parseInt(a.startUnixTime) > parseInt(b.startUnixTime); 
     1644        } 
     1645 
    16441646        for (var i=0; i < res.length; i++) { 
    1645   
    1646             if(Calendar.currentView[res[i].calendar].hidden == true)  
    1647                 continue;  
    1648   
     1647 
     1648            if(Calendar.currentView[res[i].calendar].hidden == true) 
     1649                continue; 
     1650 
    16491651                        res[i].type = (res[i].type == '2' && !!res[i].tasks) ? '3' : res[i].type; 
    16501652                 
    16511653            var startDate = Date.parseExact( res[i]['startDate'], User.preferences.dateFormat ); 
    16521654            var endDate   = Date.parseExact( res[i]['endDate'], User.preferences.dateFormat ); 
    1653                    
     1655 
    16541656            var duration = parseInt( endDate.getTime() ) - parseInt( startDate.getTime() ); 
    1655              
     1657 
    16561658            var occurrences = [  res[i].startUnixTime ]; 
    1657   
     1659 
    16581660            if( res[i].occurrences ) 
    16591661            { 
     
    16711673                }); 
    16721674 
    1673                 res2.startUnixTime = parseInt(occurrences[ii]);  
    1674   
     1675                res2.startUnixTime = parseInt(occurrences[ii]); 
     1676 
    16751677                if(res[i].repeat) 
    16761678                    res2.repeat = typeRepeat[res[i].repeat.frequency]; 
     
    16831685 
    16841686                dates[index].events.push(res2); 
    1685   
    1686                 dates[index].events = dates[index].events.sort(orderByStartUnixTime);  
     1687 
     1688                dates[index].events = dates[index].events.sort(orderByStartUnixTime); 
    16871689                   
    16881690            } 
     
    18121814                return (evt.editable == '1' ) ? 
    18131815                { 
     1816                    selectable: true, 
    18141817                    editable: true, 
    1815                     selectable: true, 
    18161818                    className: 'fullcalendar-context-menu  event-type-1 event-id-'+idEvent+' calendar-id-'+calendar.id+ (isRecurrence ? ' isRecurrence Recurrence-id-'+Recurrence : '') 
    18171819                } : { 
     
    18741876                                occurrence: occurrences[i], 
    18751877                                type: typeEvent, 
    1876                                 calendar: evt.calendar,  
    1877                 unanswered: evt.unanswered,  
     1878                                calendar: evt.calendar, 
     1879                unanswered: evt.unanswered, 
     1880                                status: evt.status 
    18781881                                }, (parseInt(typeEvent) == 1 ? eventEditable(evt.id, isRepeat, i ) : (parseInt(typeEvent) == 2 ? taskEditable(evt.id) : {editable: false, disableResizing: true, disableDragging: true})))); 
    18791882        } 
  • branches/2.5/prototype/modules/calendar/js/calendar.shared.js

    r7217 r8232  
    7575            }); 
    7676 
    77             DataLayer.commit(); 
    78             UI.dialogs.sharedCalendar.dialog("close"); 
     77            DataLayer.commit(false, false, function(result){ 
     78 
     79            /* 
     80             * Force clean cache 
     81             * */ 
     82            DataLayer.storage.cache = {}; 
     83            UI.dialogs.sharedCalendar.dialog("close"); 
     84 
     85        }); 
     86 
    7987        }; 
    8088 
     
    295303 
    296304    //Carrega os dados já cadastrados 
    297     var dataCurrent = DataLayer.get('calendarToPermission:detail', { 
    298         filter: ['=','calendar', calendarId]  ,  
    299         criteria: { 
    300             deepness: 2 
    301         } 
    302     }); 
    303     if(dataCurrent){ 
    304         for(var i = 0; i < dataCurrent.length; i++){ 
    305             if(dataCurrent[i].user == "0"){ 
    306                 UI.dialogs.sharedCalendar.find('input[name="isPublic"]').attr('checked', 'checked') 
    307                 .parent().find('.free-busy').toggleClass('hidden'); 
    308                 if(dataCurrent[i].acl['busy']) 
    309                     UI.dialogs.sharedCalendar.find('input[name="busy"]').attr('checked', 'checked'); 
    310             }else{ 
    311                 currentUsers[dataCurrent[i].user.id] = true; 
    312  
    313                 UI.dialogs.sharedCalendar.find('dd.user-list ul.user-list') 
    314                 .append(DataLayer.render('templates/user_shared_add_itemlist.ejs', [{ 
    315                     id: dataCurrent[i].user.id,  
    316                     name: dataCurrent[i].user.name,  
    317                     mail: dataCurrent[i].user.mail,  
    318                     acl:dataCurrent[i].acl,  
    319                     aclValue: dataCurrent[i].aclValues,  
    320                     current: true,  
    321                     idPermission: dataCurrent[i].id 
    322                 }])) 
    323                 .scrollTo('max'); 
    324                 $('li.not-user').remove(); 
    325                 callbackSharedCotactsAdd(); 
    326  
    327                 for (var f in dataCurrent[i].acl){ 
    328                     if(dataCurrent[i].acl[f]){ 
    329                         UI.dialogs.sharedCalendar.find('.'+f+':last').toggleClass('attendee-permissions-change-button') 
    330                         .find('span:first').toggleClass('attendee-permissions-change').end();   
    331                     } 
    332                 } 
    333             } 
    334         } 
    335     } 
     305    var loadOldData = function (calendar) 
     306    { 
     307        UI.dialogs.sharedCalendar.find('dd.user-list ul.user-list').empty(); 
     308 
     309        var dataCurrent = DataLayer.get('calendarToPermission:detail', { 
     310            filter: ['=','calendar', calendar]  , 
     311            criteria: { 
     312                deepness: 2 
     313            } 
     314        }); 
     315 
     316        if(dataCurrent){ 
     317            for(var i = 0; i < dataCurrent.length; i++){ 
     318                if(dataCurrent[i].user == "0"){ 
     319                    UI.dialogs.sharedCalendar.find('input[name="isPublic"]').attr('checked', 'checked') 
     320                        .parent().find('.free-busy').toggleClass('hidden'); 
     321                    if(dataCurrent[i].acl['busy']) 
     322                        UI.dialogs.sharedCalendar.find('input[name="busy"]').attr('checked', 'checked'); 
     323                }else{ 
     324                    currentUsers[dataCurrent[i].user.id] = true; 
     325 
     326                    UI.dialogs.sharedCalendar.find('dd.user-list ul.user-list') 
     327                        .append(DataLayer.render('templates/user_shared_add_itemlist.ejs', [{ 
     328                            id: dataCurrent[i].user.id, 
     329                            name: dataCurrent[i].user.name, 
     330                            mail: dataCurrent[i].user.mail, 
     331                            acl:dataCurrent[i].acl, 
     332                            aclValue: dataCurrent[i].aclValues, 
     333                            current: true, 
     334                            idPermission: dataCurrent[i].id 
     335                        }])) 
     336                        .scrollTo('max'); 
     337                    $('li.not-user').remove(); 
     338                    callbackSharedCotactsAdd(); 
     339 
     340                    for (var f in dataCurrent[i].acl){ 
     341                        if(dataCurrent[i].acl[f]){ 
     342                            UI.dialogs.sharedCalendar.find('.'+f+':last').toggleClass('attendee-permissions-change-button') 
     343                                .find('span:first').toggleClass('attendee-permissions-change').end(); 
     344                        } 
     345                    } 
     346                } 
     347            } 
     348        } 
     349    } 
     350 
     351    loadOldData(calendarId); 
     352 
     353    //Bind calendar select change 
     354    var select = UI.dialogs.sharedCalendar.find('select[name="calendar"]'); 
     355    select.change(function() { 
     356        loadOldData(select.val()); 
     357    }); 
     358 
    336359    UI.dialogs.sharedCalendar.dialog('open'); 
    337360} 
     
    526549    for (var i = 0; i < Calendar.signatures.length; i++) 
    527550        if(Calendar.signatures[i].isOwner == "0"){ 
     551 
     552        /* 
     553        * Verificar se o Owner é um objeto caso ao contrário é realizado a busca e adicionado ao mesmo o uid 
     554        * */ 
     555        if (Calendar.signatures[i].permission.owner != "object"){ 
     556 
     557            var result = DataLayer.get('calendarToPermission', { 
     558                filter: ['AND', ['=','id', Calendar.signatures[i].permission.id]]  , 
     559                criteria: { 
     560                    deepness: 2 
     561                } 
     562            }, true); 
     563 
     564            Calendar.signatures[i].permission.owner = {}; 
     565            Calendar.signatures[i].permission.owner['uid'] = result[0].owner.uid; 
     566 
     567        } 
     568 
    528569            var dataCurrent = Calendar.signatures[i].calendar; 
    529570            currentCalendars[Calendar.signatures[i].permission.id] = { 
  • branches/2.5/prototype/modules/calendar/js/desktop.notification.js

    r7693 r8232  
    55    initDesktopNotificationAddon: function(){ 
    66                if(useDesktopNotification()){ 
    7  
     7                        if ($.cookie('no-notification') == 'true'){ 
     8                                return false; 
     9                        } 
    810                        if (!window.webkitNotifications && $.browser.mozilla) 
    911                        this.installDektopNotificationAddon(); 
    1012 
    1113                        if(window.webkitNotifications && window.webkitNotifications.checkPermission()){ 
    12                              if($.browser.safari){ 
     14                            if($.browser.safari){ 
    1315                     $.Zebra_Dialog('Deseja instalar o plugin de notificação desktop?', { 
    1416                        'custom_class': 'request-notification-permission', 
     
    1921 
    2022                    $('div.ZebraDialog.request-notification-permission a').click(function() { 
    21                         if($(this).html() == 'Sim') 
     23                        if($(this).html() == 'Sim'){ 
    2224                            window.webkitNotifications.requestPermission();        
     25                        }else if ($(this).html() == 'Não'){ 
     26                                $.cookie('no-notification','true'); 
     27                        } 
    2328                    }); 
    2429                }else 
    2530                    window.webkitNotifications.requestPermission(); 
    2631            } 
     32                }else{ 
     33                        $.cookie('no-notification',null); 
    2734                } 
    2835    }, 
     
    4047            } 
    4148        }; 
    42  
     49           ; 
    4350           InstallTrigger.install(params); 
    44  
    4551           return false; 
    4652    }, 
  • branches/2.5/prototype/modules/calendar/js/helpers.js

    r8059 r8232  
    111111        var end = $("#calendar").fullCalendar('getView').visEnd.getTime()/1000; 
    112112        var criteria = DataLayer.criteria("schedulable:calendar", {'start':start, 'end':end} ); 
    113   
    114     var data = DataLayer.encode('schedulable:print', DataLayer.dispatch('modules/calendar/schedules', criteria )  );  
     113 
     114    var data = DataLayer.encode('schedulable:print', DataLayer.dispatch('modules/calendar/schedules', criteria )  ); 
    115115 
    116116        if($("#calendar").fullCalendar('getView').name == "month"){                              
     
    163163        print.removeClass('fc-button-year'); 
    164164        print.removeClass('fc-corner-left'); 
    165         print.removeClass('fc-state-active');  
     165        print.removeClass('fc-state-active'); 
    166166        print.find('.fc-button-content').html('Imprimir'); 
    167167        $('.fc-header-right').append(print); 
     
    179179function eventDetails( objEvent, decoded, path, isMail, repeat, buttonClicked) 
    180180{ 
    181  
    182181    $('.qtip.qtip-blue').remove(); 
    183182 
    184183    attendees = {}; 
    185   
    186     if(!!objEvent.participants)  
    187     {  
    188         $.each(objEvent.participants ,function(index, value) {  
    189  
    190             var part = DataLayer.get('participant' , value );  
    191             var user = DataLayer.get('user' , part.user );  
    192   
    193             attendees[part.user] = user.name;  
    194         });  
    195     }  
    196   
     184 
     185    if(!!objEvent.participants) 
     186    { 
     187        $.each(objEvent.participants ,function(index, value) { 
     188 
     189            var part = DataLayer.get('participant' , value ); 
     190            var user = DataLayer.get('user' , part.user ); 
     191 
     192            attendees[part.user] = user.name; 
     193        }); 
     194    } 
     195 
    197196    if(path == undefined) 
    198197        path = ""; 
    199           
     198         
    200199    if( !decoded ) 
    201         objEvent = DataLayer.decode("schedulable:calendar", objEvent );  
    202   
    203         var dtstamp = objEvent.dtstamp;   
     200        objEvent = DataLayer.decode("schedulable:calendar", objEvent ); 
     201 
     202        var dtstamp = objEvent.dtstamp; 
    204203    if(!isMail) 
    205                 objEvent = DataLayer.encode( "schedulable:preview", objEvent );  
    206         if (!dtstamp)  
    207                 var date = new Date();  
    208         else  
    209                 var date = new Date(parseInt(dtstamp));  
    210         objEvent.creationDate = [];  
    211         objEvent.creationDate[0] = dateFormat(parseInt(dtstamp),'dd/mm/yyyy');  
    212         objEvent.creationDate[1] = date.getHours();  
    213         objEvent.creationDate[2] = date.getMinutes();     
    214       
     204                objEvent = DataLayer.encode( "schedulable:preview", objEvent ); 
     205        if (!dtstamp) 
     206                var date = new Date(); 
     207        else 
     208                var date = new Date(parseInt(dtstamp)); 
     209        objEvent.creationDate = []; 
     210        objEvent.creationDate[0] = dateFormat(parseInt(dtstamp),'dd/mm/yyyy'); 
     211        objEvent.creationDate[1] = date.getHours(); 
     212        objEvent.creationDate[2] = date.getMinutes();    
     213     
    215214    if(typeof(objEvent.id) == 'undefined'){ 
    216215        objEvent.alarms = Calendar.signatureOf[User.preferences.defaultCalendar || Calendar.calendarIds[0]].defaultAlarms || false; 
     
    270269        }).click(function () { 
    271270        var participant = DataLayer.get('participant' , $(this).parents('li').find('[type=checkbox]').val());  
    272             DataLayer.remove('participant', participant.id);  
     271        DataLayer.remove('participant', participant.id); 
     272         
    273273            if($(this).parent().find('.button.delegate').hasClass('attendee-permissions-change-button')){ 
    274274                removeOthers(); 
     
    278278                blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change'); 
    279279            } 
     280                         
    280281            $(this).parents('li').remove(); 
    281282                         
    282283            if(blkAddAtendee.find(".attendee-list li").length == 1) 
    283284                blkAddAtendee.find("li.not-attendee").removeClass('hidden'); 
    284         delete attendees[participant.user];  
     285     delete attendees[participant.user]; 
    285286        }) 
    286287        .addClass('tiny disable ui-button-disabled ui-state-disabled') 
     
    467468    } 
    468469    ); 
     470         
     471                 
    469472} 
    470473 
     
    487490                        $('.qtip.qtip-blue.qtip-active').qtip('destroy');                                                
    488491                attendees  = {}; 
     492        DataLayer.rollback();//Limpa cache do datalayer 
    489493        }, 
    490494        beforeClose: function(event, ui) { 
     
    566570} 
    567571 
    568   
    569 dateSameValue = function(){  
    570     UI.dialogs.addEvent.find('input.start-date').datepicker({  
    571         dateFormat: User.preferences.dateFormat.replace(/M/g, 'm').replace(/yyyy/g, 'yy'),  
    572         onSelect : function (selectedDate){  
    573             endDate = $(".end-date").val();  
    574             storeSelectedDate = selectedDate;  
    575   
    576             if ( User.preferences.dateFormat == "dd/MM/yyyy" || User.preferences.dateFormat == "dd-MM-yyyy" ) {  
    577                 if ( User.preferences.dateFormat == "dd/MM/yyyy" ) {  
    578                     selectedDate = selectedDate.split("/");  
    579                     endDate = endDate.split("/");  
    580                 } else if( User.preferences.dateFormat == "dd-MM-yyyy" ){  
    581                     selectedDate = selectedDate.split("-");  
    582                     endDate = endDate.split("-");  
    583                 }  
    584   
    585                 newDt = new Date(selectedDate[2],selectedDate[1], selectedDate[0]);  
    586                 endDate = new Date(endDate[2],endDate[1], endDate[0]);  
    587   
    588             } else if ( User.preferences.dateFormat == "MM/dd/yyyy" ) {  
    589                 selectedDate = selectedDate.split("/");  
    590                 endDate = endDate.split("/");  
    591   
    592                 newDt = new Date(selectedDate[2],selectedDate[0], selectedDate[1]);  
    593                 endDate = new Date(endDate[2],endDate[0], endDate[1]);  
    594             }  
    595   
    596             if( newDt > endDate )  
    597                 $(".end-date").val(storeSelectedDate);  
    598         },  
    599         onClose: function(){  
    600                 UI.dialogs.addEvent.find(".end-date").val(UI.dialogs.addEvent.find(".start-date").val());  
    601         }  
    602     });  
    603 }  
    604   
     572 
     573dateSameValue = function(){ 
     574    UI.dialogs.addEvent.find('input.start-date').datepicker({ 
     575        dateFormat: User.preferences.dateFormat.replace(/M/g, 'm').replace(/yyyy/g, 'yy'), 
     576        onSelect : function (selectedDate){ 
     577            endDate = $(".end-date").val(); 
     578            storeSelectedDate = selectedDate; 
     579 
     580            if ( User.preferences.dateFormat == "dd/MM/yyyy" || User.preferences.dateFormat == "dd-MM-yyyy" ) { 
     581                if ( User.preferences.dateFormat == "dd/MM/yyyy" ) { 
     582                    selectedDate = selectedDate.split("/"); 
     583                    endDate = endDate.split("/"); 
     584                } else if( User.preferences.dateFormat == "dd-MM-yyyy" ){ 
     585                    selectedDate = selectedDate.split("-"); 
     586                    endDate = endDate.split("-"); 
     587                } 
     588 
     589                newDt = new Date(selectedDate[2],selectedDate[1], selectedDate[0]); 
     590                endDate = new Date(endDate[2],endDate[1], endDate[0]); 
     591 
     592            } else if ( User.preferences.dateFormat == "MM/dd/yyyy" ) { 
     593                selectedDate = selectedDate.split("/"); 
     594                endDate = endDate.split("/"); 
     595 
     596                newDt = new Date(selectedDate[2],selectedDate[0], selectedDate[1]); 
     597                endDate = new Date(endDate[2],endDate[0], endDate[1]); 
     598            } 
     599 
     600            if( newDt > endDate ) 
     601                $(".end-date").val(storeSelectedDate); 
     602        }, 
     603        onClose: function(){ 
     604                UI.dialogs.addEvent.find(".end-date").val(UI.dialogs.addEvent.find(".start-date").val()); 
     605        } 
     606    }); 
     607} 
     608 
    605609DataLayer.render( path+'templates/event_repeat.ejs', { 
    606610    event:objEvent 
     
    608612 
    609613    UI.dialogs.addEvent.find('#calendar_addevent_details3').html(repeatHtml); 
    610   
    611     dateSameValue();  
     614 
     615    dateSameValue(); 
    612616    $(".date").datepicker({ 
    613617                dateFormat: User.preferences.dateFormat.replace(/M/g, 'm').replace(/yyyy/g, 'yy') 
    614         });  
    615   
    616   
     618        }); 
     619 
     620 
    617621    if(objEvent.repeat)  
    618622    { 
     
    10101014}); 
    10111015 
    1012 dateSameValue();  
    1013   
    1014 var fixHour = function(){  
    1015     currentTimeStart = UI.dialogs.addEvent.find("input.start-time").val();  
    1016     UI.dialogs.addEvent.find("input.start-time").val(currentTimeStart.replace(".","").replace(".",""));  
    1017 }     
    1018   
    1019 var setTime = function( selectedDateTime ) {  
    1020     if ((selectedDateTime.value == '__:__') || (selectedDateTime.value == '__:__ __'))  
    1021           selectedDateTime.value = "";  
    1022     if(!(User.preferences.hourFormat.length == 5))  
    1023         $(this).val(selectedDateTime.replace(/[\.]/gi, ""));                                  
    1024     updateMap();  
    1025   
    1026     if( Date.parse(selectedDateTime) < Date.parse(oldTime) ) return true;  
    1027   
    1028     var time = selectedDateTime.split(":");  
    1029   
    1030     var hh = time[0];  
    1031     var mm = time[1].substring(0, 2);  
     1016dateSameValue(); 
     1017 
     1018var fixHour = function(){ 
     1019    currentTimeStart = UI.dialogs.addEvent.find("input.start-time").val(); 
     1020    UI.dialogs.addEvent.find("input.start-time").val(currentTimeStart.replace(".","").replace(".","")); 
     1021}    
     1022 
     1023var setTime = function( selectedDateTime ) { 
     1024    if ((selectedDateTime.value == '__:__') || (selectedDateTime.value == '__:__ __')) 
     1025          selectedDateTime.value = ""; 
     1026    if(!(User.preferences.hourFormat.length == 5)) 
     1027        $(this).val(selectedDateTime.replace(/[\.]/gi, ""));                                 
     1028    updateMap(); 
     1029 
     1030    if( Date.parse(selectedDateTime) < Date.parse(oldTime) ) return true; 
    10321031     
    1033        
    1034     dt = new Date();  
    1035     dt.setHours(hh, mm);  
    1036     var startHours = dt.getHours();  
    1037     add = parseInt(User.preferences.defaultDuration) + parseInt($("input.end-time").val().split(":")[1].substring(0,2));  
    1038     dt.addMinutes(add);  
     1032    var time = selectedDateTime.split(":"); 
     1033 
     1034    var hh = time[0]; 
     1035    var mm = time[1].substring(0, 2); 
     1036    
    10391037      
    1040   
    1041     var minutes = dt.getMinutes().toString();  
    1042     var hours = dt.getHours();  
    1043 UI.dialogs.addEvent.find("input.start-time").val(selectedDateTime.replace(".","").replace(".",""));  
    1044       
    1045       
    1046     if (time[1].indexOf("p.m.") != -1 ) {  
    1047         var startHours = startHours == 12 ? 12 : startHours;  
    1048         var startHours = startHours == 1 ? 13 : startHours;  
    1049         var startHours = startHours == 2 ? 14 : startHours;  
    1050         var startHours = startHours == 3 ? 15 : startHours;  
    1051         var startHours = startHours == 4 ? 16 : startHours;  
    1052         var startHours = startHours == 5 ? 17 : startHours;  
    1053         var startHours = startHours == 6 ? 18 : startHours;  
    1054         var startHours = startHours == 7 ? 19 : startHours;  
    1055         var startHours = startHours == 8 ? 20 : startHours;  
    1056         var startHours = startHours == 9 ? 21 : startHours;  
    1057         var startHours = startHours == 10 ? 22 : startHours;  
    1058         var startHours = startHours == 11 ? 23 : startHours;  
    1059     } else if (time[1].indexOf("a.m.") ) {  
    1060         var startHours = startHours == 12 ? 00 : startHours;  
    1061     }  
    1062   
    1063   
    1064     dtFormat = (time[1].indexOf("p.m.") != -1 || time[1].indexOf("a.m.") != -1) ? ((((User.preferences.defaultDuration / 60) + startHours) >= 12 && (startHours + (User.preferences.defaultDuration / 60)) < 24) ? " pm" : " am") : "";  
    1065          
    1066     var newHours = "";  
    1067     if(dtFormat){  
    1068         hours = hours == 13 ? 01 : hours;  
    1069         hours = hours == 14 ? 02 : hours;  
    1070         hours = hours == 15 ? 03 : hours;  
    1071         hours = hours == 16 ? 04 : hours;  
    1072         hours = hours == 17 ? 05 : hours;  
    1073         hours = hours == 18 ? 06 : hours;  
    1074         hours = hours == 19 ? 07 : hours;  
    1075         hours = hours == 20 ? 08 : hours;  
    1076         hours = hours == 21 ? 09 : hours;  
    1077         hours = hours == 22 ? 10 : hours;  
    1078         hours = hours == 23 ? 11 : hours;  
    1079         hours = hours == 24 ? 12 : hours;  
    1080     } else {  
    1081         newHours = hours <= 9 ? "0" : "";  
    1082     }  
    1083   
    1084     minutes = minutes.length == 1 ? "0"+minutes+dtFormat : minutes+dtFormat;  
    1085     newHours +=  hours.toString() + ":" +minutes;  
    1086     UI.dialogs.addEvent.find("input.end-time").val(newHours);  
    1087   
    1088 }  
    1089   
    1090     UI.dialogs.addEvent.find(".start-date").focusout(function(data){   
    1091         UI.dialogs.addEvent.find(".end-date").val($(this).val());  
    1092     });  
     1038    dt = new Date(); 
     1039    dt.setHours(hh, mm); 
     1040    var startHours = dt.getHours(); 
     1041    add = parseInt(User.preferences.defaultDuration) + parseInt($("input.end-time").val().split(":")[1].substring(0,2)); 
     1042    dt.addMinutes(add); 
     1043     
     1044 
     1045    var minutes = dt.getMinutes().toString(); 
     1046    var hours = dt.getHours(); 
     1047UI.dialogs.addEvent.find("input.start-time").val(selectedDateTime.replace(".","").replace(".","")); 
     1048     
     1049     
     1050    if (time[1].indexOf("p.m.") != -1 ) { 
     1051        var startHours = startHours == 12 ? 12 : startHours; 
     1052        var startHours = startHours == 1 ? 13 : startHours; 
     1053        var startHours = startHours == 2 ? 14 : startHours; 
     1054        var startHours = startHours == 3 ? 15 : startHours; 
     1055        var startHours = startHours == 4 ? 16 : startHours; 
     1056        var startHours = startHours == 5 ? 17 : startHours; 
     1057        var startHours = startHours == 6 ? 18 : startHours; 
     1058        var startHours = startHours == 7 ? 19 : startHours; 
     1059        var startHours = startHours == 8 ? 20 : startHours; 
     1060        var startHours = startHours == 9 ? 21 : startHours; 
     1061        var startHours = startHours == 10 ? 22 : startHours; 
     1062        var startHours = startHours == 11 ? 23 : startHours; 
     1063    } else if (time[1].indexOf("a.m.") ) { 
     1064        var startHours = startHours == 12 ? 00 : startHours; 
     1065    } 
     1066 
     1067 
     1068    dtFormat = (time[1].indexOf("p.m.") != -1 || time[1].indexOf("a.m.") != -1) ? ((((User.preferences.defaultDuration / 60) + startHours) >= 12 && (startHours + (User.preferences.defaultDuration / 60)) < 24) ? " pm" : " am") : ""; 
     1069        
     1070    var newHours = ""; 
     1071    if(dtFormat){ 
     1072        hours = hours == 13 ? 01 : hours; 
     1073        hours = hours == 14 ? 02 : hours; 
     1074        hours = hours == 15 ? 03 : hours; 
     1075        hours = hours == 16 ? 04 : hours; 
     1076        hours = hours == 17 ? 05 : hours; 
     1077        hours = hours == 18 ? 06 : hours; 
     1078        hours = hours == 19 ? 07 : hours; 
     1079        hours = hours == 20 ? 08 : hours; 
     1080        hours = hours == 21 ? 09 : hours; 
     1081        hours = hours == 22 ? 10 : hours; 
     1082        hours = hours == 23 ? 11 : hours; 
     1083        hours = hours == 24 ? 12 : hours; 
     1084    } else { 
     1085        newHours = hours <= 9 ? "0" : ""; 
     1086    } 
     1087 
     1088    minutes = minutes.length == 1 ? "0"+minutes+dtFormat : minutes+dtFormat; 
     1089    newHours +=  hours.toString() + ":" +minutes; 
     1090    UI.dialogs.addEvent.find("input.end-time").val(newHours); 
     1091 
     1092} 
     1093 
     1094    UI.dialogs.addEvent.find(".start-date").focusout(function(data){  
     1095        UI.dialogs.addEvent.find(".end-date").val($(this).val()); 
     1096    }); 
    10931097 
    10941098    var oldTime = UI.dialogs.addEvent.find('input.start-time').val(); 
    1095     $(".start-time").focusout(function(data){  
    1096         if($("#calendar").fullCalendar('getView').name == "month" || buttonClicked) {  
    1097             setTime( $(this).val() );  
    1098         }  
    1099     });  
    1100    
    1101     UI.dialogs.addEvent.find('input.start-time').timepicker({  
    1102         ampm : ((User.preferences.hourFormat.length > 5) ? true: false),  
    1103         timeFormat: "hh:mm tt",  
    1104         onSelect: function( selectedDateTime ){  
    1105             if($("#calendar").fullCalendar('getView').name == "month" || buttonClicked) {  
    1106                 if ( selectedDateTime.indexOf("p.m.") == -1 || !selectedDateTime.indexOf("a.m.") == -1 ) {  
    1107                     var selectedTime = selectedDateTime.split(":");  
    1108                     var endTime = UI.dialogs.addEvent.find(".end-time").val();  
    1109                     endTime = endTime.split(":");  
    1110   
    1111                     var t1 = new Date(false,false,false,selectedTime[0],selectedTime[1],false);  
    1112                     var t2 = new Date(false,false,false,endTime[0],endTime[1],false);  
    1113   
    1114                     if (t1 < t2) return true;  
    1115                 }  
    1116   
    1117                 setTime( selectedDateTime );  
    1118             }  
    1119         },  
    1120         onClose : function (selectedDateTime){  
    1121             fixHour();  
    1122         }  
    1123   
    1124     });  
    1125   
    1126  
    1127   
     1099    $(".start-time").focusout(function(data){ 
     1100        if($("#calendar").fullCalendar('getView').name == "month" || buttonClicked) { 
     1101            setTime( $(this).val() ); 
     1102        } 
     1103    }); 
     1104 
     1105    UI.dialogs.addEvent.find('input.start-time').timepicker({ 
     1106        ampm : ((User.preferences.hourFormat.length > 5) ? true: false), 
     1107        timeFormat: "hh:mm tt", 
     1108        onSelect: function( selectedDateTime ){ 
     1109            if($("#calendar").fullCalendar('getView').name == "month" || buttonClicked) { 
     1110                if ( selectedDateTime.indexOf("p.m.") == -1 || !selectedDateTime.indexOf("a.m.") == -1 ) { 
     1111                    var selectedTime = selectedDateTime.split(":"); 
     1112                    var endTime = UI.dialogs.addEvent.find(".end-time").val(); 
     1113                    endTime = endTime.split(":"); 
     1114 
     1115                    var t1 = new Date(false,false,false,selectedTime[0],selectedTime[1],false); 
     1116                    var t2 = new Date(false,false,false,endTime[0],endTime[1],false); 
     1117 
     1118                    if (t1 < t2) return true; 
     1119                } 
     1120 
     1121                setTime( selectedDateTime ); 
     1122            } 
     1123        }, 
     1124        onClose : function (selectedDateTime){ 
     1125            fixHour(); 
     1126        } 
     1127 
     1128    }); 
     1129 
     1130 
     1131 
    11281132UI.dialogs.addEvent.find('input.end-time').timepicker({  
    11291133    closeText: 'Ok', 
     
    11381142                $(this).val(selectedDateTime.replace(/[\.]/gi, ""));                                                             
    11391143                updateMap(); 
    1140   
    1141         if ( selectedDateTime.indexOf("p.m.") == -1 || !selectedDateTime.indexOf("a.m.") == -1 ) {  
    1142             var startT = UI.dialogs.addEvent.find('input.start-time');  
    1143   
    1144             var lessZeroTime = function( sTime ) {  
    1145                 sTime = sTime.split(":");  
    1146                 sTime = new Date(false,false,false,sTime[0],sTime[1],false);  
    1147                 sTimeReady = parseInt(sTime.getHours() - (User.preferences.defaultDuration / 60));  
    1148   
    1149                 if( sTimeReady < 0 )  
    1150                     return false; // If the value is less than 0, return false.  
    1151                       
    1152                 return sTimeReady.toString().length == 1 ? "0"+sTimeReady+":00" : sTimeReady+":00";  
    1153             }  
    1154   
    1155             var hEnd = new Date(false,false,false,selectedDateTime.split(":")[0],selectedDateTime.split(":")[1],false);  
    1156             var hStart = new Date(false,false,false,startT.val().split(":")[0],startT.val().split(":")[1],false);  
    1157               
    1158             if ( hEnd <= hStart ){  
    1159                 var lessTime = lessZeroTime( selectedDateTime );  
    1160                 if ( !lessTime ){  
    1161                     startT.val( "00:00" );  
    1162                     return true;  
    1163                 }  
    1164                 startT.val( lessTime );  
    1165             }  
    1166         }  
     1144 
     1145        if ( selectedDateTime.indexOf("p.m.") == -1 || !selectedDateTime.indexOf("a.m.") == -1 ) { 
     1146            var startT = UI.dialogs.addEvent.find('input.start-time'); 
     1147 
     1148            var lessZeroTime = function( sTime ) { 
     1149                sTime = sTime.split(":"); 
     1150                sTime = new Date(false,false,false,sTime[0],sTime[1],false); 
     1151                sTimeReady = parseInt(sTime.getHours() - (User.preferences.defaultDuration / 60)); 
     1152 
     1153                if( sTimeReady < 0 ) 
     1154                    return false; // If the value is less than 0, return false. 
     1155                     
     1156                return sTimeReady.toString().length == 1 ? "0"+sTimeReady+":00" : sTimeReady+":00"; 
     1157            } 
     1158 
     1159            var hEnd = new Date(false,false,false,selectedDateTime.split(":")[0],selectedDateTime.split(":")[1],false); 
     1160            var hStart = new Date(false,false,false,startT.val().split(":")[0],startT.val().split(":")[1],false); 
     1161             
     1162            if ( hEnd <= hStart ){ 
     1163                var lessTime = lessZeroTime( selectedDateTime ); 
     1164                if ( !lessTime ){ 
     1165                    startT.val( "00:00" ); 
     1166                    return true; 
     1167                } 
     1168                startT.val( lessTime ); 
     1169            } 
     1170        } 
    11671171    }, 
    11681172    onClose : function (selectedDateTime){ 
    11691173        if(!(User.preferences.hourFormat.length == 5)) 
    11701174            $(this).val(selectedDateTime.replace(/[\.]/gi, "")); 
    1171     fixHour();  
     1175    fixHour(); 
    11721176    }, 
     1177 
    11731178    beforeShow: function (selectedDateTime) { 
    11741179                if ((selectedDateTime.value == '__:__') || (selectedDateTime.value == '__:__ __')) 
     
    12161221var attendeeHtml = DataLayer.render( path+'templates/attendee_add.ejs', { 
    12171222    event:objEvent 
    1218 }); 
     1223});              
    12191224         
    12201225// load template of attendees 
    12211226var blkAddAtendee = UI.dialogs.addEvent.find('#calendar_addevent_details6').append(attendeeHtml); 
    1222 if(objEvent.attendee.length) 
     1227if(objEvent.attendee.length)  
    12231228                callbackAttendee();  
    12241229/** 
     
    15981603            if ($(event.target).is('input')) { 
    15991604                old_item = $(event.target).parents('li'); 
    1600   
    1601         var  userId = old_item.find('.id').html();  
    1602   
    1603         if(userId == '')  
    1604         {  
    1605            var  userId = DataLayer.put('user', {  
    1606                 name: old_item.find('.name').html(),  
    1607                 mail: old_item.find('.mail').html(),  
    1608                 isExternal: '1'  
    1609             });  
    1610         }  
    1611   
     1605 
     1606        var  userId = old_item.find('.id').html(); 
     1607 
     1608        if(userId == '') 
     1609        { 
     1610           var  userId = DataLayer.put('user', { 
     1611                name: old_item.find('.name').html(), 
     1612                mail: old_item.find('.mail').html(), 
     1613                isExternal: '1' 
     1614            }); 
     1615        } 
     1616 
    16121617                newAttendeeId = DataLayer.put('participant', { 
    16131618                    user: userId, 
     
    17681773        DataLayer.render( 'templates/preferences_calendar.ejs', { 
    17691774            preferences:User.preferences,  
    1770             calendars: Calendar.calendars,  
    1771         signatureOf : Calendar.signatureOf  
     1775            calendars: Calendar.calendars, 
     1776        signatureOf : Calendar.signatureOf 
    17721777            }, function( template ){ 
    17731778            var tabPrefCalendar = jQuery('#preference_tab').html( template ).find('.preferences-win'); 
    17741779                 
    1775             tabPrefCalendar.find('select[name="defaultCalendar"] option[value="'+User.preferences.defaultCalendar+'"]').attr('selected','selected').trigger('change');  
     1780            tabPrefCalendar.find('select[name="defaultCalendar"] option[value="'+User.preferences.defaultCalendar+'"]').attr('selected','selected').trigger('change');  
    17761781        tabPrefCalendar.find('select[name="dafaultImportCalendar"] option[value="'+User.preferences.dafaultImportCalendar+'"]').attr('selected','selected').trigger('change');  
    1777   
    1778         DataLayer.render( 'templates/timezone_list.ejs', {}, function( timezones_options ){  
    1779  
     1782 
     1783            DataLayer.render( 'templates/timezone_list.ejs', {}, function( timezones_options ){ 
    17801784                tabPrefCalendar.find('select[name="timezone"]').html(timezones_options).find('option[value="'+User.preferences.timezone+'"]').attr('selected','selected').trigger('change'); 
    17811785            }); 
     
    21032107 
    21042108function getSelectedCalendars( reverse, type ){ 
    2105     var selector = !!type ? "div.my-groups-task .calendar-view" : "div.my-calendars .calendar-view, div.signed-calendars .calendar-view";  
    2106     var returns = [];  
    2107   
    2108     $.each( $(selector), function(i , c){  
    2109   
    2110         if( reverse ? !c.checked : c.checked )  
    2111             returns.push( c.value );  
    2112   
     2109 
     2110    var selector = ""; 
     2111 
     2112    switch(type) 
     2113    { 
     2114        case 0: 
     2115            selector = "div.my-calendars .calendar-view, div.signed-calendars .calendar-view"; 
     2116            break; 
     2117        case 1: 
     2118            selector = "div.my-groups-task .calendar-view"; 
     2119            break; 
     2120        case 2: 
     2121            selector = ".calendar-view"; 
     2122            break; 
     2123    } 
     2124 
     2125//  var selector = !!type ? "div.my-groups-task .calendar-view" : "div.my-calendars .calendar-view, div.signed-calendars .calendar-view"; 
     2126    var returns = []; 
     2127 
     2128    $.each( $(selector), function(i , c){ 
     2129 
     2130        if( reverse ? !c.checked : c.checked ) 
     2131            returns.push( c.value ); 
     2132 
    21132133    }); 
    2114   
    2115     if (!returns.length)  
    2116             return false;  
    2117   
    2118     return returns;  
     2134 
     2135    if (!returns.length) 
     2136            return false; 
     2137 
     2138    return returns; 
    21192139} 
    21202140 
     
    21732193                var schudableDecode = DataLayer.encode( "schedulable:preview", schedulable); 
    21742194                var me = schudableDecode.me.user ? schudableDecode.me.user.id : schudableDecode.me.id; 
    2175  
    2176         var filter = {filter: ['AND', ['=','id',eventId], ['=','calendar',idCalendar], ['=','user', me]]}; 
    2177  
     2195        var filter = {filter: ['AND', ['=','id',eventId], ['=','calendar',idCalendar], ['=','user', me] ] }; 
    21782196        if(type) 
    21792197            filter.filter.push(['=','type',type]); 
    2180  
    21812198                DataLayer.removeFilter('schedulable', filter); 
    21822199                Calendar.rerenderView(true); 
     
    23062323                 
    23072324        }); 
    2308   
    2309      $('ul.list-calendars .cal-list-options-btn').on('click',function(){doMenu();});          
     2325 
     2326     $('ul.list-calendars .cal-list-options-btn').on('click',function(){doMenu();}); 
    23102327         
    23112328 
     
    24792496        show_modal_search_shared(); 
    24802497    }); 
    2481          
    2482          
     2498                 
     2499 
    24832500    meu_container.find('.title-signed-calendars').click(function(evt){ 
    24842501        var status = $(this).parent().find('.status-list-shared'); 
     
    24912508                 
    24922509    $('.calendar-view').click(function(evt){ 
    2493   
    2494         var checkBox = $(this);  
    2495         var calendarId = $(this).val();  
    2496   
    2497         Calendar.signatureOf[ calendarId ].hidden =  (checkBox.is(':checked') ? 0 : 1 );  
    2498   
    2499         DataLayer.put('calendarSignature', {id: Calendar.signatureOf[ calendarId ].id , hidden: Calendar.signatureOf[ calendarId ].hidden }  );  
    2500         DataLayer.commit();  
    2501   
    2502   
    2503          if($tabs.tabs('option' ,'selected') == 0){  
    2504   
    2505              if(Calendar.currentView && !!Calendar.currentView[ calendarId ]){  
    2506   
    2507                  Calendar.currentView[ calendarId ].hidden = !checkBox.is(':checked');  
    2508                  $('#calendar').fullCalendar( 'refetchEvents' );  
    2509              }  
    2510   
    2511          }else{  
    2512              type = $tabs.tabs('option' ,'selected');  
    2513              type = type > 2 ? 2 : (type - 1)  
    2514   
    2515              pageselectCallback('', 0, false, type);  
    2516          }  
     2510 
     2511        var checkBox = $(this); 
     2512        var calendarId = $(this).val(); 
     2513 
     2514        Calendar.signatureOf[ calendarId ].hidden =  (checkBox.is(':checked') ? 0 : 1 ); 
     2515 
     2516        DataLayer.put('calendarSignature', {id: Calendar.signatureOf[ calendarId ].id , hidden: Calendar.signatureOf[ calendarId ].hidden }  ); 
     2517        DataLayer.commit(); 
     2518 
     2519 
     2520         if($tabs.tabs('option' ,'selected') == 0){ 
     2521 
     2522             if(Calendar.currentView && !!Calendar.currentView[ calendarId ]){ 
     2523 
     2524                 Calendar.currentView[ calendarId ].hidden = !checkBox.is(':checked'); 
     2525                 $('#calendar').fullCalendar( 'refetchEvents' ); 
     2526             } 
     2527 
     2528         }else{ 
     2529             type = $tabs.tabs('option' ,'selected'); 
     2530             type = type > 2 ? 2 : (type - 1) 
     2531 
     2532             pageselectCallback('', 0, false, type); 
     2533         } 
    25172534    }); 
    25182535}); 
     
    26242641            $(this).addClass('fc-state-hover'); 
    26252642        }, 
    2626   
     2643 
    26272644        function(){ 
    26282645            $(this).removeClass('fc-state-hover'); 
     
    26582675        else 
    26592676            pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($(currentView+' [name = page_index]').val())) -1), view, type); 
    2660     });  
    2661     if (currentView == "#tab_events_list_" || currentView == "#tab_tasks_list_")  
    2662         $(currentView+' .events-list.events-list-win.active .header-paginator .fc-header-left').find('span.fc-button-agendaWeek, span.fc-button-agendaDay').remove();  
     2677    }); 
     2678    if (currentView == "#tab_events_list_" || currentView == "#tab_tasks_list_") 
     2679        $(currentView+' .events-list.events-list-win.active .header-paginator .fc-header-left').find('span.fc-button-agendaWeek, span.fc-button-agendaDay').remove(); 
    26632680} 
    26642681 
     
    27252742        case 'agendaWeek': 
    27262743            var dateStart = new Date().moveToDayOfWeek(dateCalendar.dayOfWeek[User.preferences.weekStart]);  
    2727             var dateEnd = new Date().moveToDayOfWeek(dateCalendar.dayOfWeek[User.preferences.weekStart]);  
    2728             dateEnd.setHours(0,0,0);  
    2729             dateStart.setHours(0,0,0);   
     2744            var dateEnd = new Date().moveToDayOfWeek(dateCalendar.dayOfWeek[User.preferences.weekStart]); 
     2745            dateEnd.setHours(0,0,0); 
     2746            dateStart.setHours(0,0,0); 
    27302747            rangeStart = dateStart.add({ days: (7 * page_index) }).getTime(); 
    27312748            rangeEnd = dateEnd.add({ days: (7 * page_index)+7 }).getTime(); 
     
    27392756            var dateStart = new Date().add({ years: page_index }); 
    27402757            var dateEnd = new Date().add({ years: page_index }); 
    2741             dateEnd.setHours(0,0,0);  
    2742             dateStart.setHours(0,0,0);  
     2758            dateEnd.setHours(0,0,0); 
     2759            dateStart.setHours(0,0,0); 
    27432760            if(dateStart.getMonth() != 0) 
    27442761                    dateStart.moveToMonth(0, -1) 
     
    28042821            }; 
    28052822        } 
    2806           
     2823         
    28072824        var results = DataLayer.encode('schedulable:list', DataLayer.dispatch('modules/calendar/schedules', criteria)); 
    2808         //var results = DataLayer.get('schedulable:detail', criteria); 
     2825        //var results = DataLayer.get('schedulable:detail', criteria); 
    28092826        keyword = ( keyword || '' ).replace( /\s+/g, "_" ); 
    28102827        } 
     
    28582875                                var eventId = $(this).siblings('[name="eventid"]').val(); 
    28592876                                var calendarId = $(this).siblings('[name="calendarid"]').val(); 
    2860                                 remove_event(eventId, calendarId, 2); 
     2877                                remove_event(eventId, calendarId, ( $(this).siblings('[name="eventtype"]').val() )); 
    28612878                                event.stopImmediatePropagation() 
    28622879                        }) 
     
    31313148        delete schedulable['historic']; 
    31323149 
    3133         schedulable.participants =  $.map( participants, function( attendee, i ){  
    3134   
    3135             var participant = DataLayer.get('participant', attendee, false);  
    3136   
    3137             if(typeof(participant) == 'array')  
    3138                 participant = participant[0];  
    3139   
    3140             if(owner.id != participant.user)  
    3141                 delete participant.status;  
    3142   
    3143             delete participant.delegatedFrom;  
    3144             delete participant.id;  
    3145             delete participant.schedulable;  
    3146   
    3147             participant.id = DataLayer.put('participant', participant);  
    3148   
    3149             return  (parseInt(type) == 3) ? participant.id : participant ;  
    3150         });  
    3151   
     3150        schedulable.participants =  $.map( participants, function( attendee, i ){ 
     3151 
     3152            var participant = DataLayer.get('participant', attendee, false); 
     3153 
     3154            if(typeof(participant) == 'array') 
     3155                participant = participant[0]; 
     3156 
     3157            if(owner.id != participant.user) 
     3158                delete participant.status; 
     3159 
     3160            delete participant.delegatedFrom; 
     3161            delete participant.id; 
     3162            delete participant.schedulable; 
     3163 
     3164            participant.id = DataLayer.put('participant', participant); 
     3165 
     3166            return  (parseInt(type) == 3) ? participant.id : participant ; 
     3167        }); 
     3168 
    31523169        //Edit ocurrence 
    31533170        if(parseInt(type) == 3){ 
  • branches/2.5/prototype/modules/calendar/js/init.js

    r8054 r8232  
    317317                axisFormat: User.preferences.hourFormat, 
    318318                eventSources: Calendar.sources, 
    319  
     319                 
    320320                header: { 
    321321                        left: 'prev,next today,agendaWeek,' + ((User.preferences.defaultCalView == "basicDay") ? "basicDay" : "agendaDay"), 
     
    353353                }, 
    354354 
    355  
    356355        eventRender: function( event, element, view ){ 
    357356                    $('#calendar td.fc-year-have-event').removeClass('fc-year-have-event'); 
    358357 
    359358                        var img_icon = ""; 
    360   
    361             if( !!parseInt(event.unanswered)  ){  
    362   
    363                 img_icon = "mini-attention.png";  
    364   
    365             }else{  
    366   
    367                         if(event.type == 1) 
    368                                 img_icon = "mini-event.png"; 
    369                         if(event.type == 2) 
    370                                 img_icon = "mini-task.png"; 
    371                         if(event.type == 3) 
    372                                 img_icon = "mini-activity.png"; 
    373  
    374         } 
    375                  
    376             element.find(".fc-event-inner.fc-event-skin").prepend($('<img style="width: 11px; height: 13px;" class="" src="../prototype/modules/calendar/img/' + img_icon + '"></img>')); 
     359                        var status_ball = ""; //nome da imagem a ser inserida 
     360                        var status_img = ""; 
     361 
     362            if( !!parseInt(event.unanswered) && event.type == 1 ){ 
     363 
     364                img_icon = "mini-attention.png"; 
     365 
     366            }else{ 
     367 
     368                if(event.type == 1) 
     369                    img_icon = "mini-event.png"; 
     370                if(event.type == 2) 
     371                    img_icon = "mini-task.png"; 
     372                if(event.type == 3) 
     373                    img_icon = "mini-activity.png"; 
     374 
     375                //se for diferente de evento(type 1). 
     376                if(event.type != 1){ 
     377                    if(event.status == "1"){ 
     378                        status_ball = "gray.png"; 
     379                    }else if(event.status == "2"){ 
     380                        status_ball = "yellow.png"; 
     381                    }else if(event.status == "3"){ 
     382                        status_ball = "green.png"; 
     383                    }else if(event.status == "4"){ 
     384                        status_ball = "red.png"; 
     385                    } 
     386 
     387                    status_img = '<img style="width: 8px; height: 8px; margin-bottom: 2px;" src="../prototype/modules/calendar/img/' + status_ball + '"></img>'; 
     388                } 
     389 
     390            } 
     391 
     392 
     393                        //html que exibe a imagem do type e do status 
     394            element.find(".fc-event-inner.fc-event-skin").prepend($('<img style="width: 11px; height: 13px;" class="" src="../prototype/modules/calendar/img/' + img_icon + '"></img>' + status_img)); 
    377395                }, 
    378396 
     
    477495                                'type':     'question', 
    478496                                'overlay_opacity': '0.5', 
    479                                 'custom_class':  'occurrence-zebra',  
     497                                'custom_class':  'occurrence-zebra', 
    480498                                'width': 427, 
    481499                                'buttons':  ['Editar todas ocorrências', 'Editar essa ocorrência', 'Cancelar'], 
    482500                                'onClose':  function(clicked) { 
    483501                                    if(clicked == 'Editar todas ocorrências') { 
    484                                         var schedule = getSchedulable(evt.id, '');  
    485                                         schedule.calendar = evt.calendar;  
    486                                         eventDetails( schedule , true);  
     502                                        var schedule = getSchedulable(evt.id, ''); 
     503                                        schedule.calendar = evt.calendar; 
     504                                        eventDetails( schedule , true); 
    487505 
    488506                                    }else if (clicked == 'Editar essa ocorrência'){ 
     
    493511                                        */       
    494512                                        var repeat = mount_exception(evt.id, evt.occurrence); 
    495                                                                                            
     513 
    496514                                        $('.calendar-copy-move input[name="typeEvent"]').val("3"); 
    497515                                         
     
    513531                    break; 
    514532                case 3: 
     533                                        DataLayer.remove('taskToActivity', false);//Limpa o cache 
    515534                    var activity = getSchedulable(evt.id, ''); 
    516535                    activity.group = evt.calendar; 
     
    565584 
    566585    if( $.browser.msie ){ 
    567  
    568         $('#divAppbox').css('width', $(window).width()); 
     586        //$('#divAppbox').css('width', $(window).width()); 
     587        $('#divAppbox').css({'height':'600px','max-width':'100%'}); 
    569588    } 
    570589 
  • branches/2.5/prototype/modules/calendar/schedules.php

    r8049 r8232  
    1818class Schedule{ 
    1919 
    20     function findEventsRange( $start, $end, $calendars, $timezones ){ 
     20    function findEventsRange( $start, $end, $calendars, $timezones  ){ 
    2121 
    2222        $sql = 
     
    3131                .'calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", ' 
    3232                .'calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence", ' 
     33 
    3334                .'count(calendar_task_to_activity_object.id) as "tasks", ' 
     35 
    3436                .'calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as ' 
    3537                .'calendar FROM calendar_object left join calendar_task_to_activity_object on ( calendar_object.id = calendar_task_to_activity_object.calendar_object_activity_id  ), calendar_to_calendar_object ' 
     38 
    3639                .'WHERE ( calendar_to_calendar_object.calendar_id IN (\'' . implode('\',\'', $calendars) . '\')) ' 
    3740                .'AND calendar_to_calendar_object.calendar_object_id = calendar_object.id ' 
     
    5457                .'AND calendar_object.dtstart NOT IN (SELECT calendar_repeat_occurrence.occurrence from calendar_repeat_occurrence, ' 
    5558                .'calendar_repeat where (calendar_repeat_occurrence.repeat_id = calendar_repeat.id) ' 
    56                 .'AND (calendar_repeat.object_id = calendar_object.id)) '  
    57                 .'group by  
    58                     calendar_object.id, calendar_object.cal_uid, calendar_object.type_id,  
    59                     calendar_object.dtstart, calendar_object.summary, calendar_object.description,  
    60                     calendar_object.dtend, calendar_object.priority, calendar_object.due, calendar_object.percentage,  
    61                     calendar_object.status, calendar_object.location, calendar_object.allday, calendar_object.transp,  
    62                     calendar_object.class_id, calendar_object.repeat, calendar_object.range_start, calendar_object.range_end,  
    63                     calendar_object.last_update, calendar_object.dtstamp, calendar_object.sequence,  
    64                     calendar_object.tzid, calendar_to_calendar_object.calendar_id  
    65                 ORDER BY  
    66                     calendar_object.dtstart';  
     59                .'AND (calendar_repeat.object_id = calendar_object.id)) ' 
     60                .'group by 
     61                    calendar_object.id, calendar_object.cal_uid, calendar_object.type_id, 
     62                    calendar_object.dtstart, calendar_object.summary, calendar_object.description, 
     63                    calendar_object.dtend, calendar_object.priority, calendar_object.due, calendar_object.percentage, 
     64                    calendar_object.status, calendar_object.location, calendar_object.allday, calendar_object.transp, 
     65                    calendar_object.class_id, calendar_object.repeat, calendar_object.range_start, calendar_object.range_end, 
     66                    calendar_object.last_update, calendar_object.dtstamp, calendar_object.sequence, 
     67                    calendar_object.tzid, calendar_to_calendar_object.calendar_id 
     68                ORDER BY 
     69                    calendar_object.dtstart'; 
    6770 
    6871        $params = Controller::service('PostgreSQL')->execResultSql($sql.$where); 
     
    8487            .'calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", ' 
    8588            .'calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence", ' 
     89 
    8690            .'count(calendar_task_to_activity_object.id) as "tasks", ' 
     91 
    8792            .'calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as ' 
    8893            .'calendar FROM calendar_object left join calendar_task_to_activity_object on ( calendar_object.id = calendar_task_to_activity_object.calendar_object_activity_id  ), calendar_to_calendar_object ' 
     
    9297 
    9398 
    94             $where = 'AND (((upper("summary") like upper(\'%'.$summary.'%\') OR upper("description") like upper(\'%'.$description.'%\'))))  
    95                 group by  
    96                     calendar_object.id, calendar_object.cal_uid, calendar_object.type_id,  
    97                     calendar_object.dtstart, calendar_object.summary, calendar_object.description,  
    98                     calendar_object.dtend, calendar_object.priority, calendar_object.due, calendar_object.percentage,  
    99                     calendar_object.status, calendar_object.location, calendar_object.allday, calendar_object.transp,  
    100                     calendar_object.class_id, calendar_object.repeat, calendar_object.range_start, calendar_object.range_end,  
    101                     calendar_object.last_update, calendar_object.dtstamp, calendar_object.sequence,  
    102                     calendar_object.tzid, calendar_to_calendar_object.calendar_id  
    103                 ORDER BY  
    104                     dtstart LIMIT '.$limit.'  OFFSET '.$offset.' ';  
    105   
     99            $where = 'AND (((upper("summary") like upper(\'%'.$summary.'%\') OR upper("description") like upper(\'%'.$description.'%\')))) 
     100                group by 
     101                    calendar_object.id, calendar_object.cal_uid, calendar_object.type_id, 
     102                    calendar_object.dtstart, calendar_object.summary, calendar_object.description, 
     103                    calendar_object.dtend, calendar_object.priority, calendar_object.due, calendar_object.percentage, 
     104                    calendar_object.status, calendar_object.location, calendar_object.allday, calendar_object.transp, 
     105                    calendar_object.class_id, calendar_object.repeat, calendar_object.range_start, calendar_object.range_end, 
     106                    calendar_object.last_update, calendar_object.dtstamp, calendar_object.sequence, 
     107                    calendar_object.tzid, calendar_to_calendar_object.calendar_id 
     108                ORDER BY 
     109                    dtstart LIMIT '.$limit.'  OFFSET '.$offset.' '; 
     110 
    106111            $params = Controller::service('PostgreSQL')->execResultSql($sql.$where); 
    107112 
    108  
    109  
    110113        return $this->normalizeEvents( $params, $timezones ); 
    111114    } 
     
    113116    function normalizeEvents( &$result, $timezones ){ 
    114117 
    115         $mySig = Controller::find(array('concept' => 'calendarSignature') , array('calendar') , array('filter' => array( 'AND' , array('=' , 'type' , '0' ) , array( '=' , 'user' ,Config::me('uidNumber') ) , array('=' , 'isOwner' , '0' ))));  
    116   
    117         $signedCalendars = array();  
    118         if(is_array($mySig))  
    119             foreach($mySig as $v)  
    120             {  
    121                 $tmp = Controller::find(array('concept' => 'calendarToPermission') , array('acl' ,'owner') , array('filter' => array( 'AND' ,array( '=' , 'calendar' , $v['calendar'] ) , array( '=' , 'user' , Config::me('uidNumber')  ) )));  
    122                 $signedCalendars[$v['calendar']] = $tmp[0];  
    123             }  
    124   
     118        $mySig = Controller::find(array('concept' => 'calendarSignature') , array('calendar') , array('filter' => array( 'AND' , array('=' , 'type' , '0' ) , array( '=' , 'user' ,Config::me('uidNumber') ) , array('=' , 'isOwner' , '0' )))); 
     119 
     120        $signedCalendars = array(); 
     121        if(is_array($mySig)) 
     122            foreach($mySig as $v) 
     123            { 
     124                $tmp = Controller::find(array('concept' => 'calendarToPermission') , array('acl' ,'owner') , array('filter' => array( 'AND' ,array( '=' , 'calendar' , $v['calendar'] ) , array( '=' , 'user' , Config::me('uidNumber')  ) ))); 
     125                $signedCalendars[$v['calendar']] = $tmp[0]; 
     126            } 
     127 
    125128        $date = new DateTime('now', new DateTimeZone('UTC')); 
    126129        $DayLigth = array(); 
     
    156159            if(isset( $v['occurrences'] ) && count( $v['occurrences'] ) > 0){ 
    157160 
    158                 $date->setTimestamp((int) ($v['startTime'] / 1000));  
    159                 $date->setTimezone( new DateTimeZone( $currentTimezone ));  
    160   
     161                $date->setTimestamp((int) ($v['startTime'] / 1000)); 
     162                $date->setTimezone( new DateTimeZone( $currentTimezone )); 
     163 
    161164                foreach( $result[$i]['occurrences'] as &$o){ 
    162165 
    163                     $o = ((int) ($o / 1000) + $date->getOffset()).'000';  
     166                    $o = ((int) ($o / 1000) + $date->getOffset()).'000'; 
    164167 
    165168                } 
    166169            } 
    167170 
    168             $attend = (isset($signedCalendars[$result[$i]['calendar']])) ?  
    169                 Controller::read(array('concept' => 'participant'), null, array('filter' => array('AND', array('=','schedulable',$v['id']), array('=','user', $signedCalendars[$result[$i]['calendar']]['owner'] )  ))):  
    170                 Controller::read(array('concept' => 'participant'), null, array('filter' => array('AND', array('=','schedulable',$v['id']), array('=','user', Config::me('uidNumber'))  )));  
    171   
    172                 $result[$i]['unanswered'] = 0;  
    173   
     171            $attend = (isset($signedCalendars[$result[$i]['calendar']])) ? 
     172                Controller::read(array('concept' => 'participant'), null, array('filter' => array('AND', array('=','schedulable',$v['id']), array('=','user', $signedCalendars[$result[$i]['calendar']]['owner'] )  ))): 
     173                Controller::read(array('concept' => 'participant'), null, array('filter' => array('AND', array('=','schedulable',$v['id']), array('=','user', Config::me('uidNumber'))  ))); 
     174 
     175                $result[$i]['unanswered'] = 0; 
     176 
    174177            if(count($attend) > 0 && !empty($attend)){ 
    175                if(array_key_exists(0, $attend))  
    176                   $attend = $attend[0];  
    177   
    178                 if(isset($signedCalendars[$result[$i]['calendar']])) //Caso agenda compartilhada verificar tmb se tem compartilhamento de escrita  
    179                     $result[$i]['editable'] = (strpos($signedCalendars[$result[$i]['calendar']]['acl'],"w") >=0  &&  (strstr($attend['acl'],"w") || strstr($attend['acl'],"o") || $attend['isOrganizer'] == '1') ) ? 1 : 0;  
    180                 else  
    181                    $result[$i]['editable'] = (strstr($attend['acl'],"w") || strstr($attend['acl'],"o") || $attend['isOrganizer'] == '1') ? 1 : 0;  
    182   
    183                 if($attend['status'] == STATUS_UNANSWERED && !isset($signedCalendars[$result[$i]['calendar']]) )  
    184                    $result[$i]['unanswered'] = 1;  
     178               if(array_key_exists(0, $attend)) 
     179                  $attend = $attend[0]; 
     180 
     181                if(isset($signedCalendars[$result[$i]['calendar']])) //Caso agenda compartilhada verificar tmb se tem compartilhamento de escrita 
     182                    $result[$i]['editable'] = (strpos($signedCalendars[$result[$i]['calendar']]['acl'],"w") >=0  &&  (strstr($attend['acl'],"w") || strstr($attend['acl'],"o") || $attend['isOrganizer'] == '1') ) ? 1 : 0; 
     183                else 
     184                   $result[$i]['editable'] = (strstr($attend['acl'],"w") || strstr($attend['acl'],"o") || $attend['isOrganizer'] == '1') ? 1 : 0; 
     185 
     186                if($attend['status'] == STATUS_UNANSWERED && !isset($signedCalendars[$result[$i]['calendar']]) ) 
     187                   $result[$i]['unanswered'] = 1; 
    185188 
    186189            }else{ 
  • branches/2.5/prototype/modules/calendar/templates/attendee_add.ejs

    r7982 r8232  
    1111                                                <option value="3" <%= data.event.status=='3' ? 'selected="selected"':'' %>>Eu não vou</option> 
    1212                                                <option value="2" <%= data.event.status=='2' ? 'selected="selected"':'' %>>Talvez</option> 
    13                         <option value="4" <%= data.event.status=='4' ? 'selected="selected"':'' %>>Sem resposta </option>  
    14                                             <option class="hidden" value="5" >Delegado</option>  
     13                        <option value="4" <%= data.event.status=='4' ? 'selected="selected"':'' %>>Sem resposta </option> 
     14                                            <option class="hidden" value="5" >Delegado</option> 
    1515                                        <%}%> 
    1616                                <%}else{%> 
  • branches/2.5/prototype/modules/calendar/templates/event_add.ejs

    r8050 r8232  
    7878                                continue; 
    7979                        %> 
    80                             <% if( data.event.isShared ){ %>  
    81                     <% if(data.event.calendars[i].id == data.event.calendar){ %>  
    82                         <option value="<%= data.event.calendars[i].id %>"><%= data.event.calendars[i].name %></option>  
    83                     <%}%>  
    84   
    85                 <% }else { %>  
    86   
    87                 <option value="<%= data.event.calendars[i].id %>" <%= data.event.calendars[i].id == data.event.calendar ? 'selected="selected"':'' %>><%= data.event.calendars[i].name %></option>  
    88                 <% } %>  
    89   
    90   
     80                            <% if( data.event.isShared ){ %> 
     81                    <% if(data.event.calendars[i].id == data.event.calendar){ %> 
     82                        <option value="<%= data.event.calendars[i].id %>"><%= data.event.calendars[i].name %></option> 
     83                    <%}%> 
     84 
     85                <% }else { %> 
     86 
     87                <option value="<%= data.event.calendars[i].id %>" <%= data.event.calendars[i].id == data.event.calendar ? 'selected="selected"':'' %>><%= data.event.calendars[i].name %></option> 
     88                <% } %> 
     89 
     90 
    9191                        <% } %> 
    9292                        </select> 
    93                                 <span class="creation-date-label">Evento criado em <%= data.event.creationDate[0] %> às  
    94                                         <%= data.event.creationDate[1] %> horas e <%= data.event.creationDate[2] %> minutos.  
    95                                 </span>  
    96                 </p>  
    97   
    98   
     93                                <span class="creation-date-label">Evento criado em <%= data.event.creationDate[0] %> às 
     94                                        <%= data.event.creationDate[1] %> horas e <%= data.event.creationDate[2] %> minutos. 
     95                                </span> 
     96                </p> 
     97 
     98 
    9999                <fieldset class="hidden"> 
    100100                        <legend class="hidden">Publicidade</legend> 
  • branches/2.5/prototype/modules/calendar/templates/event_repeat.ejs

    r7978 r8232  
    3232                <label for="repeatweekly[]">Domingo</label> 
    3333 
    34                 <input type="checkbox" name="repeatweekly[]" value="MO"  <%= ((data.event.acl.write || data.event.acl.organization) && data.event.isAttendee) ? '' : 'disabled="disabled"'%>> 
     34                <input type="checkbox" name="repeatweekly[]" value="MO" <%= ((data.event.acl.write || data.event.acl.organization) && data.event.isAttendee) ? '' : 'disabled="disabled"'%>> 
    3535                <label for="repeatweekly[]">Segunda</label> 
    3636 
    37                 <input type="checkbox" name="repeatweekly[]" value="TU"  <%= ((data.event.acl.write || data.event.acl.organization) && data.event.isAttendee) ? '' : 'disabled="disabled"'%>> 
     37                <input type="checkbox" name="repeatweekly[]" value="TU" <%= ((data.event.acl.write || data.event.acl.organization) && data.event.isAttendee) ? '' : 'disabled="disabled"'%>> 
    3838                <label for="repeatweekly[]">Terça</label> 
    3939 
  • branches/2.5/prototype/modules/calendar/templates/preferences_calendar.ejs

    r8021 r8232  
    3636                                <label for="defaultCalView">Visualização padrão do calendário:</label> 
    3737                                <select name="defaultCalView" > 
    38                                         <option value="agendaDay" <%= data.preferences.defaultCalView =='agendaDay' ? 'selected="selected"':'' %>>Diária com horário</option>  
    39                                         <option value="basicDay" <%= data.preferences.defaultCalView =='basicDay' ? 'selected="selected"':'' %>>Diária sem horário</option>  
     38                                        <option value="agendaDay" <%= data.preferences.defaultCalView =='agendaDay' ? 'selected="selected"':'' %>>Diária com horário</option> 
     39                                        <option value="basicDay" <%= data.preferences.defaultCalView =='basicDay' ? 'selected="selected"':'' %>>Diária sem horário</option> 
    4040                                        <option value="agendaWeek" <%= data.preferences.defaultCalView =='agendaWeek' ? 'selected="selected"':'' %>>Semanal</option> 
    4141                                        <option value="month" <%= data.preferences.defaultCalView =='month' ? 'selected="selected"':'' %>>Mensal</option> 
     
    7272 
    7373                        <p class="input-group">  
    74                 <label for="defaultCalendar">Agenda padrão para Criação de Eventos:</label>  
     74                <label for="defaultCalendar">Agenda padrão para Criação de Eventos:</label> 
    7575                <select name="defaultCalendar" >  
    7676                    <%for(var i = 0; i < data.calendars.length; i++){%>  
     
    7979                </select> 
    8080                        </p> 
    81   
    82             <p class="input-group">  
    83                 <label for="dafaultImportCalendar">Agenda padrão para Importação de Eventos :</label>  
    84                 <select name="dafaultImportCalendar" >  
    85                     <option value=""> </option>  
    86                     <%for(var i = 0; i < data.calendars.length; i++){  
    87                      if(data.signatureOf[data.calendars[i].id].isOwner == '1'){  
    88                     %>  
    89                     <option value="<%=data.calendars[i].id%>"> <%= data.calendars[i].name %></option>  
    90                     <%}}%>  
    91                 </select>  
    92             </p>  
     81 
     82            <p class="input-group"> 
     83                <label for="dafaultImportCalendar">Agenda padrão para Importação de Eventos :</label> 
     84                <select name="dafaultImportCalendar" > 
     85                    <option value=""> </option> 
     86                    <%for(var i = 0; i < data.calendars.length; i++){ 
     87                     if(data.signatureOf[data.calendars[i].id].isOwner == '1'){ 
     88                    %> 
     89                    <option value="<%=data.calendars[i].id%>"> <%= data.calendars[i].name %></option> 
     90                    <%}}%> 
     91                </select> 
     92            </p> 
    9393 
    9494                        <p class="input-group"> 
  • branches/2.5/prototype/modules/calendar/templates/shared_calendar.ejs

    r7019 r8232  
    77                                <dd class="calendar"> 
    88                                        <select class="calendar" name="calendar"> 
    9                                                         <%                                                       
    10                                                         for(var i = 0; i < data.calendar.length; i++){ 
    11                                                                 if(data.signature[i].permission){ 
    12                                                                         if(data.signature[i].permission.acl.shared == false) 
    13                                                                                 continue; 
    14                                                                 } 
    15                                                         %> 
    16                                                                 <option value="<%=data.calendar[i].id%>"><%=data.calendar[i].name%></option> 
     9                        <% 
     10                        for(var i = 0; i < data.calendar.length; i++) 
     11                        { 
     12                            for(var ii = 0; ii < data.signature.length; ii++) 
     13                            { 
     14                                if(data.signature[ii].calendar.id === data.calendar[i].id && data.signature[ii].permission) 
     15                                { 
     16                                    if(data.signature[ii].permission.acl.shared == false) 
     17                                        continue; 
     18                                } 
     19                            } 
     20                        %> 
     21                                                <option value="<%=data.calendar[i].id%>"><%=data.calendar[i].name%></option> 
    1722                                                                         
    1823                                                        <%  
     
    2429                        <dd class="<%=data.calendar ? "user-list" : "calendar-list"%>"> 
    2530                                <ul class="user-list"> 
    26                                 <% if (false) { 
    27                                         for (var i=0; i< data.event.user.length; i++) {%> 
    28                                                 <li class="user">  
    29                                                         <div style="overflow:hidden; width:100%; display:table;"> 
    30                                                                 <input type="checkbox" value=""> 
    31                                                                 <input type="hidden" name="user[]" value=""> 
    32                                                                 <label class="name"></label> 
    33                                                                 <label class="mail"></label> 
    34                                                         </div>  
    35                                                         <div class="shared-acl"> 
    36                                                                         <a class="button edit user-options-button-edit new">Editar permissões</a> 
    37                                                                         <a class="button close new">Remover</a> 
    38                                                         </div> 
    39                                                 </li>    
    40                                         <%}  
    41                                 } else { %> 
    4231                                        <li class="not-user"><%=data.calendar ? "Não compartilhado." : "Nenhuma agenda selecionada"%></li> 
    43                                 <% } %> 
    4432                                </ul> 
    4533                        </dd>    
  • branches/2.5/prototype/modules/filters/edit-filter.ejs

    r7703 r8232  
    2828 
    2929                                </select> 
    30                                 <input type="text" name="criteriaValue[]" /> 
     30                                <input type="text" name="criteriaValue[]" value="<%= data.from %>" /> 
    3131                                <input type="hidden" name="criteriaType[]" value="from"/> 
    3232                        </fieldset> 
     
    5353 
    5454                                </select> 
    55                                 <input type="text" name="criteriaValue[]" /> 
     55                                <input type="text" name="criteriaValue[]" value="<%= data.subject %>" /> 
    5656                                <input type="hidden" name="criteriaType[]" value="subject"/> 
    5757                        </fieldset> 
     
    128128                                        %> 
    129129                                </select> 
    130                                 <input type="checkbox" name="actionType[]" value="alertMessage" class="alertMessage"/> 
    131                                 <label><%= get_lang("Alert message filter by sender")%></label> 
     130                <% 
     131                if(preferences['use_alert_filter_criteria'] == "1") 
     132                {%> 
     133                    <input type="checkbox" name="actionType[]" value="alertMessage" class="alertMessage"/> 
     134                    <label><%= get_lang("Alert message filter by sender")%></label> 
     135                <%}%> 
    132136                        </fieldset> 
    133137                        <fieldset> 
  • branches/2.5/prototype/modules/filters/filters.css

    r7612 r8232  
    4747 
    4848.rule-list .rule .menu-control { 
    49         max-width:  100px; 
     49        max-width:  80px; 
    5050    float: right; 
    51         margin-top: -50px; 
     51        margin: -50px 5px; 
    5252        white-space: nowrap; 
    5353} 
     54 
    5455.rule-list .rule .menu-control .select { vertical-align: bottom; } 
    5556.rule-list .rule .menu-control .select input { margin: 5px 0 0 1px; } 
     
    122123} 
    123124.rule .menu-control .ui-button.disable,.rule .menu-control .ui-button.enable, .rule .menu-control .ui-button.update, .rule .menu-control .ui-button.close  { top:5px; } 
     125 
     126.rule .menu-control .ui-button.hidden { display: none; } 
     127 
    124128.filter-manager-window .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } 
    125129 
  • branches/2.5/prototype/modules/filters/filters.js

    r7863 r8232  
    22 * Retorna as regras por remetente e que o usuário deseja ser avisado  
    33 */ 
    4 function getFromAlertRules() {  
    5         var filters = DataLayer.get("filter"); 
    6         fromRules = []; 
    7         var alertMessage; 
    8         var active; 
    9         for (var index in filters) { 
    10                 alertMessage = filters[index]['alertMessage'];           
    11                 active = filters[index]['enabled']; 
    12                 for(var criterias in filters[index]['actions']) { 
    13                         if (filters[index]['actions'][criterias]['type'] == 'fileinto' && alertMessage == 'true' && active == 'true') 
    14                                 fromRules[fromRules.length] = filters[index]['actions'][criterias]['parameter']; 
    15                 } 
    16         } 
    17         return fromRules; 
     4function getFromAlertRules() { 
     5    fromRules = []; 
     6    if(preferences['use_alert_filter_criteria'] == "1") 
     7    { 
     8        var filters = DataLayer.get("filter"); 
     9        var alertMessage; 
     10        var active; 
     11        for (var index in filters) { 
     12            alertMessage = filters[index]['alertMessage']; 
     13            active = filters[index]['enabled']; 
     14            for(var criterias in filters[index]['actions']) { 
     15                if (filters[index]['actions'][criterias]['type'] == 'fileinto' && alertMessage == 'true' && active == 'true') 
     16                    fromRules[fromRules.length] = filters[index]['actions'][criterias]['parameter']; 
     17            } 
     18        } 
     19 
     20    } 
     21    return fromRules; 
    1822} 
    1923 
     
    401405}); 
    402406 
    403  
    404 fromRules = getFromAlertRules(); 
     407if(preferences['use_alert_filter_criteria'] == "1") 
     408{ 
     409    fromRules = getFromAlertRules(); 
     410} 
    405411 
    406412var BASE_PATH = '../prototype/'; 
     
    439445        } 
    440446        if(confirm(get_lang("Want to block the user") + " " + email + "?")){ 
     447        var has_folder_spam = false; 
     448        var folder_spam = "INBOX"+cyrus_delimiter+"Spam"; 
     449        $.each(cp_tree1, function(index, value){ 
     450            if(value.id == folder_spam){ 
     451                has_folder_spam = true; 
     452                return; 
     453            } 
     454        }); 
     455        if(!has_folder_spam){ 
     456            connector.loadScript('TreeS'); 
     457            create_new_folder("Spam","INBOX"); 
     458        } 
    441459                DataLayer.put( 'filter', idd, 
    442460                                        { name: email, isExact: false, 
    443461                                                criteria:{ 0: {value: email, operator: "=", field: "from"} }, 
    444                                                 actions: { 0: {parameter: "INBOX" + cyrus_delimiter + "Spam", type: "fileinto"}}, 
     462                                                actions: { 0: {parameter: folder_spam, type: "fileinto"}}, 
    445463                                                enabled: true, 
    446464                                                id: email, 
     
    461479 
    462480DataLayer.codec( 'message', 'jqGrid', { 
     481 
     482      encoder: function( data ){ 
     483 
     484          return( data ); 
     485 
     486      } 
     487}); 
     488 
     489DataLayer.codec( 'message', 'jqGridSearch', { 
    463490 
    464491      encoder: function( data ){ 
     
    491518        var criterias_ = new Array(); 
    492519 
    493     var isExact = (list_container.find('[name="isExact"]:checked').val() == 'and') ? 'yes' : 'no';  
    494   
     520    var isExact = (list_container.find('[name="isExact"]:checked').val() == 'and') ? 'yes' : 'no'; 
     521 
    495522        for (i in criteria_) 
    496523                if(criteria_[i] != "") 
     
    605632 * Lista os filtros para o usuário 
    606633 */ 
    607 function list_filters(html){ 
     634function list_filters(html) {  
    608635        outOfficeVerify(); 
    609         for (var index in selectedMessages) { 
     636        for (var index in selectedMessages)  
     637        { 
    610638                delete selectedMessages[index]; 
    611639        } 
    612         if(html){ 
    613                 if( ! $(".filters-windows").length ) 
    614                         container = $('.expressomail-module-container').append("<div class='filters-windows'></div>").find(".filters-windows").html( html ).find(".expresso-window-container"); 
    615                 list_container = $('.expressomail-module-container').find(".rule-list-container"); 
    616         } 
    617         list_container = $(".expresso-window-filters").dialog({ 
    618                 title: get_lang('Filters'), 
    619             width:700, 
    620             modal: true, 
    621                 resizable: false, 
    622             closeOnEscape:true, 
    623             close:function(event, ui) { 
    624                     event.stopPropagation(); 
    625                         if(list_container.find(".cancel").length) 
    626                                 list_container.find(".cancel").trigger('click'); 
    627                         $(".dialog-head-buttonpane").hide(); 
    628             }, 
    629                 open: function () { 
    630                         $(".ui-dialog .ui-dialog-titlebar") 
    631                         .append('<a href="#" class="ui-dialog-titlebar-minimize ui-corner-all" role="button"><span class="ui-icon ui-icon-minusthick">minimize</span></a>') 
    632                         .find('.ui-dialog-titlebar-minimize').click(function() { 
    633                                 $(".ui-dialog-buttonpane, .ui-dialog-content").toggle(); 
    634                                 $(".ui-icon-minusthick, .ui-icon-newwin").toggleClass('ui-icon-minusthick').toggleClass('ui-icon-newwin'); 
    635                         }); 
    636                         $(".dialog-head-buttonpane").show(); 
    637                 }, 
    638             autoOpen: false, 
    639                 buttons: [{ 
    640                         text : get_lang("Close"), 
    641                         click : function() { 
    642                                 $( this ).dialog( "close" ); 
    643                         } 
    644                 }] 
    645     }); 
    646         $(".ui-dialog-titlebar").after("<div class='dialog-head-buttonpane ui-dialog-buttonpane ui-widget-content ui-helper-clearfix' style='background-color: rgb(224, 238, 238); '><div class='ui-dialog-buttonset header-buttonpane'></div></div>"); 
    647         $(".dialog-head-buttonpane").css("padding", "5px"). 
    648         find(".header-buttonpane").html("<a href='#' class='button add' title='"+get_lang("Add new rule")+"'>"+get_lang("New rule")+"</a>"+(!outoffice ? "<a href='#' class='button add vacation' title='"+get_lang("Add rule out of office")+"'>"+get_lang("Out of office")+"</a>" : "")).find(".button").button(); 
    649  
    650         $(".ui-dialog-buttonpane.ui-widget-content").css("background-color", "#E0EEEE"); 
     640  
     641        initialize_container(html); // Inicializa o container do diálogo de filtros  
     642  
     643        list_container = create_filter_dialog(); // Cria a estrutura básica do diálogo  
     644         
    651645        var list = DataLayer.render( BASE_PATH + 'modules/filters/filter-list.ejs', DataLayer.get("filter:detail", true)); 
    652646        list_container.html(list).find(".button").button(); 
    653  
     647    list_container.find(".alldelete").button("disable"); 
     648    list_container.find(".alldisable").button("disable"); 
     649    list_container.find(".allenable").button("disable"); 
     650     
    654651        list_container.find(".rule-list").selectable({ 
    655652                selecting: function(event, ui) { 
     
    660657                } 
    661658        }); 
     659 
     660    list_container.find(".rule-list li").click(function(){ 
     661        if(list_container.find(".select").children("input:checked").length){ 
     662            list_container.find(".alldelete").button("enable"); 
     663            list_container.find(".alldisable").button("enable"); 
     664            list_container.find(".allenable").button("enable"); 
     665        } else { 
     666            list_container.find(".alldelete").button("disable"); 
     667            list_container.find(".alldisable").button("disable"); 
     668            list_container.find(".allenable").button("disable"); 
     669        } 
     670    }); 
    662671 
    663672        list_container.find( ".menu-control .button" ).filter(".update").button({ 
     
    716725                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
    717726                                                getFromAlertRules(); 
     727                                                if (get_current_folder() == "INBOX") 
     728                                                        cExecute ("$this.imap_functions.get_range_msgs2&folder=INBOX&msg_range_begin=1&msg_range_end="+preferences.max_email_per_page+"&sort_box_type=SORTARRIVAL&search_box_type=ALL&sort_box_reverse=1", handler_draw_box); 
    718729                                        }); 
    719730 
     
    868879 
    869880        list_container.parent().find(".button.add:first").click(function(){ 
    870                 list_container.parent().find(".dialog-head-buttonpane").addClass("hidden"); 
    871                 DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true), delimiter: cyrus_delimiter},function(html){ 
    872                         list_container.html(html); 
    873                         var accord = list_container.find(".rule-details-container").accordion({autoHeight: false}); 
    874                         list_container.find(".button").button().filter(".forth").click(function(){ 
    875                                 accord.accordion('activate',1); 
    876                         }).end().filter(".forth2").click(function(){ 
    877                                 accord.accordion('activate',2); 
    878                         }).end().filter(".back").click(function(){ 
    879                                 accord.accordion('activate',0); 
    880                         }).end().filter(".back2").click(function(){ 
    881                                 accord.accordion('activate',1); 
    882                         }).end().filter(".cancel").click(function(){ 
    883                                 DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
    884                         }).end().filter(".submit").click(function() { 
    885                                 if(valid_save()) 
    886                                         $(this).submit(); 
    887                                 else 
    888                                         return; 
    889                                 DataLayer.commit( 'filter',false,function(){ 
    890                                         if($('#gbox_fields-search-messages-grid').length > 0 && action != '') { 
    891                                                 for (var index in selectedMessages) { 
    892                                                         set_message_flag(index, action, false); 
    893                                                 } 
    894                                         } 
    895                                         DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
    896                                         getFromAlertRules(); 
    897                                 }); 
    898                         }).end().filter('.button.search').click(function() { 
    899                                 if(valid_save()) 
    900                                         showGridMessages($(this)); 
    901                                 else 
    902                                         return; 
    903                         }); // end function click 
    904                 });     // end DataLayer.render 
     881                render_new_rule(); // Renderiza a tela de criação de nova regra de filtragem.  
    905882        }); 
    906883        list_container.parent().find(".button.add.vacation").click(function(){ 
     
    932909} 
    933910 
     911/*  
     912        Inicializa o container do diálogo de gerenciamento de filtros.  
     913*/  
     914function initialize_container (html) {  
     915        if(html)  
     916        {  
     917                if(!$(".filters-windows").length)   
     918                {  
     919                        container = $('.expressomail-module-container').append("<div class='filters-windows'></div>").find(".filters-windows").html(html).find(".expresso-window-container");  
     920                }  
     921        }  
     922}  
     923  
     924/*  
     925        Cria a estrutura básica do diálogo de gerenciamento de filtros.  
     926*/  
     927function create_filter_dialog () {  
     928        var dialog = $(".expresso-window-filters").dialog(  
     929        {  
     930                title: get_lang('Filters'),  
     931                width: 700,  
     932                modal: true,  
     933                resizable: false,  
     934                closeOnEscape: true,  
     935                close: function(event, ui)  
     936                {  
     937                        event.stopPropagation();  
     938                        if(list_container.find(".cancel").length) list_container.find(".cancel").trigger('click');  
     939                        $(".dialog-head-buttonpane").hide();  
     940                },  
     941                open: function()  
     942                {  
     943                        $(".ui-dialog .ui-dialog-titlebar").append('<a href="#" class="ui-dialog-titlebar-minimize ui-corner-all" role="button"><span class="ui-icon ui-icon-minusthick">minimize</span></a>').find('.ui-dialog-titlebar-minimize').click(function()  
     944                        {  
     945                                $(".ui-dialog-buttonpane, .ui-dialog-content").toggle();  
     946                                $(".ui-icon-minusthick, .ui-icon-newwin").toggleClass('ui-icon-minusthick').toggleClass('ui-icon-newwin');  
     947                        });  
     948                        $(".dialog-head-buttonpane").show();  
     949                },  
     950                autoOpen: false,  
     951                buttons: [  
     952                {  
     953                        text: get_lang("Close"),  
     954                        click: function()  
     955                        {  
     956                                $(this).dialog("close");  
     957                        }  
     958                }]  
     959        });  
     960  
     961        $(".ui-dialog-titlebar").after("<div class='dialog-head-buttonpane ui-dialog-buttonpane ui-widget-content ui-helper-clearfix' style='background-color: rgb(224, 238, 238); '><div class='ui-dialog-buttonset header-buttonpane'></div></div>");  
     962        $(".dialog-head-buttonpane").css("padding", "5px").  
     963        find(".header-buttonpane").html("<a href='#' class='button add' title='" + get_lang("Add new rule") + "'>" + get_lang("New rule") + "</a>" + (!outoffice ? "<a href='#' class='button add vacation' title='" + get_lang("Add rule out of office") + "'>" + get_lang("Out of office") + "</a>" : "")).find(".button").button();  
     964        $(".ui-dialog-buttonpane.ui-widget-content").css("background-color", "#E0EEEE");  
     965  
     966        return dialog;  
     967}  
     968  
     969/*  
     970        Renderiza a tela de adição de uma nova regra de filtragem,   
     971        dentro do diálogo de gerenciamento de filtros.  
     972*/  
     973function render_new_rule (from, subject) {  
     974        list_container.parent().find(".dialog-head-buttonpane").addClass("hidden");  
     975        var data = {  
     976                folders: DataLayer.get("folder", true),  
     977                delimiter: cyrus_delimiter,  
     978                from: from,  
     979                subject: subject ? html_entities(subject) : subject  
     980        }  
     981  
     982        DataLayer.render(BASE_PATH + 'modules/filters/edit-filter.ejs', data, function(html)  
     983        {  
     984                list_container.html(html);  
     985                var accord = list_container.find(".rule-details-container").accordion(  
     986                {  
     987                        autoHeight: false  
     988                });  
     989                list_container.find(".button").button().filter(".forth").click(function()  
     990                {  
     991                        accord.accordion('activate', 1);  
     992                }).end().filter(".forth2").click(function()  
     993                {  
     994                        accord.accordion('activate', 2);  
     995                }).end().filter(".back").click(function()  
     996                {  
     997                        accord.accordion('activate', 0);  
     998                }).end().filter(".back2").click(function()  
     999                {  
     1000                        accord.accordion('activate', 1);  
     1001                }).end().filter(".cancel").click(function()  
     1002                {  
     1003                        DataLayer.render(BASE_PATH + 'modules/filters/init.ejs', {}, list_filters);  
     1004                }).end().filter(".submit").click(function()  
     1005                {  
     1006                        if(valid_save()) $(this).submit();  
     1007                        else return;  
     1008                        DataLayer.commit('filter', false, function()  
     1009                        {  
     1010                                if($('#gbox_fields-search-messages-grid').length > 0 && action != '')  
     1011                                {  
     1012                                        for(var index in selectedMessages)  
     1013                                        {  
     1014                                                set_message_flag(index, action, false);  
     1015                                        }  
     1016                                }  
     1017                                DataLayer.render(BASE_PATH + 'modules/filters/init.ejs', {}, list_filters);  
     1018                                getFromAlertRules();  
     1019                        });  
     1020                }).end().filter('.button.search').click(function()  
     1021                {  
     1022                        if(valid_save()) showGridMessages($(this));  
     1023                        else return;  
     1024                }); // end function click  
     1025        }); // end DataLayer.render  
     1026} 
    9341027 
    9351028/* Inicializa os filtros e chama o list_filters  
     
    9551048                } 
    9561049        } 
    957         $.each(fromRules, function(index, value) { 
    958                 if(value == folder){ 
    959                         for(var i=0; i < filters_c['criteria'].length; i++){ 
    960                                 if(filters_c['criteria'][i].field == 'from'){ 
    961                                         from = filters_c['criteria'][i].value; 
    962                                 } 
    963                         } 
    964                         cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&from="+from, function(){});  
    965                         return false; 
    966                 } 
    967         }); 
    968 } 
     1050 
     1051    if(preferences['use_alert_filter_criteria'] == "1") 
     1052    { 
     1053        $.each(fromRules, function(index, value) { 
     1054            if(value == folder){ 
     1055                for(var i=0; i < filters_c['criteria'].length; i++){ 
     1056                    if(filters_c['criteria'][i].field == 'from'){ 
     1057                        from = filters_c['criteria'][i].value; 
     1058                    } 
     1059                } 
     1060                cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&from="+from, function(){}); 
     1061                return false; 
     1062            } 
     1063        }); 
     1064    } 
     1065} 
  • branches/2.5/prototype/modules/filters/interceptors/FilterMapping.php

    r7726 r8232  
    550550                $actions['type'] = $rule_apply['actions'][0]['type']; 
    551551                $actions['parameter'] = $rule_apply['actions'][0]['parameter']; 
    552                 /* Hardcoded */ 
    553                 $actions['keep'] = false; 
     552 
     553                $actions['keep'] = is_array($rule_apply['actions'][1]); 
     554                if ($actions['keep']) 
     555                        $actions['value'] = $rule_apply['actions'][0]['parameter']; 
    554556 
    555557                //$messages = $rule_apply['applyMessages']; 
  • branches/2.5/prototype/modules/mail/css/followupflag.css

    r6996 r8232  
    242242.alert-options { 
    243243        border: none; 
     244        min-width:80%; 
    244245} 
    245246.confirm-alarm { 
  • branches/2.5/prototype/modules/mail/js/foldertree.js

    r8117 r8232  
    108108} 
    109109 
    110 function draw_new_tree_folder(callback, force){ 
    111  
    112     var folders =  normalizeFolder( Folder.get( false, force ) ); 
    113  
    114 if(preferences.use_local_messages == 1){ 
    115  
    116     if(expresso_mail_archive.folders && !expresso_offline && expresso_mail_archive.enabled == true) { //MailArchive 
    117         //pega pastas locais do mailarchiver e insere no array de pastas 
     110function refreshTreeview(){ 
     111    //Atualização e correção dos ícones expandir/contrair 
     112    $.each($('.treeview').find('.expandable, .collapsable').filter(':not(.lastExpandable,.lastCollapsable)'),function(i,v){ 
     113      if ( $(v).find('ul').css('display') == "block" ){ 
     114        $(v).removeClass().addClass('collapsable');  
     115        $(v).find('.hitarea:first').removeClass().addClass('hitarea collapsable-hitarea') 
     116      } 
     117    }); 
     118    //Última árvore de pastas 
     119    $.each($('.treeview').find('.lastExpandable,.lastCollapsable'),function(i,v){ 
     120      if ( $(v).find('ul').css('display') == "block" ){ 
     121        $(v).removeClass().addClass('collapsable lastCollapsable');  
     122        $(v).find('.hitarea:first').removeClass('expandable-hitarea').addClass('collapsable-hitarea'); 
     123        $(v).find('.hitarea:first').removeClass('lastExpandable-hitarea').addClass('lastCollapsable-hitarea'); 
     124      } 
     125    }); 
     126} 
     127 
     128function draw_new_tree_folder(callback, force) 
     129{ 
     130 
     131    var folders = normalizeFolder(Folder.get(false, force)); 
     132 
     133    if(preferences.use_local_messages == 1) 
     134    { 
     135 
     136        if(expresso_mail_archive.folders && !expresso_offline && expresso_mail_archive.enabled == true) 
     137        { //MailArchive 
     138            //pega pastas locais do mailarchiver e insere no array de pastas 
    118139            expresso_mail_archive.getFoldersList("home"); 
    119140            treeFolders = expresso_mail_archive.folders; 
    120141 
    121             for(var i=0; i<treeFolders.length; i++ ){ 
     142            for(var i = 0; i < treeFolders.length; i++) 
     143            { 
    122144                mount_children_localfolders_list(treeFolders[i]); 
    123145            } 
    124              
    125             for(var i = 0; i < treeFolders.length; i++){ 
     146 
     147            for(var i = 0; i < treeFolders.length; i++) 
     148            { 
    126149                folders.push(treeFolders[i]); 
    127150            } 
    128   
    129     } 
    130 } 
    131  
    132     if(!selected){ 
     151 
     152        } 
     153    } 
     154 
     155    if(!selected) 
     156    { 
    133157        selected = "INBOX"; 
    134158    } 
     
    137161    var tree2 = new Array(); 
    138162    var tree3 = new Array(); 
    139       
    140     for (var i=0; i<folders.length; i++) { 
    141           
    142         if(/*/^INBOX/.test(folders[i].id)*/folders[i].id.substr(0,5) == "INBOX") { 
    143             if (!unorphanize(tree1, folders[i])) { 
     163     
     164    for(var i = 0; i < folders.length; i++) 
     165    { 
     166         
     167        if(/*/^INBOX/.test(folders[i].id)*/folders[i].id.substr(0,5) == "INBOX") 
     168        { 
     169            if(!unorphanize(tree1, folders[i])) 
     170            { 
    144171                folders[i].children = new Array(); 
    145172 
     
    147174            } 
    148175        } 
    149         else if (/*/^user/.test(folders[i].id)*/folders[i].id.substr(0,4) == "user") { 
    150             if (!unorphanize(tree2, folders[i])) { 
     176        else if(/*/^user/.test(folders[i].id)*/folders[i].id.substr(0,4) == "user") 
     177        { 
     178            if(!unorphanize(tree2, folders[i])) 
     179            { 
    151180                folders[i].children = new Array(); 
    152181                tree2.push(folders[i]); 
    153182            } 
    154183        } 
    155         else if (/*/^local_messages/.test(folders[i].id)*/folders[i].id.substr(0,14) == "local_messages") { 
    156             
    157                 tree3.push(folders[i]); 
    158              
    159         } 
    160     } 
    161      
    162     for(var i =0; i<tree1.length; i++){ 
     184        else if(/*/^local_messages/.test(folders[i].id)*/folders[i].id.substr(0,14) == "local_messages") 
     185        { 
     186 
     187            tree3.push(folders[i]); 
     188 
     189        } 
     190    } 
     191 
     192    for(var i = 0; i < tree1.length; i++) 
     193    { 
    163194        count_unseen_children(tree1[i]); 
    164195    } 
    165     for(var i =0; i<tree2.length; i++){ 
     196    for(var i = 0; i < tree2.length; i++) 
     197    { 
    166198        count_unseen_children(tree2[i]); 
    167199    } 
    168     for(var i =0; i<tree3.length; i++){ 
     200    for(var i = 0; i < tree3.length; i++) 
     201    { 
    169202        count_unseen_children(tree3[i]); 
    170203    } 
     
    174207    var shared_acls = {}; 
    175208 
    176     $.each(cp_tree2, function(index, value){ 
     209    $.each(cp_tree2, function(index, value) 
     210    { 
    177211        shared_acls[value.id] = value.acl_share; 
    178212    }); 
    179      
    180     if(preferences.use_local_messages == 1){ 
    181       $("#content_folders").removeClass("menu-degrade").parent().removeClass("image-menu"); 
    182       mail_archive_url = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/admin"; 
    183     } 
    184      
    185     var html = DataLayer.render('../prototype/modules/mail/templates/detailedfoldertree.ejs', {folders: [tree1, tree2, tree3]}); 
    186     var folders_html = $("#content_folders").html(html).find(".mainfoldertree").treeview({ 
    187             persist: "cookie", 
    188             animated: "fast" 
    189     }).find(".folder").unbind("click").click(function(event){ 
    190  
    191         if ($(this).next().hasClass("local-connect")) { 
     213 
     214    if(preferences.use_local_messages == 1) 
     215    { 
     216        $("#content_folders").removeClass("menu-degrade").parent().removeClass("image-menu"); 
     217        mail_archive_url = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/admin"; 
     218    } 
     219 
     220    var html = DataLayer.render('../prototype/modules/mail/templates/detailedfoldertree.ejs', { 
     221        folders: [tree1, tree2, tree3] 
     222    }); 
     223    var folders_html = $("#content_folders").html(html).find(".mainfoldertree").treeview( 
     224    { 
     225        persist: "cookie", 
     226        animated: "fast" 
     227    }).find(".folder").unbind("click").click(function(event) 
     228    { 
     229 
     230        if($(this).next().hasClass("local-connect")) 
     231        { 
    192232            return; 
    193233        } 
    194234 
    195         if ($(this).hasClass("local-folder")) { 
     235        if($(this).hasClass("local-folder")) 
     236        { 
    196237            return; 
    197238        } 
    198          
     239 
    199240        // MUDANÇA DE PASTAS! 
    200         var target = $(this);    
    201          
     241        var target = $(this); 
     242 
    202243        if($(".folders-loading").length) 
     244        { 
    203245            return; 
    204          
     246        } 
     247 
    205248        if($(event.target).parent().is(".float-menu")) 
     249        { 
    206250            return; 
    207              
    208         if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable-hitarea, .lastExpandable-hitarea, .treeview ,.folder_unseen,.ui-icon, .float-menu, .new_folder, .folders-loading, .head_folder, .shared-folders') ) 
     251        } 
     252 
     253        if(target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable-hitarea, .lastExpandable-hitarea, .treeview ,.folder_unseen,.ui-icon, .float-menu, .new_folder, .folders-loading, .head_folder, .shared-folders')) 
     254        { 
    209255            return; 
    210          
    211         if( target.parent().find(".new_folder").length) 
     256        } 
     257 
     258        if(target.parent().find(".new_folder").length) 
     259        { 
    212260            return; 
    213              
    214         if( !target.attr('id') ) 
     261        } 
     262 
     263        if(!target.attr('id')) 
     264        { 
    215265            target = target.parent(); 
    216         if (target[0] == $(".mainfoldertree")[0]) return; 
     266        } 
     267        if(target[0] == $(".mainfoldertree")[0]) 
     268        { 
     269            return; 
     270        } 
     271 
    217272        var uiId = target.attr('id'); 
    218273        var child = target.find('.folder'); 
    219            
    220         if(!target.is('.mainfoldertree > .expandable-hitarea, .mainfoldertree > .collapsable-hitarea')){ 
     274 
     275        if(!target.is('.mainfoldertree > .expandable-hitarea, .mainfoldertree > .collapsable-hitarea')) 
     276        { 
    221277            $('.filetree span.folder.selected').removeClass('selected'); 
    222278            $(target).children('.folder').addClass('selected'); 
     
    224280        $(this).addClass("folders-loading"); 
    225281        selected = target.attr('id'); 
    226         change_folder(target.attr('id'), child.attr('title'));   
    227  
    228         $.ajax({ 
    229               url : "controller.php?"+ $.param( { action: "$this.imap_functions.get_folders_list", folder: target.attr('id') } ), 
    230               success : function(data){ 
    231                   data = connector.unserialize(data); 
    232  
    233                   if(data) 
     282        change_folder(target.attr('id'), child.attr('title')); 
     283     
     284        $.ajax( 
     285        { 
     286            url: "controller.php?" + $.param( 
     287            { 
     288                action: "$this.imap_functions.get_folders_list", 
     289                folder: target.attr('id') 
     290            }), 
     291            success: function(data) 
     292            { 
     293                data = connector.unserialize(data); 
     294 
     295                if(data) 
     296                { 
    234297                    build_quota(data); 
    235               } 
     298                } 
     299            } 
    236300        }); 
    237301 
    238     }).filter('.followup-messages').click(function(event, ui){ 
     302    }).filter('.followup-messages').click(function(event, ui) 
     303    { 
    239304        search_emails("UNDELETED KEYWORD \"$Followupflagged\""); 
    240305    }).end().end(); 
    241  
    242     $('.upper').droppable({ 
    243         over: function(event, ui){ 
    244             $('#content_folders').autoscroll({ 
     306     
     307    refreshTreeview(); 
     308     
     309    $('.upper').droppable( 
     310    { 
     311        over: function(event, ui) 
     312        { 
     313            $('#content_folders').autoscroll( 
     314            { 
    245315                direction: 'up', 
    246316                step: 150, 
     
    248318            }); 
    249319        }, 
    250         out: function(event, ui){ 
     320        out: function(event, ui) 
     321        { 
    251322            $('#content_folders').autoscroll('destroy'); 
    252323        } 
    253324    }); 
    254325 
    255     $('.lower').droppable({ 
    256         over: function(event, ui){ 
    257             $('#content_folders').autoscroll({ 
     326    $('.lower').droppable( 
     327    { 
     328        over: function(event, ui) 
     329        { 
     330            $('#content_folders').autoscroll( 
     331            { 
    258332                direction: 'down', 
    259333                step: 150, 
     
    261335            }); 
    262336        }, 
    263         out: function(event, ui){ 
     337        out: function(event, ui) 
     338        { 
    264339            $('#content_folders').autoscroll('destroy'); 
    265340        } 
     
    268343 
    269344 
    270     folders_html.find('[id="'+selected+'"]').children().addClass("selected"); 
    271     $(".folder").not(".head_folder").not(".shared-folders").not(".shared-folders + ul .folder").parent().find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").draggable({ 
     345    folders_html.find('[id="' + selected + '"]').children().addClass("selected"); 
     346    $(".folder") 
     347    .not(".head_folder") 
     348    .not(".shared-folders") 
     349    .not(".shared-folders + ul .folder") 
     350    .parent() 
     351    .find(".folder") 
     352    .not(".head_folder,.inbox,.drafts,.sent,.spam,.trash") 
     353    .draggable( 
     354    { 
    272355        // DRAG DE PASTAS 
    273         start : function(){ 
     356        start: function() 
     357        { 
    274358            $(this).css("color", "gray"); 
    275359            $('.upper, .lower').show(); 
    276             $(".lower").css("top", ($("#content_folders").height()-18) + $("#content_folders").offset().top); 
     360            $(".lower").css("top", ($("#content_folders").height() - 18) + $("#content_folders").offset().top); 
    277361        }, 
    278         stop : function(){ 
     362        stop: function() 
     363        { 
    279364            $(this).css("color", ""); 
    280365            $('.upper, .lower').hide(); 
    281366        }, 
    282367        revert: "invalid", 
    283         helper: function(event){ 
    284             if($.trim(($(this).text().split("["))[0]).length > 18) 
    285                 return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]).substring(0,18) + "...", type: "folder"})); 
    286             return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]), type: "folder"})); 
     368        helper: function(event) 
     369        { 
     370            if($.trim(($(this).text().split("["))[0]).length > 18) return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', { 
     371                texto: (($(this).text().split("["))[0]).substring(0, 18) + "...", 
     372                type: "folder" 
     373            })); 
     374            return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', { 
     375                texto: (($(this).text().split("["))[0]), 
     376                type: "folder" 
     377            })); 
    287378        }, 
    288379        delay: 150, 
    289380        refreshPositions: true, 
    290         zIndex : 2700, 
     381        zIndex: 2700, 
    291382        //scroll: true, 
    292383        //scrollSensitivity: 100, 
     
    294385        containment: $("#divAppbox") 
    295386    }); 
    296     $(".folder").not(".head_folder").not(".shared-folders").parent().find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").end().droppable({ 
     387    $(".folder") 
     388    .not(".head_folder") 
     389    .not(".shared-folders") 
     390    .parent() 
     391    .find(".folder") 
     392    .not(".head_folder,.inbox,.drafts,.sent,.spam,.trash") 
     393    .end() 
     394    .droppable( 
     395    { 
    297396        //DROP DE PASTAS 
    298         over : function(a, b){ 
     397        over: function(a, b) 
     398        { 
    299399            //INICIO : SE A PASTA CONTER FILHAS EXPANDE  
     400            $(b.helper).find(".draggin-folder,.draggin-mail").css("color", "green"); 
    300401            over = $(this); 
    301402            $(this).addClass("folder-over"); 
    302             if(($(this)[0] != $(this).parent().find(".head_folder")[0])) 
    303                 if($(this).prev()[0]) 
    304                     if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){ 
    305                         setTimeout(function(){ 
    306                             if(over.hasClass("folder-over")){ 
    307                                 over.prev().trigger("click"); 
    308                             } 
    309                         }, 500); 
    310                          
     403            if(($(this)[0] != $(this).parent().find(".head_folder")[0])) if($(this).prev()[0]) if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]) 
     404            { 
     405                setTimeout(function() 
     406                { 
     407                    if(over.hasClass("folder-over")) 
     408                    { 
     409                        over.prev().trigger("click"); 
    311410                    } 
     411                }, 500); 
     412 
     413            } 
    312414            //FIM : SE A PASTA CONTER FILHAS EXPANDE            
    313             //$("#content_folders").stop().scrollTo($(this), {axis:'y', margin:true, offset:-50, duration:400});       
    314415            //SETA BORDA EM VOLTA DA PASTA 
    315416            // 
    316417        }, 
    317         out : function(){ 
     418        out: function(a, b) 
     419        { 
    318420            //RETIRA BORDA EM VOLTA DA PASTA 
     421            $(b.helper).find(".draggin-folder,.draggin-mail").css("color", ""); 
    319422            $(this).removeClass("folder-over"); 
    320423        }, 
    321         drop : function(event, ui){ 
     424        drop: function(event, ui) 
     425        { 
    322426            $(this).removeClass("folder-over"); 
    323427 
    324             if($(this).parent().attr('id') == undefined){ 
     428            if($(this).parent().attr('id') == undefined) 
     429            { 
    325430                var folder_to = 'INBOX'; 
    326431                var to_folder_title = get_lang("Inbox"); 
    327             }else{ 
     432            } 
     433            else 
     434            { 
    328435                var folder_to = $(this).parent().attr('id'); 
    329436                var to_folder_title = $(this).attr('title'); 
    330             }        
     437            } 
    331438            var folder_to_move = ui.draggable.parent().attr('id'); 
    332439            var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 
    333440            // eventnsagens : SE O DROP VIER DA LISTA DE eventNSAGENS : 
    334             if(folder_to_move == "tbody_box"){ 
    335                 move_msgs2(get_current_folder(), 'selected', 0, folder_to, to_folder_title,true); 
     441            if(folder_to_move == "tbody_box") 
     442            { 
     443                move_msgs2(get_current_folder(), 'selected', 0, folder_to, to_folder_title, true); 
    336444                //Correção para realinhamento da grid de mensagens no navegador Chrome. 
    337                 if(is_webkit){ 
     445                if(is_webkit) 
     446                { 
    338447                    var table = $('#table_box'); 
    339448                    $('#divScrollMain_0').html(''); 
     
    344453            } 
    345454            //SE FOR DE UMA PESQUISA RAPIDA 
    346             else if(ui.draggable.parents('[id^="content_id_"]')[0]){ 
    347                 move_search_msgs("content_id_"+border_id, folder_to, to_folder_title); 
     455            else if(ui.draggable.parents('[id^="content_id_"]')[0]) 
     456            { 
     457                move_search_msgs("content_id_" + border_id, folder_to, to_folder_title); 
    348458                return; 
    349459            } 
    350460            // eventnsagens : SE O DROP VIER DE UMA ABA ABERTA 
    351             else if(folder_to_move == "border_tr"){ 
     461            else if(folder_to_move == "border_tr") 
     462            { 
    352463                var id_msg = border_id.split("_")[0]; 
    353                 folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 
     464                folder = $("#input_folder_" + border_id + "_r")[0] ? $("#input_folder_" + border_id + "_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id] : get_current_folder()); 
    354465                alternate_border(border_id); 
    355                 move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); 
     466                move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title, true); 
    356467                return; 
    357468            } 
    358469            // SE O DROP VIER DA LISTA DE PASTAS 
    359             else{ 
    360                                 if($(ui.draggable[0]).parent().find("input").val() == "localFolder" && $(this).parents("li").find("input").first().val() != "localFolder")  
    361                 {  
    362                     return write_msg(get_lang("It isn't possible to send a folder by Archiver to My folders"));  
    363                 }  
    364                 else if(!$(ui.draggable[0]).parent().find("input").val() && $(this).parents("li").find("input").first().val() == "localFolder")  
    365                 {  
    366                     return write_msg(get_lang("It isn't possible to send a folder by My folders to Archiver"));  
    367                 }  
    368                 var folder_to_exist = folder_to_move.split(cyrus_delimiter);     
    369                 folder_to_exist = folder_to+cyrus_delimiter+folder_to_exist[folder_to_exist.length-1]; 
    370                  
     470            else 
     471            { 
     472                if($(ui.draggable[0]).parent().find("input").val() == "localFolder" && $(this).parents("li").find("input").first().val() != "localFolder") 
     473                { 
     474                    return write_msg(get_lang("It isn't possible to send a folder by Archiver to My folders")); 
     475                } 
     476                else if(!$(ui.draggable[0]).parent().find("input").val() && $(this).parents("li").find("input").first().val() == "localFolder") 
     477                { 
     478                    return write_msg(get_lang("It isn't possible to send a folder by My folders to Archiver")); 
     479                } 
     480                var folder_to_exist = folder_to_move.split(cyrus_delimiter); 
     481                folder_to_exist = folder_to + cyrus_delimiter + folder_to_exist[folder_to_exist.length - 1]; 
     482 
    371483                //VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS 
    372  
    373                 if(valid_tabs(ui.draggable.parent().find("li"), folder_to_move)){ 
     484                if(valid_tabs(ui.draggable.parent().find("li"), folder_to_move)) 
     485                { 
    374486                    return; 
    375487                } 
    376488                //FIM : VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS; 
    377                  
    378489                // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA PARA O eventSMO LOCAL 
    379                 if(folder_to_exist == folder_to_move){ 
     490                if(folder_to_exist == folder_to_move) 
     491                { 
    380492                    return write_msg(get_lang("Thie folder is already in this place")); 
    381493                } 
    382                  
     494 
    383495                // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA ABERTA NO momentO 
    384                 if(folder_to_move == get_current_folder()){ 
     496                if(folder_to_move == get_current_folder()) 
     497                { 
    385498                    return write_msg(get_lang("It's not possible move this folder, because it is being used in the moment!")); 
    386499                } 
    387                  
     500 
    388501                // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA FILHA DA PASTA ABERTA NO momentO 
    389                 if(ui.draggable.parent().find(".selected")[0]){ 
     502                if(ui.draggable.parent().find(".selected")[0]) 
     503                { 
    390504                    return write_msg(get_lang("It's not possible move this folder, because its subfolder is being used in the moment!")); 
    391505                } 
    392                  
     506 
    393507                // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA PAI PARA DENTRO DE UMA FILHA 
    394                 if(ui.draggable.parent().find('[id="'+folder_to+'"]')[0]){ 
     508                if(ui.draggable.parent().find('[id="' + folder_to + '"]')[0]) 
     509                { 
    395510                    return write_msg(get_lang("It's not possible to move this folder to its subfolders!")); 
    396                 }                    
    397                  
    398                 if($('[id="'+folder_to_exist+'"]').length){ 
     511                } 
     512 
     513                if($('[id="' + folder_to_exist + '"]').length) 
     514                { 
    399515                    return write_msg(get_lang("Can not move this folder to this location, because the target has already a folder with this name")); 
    400516                } 
    401                  
     517 
    402518                $(this).addClass("folders-loading"); 
    403519 
    404520 
    405                 if($(this).parents("li").find("input").first().val() == "localFolder"){ 
     521                if($(this).parents("li").find("input").first().val() == "localFolder") 
     522                { 
    406523                    var idFolder = $(this).parent().attr("id").split("_")[2]; 
    407524 
    408525                    expresso_mail_archive.moveFolder(idFolder, folder_to_move.split("_")[2]); 
    409                      cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    410                 } else { 
    411                     $.ajax({ 
    412                         url : "controller.php?"+ $.param( { action: "$this.imap_functions.move_folder", folder_to_move: folder_to_move, folder_to: folder_to } ), 
    413                         success : function(data){ 
     526                    cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     527                } 
     528                else 
     529                { 
     530                    $.ajax( 
     531                    { 
     532                        url: "controller.php?" + $.param( 
     533                        { 
     534                            action: "$this.imap_functions.move_folder", 
     535                            folder_to_move: folder_to_move, 
     536                            folder_to: folder_to 
     537                        }), 
     538                        success: function(data) 
     539                        { 
    414540                            cExecute("$this.imap_functions.get_folders_list&onload=true", force_update_menu); 
    415541                            data = connector.unserialize(data); 
    416                             if(data == "Permission denied"){ 
     542                            if(data == "Permission denied") 
     543                            { 
    417544                                write_msg(get_lang("Permission denied")); 
    418                             }else if(data){ 
     545                            } 
     546                            else if(data) 
     547                            { 
    419548                                write_msg(get_lang("The folder was successfully moved")); 
    420                             } else { 
     549                            } 
     550                            else 
     551                            { 
    421552                                write_msg(get_lang("ERROR moving your folder.")); 
    422553                            } 
     
    427558        } 
    428559    }); 
    429     $(".folder").not(".shared-folders, .followup-messages").parent().find(".folder").hover( 
    430         function(){ 
    431             //CASO A LI NÃO TENHA UM eventNU FLUTUANTE AINDA, O eventNU É ADICIONADO! 
    432             if(!$(this).children(":last").hasClass("float-menu") && !$(this).children(":last").hasClass("new_folder") && !($(this).next().hasClass("local-connect"))){ /*se houver a classe local-connect, não adiciona o botão de conectar*/ 
    433                 var folder_ = $(this); 
    434                 var folder_name; 
    435                 var shared = { 
    436                     head : false, 
    437                     valid : false 
    438                 }; 
    439                 if(folder_.parent().attr('id')){ 
    440                     folder_name = folder_.parent().attr('id').split(cyrus_delimiter); 
    441                     folder_name = folder_name[folder_name.length -1]; 
    442                     shared.valid = folder_.parent().attr('id').search("user/") == 0 ? true : false; 
    443                 }else 
    444                     folder_name = "Root"; 
    445                  
    446                 if(shared.valid){ 
    447                     shared.head = folder_.parent().attr('id').split(cyrus_delimiter).length == 2 ?  true : false; 
    448                     var folder_name_parts = folder_.parent().attr('id').split(cyrus_delimiter); 
    449                     var acls = shared_acls[folder_name_parts[0]+cyrus_delimiter+folder_name_parts[1]]; 
    450                 } 
    451  
    452                 html = DataLayer.render("../prototype/modules/mail/templates/float_folder_menu.ejs", {name_folder : folder_name, flag : shared, acl : acls});                    
    453                     //FUNÇÃO DO eventNU FLUTUANTE EDITAR < BEGIN 
    454                 var esc = false; 
    455                 $(folder_).append(html).find(".float-menu-edit").click(function(){ 
    456                     var folder_id = $(this).parents(".closed:first").attr('id'); 
    457                     var name = $.trim($(this).parents(".closed:first").find("span:first").text().split("[")[0]); 
    458                     if($(this).parents(".closed:first").find("span:first").hasClass("selected")) 
    459                         return write_msg(get_lang("It's not possible rename this folder, because it is being used in the moment!")); 
    460                     if($(this).parents(".closed:first").find("span.selected").length) 
    461                         return write_msg(get_lang("It's not possible rename this folder, because its subfolder is being used in the moment!"));  
    462                     if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
    463                         return; 
    464                     $(this).parents(".closed:first").find("span:first").empty().append("<input class='new_folder folder' type='text' maxlength='100'></input>"); 
    465                     $(".new_folder").focus().keydown(function(event){ 
    466                         event.stopPropagation(); 
    467                         if(event.keyCode == 13){ 
    468                             if($(this).val() != ""){ 
    469                                 /* Verifica se existe caracteres especiais no nome da pasta ou se existe "local_" 
    470                                  * em parte do nome (palavra reservada para pastas locais) */ 
    471                                 if($(this).val().match(/[\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi) || $(this).val().indexOf("local_") != -1){ 
    472                                     return write_msg(get_lang("cannot create folder. try other folder name")); 
    473                                 } 
    474                                 var new_name = folder_id.replace(/[a-zA-Z0-9á-úÁ-Ú,=^\s_-]+$/, $(this).val()); 
    475                                 if($('[id="'+new_name+'"]').length){ 
    476                                     $(".folders-loading").removeClass("folders-loading"); 
    477                                     write_msg(get_lang("Mailbox already exists")); 
    478                                     return draw_new_tree_folder(); 
    479                                 } 
    480                                 $(".new_folder").parent().addClass("folders-loading"); 
    481                                  
    482                                 if($(this).parents("li").first().attr("id").indexOf("local_messages_") != -1){ 
    483                                     var idFolder = $(this).parents("li").first().attr("id").split("_")[2]; 
    484                                     expresso_mail_archive.renameFolder(idFolder, new_name); 
    485                                      cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    486                                 } else { 
    487  
    488                                 $.ajax({ 
    489                                     url : "controller.php?action=$this.imap_functions.ren_mailbox", 
    490                                     type : "POST", 
    491                                     data : "current="+folder_id+"&rename="+new_name, 
    492                                     success : function(data){ 
     560    $(".folder") 
     561    .not(".shared-folders, .followup-messages") 
     562    .parent() 
     563    .find(".folder") 
     564    .not($('#message-attach-dialog').find('.folder')) 
     565    .hover( 
     566    function() 
     567    { 
     568        //CASO A LI NÃO TENHA UM eventNU FLUTUANTE AINDA, O eventNU É ADICIONADO! 
     569        if(!$(this).children(":last").hasClass("float-menu") && !$(this).children(":last").hasClass("new_folder") && !($(this).next().hasClass("local-connect"))) 
     570        { /*se houver a classe local-connect, não adiciona o botão de conectar*/ 
     571            var folder_ = $(this); 
     572            var folder_name; 
     573            var shared = { 
     574                head: false, 
     575                valid: false 
     576            }; 
     577            if(folder_.parent().attr('id')) 
     578            { 
     579                folder_name = folder_.parent().attr('id').split(cyrus_delimiter); 
     580                folder_name = folder_name[folder_name.length - 1]; 
     581                shared.valid = folder_.parent().attr('id').search("user"+cyrus_delimiter) == 0 ? true : false; 
     582            } 
     583            else folder_name = "Root"; 
     584 
     585            if(shared.valid) 
     586            { 
     587                shared.head = folder_.parent().attr('id').split(cyrus_delimiter).length == 2 ? true : false; 
     588                var folder_name_parts = folder_.parent().attr('id').split(cyrus_delimiter); 
     589                var acls = shared_acls[folder_name_parts[0] + cyrus_delimiter + folder_name_parts[1]]; 
     590            } 
     591 
     592            html = DataLayer.render("../prototype/modules/mail/templates/float_folder_menu.ejs", { 
     593                name_folder: folder_name, 
     594                flag: shared, 
     595                acl: acls 
     596            }); 
     597            //FUNÇÃO DO eventNU FLUTUANTE EDITAR < BEGIN 
     598            var esc = false; 
     599            $(folder_).append(html).find(".float-menu-edit").click(function() 
     600            { 
     601                var folder_id = $(this).parents(".closed:first").attr('id'); 
     602                var name = $.trim($(this).parents(".closed:first").find("span:first").text().split("[")[0]); 
     603                if($(this).parents(".closed:first").find("span:first").hasClass("selected")) 
     604                { 
     605                    return write_msg(get_lang("It's not possible rename this folder, because it is being used in the moment!")); 
     606                } 
     607                if($(this).parents(".closed:first").find("span.selected").length) 
     608                { 
     609                    return write_msg(get_lang("It's not possible rename this folder, because its subfolder is being used in the moment!")); 
     610                } 
     611                if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
     612                { 
     613                    return; 
     614                } 
     615                $(this).parents(".closed:first").find("span:first").empty().append("<input class='new_folder folder' type='text' maxlength='100'></input>"); 
     616                $(".new_folder").focus().keydown(function(event) 
     617                { 
     618                    event.stopPropagation(); 
     619                    if(event.keyCode == 13) 
     620                    { 
     621                        if($(this).val() != "") 
     622                        { 
     623                            /* Verifica se existe caracteres especiais no nome da pasta ou se existe "local_" 
     624                             * em parte do nome (palavra reservada para pastas locais) */ 
     625                            if($(this).val().match(/[\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi) || $(this).val().indexOf("local_") != -1) 
     626                            { 
     627                                return write_msg(get_lang("cannot create folder. try other folder name")); 
     628                            } 
     629                            var new_name = folder_id.replace(/[a-zA-Z0-9á-úÁ-Ú,=^\s_-]+$/, $(this).val()); 
     630                            if($('[id="' + new_name + '"]').length) 
     631                            { 
     632                                $(".folders-loading").removeClass("folders-loading"); 
     633                                write_msg(get_lang("Mailbox already exists")); 
     634                                return draw_new_tree_folder(); 
     635                            } 
     636                            $(".new_folder").parent().addClass("folders-loading"); 
     637 
     638                            if($(this).parents("li").first().attr("id").indexOf("local_messages_") != -1) 
     639                            { 
     640                                var idFolder = $(this).parents("li").first().attr("id").split("_")[2]; 
     641                                expresso_mail_archive.renameFolder(idFolder, new_name); 
     642                                cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     643                            } 
     644                            else 
     645                            { 
     646                                $.ajax( 
     647                                { 
     648                                    url: "controller.php?action=$this.imap_functions.ren_mailbox", 
     649                                    type: "POST", 
     650                                    data: "current=" + folder_id + "&rename=" + new_name, 
     651                                    success: function(data) 
     652                                    { 
    493653                                        data = connector.unserialize(data); 
    494                                         if(data == "Permission denied"){ 
     654                                        if(data == "Permission denied") 
     655                                        { 
    495656                                            $(".folders-loading").removeClass("folders-loading"); 
    496657                                            cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     
    502663                                }); 
    503664 
    504                                 } 
    505                             }else{ 
    506                                 $(".new_folder").focusout(); 
    507                             } 
    508                         }else if( event.keyCode == 27){ 
    509                             draw_new_tree_folder(); 
    510                         } 
    511                     }).focusout(function(){ 
     665                            } 
     666                        } 
     667                        else 
     668                        { 
     669                            $(".new_folder").focusout(); 
     670                        } 
     671                    } 
     672                    else if(event.keyCode == 27) 
     673                    { 
    512674                        draw_new_tree_folder(); 
    513                     }).val(name); 
    514                 }) 
    515                 //FUNÇÃO DO eventNU FLUTUANTE EDITAR < END 
    516                 //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < BEGIN 
    517                 .end().find(".float-menu-remove").click(function(){ 
    518                      
    519                     var folder_id = $(this).parents(".closed:first").attr('id'); 
    520                     var folder_name = "<strong>"+$.trim($(this).parents(".closed:first").find(".folder").text().split("[")[0])+"</strong>"; 
    521                      
    522                     if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
    523                         return; 
    524                     $(this).parents(".closed:first").find(".folder").addClass("folders-loading");  
    525                      
    526                     if($(this).parents(".closed:first").find("ul").length){ 
    527                         $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    528                         return write_msg(get_lang("Delete/move subfolders first")); 
    529675                    } 
    530                     if($(this).parents(".closed:first").find("span.selected").length){ 
    531                         $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    532                         return write_msg(get_lang("It's not possible delete this folder, because it is being used in the moment!"));  
    533                     } 
    534                     var folder_span = $(this); 
    535                     var confirm_text = get_lang("Do you wish to exclude the folder "); 
    536  
    537                     $.Zebra_Dialog(confirm_text+folder_name, { 
    538                         'type': 'question', 
    539                         'overlay_opacity': '0.5', 
    540                                                 'custom_class': 'custom-zebra-filter', 
    541                         'buttons':  [get_lang('Yes'), get_lang('No')], 
    542                         'onClose':  function(caption) { 
    543  
    544                             if(caption == get_lang('Yes')){ 
    545                                 if(folder_span.parents("li").find("input").first().val() == "localFolder"){ 
    546                                     var idFolder = folder_span.parents("li").first().attr("id").split("_")[2]; 
    547                                     expresso_mail_archive.deleteFolder(idFolder, folder_name); 
    548                                      cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    549                                 } else { 
    550                                 $.ajax({ 
    551                                     url : "controller.php?action=$this.imap_functions.delete_mailbox", 
     676                }).focusout(function() 
     677                { 
     678                    draw_new_tree_folder(); 
     679                }).val(name); 
     680            }) 
     681            //FUNÇÃO DO eventNU FLUTUANTE EDITAR < END 
     682            //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < BEGIN 
     683            .end().find(".float-menu-remove").click(function() 
     684            { 
     685 
     686                var folder_id = $(this).parents(".closed:first").attr('id'); 
     687                var folder_name = "<strong>" + $.trim($(this).parents(".closed:first").find(".folder").text().split("[")[0]) + "</strong>"; 
     688 
     689                if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
     690                { 
     691                    return; 
     692                } 
     693                $(this).parents(".closed:first").find(".folder").addClass("folders-loading"); 
     694 
     695                if($(this).parents(".closed:first").find("ul").length) 
     696                { 
     697                    $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     698                    return write_msg(get_lang("Delete/move subfolders first")); 
     699                } 
     700                if($(this).parents(".closed:first").find("span.selected").length) 
     701                { 
     702                    $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     703                    return write_msg(get_lang("It's not possible delete this folder, because it is being used in the moment!")); 
     704                } 
     705                var folder_span = $(this); 
     706                var confirm_text = get_lang("Do you wish to exclude the folder "); 
     707 
     708                $.Zebra_Dialog(confirm_text + folder_name, { 
     709                    'type': 'question', 
     710                    'overlay_opacity': '0.5', 
     711                    'custom_class': 'custom-zebra-filter', 
     712                    'buttons': [get_lang('Yes'), get_lang('No')], 
     713                    'onClose': function(caption) 
     714                    { 
     715 
     716                        if(caption == get_lang('Yes')) 
     717                        { 
     718                            if(folder_span.parents("li").find("input").first().val() == "localFolder") 
     719                            { 
     720                                var idFolder = folder_span.parents("li").first().attr("id").split("_")[2]; 
     721                                expresso_mail_archive.deleteFolder(idFolder, folder_name); 
     722                                cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     723                            } 
     724                            else 
     725                            { 
     726                                $.ajax( 
     727                                { 
     728                                    url: "controller.php?action=$this.imap_functions.delete_mailbox", 
    552729                                    type: "POST", 
    553                                     data : "del_past="+folder_id, 
    554                                     success : function(data){ 
     730                                    data: "del_past=" + folder_id, 
     731                                    success: function(data) 
     732                                    { 
    555733                                        data = connector.unserialize(data); 
    556                                         if(data == "Mailbox does not exist"){ 
     734                                        if(data == "Mailbox does not exist") 
     735                                        { 
    557736                                            $(".folders-loading").removeClass("folders-loading"); 
    558737                                            return write_msg(get_lang("Mailbox does not exist")); 
    559                                         }else if(data == "Permission denied"){ 
     738                                        } 
     739                                        else if(data == "Permission denied") 
     740                                        { 
    560741                                            $(".folders-loading").removeClass("folders-loading"); 
    561742                                            cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     
    566747                                    } 
    567748                                }); 
     749                            } 
     750                        } 
     751                        else 
     752                        { 
     753                            folder_span.parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     754                            return; 
     755                        } 
     756                    } 
     757                }); 
     758            }) 
     759            //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < END 
     760            //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < BEGIN 
     761            .end().find(".float-menu-new").click(function() 
     762            { 
     763                $(this).parents(".float-menu").hide(); 
     764                var selected_li = $(this).parents(".closed:first"); 
     765                if(selected_li.find("ul:first").length) 
     766                { 
     767                    var new_folder = $("<li><input class='new_folder folder' type='text' maxlength='100'></input></li>").appendTo(selected_li.find("ul:first")); 
     768                    if(selected_li.find(".expandable-hitarea").length) 
     769                    { 
     770                        selected_li.find(".expandable-hitarea").trigger('click'); 
     771                    } 
     772                    selected_li.find("ul:first").treeview( 
     773                    { 
     774                        add: new_folder 
     775                    }); 
     776                } 
     777                else if(selected_li.length) 
     778                { 
     779                    var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li); 
     780                    selected_li.treeview( 
     781                    { 
     782                        add: new_folder 
     783                    }); 
     784                } 
     785                else 
     786                { 
     787                    selected_li = $(this).parents("li:first"); 
     788                    if($(this).parents(".head_folder").parent().find(".expandable-hitarea").length) 
     789                    { 
     790                        $(this).parents(".head_folder").parent().find(".expandable-hitarea").trigger('click'); 
     791                    } 
     792                    var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li); 
     793                    selected_li.treeview( 
     794                    { 
     795                        add: new_folder 
     796                    }); 
     797                } 
     798                var existsIdenticalFolder = false; 
     799                selected_li.find(".new_folder").Watermark("Nova Pasta").focus().keydown(function(event) 
     800                { 
     801                    event.stopPropagation(); 
     802 
     803                    existsIdenticalFolder = false; 
     804 
     805                    var ok = false; 
     806                    var makeChildren = function(auxNameFolder, father) 
     807                        { 
     808                            if(auxNameFolder.length == 0) return true; 
     809 
     810 
     811                            if(auxNameFolder[0] == "") 
     812                            { 
     813                                auxNameFolder.shift(); 
     814                                makeChildren(auxNameFolder, father); 
     815                                return true; 
     816                            } 
     817                            if(ok == false) 
     818                            { 
     819                                expresso_mail_archive.createFolder((father ? father : "inbox"), auxNameFolder[0]); 
     820                            } 
     821 
     822                            expresso_mail_archive.getFoldersList(father); 
     823 
     824                            for(var ii = 0; ii < expresso_mail_archive.folders.length; ii++) 
     825                            { 
     826                                if(auxNameFolder[0] == expresso_mail_archive.folders[ii].name) 
     827                                { 
     828                                    auxNameFolder.shift(); 
     829                                    save = expresso_mail_archive.folders; 
     830                                    expresso_mail_archive.createFolder(expresso_mail_archive.folders[ii].id, auxNameFolder[0]); 
     831                                    expresso_mail_archive.folders = save; 
     832                                    ok = true; 
     833                                    makeChildren(auxNameFolder, expresso_mail_archive.folders[ii].id); 
     834                                    return true; 
    568835                                } 
    569                             }else{ 
    570                                 folder_span.parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    571                                 return; 
    572                             } 
    573                         } 
    574                     }); 
    575                     /* if(!confirm(confirm_text + folder_name)){ 
    576                         $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    577                         return; 
    578                     } */ 
    579                 }) 
    580                 //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < END 
    581                 //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < BEGIN 
    582                 .end().find(".float-menu-new").click(function(){ 
    583                     $(this).parents(".float-menu").hide(); 
    584                     var selected_li = $(this).parents(".closed:first"); 
    585                     if(selected_li.find("ul:first").length){ 
    586                         var new_folder = $("<li><input class='new_folder folder' type='text' maxlength='100'></input></li>").appendTo(selected_li.find("ul:first"));                                 
    587                         if(selected_li.find(".expandable-hitarea").length){ 
    588                             selected_li.find(".expandable-hitarea").trigger('click'); 
    589                         } 
    590                         selected_li.find("ul:first").treeview({ 
    591                             add: new_folder 
    592                         }); 
    593                     }else if(selected_li.length){ 
    594                         var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li);                                 
    595                         selected_li.treeview({ 
    596                             add: new_folder 
    597                         }); 
    598                     }else{ 
    599                         selected_li = $(this).parents(".head_folder").parent(); 
    600                         if($(this).parents(".head_folder").parent().find(".expandable-hitarea").length){ 
    601                             $(this).parents(".head_folder").parent().find(".expandable-hitarea").trigger('click'); 
    602                         } 
    603                         var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li);                                 
    604                         selected_li.treeview({ 
    605                             add: new_folder 
    606                         }); 
     836                            } 
     837                        } 
     838 
     839 
     840                    if(event.keyCode == 13) 
     841                    { 
     842                        /* Verifica se existe caracteres especiais no nome da pasta ou se existe "local_" 
     843                         * em parte do nome (palavra reservada para pastas locais) */ 
     844                        if($(this).val().match(/[\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi) || $(this).val().indexOf("local_") != -1) 
     845                        { 
     846                            return write_msg(get_lang("cannot create folder. try other folder name")); 
     847                        } 
     848                        if($(this).parents("li").find("input[type=hidden]").val() == "localFolder") 
     849                        { 
     850 
     851                            $(".new_folder").parent().addClass("folders-loading"); 
     852 
     853                            var folderName = $(this).val(); 
     854                            var folder = (folderName != "" ? folderName : get_lang("New Folder")); 
     855                            var father = typeof(selected_li.attr('id')) != "undefined" ? selected_li.attr('id').split("_")[2] : "home"; 
     856 
     857                            $(this).parents(".treeview:first").find("li").each(function() 
     858                            { 
     859                                var eachFolder = $(this).find("span:first").text().trim(); 
     860                                if(folder == eachFolder) 
     861                                { 
     862                                    existsIdenticalFolder = true; 
     863                                    return false; 
     864                                } 
     865                            }); 
     866 
     867                            if(existsIdenticalFolder) 
     868                            { 
     869                                event.stopPropagation(); 
     870                                write_msg(get_lang("Mailbox already exists")); 
     871                                draw_new_tree_folder(); 
     872                                return false; 
     873                            } 
     874 
     875                            if(folderName.indexOf("/") != -1) 
     876                            { 
     877                                auxNameFolder = folderName.split("/"); 
     878 
     879                                makeChildren(auxNameFolder, father); 
     880                            } 
     881                            else 
     882                            { 
     883                                var folder = (folderName != "" ? folderName : get_lang("New Folder")); 
     884                                create_new_local_folder((selected_li.attr('id') ? selected_li.attr('id') : "inbox"), folder); 
     885                            } 
     886 
     887                            cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     888                        } 
     889                        else 
     890                        { 
     891                            if($('[id="' + (selected_li.attr('id') ? selected_li.attr('id') : "INBOX") + cyrus_delimiter + $(this).val() + '"]').length) 
     892                            { 
     893                                $(".folders-loading").removeClass("folders-loading"); 
     894                                write_msg(get_lang("Mailbox already exists")); 
     895                                return draw_new_tree_folder(); 
     896                            } 
     897                            $(".new_folder").parent().addClass("folders-loading"); 
     898                            create_new_folder(($(this).val() != "" ? $(this).val() : get_lang("New Folder")), (selected_li.attr('id') ? selected_li.attr('id') : "INBOX")); 
     899                        } 
     900 
    607901                    } 
    608                     var existsIdenticalFolder = false; 
    609                     selected_li.find(".new_folder").Watermark("Nova Pasta").focus().keydown(function(event){ 
    610                         event.stopPropagation(); 
    611  
    612                         existsIdenticalFolder = false; 
    613  
    614                     var ok = false; 
    615                     var makeChildren = function(auxNameFolder, father){ 
    616                         if(auxNameFolder.length == 0) return true; 
    617  
    618  
    619                         if(auxNameFolder[0] == ""){ 
    620                             auxNameFolder.shift(); 
    621                             makeChildren(auxNameFolder, father); 
    622                             return true; 
    623                         } 
    624                         if(ok == false) 
    625                             expresso_mail_archive.createFolder((father ? father : "inbox"), auxNameFolder[0]); 
    626                          
    627                         expresso_mail_archive.getFoldersList(father); 
    628  
    629                         for(var ii =0; ii<expresso_mail_archive.folders.length; ii++){ 
    630                             if(auxNameFolder[0] == expresso_mail_archive.folders[ii].name){ 
    631                                  auxNameFolder.shift(); 
    632                                  save = expresso_mail_archive.folders; 
    633                                  expresso_mail_archive.createFolder(expresso_mail_archive.folders[ii].id, auxNameFolder[0]); 
    634                                  expresso_mail_archive.folders = save;  
    635                                  ok = true; 
    636                                  makeChildren(auxNameFolder, expresso_mail_archive.folders[ii].id); 
    637                                  return true; 
    638                             } 
    639                         } 
     902                    else if(event.keyCode == 27) 
     903                    { 
     904                        draw_new_tree_folder(); 
    640905                    } 
    641906 
    642  
    643                         if(event.keyCode == 13){ 
    644                             /* Verifica se existe caracteres especiais no nome da pasta ou se existe "local_" 
    645                              * em parte do nome (palavra reservada para pastas locais) */ 
    646                             if($(this).val().match(/[\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi) || $(this).val().indexOf("local_") != -1){ 
    647                                 return write_msg(get_lang("cannot create folder. try other folder name")); 
    648                             } 
    649                             if($(this).parents("li").find("input[type=hidden]").val() == "localFolder"){ 
    650  
    651                                  $(".new_folder").parent().addClass("folders-loading"); 
    652  
    653                                  var folderName = $(this).val(); 
    654                                  var folder = (folderName != "" ? folderName : get_lang("New Folder")); 
    655                                  var father = typeof(selected_li.attr('id')) != "undefined" ? selected_li.attr('id').split("_")[2] : "home"; 
    656  
    657                                  $(this).parents(".treeview:first").find("li").each(function(){ 
    658                                      var eachFolder = $(this).find("span:first").text().trim(); 
    659                                      if(folder == eachFolder){ 
    660                                         existsIdenticalFolder = true; 
    661                                         return false; 
    662                                      }   
    663                                  }); 
    664  
    665                                  if(existsIdenticalFolder){ 
    666                                     event.stopPropagation(); 
    667                                     write_msg(get_lang("Mailbox already exists")); 
    668                                     draw_new_tree_folder(); 
    669                                     return false; 
    670                                  } 
    671  
    672                                  if(folderName.indexOf("/") != -1){ 
    673                                     auxNameFolder = folderName.split("/"); 
    674  
    675                                     makeChildren(auxNameFolder, father); 
    676                                  } else { 
    677                                      var folder = (folderName != "" ? folderName : get_lang("New Folder")); 
    678                                      create_new_local_folder((selected_li.attr('id') ? selected_li.attr('id') : "inbox") , folder); 
    679                                  } 
    680  
    681                                  cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    682                             } else { 
    683                                 if($('[id="'+ (selected_li.attr('id')? selected_li.attr('id') : "INBOX") + cyrus_delimiter + $(this).val()+'"]').length){ 
    684                                     $(".folders-loading").removeClass("folders-loading"); 
    685                                     write_msg(get_lang("Mailbox already exists")); 
    686                                     return draw_new_tree_folder(); 
    687                                 } 
    688                                 $(".new_folder").parent().addClass("folders-loading"); 
    689                                 create_new_folder(($(this).val() != "" ? $(this).val() : get_lang("New Folder")), (selected_li.attr('id')? selected_li.attr('id') : "INBOX")); 
    690                             } 
    691  
    692                         }else if( event.keyCode == 27){ 
    693                             draw_new_tree_folder(); 
    694                         } 
    695  
    696                     }).focusout(function(){ 
    697                         if(!existsIdenticalFolder){ 
    698                             draw_new_tree_folder(); 
    699                         } 
    700                          
    701                     }); 
    702                 }).end().find(".float-menu-export").click(function(){ 
    703                     //proxy_mensagens.export_all_messages($(this).parents("li:first").attr("id")) 
    704  
    705                     var name_box = $(this).parents("li:first").attr("id"); 
    706  
    707                     var name_folder = name_box.split(cyrus_delimiter)[name_box.split(cyrus_delimiter).length-1]; 
    708  
    709  
    710                     var hand_export = function(data){ 
    711                                                 clean_msg(); 
    712                         if(!data){ 
     907                }).focusout(function() 
     908                { 
     909                    if(!existsIdenticalFolder) 
     910                    { 
     911                        draw_new_tree_folder(); 
     912                    } 
     913 
     914                }); 
     915            }).end().find(".float-menu-export").click(function() 
     916            { 
     917                var name_box = $(this).parents("li:first").attr("id"); 
     918 
     919                var name_folder = name_box.split(cyrus_delimiter)[name_box.split(cyrus_delimiter).length - 1]; 
     920 
     921 
     922                var hand_export = function(data) 
     923                    { 
     924                        clean_msg(); 
     925                        if(!data) 
     926                        { 
    713927                            write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.')) 
    714                         }else if(data["empty_folder"] || data == "empty_folder"){ 
     928                        } 
     929                        else if(data["empty_folder"] || data == "empty_folder") 
     930                        { 
    715931                            write_msg(get_lang("The selected folder is empty.")); 
    716                         }else 
    717                                                         download_attachments(null, null, data, null,null, name_folder +'.zip');                                          
     932                        } 
     933                        else download_attachments(null, null, data, null, null, name_folder + '.zip'); 
    718934                    } 
    719                     if($(this).parents("li:first").find("input[type=hidden]:first").val() == "localFolder"){                         
    720                           expresso_mail_archive.listMessages(name_box.split("_")[2]); 
    721                           var msgsArchive = expresso_mail_archive.messageslisted; 
    722                          
    723                            buildExportArchiver(msgsArchive, name_box); 
    724  
    725                     } else { 
    726                           cExecute("$this.exporteml.export_all",hand_export,"folder="+name_box);   
    727                     } 
    728                     write_msg(get_lang('You must wait while the messages will be exported...'),true);         
    729                 }); 
    730                 //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < END 
    731             } 
    732             if(!$(".new_folder").length){ 
    733                 $(this).find(".float-menu:first").css("display", ""); 
    734             } 
    735         }, 
    736         function(){ 
    737             $(this).find(".float-menu:first").hide(); 
    738         } 
    739     ); 
    740     $("#new_m").html($('.selected').find(".folder_unseen").html() ? $('.selected').find(".folder_unseen").html() : "0").css("color", "red"); 
     935                if($(this).parents("li:first").find("input[type=hidden]:first").val() == "localFolder") 
     936                { 
     937                    expresso_mail_archive.listMessages(name_box.split("_")[2]); 
     938                    var msgsArchive = expresso_mail_archive.messageslisted; 
     939 
     940                    buildExportArchiver(msgsArchive, name_box); 
     941 
     942                } 
     943                else 
     944                { 
     945                    cExecute("$this.exporteml.export_all", hand_export, "folder=" + name_box); 
     946                } 
     947                write_msg(get_lang('You must wait while the messages will be exported...'), true); 
     948            }); 
     949            //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < END 
     950        } 
     951        if(!$(".new_folder").length) 
     952        { 
     953            $(this).find(".float-menu:first").css("display", ""); 
     954        } 
     955    }, function() 
     956    { 
     957        $(this).find(".float-menu:first").hide(); 
     958    }); 
     959    $("#new_m") 
     960    .html($('.selected .message_unseen_count:first .folder_unseen').html() ? $('.selected .message_unseen_count:first .folder_unseen').html() : "0") 
     961    .css("color", "red"); 
    741962} 
  • branches/2.5/prototype/modules/mail/js/followupflag.js

    r7780 r8232  
    7373                winElement.dialog("close"); 
    7474                $.each(selectedMessageIds, function(index, value){       
    75                         $('tr#' + value + ' .td-followup-flag').find('img').remove(); 
     75                        $('tr#' + value + ' .td-followup-flag')//.find('img').remove(); 
    7676                }); 
    7777                 
     
    173173                                                         alert('Uma ou mais mensagens não puderam ser sinalizadas. \nDetalhes do erro: limite de flags atingido para esta pasta.');      
    174174                                                } 
    175                                                 $.each(selectedMessageIds,function(index,value){         
    176                                                         var flagged = DataLayer.get('followupflagged', {filter: [ 
    177                                                                 'AND',  
    178                                                                 ['=', 'messageNumber', value],  
    179                                                                 ['=', 'folderName', folder_name] 
    180                                                         ]}); 
    181                                                         if (!flagged) 
    182                                                                 $('#td_message_followup_'+value).find(".flag-edited").css("background","#cccccc").find('img').remove(); 
    183                                                          
    184                                                         $('tr#' + value + ' .td-followup-flag').find('img').remove(); 
    185                                                 });                                      
     175                                                /*DIVIDE O ARRAY EM ARRAYS MENORES*/ 
     176                                                var splice = function(arr){ 
     177                                                        var newArray = []; 
     178                                                        while (arr.length > 500){ 
     179                                                                newArray[newArray.length] = arr.splice(0,500); 
     180                                                        } 
     181                                                        if (arr.length)  
     182                                                                newArray[newArray.length] = arr; 
     183                                                        return newArray; 
     184                                                } 
     185                                                if (selectedMessageIds.length > 500){ 
     186                                                        var arrayIndex = selectedMessageIds; 
     187                                                        $.each(splice(arrayIndex),function(iterator,subarray){ 
     188                                                                var flaggeds = DataLayer.get('followupflagged', {filter: [ 
     189                                                                                'AND',  
     190                                                                                ['IN', 'messageNumber', subarray],  
     191                                                                                ['IN', 'folderName', folder_name] 
     192                                                                ]}); 
     193                                                                $.each(subarray,function(index,value){   
     194                                                                        var flagged = false; 
     195                                                                        $.each(flaggeds,function(i,v){ 
     196                                                                                if (v.messageNumber == value) 
     197                                                                                        flagged = true; 
     198                                                                        }); 
     199                                                                        if (!flagged) 
     200                                                                                $('#td_message_followup_'+value).find(".flag-edited").css("background","#cccccc").find('img').remove();                                          
     201                                                                        $('tr#' + value + ' .td-followup-flag').find('img').remove(); 
     202                                                                }); 
     203                                                        });      
     204                                                }                                        
    186205                                        }); 
    187206                                        winElement.find('.menu-configure-followupflag .save').button("option", "disabled", true); 
     
    267286                         
    268287                        $.each(selectedMessageIds, function(index, value){       
    269                                 $('tr#' + value + ' .td-followup-flag').find('img').remove(); 
     288                                $('tr#' + value + ' .td-followup-flag').find('img')//.remove(); 
    270289                        }); 
    271290                         
     
    756775 
    757776} 
    758                  
    759 $('#main_table').ready(function(){ 
    760         handlerMessageFilter = function (data) { 
    761                 alarmFollowupflagged(null, data); 
    762         } 
    763         /* Busca  nas pastas indexadas para ver se há novas mensagens com a flag $FilteredMessage */ 
    764         cExecute ("$this.imap_functions.getFlaggedAlertMessages&folders="+fromRules, handlerMessageFilter); 
    765 }); 
    766  
     777 
     778if(preferences['use_alert_filter_criteria'] == "1") 
     779{ 
     780    $('#main_table').ready(function(){ 
     781        handlerMessageFilter = function (data) { 
     782            alarmFollowupflagged(null, data); 
     783        } 
     784        /* Busca  nas pastas indexadas para ver se há novas mensagens com a flag $FilteredMessage */ 
     785        cExecute ("$this.imap_functions.getFlaggedAlertMessages&folders="+fromRules, handlerMessageFilter); 
     786    }); 
     787} 
     788 
     789 
  • branches/2.5/prototype/modules/mail/js/label.js

    r7750 r8232  
    8383} 
    8484 
     85function returnLabels(msgsReference){ 
     86        var folderIndex = {}; 
     87   for (var i=0; i < msgsReference.length; i++) {        
     88       if( folderIndex[ msgsReference[i].folderName] ){         
     89           folderIndex[ msgsReference[i].folderName].push( msgsReference[i].messageNumber );           
     90       }else{ 
     91           folderIndex[ msgsReference[i].folderName] = [ msgsReference[i].messageNumber ]; 
     92       }       
     93   } 
     94   var labels = [];  
     95   for(var folder in folderIndex){ 
     96                var currentLabes = DataLayer.get('labeled',{ filter:[ 
     97               'AND', 
     98               ['=', 'folderName', folder ], 
     99               ['IN', 'messageNumber', folderIndex[ folder ] ] 
     100               ], criteria: {deepness: '2'}}); 
     101 
     102                if( $.isArray( currentLabes ) ) 
     103                        labels = labels.concat( currentLabes ); 
     104   } 
     105   var labelsIndex = {}; 
     106   $.each( labels, function(i, e){ 
     107       if( labelsIndex[ e.messageNumber ] ){ 
     108           labelsIndex[ e.messageNumber ][ 'labels' ].push( e.label ); 
     109       }else{ 
     110           labelsIndex[ e.messageNumber ] = e; 
     111           labelsIndex[ e.messageNumber ][ 'labels' ] = []; 
     112           labelsIndex[ e.messageNumber ][ 'labels' ].push( e.label ); 
     113       } 
     114   }); 
     115   return labelsIndex; 
     116} 
     117 
     118 
    85119function updateMessageLabels(msgsReference){ 
    86         for(var i = 0; i < msgsReference.length; i++){ 
    87                 updateLabelsColumn({msg_number: msgsReference[i].messageNumber, boxname: msgsReference[i].folderName}); 
    88         }        
     120        var labelsIndex = returnLabels(msgsReference); 
     121   $.each(labelsIndex,function(index,e){ 
     122           updateLabelsColumn({msg_number: e.messageNumber, boxname: e.folderName,labels: e.labels, forceIcon: true}); 
     123   }); 
    89124} 
    90125 
     
    164199                                                winElement.find('.edit').unbind("click").click(editLabel);                               
    165200                                                winElement.find('.close').click(deleteLabel); 
    166                                                  
    167                                                 draw_tree_labels(); 
     201                        if( preferences['use_followupflags_and_labels'] == "1" ) 
     202                                                    draw_tree_labels(); 
    168203                                                var msgsReference = DataLayer.get('labeled', {filter: ['=', 'labelId', ''+labelEdited.id]}, true); 
    169204                                                updateMessageLabels(msgsReference); 
     
    291326                        .find("li:first") 
    292327                        .fadeIn("slow").click(configureLabel); 
    293                          
    294                         draw_tree_labels(); 
     328            if( preferences['use_followupflags_and_labels'] == "1" ) 
     329                            draw_tree_labels(); 
    295330 
    296331                        $(".label-list-container .label-list li").not(".empty-item").click(function(){ 
  • branches/2.5/prototype/modules/mail/templates/attachment.ejs

    r7697 r8232  
    1 <div id="fileupload_msg<%=data.ID%>" class="fileupload" style="margin : 5px 0px 0px 0px; padding-bottom : 5px;"> 
    2     <div class="button-files-upload"> 
    3     <button class="fileUploadButton">Anexar Arquivos</button> 
    4                         <INPUT type="file" id="fileInput<%=data.ID%>" name="files[]" style="display:none;" multiple></INPUT> 
     1<div id="fileupload_msg<%=data.ID%>" class="fileupload" style="margin : 15px 0px -5px -10px; padding-bottom : 5px;"> 
     2        <div class="row fileupload-buttonbar"> 
     3                <div class="button-files-upload"> 
     4                        <<%= is_webkit ? 'button' : 'span style="height: 22px; cursor:pointer;"' %>  class="fileinput-button button small"> 
     5                                <span style="margin-top: 4px; cursor:pointer;"><i class="icon-plus icon-white"></i>Anexar arquivos</span> 
     6                                <INPUT type="file" id="fileInput<%=data.ID%>" name="files[]" multiple></INPUT> 
    57                        </<%= is_webkit ? 'button' : 'span' %>> 
    6                         <button class="message-attach-link button-small"> 
     8                        <button class="message-attach-link button small"> 
    79                                <span>Anexar mensagens</span> 
    810                        </button> 
    9     </div> 
    10 <div class="files-list"> 
     11                </div> 
     12        </div> 
     13        <br /> 
     14        <div class="files-list"> 
    1115                <div class="attachments-list ui-corner-all" style="display:none;"></div> 
    1216        </div> 
  • branches/2.5/prototype/modules/mail/templates/detailedfoldertree.ejs

    r8113 r8232  
    55                        Inbox: {name:'Caixa de Entrada', classe:'inbox'},  
    66                }; 
    7     specialFolders[outboxfolder] = {name: 'Caixa de Saída', classe:'outbox'}; 
     7    specialFolders[outboxfolder] = {name: 'Caixa de Saï¿œda', classe:'outbox'}; 
    88        specialFolders[trashfolder] = {name:'Lixeira', classe:'trash'}; 
    99        specialFolders[draftsfolder] = {name:'Rascunhos', classe:'drafts'}; 
     
    2626                  %><li id="<%= array_trees[i].id %>" class="closed"><span class="folder <%= folder_class %>" title="<%= folder_name %>" style="text-align : left; position : static;"><%= folder_name %> 
    2727                  <% if(array_trees[i].messageCount.unseen > 0){        %> 
    28                         <span style="text-align : left;">[<label id="dftree_<%= array_trees[i].id%>_unseen" class="folder_unseen" style="color : red; text-align : left;"><%= array_trees[i].messageCount.unseen %></label>]</span> 
    29                   <% }  %> 
     28                        <span class="message_unseen_count" style="text-align : left;">[<label id="dftree_<%= array_trees[i].id%>_unseen" class="folder_unseen" style="color : red; text-align : left;"><%= array_trees[i].messageCount.unseen %></label>]</span> 
     29          <% }  %> 
    3030                  <% if(array_trees[i].children_unseen > 0){    %> 
    31                         <span style="text-align : left;">[<label id="dftree_<%= array_trees[i].id%>_children_unseen" class="folder_unseen" style="color : blue; text-align : left;"><%= array_trees[i].children_unseen %></label>]</span> 
     31                        <span style="text-align : left;">[<label id="dftree_<%= array_trees[i].id%>_children_unseen" class="folder_children_unseen" style="color : blue; text-align : left;"><%= array_trees[i].children_unseen %></label>]</span> 
    3232                  <% }  %> 
    3333                  </span> 
     
    6767 
    6868          <%}%> 
     69        <% if(preferences['use_followupflags_and_labels'] == "1"){%> 
    6970          <li><span class="folder head_folder all_accomp followup-messages">Para acompanhamento</span> 
     71          <%}%> 
    7072          </li> 
    7173        </ul> 
  • branches/2.5/prototype/rest/catalog/SharedGroupResource.php

    r6578 r8232  
    8585 
    8686            //Recupera os grupos do usuario 
    87             $groups = Controller::find(array('concept' => 'contactGroup'), false, array('filter' => array('=', 'user', $ownerId), 'order' => array('name'))); 
    88  
     87        $groups = Controller::find(array('concept' => 'contactGroup'), false, array('filter' => array('=','id', $id), 'AND' => array('=','user', $ownerId) , 'order' => array('name'))); 
    8988            if($groups){ 
    9089                foreach($groups[0]['contacts'] as $value){ 
  • branches/2.5/prototype/services/ImapServiceAdapter.php

    r7863 r8232  
    178178                            $criteria[ $filter[$i][0] ] = array( 'criteria' => $filter[$i][2], 'filter' => $filter[$i][1] ); 
    179179                        } 
    180  
    181180                        return $this->searchSieveRule($criteria); 
    182181                                        } 
  • branches/2.5/prototype/services/PostgreSQL.php

    r7961 r8232  
    4747    private $config; //Configuração 
    4848    public  $error = false; //Armazena um erro caso ocorra 
    49     private $maps; //Cache de maps  
    50     private $tables;  
    51   
    52     public function find ( $uri, $justthese = false, $criteria = false )  
    53     {  
    54         $condition = '';  
    55   
    56         if(!isset($this->maps[$uri['concept']]) || !isset($this->tables[$uri['concept']]))  
    57         {  
    58             $this->maps[$uri['concept']] = Config::get($uri['concept'], 'PostgreSQL.mapping');  
    59             $this->tables[$uri['concept']] =  Config::get($uri['concept'],'PostgreSQL.concept');  
    60         }  
    61   
    62         $tables = $this->tables[$uri['concept']];  
    63   
    64         $justthese = self::parseJustthese($justthese, $this->maps[$uri['concept']] , $this->tables[$uri['concept']]);  
    65   
    66         if(isset($criteria['condition']))  
    67         {  
    68             $pc = $this->parseCondition($criteria['condition']);  
    69   
    70             if(is_array($pc))  
    71             {  
    72                 if(!in_array($this->tables[$uri['concept']], $pc['tables']))  
    73                     $pc['tables'][] = $this->tables[$uri['concept']];  
    74   
    75                 $tables = implode(',', $pc['tables'] );  
    76                 $condition .= ' WHERE ' . $pc['conditions'];  
    77             }  
    78   
    79         }  
    80   
    81         $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $this->maps[$uri['concept']] , $condition , $this->tables[$uri['concept']]) : $condition;  
    82   
    83         return $this->execSql( 'SELECT '.$justthese['select'].' FROM '. $tables .' '.$criteria );  
    84     }  
    85   
    86    public function read ( $uri, $justthese = false , $criteria = false)  
    87    {  
    88        if(!isset($this->maps[$uri['concept']]) || !isset($this->tables[$uri['concept']]))  
    89        {  
    90            $this->maps[$uri['concept']] = Config::get($uri['concept'], 'PostgreSQL.mapping');  
    91            $this->tables[$uri['concept']] =  Config::get($uri['concept'],'PostgreSQL.concept');  
    92        }  
    93   
    94        $condition = ' WHERE '.$this->tables[$uri['concept']].'.'.$this->maps[$uri['concept']]['id'].' = \''.addslashes( $uri['id'] ).'\'';  
    95        $justthese = self::parseJustthese($justthese, $this->maps[$uri['concept']] , $this->tables[$uri['concept']]);  
    96        $tables = $this->tables[$uri['concept']];  
    97   
    98        if(isset($criteria['condition']))  
    99        {  
    100            $pc = $this->parseCondition($criteria['condition']);  
    101   
    102            if(is_array($pc))  
    103            {  
    104                if(!in_array($this->tables[$uri['concept']], $pc['tables']))  
    105                    $pc['tables'][] = $this->tables[$uri['concept']];  
    106   
    107                $tables = implode(',', $pc['tables'] );  
    108                $condition .= ' AND ' .  $pc['conditions'];  
    109            }  
    110        }  
    111   
    112        $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $this->maps[$uri['concept']] , $condition , $this->tables[$uri['concept']]) : $condition;  
    113   
    114        return $this->execSql( 'SELECT '.$justthese['select'].' FROM '. $tables . ' ' . $criteria , true );  
     49    private $maps; //Cache de maps 
     50    private $tables; 
     51 
     52    public function find ( $uri, $justthese = false, $criteria = false ) 
     53    { 
     54        $condition = ''; 
     55 
     56        if(!isset($this->maps[$uri['concept']]) || !isset($this->tables[$uri['concept']])) 
     57        { 
     58            $this->maps[$uri['concept']] = Config::get($uri['concept'], 'PostgreSQL.mapping'); 
     59            $this->tables[$uri['concept']] =  Config::get($uri['concept'],'PostgreSQL.concept'); 
     60        } 
     61 
     62        $tables = $this->tables[$uri['concept']]; 
     63 
     64        $justthese = self::parseJustthese($justthese, $this->maps[$uri['concept']] , $this->tables[$uri['concept']]); 
     65 
     66        if(isset($criteria['condition'])) 
     67        { 
     68            $pc = $this->parseCondition($criteria['condition']); 
     69 
     70            if(is_array($pc)) 
     71            { 
     72                if(!in_array($this->tables[$uri['concept']], $pc['tables'])) 
     73                    $pc['tables'][] = $this->tables[$uri['concept']]; 
     74 
     75                $tables = implode(',', $pc['tables'] ); 
     76                $condition .= ' WHERE ' . $pc['conditions']; 
     77            } 
     78 
     79        } 
     80 
     81        $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $this->maps[$uri['concept']] , $condition , $this->tables[$uri['concept']]) : $condition; 
     82 
     83        return $this->execSql( 'SELECT '.$justthese['select'].' FROM '. $tables .' '.$criteria ); 
     84    } 
     85 
     86   public function read ( $uri, $justthese = false , $criteria = false) 
     87   { 
     88       if(!isset($this->maps[$uri['concept']]) || !isset($this->tables[$uri['concept']])) 
     89       { 
     90           $this->maps[$uri['concept']] = Config::get($uri['concept'], 'PostgreSQL.mapping'); 
     91           $this->tables[$uri['concept']] =  Config::get($uri['concept'],'PostgreSQL.concept'); 
     92       } 
     93 
     94       $condition = ' WHERE '.$this->tables[$uri['concept']].'.'.$this->maps[$uri['concept']]['id'].' = \''.addslashes( $uri['id'] ).'\''; 
     95       $justthese = self::parseJustthese($justthese, $this->maps[$uri['concept']] , $this->tables[$uri['concept']]); 
     96       $tables = $this->tables[$uri['concept']]; 
     97 
     98       if(isset($criteria['condition'])) 
     99       { 
     100           $pc = $this->parseCondition($criteria['condition']); 
     101 
     102           if(is_array($pc)) 
     103           { 
     104               if(!in_array($this->tables[$uri['concept']], $pc['tables'])) 
     105                   $pc['tables'][] = $this->tables[$uri['concept']]; 
     106 
     107               $tables = implode(',', $pc['tables'] ); 
     108               $condition .= ' AND ' .  $pc['conditions']; 
     109           } 
     110       } 
     111 
     112       $criteria = ($criteria !== false) ? $this->parseCriteria ( $criteria , $this->maps[$uri['concept']] , $condition , $this->tables[$uri['concept']]) : $condition; 
     113 
     114       return $this->execSql( 'SELECT '.$justthese['select'].' FROM '. $tables . ' ' . $criteria , true ); 
    115115    } 
    116116     
     
    132132        return $this->execSql('UPDATE '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '. self::parseUpdateData( $data ,$map).' '.self::parseCriteria($criteria , $map)); 
    133133    } 
    134   
     134 
    135135    public function update ( $uri,  $data, $criteria = false ){ 
    136136            $map = Config::get($uri['concept'], 'PostgreSQL.mapping'); 
    137         $criteria = ($criteria !== false) ?  
    138             $this->parseCriteria ( $criteria , $map , ' WHERE '.$map['id'].' = \''.pg_escape_string( $uri['id'] ).'\'') : ' WHERE '.$map['id'].' = \''.pg_escape_string( $uri['id'] ).'\'';  
     137        $criteria = ($criteria !== false) ? 
     138            $this->parseCriteria ( $criteria , $map , ' WHERE '.$map['id'].' = \''.pg_escape_string( $uri['id'] ).'\'') : ' WHERE '.$map['id'].' = \''.pg_escape_string( $uri['id'] ).'\''; 
    139139 
    140140        return $this->execSql('UPDATE '.(Config::get($uri['concept'],'PostgreSQL.concept')).' '. self::parseUpdateData( $data ,$map).$criteria); 
     
    252252     
    253253    private static function parseUpdateData( $data , &$map){ 
    254   
     254 
    255255        $d = array(); 
    256256        foreach ($data as $i => $v) 
     
    265265 
    266266    private static function parseCriteria( $criteria  , &$map , $query = '' ){ 
    267      
     267 
    268268        if( isset($criteria["filter"]) && $criteria["filter"] !== NULL ) 
    269269        { 
     
    278278          *     array( '=' , 'campo' , 'valor' ) 
    279279        */ 
    280                if($fc = self::parseFilter( $criteria['filter'] , $map))  
    281                     $query .= ($query === '') ?  'WHERE ('.$fc.')' : ' AND ('.$fc.')';  
     280               if($fc = self::parseFilter( $criteria['filter'] , $map)) 
     281                    $query .= ($query === '') ?  'WHERE ('.$fc.')' : ' AND ('.$fc.')'; 
    282282        } 
    283283        /* 
     
    372372    } 
    373373    } 
    374      
     374 
    375375    static function parseJustthese($justthese , &$map , $table = '') 
    376376    { 
    377                    
     377 
    378378        if(!is_array($justthese)) //Caso seja um full select pegar todas as keys 
    379379            $justthese = array_keys($map); 
     
    381381        $return = array(); 
    382382 
    383         if($table)  
    384             $table .= '.';  
    385   
    386         foreach ($justthese as &$value)  
     383        if($table) 
     384            $table .= '.'; 
     385 
     386        foreach ($justthese as &$value) 
    387387        { 
    388388            if(!isset($map[$value])) continue; //Escapa itens não existentes no mapa 
     
    393393                $return['select'][] = $table . $map[$value] .' as "'. $value. '"'; 
    394394        } 
    395          
     395 
    396396        $return['select'] = implode(', ', $return['select']); 
    397         return $return;  
    398     }  
    399   
    400     private function parseCondition( $condition )  
    401     {  
    402         $tables = array();  
    403         $conditions = '';  
    404   
    405             $matches = array();  
    406             if(preg_match_all('/\s*(AND|^)\s*([a-z]+)\.([a-z]+)\s+\=\s+([a-z]+)\.([a-z]+)(\s|$)+/i', $condition ,$matches,PREG_SET_ORDER))  
    407             {  
    408                foreach ($matches as $i => $v)  
    409                {  
    410                    if(!isset($this->maps[$v[2]]) || !isset($this->tables[$v[2]]))  
    411                    {  
    412                        $this->maps[$v[2]] = Config::get($v[2], 'PostgreSQL.mapping');  
    413                        $this->tables[$v[2]] =  Config::get($v[2],'PostgreSQL.concept');  
    414                    }  
    415                    if(!isset($this->maps[$v[4]]) || !isset($this->tables[$v[4]]))  
    416                    {  
    417                        $this->maps[$v[4]] = Config::get($v[4], 'PostgreSQL.mapping');  
    418                        $this->tables[$v[4]] =  Config::get($v[4],'PostgreSQL.concept');  
    419                    }  
    420   
    421                    if(isset($this->maps[$v[2]][$v[3]]) && isset($this->maps[$v[4]][$v[5]]))  
    422                        $conditions .= ' '. $v[1] .' '. $this->tables[$v[2]] . '.' . $this->maps[$v[2]][$v[3]] .' = '. $this->tables[$v[4]] . '.' . $this->maps[$v[4]][$v[5]];  
    423                    else  
    424                        continue;  
    425   
    426                    if(!in_array( $this->tables[$v[2]], $tables))  
    427                        $tables[] = $this->tables[$v[2]];  
    428   
    429                    if(!in_array( $this->tables[$v[4]], $tables))  
    430                        $tables[] = $this->tables[$v[4]];  
    431                }  
    432   
    433             }  
    434   
    435             if(preg_match_all('/\s*(AND|OR|^)\s*([a-z]+)\.([a-z]+)\s+([\=\>\<\!]+|like)+\s+([a-z0-9\/\+\=]+)(\s|$)+/i', $condition , $matches ,PREG_SET_ORDER))  
    436             {  
    437                 foreach ($matches as $i => $v)  
    438                 {  
    439                     if(!isset($this->maps[$v[2]]) || !isset($this->tables[$v[2]]))  
    440                     {  
    441                         $this->maps[$v[2]] = Config::get($v[2], 'PostgreSQL.mapping');  
    442                         $this->tables[$v[2]] =  Config::get($v[2],'PostgreSQL.concept');  
    443                     }  
    444   
    445                     if(isset($this->maps[$v[2]][$v[3]]))  
    446                         $conditions .= ' '. $v[1] .' '. $this->tables[$v[2]] . '.' . $this->maps[$v[2]][$v[3]] .' '.$v[4].' \''. pg_escape_string(base64_decode($v[5])) .'\'';  
    447                     else  
    448                         continue;  
    449   
    450                     if(!in_array( $this->tables[$v[2]], $tables))  
    451                         $tables[] = $this->tables[$v[2]];  
    452                 }  
    453             }  
    454   
    455         return (count($tables) > 0 && count($conditions ) > 0) ? array('tables' => $tables , 'conditions' => $conditions ) : '' ;  
     397        return $return; 
     398    } 
     399 
     400    private function parseCondition( $condition ) 
     401    { 
     402        $tables = array(); 
     403        $conditions = ''; 
     404 
     405            $matches = array(); 
     406            if(preg_match_all('/\s*(AND|^)\s*([a-z]+)\.([a-z]+)\s+\=\s+([a-z]+)\.([a-z]+)(\s|$)+/i', $condition ,$matches,PREG_SET_ORDER)) 
     407            { 
     408               foreach ($matches as $i => $v) 
     409               { 
     410                   if(!isset($this->maps[$v[2]]) || !isset($this->tables[$v[2]])) 
     411                   { 
     412                       $this->maps[$v[2]] = Config::get($v[2], 'PostgreSQL.mapping'); 
     413                       $this->tables[$v[2]] =  Config::get($v[2],'PostgreSQL.concept'); 
     414                   } 
     415                   if(!isset($this->maps[$v[4]]) || !isset($this->tables[$v[4]])) 
     416                   { 
     417                       $this->maps[$v[4]] = Config::get($v[4], 'PostgreSQL.mapping'); 
     418                       $this->tables[$v[4]] =  Config::get($v[4],'PostgreSQL.concept'); 
     419                   } 
     420 
     421                   if(isset($this->maps[$v[2]][$v[3]]) && isset($this->maps[$v[4]][$v[5]])) 
     422                       $conditions .= ' '. $v[1] .' '. $this->tables[$v[2]] . '.' . $this->maps[$v[2]][$v[3]] .' = '. $this->tables[$v[4]] . '.' . $this->maps[$v[4]][$v[5]]; 
     423                   else 
     424                       continue; 
     425 
     426                   if(!in_array( $this->tables[$v[2]], $tables)) 
     427                       $tables[] = $this->tables[$v[2]]; 
     428 
     429                   if(!in_array( $this->tables[$v[4]], $tables)) 
     430                       $tables[] = $this->tables[$v[4]]; 
     431               } 
     432 
     433            } 
     434 
     435            if(preg_match_all('/\s*(AND|OR|^)\s*([a-z]+)\.([a-z]+)\s+([\=\>\<\!]+|like)+\s+([a-z0-9\/\+\=]+)(\s|$)+/i', $condition , $matches ,PREG_SET_ORDER)) 
     436            { 
     437                foreach ($matches as $i => $v) 
     438                { 
     439                    if(!isset($this->maps[$v[2]]) || !isset($this->tables[$v[2]])) 
     440                    { 
     441                        $this->maps[$v[2]] = Config::get($v[2], 'PostgreSQL.mapping'); 
     442                        $this->tables[$v[2]] =  Config::get($v[2],'PostgreSQL.concept'); 
     443                    } 
     444 
     445                    if(isset($this->maps[$v[2]][$v[3]])) 
     446                        $conditions .= ' '. $v[1] .' '. $this->tables[$v[2]] . '.' . $this->maps[$v[2]][$v[3]] .' '.$v[4].' \''. pg_escape_string(base64_decode($v[5])) .'\''; 
     447                    else 
     448                        continue; 
     449 
     450                    if(!in_array( $this->tables[$v[2]], $tables)) 
     451                        $tables[] = $this->tables[$v[2]]; 
     452                } 
     453            } 
     454 
     455        return (count($tables) > 0 && count($conditions ) > 0) ? array('tables' => $tables , 'conditions' => $conditions ) : '' ; 
    456456    } 
    457457 
  • branches/2.5/prototype/services/iCal.php

    r7969 r8232  
    573573                            $schedulable = self::_getSchedulable($uid); 
    574574                $calendar = false; 
    575                 $accpeted = true;  
    576                             if ($schedulable) {  
    577                     ///Verifica se o usuario e um participante e se este aceitou o pedido.  
    578                     foreach ($schedulable['participants'] as $value){  
    579                         if ($value['user']['id'] == $params['owner'] &&  ($value['status'] == STATUS_UNANSWERED || $value['status'] == STATUS_DECLINED)){  
    580                             $accpeted  = false;  
    581                         }  
    582                     }  
    583                              //Caso o evento exista  
    584                     if (!($calendar = self::_existInMyCalendars($schedulable['id'], $params['owner'])) || !$accpeted ) {  
     575                $accpeted = true; 
     576                            if ($schedulable) { 
     577                    ///Verifica se o usuario e um participante e se este aceitou o pedido. 
     578                    foreach ($schedulable['participants'] as $value){ 
     579                        if ($value['user']['id'] == $params['owner'] &&  ($value['status'] == STATUS_UNANSWERED || $value['status'] == STATUS_DECLINED)){ 
     580                            $accpeted  = false; 
     581                        } 
     582                    } 
     583                             //Caso o evento exista 
     584                    if (!($calendar = self::_existInMyCalendars($schedulable['id'], $params['owner'])) || !$accpeted ) { 
    585585                        $calendarToSchedulable = array(); 
    586586                        $calendarToSchedulable['calendar'] = $params['calendar']; 
     
    12391239                            } 
    12401240                            else 
    1241                             {  
    1242                                 if (self::_getTime($component, 'dtstamp') > $schedulable['dtstamp'] || $component->getProperty('sequence', false, false) > $schedulable['sequence']) //Organizador esta requisitando que você atualize o evento  
    1243                                     $interation = ($isOrganizer) ? ICAL_ACTION_ORGANIZER_UPDATE : ICAL_ACTION_UPDATE;  
    1244                                 else  
    1245                                     $interation = ($isOrganizer) ? ICAL_ACTION_ORGANIZER_NONE : ICAL_ACTION_NONE;  
    1246   
    1247                             }  
     1241                            { 
     1242                                if (self::_getTime($component, 'dtstamp') > $schedulable['dtstamp'] || $component->getProperty('sequence', false, false) > $schedulable['sequence']) //Organizador esta requisitando que você atualize o evento 
     1243                                    $interation = ($isOrganizer) ? ICAL_ACTION_ORGANIZER_UPDATE : ICAL_ACTION_UPDATE; 
     1244                                else 
     1245                                    $interation = ($isOrganizer) ? ICAL_ACTION_ORGANIZER_NONE : ICAL_ACTION_NONE; 
     1246 
     1247                            } 
    12481248                        } 
    1249                       }  
     1249                      } 
    12501250                    if (!$isParticipant){ 
    12511251                        if( self::_existInMyCalendars($schedulable['id'], $params['owner']) ){ 
  • branches/2.5/reports/setup/setup.inc.php

    r7516 r8232  
    1313        $setup_info['reports']['title']         = 'Expresso Reports'; 
    1414        /* Ao incrementar versão, não esquecer de declarar função do tables_update.inc.php*/ 
    15         $setup_info['reports']['version']       = '2.5.0'; 
     15        $setup_info['reports']['version']       = '2.5.1'; 
    1616        $setup_info['reports']['app_order']     = 17; 
    1717        $setup_info['reports']['tables']    = ''; 
     
    4141        $setup_info['reports']['depends'][] = array( 
    4242                'appname' => 'phpgwapi', 
    43                 'versions' => Array('2.5.0') 
     43                'versions' => Array('2.5.1.1') 
    4444        ); 
    4545?> 
  • branches/2.5/setup/check_install.php

    r7681 r8232  
    9898                        'safe_mode' => 'max_execution_time = 30' 
    9999                ), 
    100                 'include_path' => array( 
    101                         'func' => 'php_ini_check', 
    102                         'value' => '.', 
    103                         'check' => 'contain', 
    104                         'error' => lang('include_path need to contain "." - the current directory'), 
    105                         'save_mode' => 'max_execution_time = 30' 
    106                 ), 
     100#               'include_path' => array( 
     101#                       'func' => 'php_ini_check', 
     102#                       'value' => '.', 
     103#                       'check' => 'contain', 
     104#                       'error' => lang('include_path need to contain "." - the current directory'), 
     105#                       'save_mode' => 'max_execution_time = 30' 
     106#               ), 
    107107#               'mysql' => array( 
    108108#                       'func' => 'extension_check', 
  • branches/2.5/workflow/inc/class.Logger.inc.php

    r3167 r8232  
    2929 
    3030        /** 
     31         * @var object $db Objeto de banco de dados do modulo workflow 
     32         * @access private 
     33         */ 
     34        private $dbGalaxia = null; 
     35 
     36        /** 
    3137         * @var string $logPath Caminho onde será salvo o arquivo de log, caso o tipo de log Log_file seja adicionado à composição 
    3238         * @access private 
     
    8187 
    8288                $this->db =& Factory::getInstance('WorkflowObjects')->getDBExpresso()->Link_ID; 
     89                $this->dbGalaxia =& Factory::getInstance('WorkflowObjects')->getDBGalaxia()->Link_ID; 
    8390 
    8491                if(!empty($curProcessName)){ 
     92 
    8593                        $query = ' 
    8694                                SELECT 
     
    8997                                        egw_wf_processes'; 
    9098 
    91                         if(!($result = $this->db->query($query))) 
     99                        if(!($result = $this->dbGalaxia->query($query))) 
    92100                                throw new Exception(lang('Cannot execute query')); 
    93101 
     
    131139                                                wf_config_name like 'log_level' 
    132140                                                "; 
    133                         $config_value = array_pop($this->db->query($query)->GetArray(-1)); 
     141                        $config_value = array_pop($this->dbGalaxia->query($query)->GetArray(-1)); 
    134142                        $this->logLevel = $config_value['wf_config_value_int']; 
    135143                } else { 
  • branches/2.5/workflow/inc/local/classes/class.wf_instance.php

    r5928 r8232  
    443443 
    444444        /** 
     445        * Busca uma instância pelo id 
     446        * @param int $wf_instance_id O id da instância 
     447        * @return array As instâncias que satisfazem o critério de seleção. 
     448        * @access public 
     449        */ 
     450        public function getById($wf_instance_id) 
     451        { 
     452                /* build the SQL query */ 
     453                $query = 'SELECT i.wf_instance_id AS wf_instance_id, ia.wf_activity_id AS wf_activity_id, ia.wf_started AS wf_started, i.wf_name AS wf_name, i.wf_status AS wf_status, ia.wf_user AS wf_user, i.wf_priority AS wf_priority '; 
     454                $query .= 'FROM egw_wf_instances i LEFT JOIN egw_wf_instance_activities ia ON (ia.wf_instance_id = i.wf_instance_id)'; 
     455                $query .= 'WHERE (i.wf_p_id = ?) AND i.wf_instance_id = ?'; 
     456 
     457                $resultSet = $this->db->query($query, array($this->processID, intval($wf_instance_id))); 
     458                 
     459                return $resultSet->GetArray(); 
     460        } 
     461 
     462        /** 
    445463        * Busca todas as instâncias que possuem esse nome (identificador). 
    446464        * @param string $name O nome da instância que se quer encontrar. 
     
    456474 
    457475                $resultSet = $this->db->query($query, array($this->processID, $name)); 
     476                return $resultSet->GetArray(); 
     477        } 
     478 
     479        /** 
     480        * Busca todas as instâncias que possuem um trecho do nome (identificador). 
     481        * @param string $name O trecho do nome da instância que se quer encontrar. 
     482        * @return array As instâncias que satisfazem o critério de seleção. 
     483        * @access public 
     484        */ 
     485        public function getLikeName($name) 
     486        { 
     487                /* build the SQL query */ 
     488                $query = 'SELECT i.wf_instance_id AS wf_instance_id, ia.wf_activity_id AS wf_activity_id, ia.wf_started AS wf_started, i.wf_name AS wf_name, i.wf_status AS wf_status, ia.wf_user AS wf_user, i.wf_priority AS wf_priority '; 
     489                $query .= 'FROM egw_wf_instances i LEFT JOIN egw_wf_instance_activities ia ON (ia.wf_instance_id = i.wf_instance_id)'; 
     490                $query .= "WHERE (i.wf_p_id = ?) AND i.wf_name ILIKE '%$name%'"; 
     491 
     492                $resultSet = $this->db->query($query, array($this->processID)); 
     493 
    458494                return $resultSet->GetArray(); 
    459495        } 
     
    584620                return $this->setUser($instanceID, $activityID, 'p' . $roleID); 
    585621        } 
     622 
     623        /** 
     624        * Altera o wf_name das instâncias, fazendo o replace no nome da categoria de serviço.  
     625        * Método chamado quando é alterada a categoria de um serviço e existem ocorrências atrelados a esse serviço. 
     626        * @param int | array $instanceID se for um array, concatena os instances ids 
     627        * @param string @currentServiceName Nome da categoria de serviço atual 
     628        * @param string @newServiceName Nome da nova categoria de serviço 
     629        * @return resultSet em caso de sucesso ou false 
     630        * @access public  
     631        */ 
     632        public function updateReplaceName($instanceID, $currentServiceName, $newServiceName) 
     633        { 
     634                $success = true; 
     635 
     636                // Se for array, faz implode concatenando os ids 
     637                if (is_array($instanceID)) 
     638                { 
     639                        $instanceID = implode(',', $instanceID); 
     640                } 
     641 
     642                $query = "UPDATE egw_wf_instances SET wf_name = REPLACE(wf_name, '" . $currentServiceName . "', '" . $newServiceName . "') WHERE wf_instance_id IN (" . $instanceID . ")"; 
     643                $success = $this->db->execute($query); 
     644 
     645                return $success; 
     646        } 
    586647} 
    587648?> 
  • branches/2.5/workflow/inc/smarty/wf_plugins/function.wf_select_user.php

    r4740 r8232  
    115115 
    116116        $output .= <<<EOF 
    117                 <a alt="$title" title="$title" href="javascript:void(0)" onclick="openParticipants('$name', '$extraParams');"><img border="0" alt="" src="$image" /></a> 
     117                <a alt="$title" title="$title" href="javascript:void(0)" onclick="openParticipantsWindow('$name', '$extraParams');"><img border="0" alt="" src="$image" /></a> 
    118118EOF; 
    119119        return $output; 
  • branches/2.5/workflow/js/adminaccess/control_folder.js

    r3255 r8232  
    416416        bt.setAttribute('name','Selecionar'); 
    417417        bt.setAttribute('value','Selecionar'); 
    418         bt.onclick = function() { openParticipants('sel_org_user', 'hidegroups=1'); }; 
     418        bt.onclick = function() { openParticipantsWindow('sel_org_user', 'hidegroups=1'); }; 
    419419        td.appendChild(bt); 
    420420 
     
    575575        bt.setAttribute('name','Selecionar'); 
    576576        bt.setAttribute('value','Selecionar'); 
    577         bt.onclick = function() { openParticipants('sel_proc_user', ''); }; 
     577        bt.onclick = function() { openParticipantsWindow('sel_proc_user', ''); }; 
    578578        td.appendChild(bt); 
    579579 
     
    726726        bt.setAttribute('name','Selecionar'); 
    727727        bt.setAttribute('value','Selecionar'); 
    728         bt.onclick = function() { openParticipants('sel_mon_user', ''); }; 
     728        bt.onclick = function() { openParticipantsWindow('sel_mon_user', ''); }; 
    729729        td.appendChild(bt); 
    730730 
     
    785785        content += '<td align="right"><input type="button" name="Remover" value="Remover" onclick="deleteExternalApplicationAdmin();"/></td>'; 
    786786        content += '<td></td>'; 
    787         content += '<td align="right"><input type="button" name="Selecionar" value="Selecionar" onclick="openParticipants(\'sel_exa_user\', \'\')"/><input type="button" name="Remover" value="Remover" onclick="del_selected_reg(\'sel_exa_user\');"/></td>'; 
     787        content += '<td align="right"><input type="button" name="Selecionar" value="Selecionar" onclick="openParticipantsWindow(\'sel_exa_user\', \'\')"/><input type="button" name="Remover" value="Remover" onclick="del_selected_reg(\'sel_exa_user\');"/></td>'; 
    788788        content += '</tr>'; 
    789789        content += '<tr><td colspan="3"></td></tr>'; 
     
    849849        content += '<td align="right"><input type="button" name="Remover" value="Remover" onclick="deleteWorkflowAdministrators();"/></td>'; 
    850850        content += '<td></td>'; 
    851         content += '<td align="right"><input type="button" name="Selecionar" value="Selecionar" onclick="openParticipants(\'selectWorkflowUsers\', \'\')"/><input type="button" name="Remover" value="Remover" onclick="del_selected_reg(\'selectWorkflowUsers\');"/></td>'; 
     851        content += '<td align="right"><input type="button" name="Selecionar" value="Selecionar" onclick="openParticipantsWindow(\'selectWorkflowUsers\', \'\')"/><input type="button" name="Remover" value="Remover" onclick="del_selected_reg(\'selectWorkflowUsers\');"/></td>'; 
    852852        content += '</tr>'; 
    853853        content += '<tr><td colspan="3"></td></tr>'; 
     
    901901        content += '<td align="right"><input type="button" name="Remover" value="Remover" onclick="deleteDevelopmentAdministrators();"/></td>'; 
    902902        content += '<td></td>'; 
    903         content += '<td align="right"><input type="button" name="Selecionar" value="Selecionar" onclick="openParticipants(\'selectDevelopmentUsers\', \'\')"/><input type="button" name="Remover" value="Remover" onclick="del_selected_reg(\'selectDevelopmentUsers\');"/></td>'; 
     903        content += '<td align="right"><input type="button" name="Selecionar" value="Selecionar" onclick="openParticipantsWindow(\'selectDevelopmentUsers\', \'\')"/><input type="button" name="Remover" value="Remover" onclick="del_selected_reg(\'selectDevelopmentUsers\');"/></td>'; 
    904904        content += '</tr>'; 
    905905        content += '<tr><td colspan="3"></td></tr>'; 
  • branches/2.5/workflow/js/jscode/participants.js

    r3729 r8232  
    364364} 
    365365 
    366 function openParticipants(target, option) 
     366function openParticipantsWindow(target, option) 
    367367{ 
    368368        newWidth   = 500; 
  • branches/2.5/workflow/js/monitors/processes.js

    r795 r8232  
    101101                                content += '<td><input type="hidden" name="newUser" id="newUser" value="" />'; 
    102102                                content += '<input type="input" name="newUser_desc" id="newUser_desc" value="" readonly="true" size="32" />'; 
    103                                 content += '<a href="javascript:void(0)" onclick="openParticipants(\'newUser\', \'uid=1&hidegroups=1\');"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png"/></a></td></tr>'; 
     103                                content += '<a href="javascript:void(0)" onclick="openParticipantsWindow(\'newUser\', \'uid=1&hidegroups=1\');"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png"/></a></td></tr>'; 
    104104                                content += '<tr><td colspan="2"><button onclick="clickLoadActivities(' + pid + ');return false;">Próximo >></button></td></tr></table>'; 
    105105                                content += '</td>'; 
  • branches/2.5/workflow/js/orgchart/organization.js

    r7379 r8232  
    736736        content += '<input type="hidden" name="funcionario_id" id="funcionario_id" value="" />'; 
    737737        content += '<input type="input" name="funcionario_id_desc" id="funcionario_id_desc" value="" readonly="true" size="40" />'; 
    738         content += '<a href="javascript:void(0)" onclick="openParticipants(\'funcionario_id\', \'uid=1&hidegroups=1\');" id="addEmployeeLink"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png" /></a>'; 
     738        content += '<a href="javascript:void(0)" onclick="openParticipantsWindow(\'funcionario_id\', \'uid=1&hidegroups=1\');" id="addEmployeeLink"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png" /></a>'; 
    739739        content += '</td></tr>'; 
    740740        content += '<tr><td><label for="funcionario_status_id">Status</label></td><td id="comboStatus"><i>carregando</i></td></tr>'; 
     
    801801        content += '<input type="hidden" name="titular_funcionario_id" id="titular_funcionario_id" value="" />'; 
    802802        content += '<input type="input" name="titular_funcionario_id_desc" id="titular_funcionario_id_desc" value="" readonly="true" size="40" />'; 
    803         content += '<a href="javascript:void(0)" onclick="openParticipants(\'titular_funcionario_id\', \'uid=1&hidegroups=1\');"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png" /></a>'; 
     803        content += '<a href="javascript:void(0)" onclick="openParticipantsWindow(\'titular_funcionario_id\', \'uid=1&hidegroups=1\');"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png" /></a>'; 
    804804        content += ' <a href="javascript:void(0)" onclick="$(\'titular_funcionario_id\').value=\'\'; $(\'titular_funcionario_id_desc\').value=\'\'; return false;"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/delete_user.png" /></a>'; 
    805805        content += '</td></tr>'; 
     
    807807        content += '<input type="hidden" name="auxiliar_funcionario_id" id="auxiliar_funcionario_id" value="" />'; 
    808808        content += '<input type="input" name="auxiliar_funcionario_id_desc" id="auxiliar_funcionario_id_desc" value="" readonly="true" size="40" />'; 
    809         content += '<a href="javascript:void(0)" onclick="openParticipants(\'auxiliar_funcionario_id\', \'uid=1&hidegroups=1\');"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png" /></a>'; 
     809        content += '<a href="javascript:void(0)" onclick="openParticipantsWindow(\'auxiliar_funcionario_id\', \'uid=1&hidegroups=1\');"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png" /></a>'; 
    810810        content += ' <a href="javascript:void(0)" onclick="$(\'auxiliar_funcionario_id\').value=\'\'; $(\'auxiliar_funcionario_id_desc\').value=\'\'; return false;"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/delete_user.png" /></a>'; 
    811811        content += '</td></tr>'; 
     
    882882        content += '<input type="hidden" name="substituto_funcionario_id" id="substituto_funcionario_id" value="" />'; 
    883883        content += '<input type="input" name="substituto_funcionario_id_desc" id="substituto_funcionario_id_desc" value="" readonly="true" size="40" />'; 
    884         content += '<a href="javascript:void(0)" onclick="openParticipants(\'substituto_funcionario_id\', \'uid=1&hidegroups=1\');"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png" /></a>'; 
     884        content += '<a href="javascript:void(0)" onclick="openParticipantsWindow(\'substituto_funcionario_id\', \'uid=1&hidegroups=1\');"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png" /></a>'; 
    885885        content += ' <a href="javascript:void(0)" onclick="$(\'substituto_funcionario_id\').value=\'\'; $(\'substituto_funcionario_id_desc\').value=\'\'; return false;"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/delete_user.png" /></a>'; 
    886886        content += '</td></tr>'; 
  • branches/2.5/workflow/setup/setup.inc.php

    r7516 r8232  
    1313        $setup_info['workflow']['name']                 = 'workflow'; 
    1414        $setup_info['workflow']['title']                = 'Workflow Management'; 
    15         $setup_info['workflow']['version']              = '2.5.0'; 
     15        $setup_info['workflow']['version']              = '2.5.1'; 
    1616        $setup_info['workflow']['app_order']    = 10; 
    1717        $setup_info['workflow']['enable']               = 1; 
     
    5959        $setup_info['workflow']['depends'][] = array( 
    6060                'appname' => 'phpgwapi', 
    61                 'versions' => Array('1.2', '2.0', '2.2', '2.4', '2.5') 
     61                'versions' => Array('2.5.1.1') 
    6262        ); 
    6363        $setup_info['workflow']['depends'][] = array( 
    6464                'appname' => 'preferences', 
    65                 'versions' => Array('0.9.13.002', '2.0', '2.2', '2.5.0') 
     65                'versions' => Array('2.5.1') 
    6666        ); 
    6767?> 
  • branches/2.5/workflow/setup/tables_update.inc.php

    r7516 r8232  
    360360        return $GLOBALS['setup_info']['workflow']['currentver']; 
    361361    } 
    362         $test[] = '2.4.2'; 
    363         function workflow_upgrade2_4_2() 
    364         { 
    365                 $GLOBALS['setup_info']['workflow']['currentver'] = '2.5.0'; 
    366                 return $GLOBALS['setup_info']['workflow']['currentver']; 
    367         } 
     362 
     363    $test[] = '2.4.2'; 
     364    function workflow_upgrade2_4_2() 
     365    { 
     366        $GLOBALS['setup_info']['workflow']['currentver'] = '2.5.0'; 
     367        return $GLOBALS['setup_info']['workflow']['currentver']; 
     368    } 
     369 
     370    $test[] = '2.5.0'; 
     371    function workflow_upgrade2_5_0() 
     372    { 
     373        $GLOBALS['setup_info']['workflow']['currentver'] = '2.5.1'; 
     374        return $GLOBALS['setup_info']['workflow']['currentver']; 
     375    } 
    368376 
    369377 
  • branches/2.5/workflow/templates/default/admin_activities.tpl

    r1710 r8232  
    178178                        <div id="div_default_user_option_0" style="display:none;"> 
    179179                                <input type="input" name="default_user_desc" id="default_user_desc" value="{wf_default_user_desc}" readonly="true" size="40" /> 
    180                                 <a href="javascript:void(0)" onclick="openParticipants('default_user', 'uid=1&hidegroups=1');"><img border="0" src="workflow/templateFile.php?file=images/add_user.png" /></a> 
     180                                <a href="javascript:void(0)" onclick="openParticipantsWindow('default_user', 'uid=1&hidegroups=1');"><img border="0" src="workflow/templateFile.php?file=images/add_user.png" /></a> 
    181181                                <button onclick="document.getElementById('default_user_desc').value=''; document.getElementById('default_user').value='*'; return false">{lang_without_default_user}</button> 
    182182                                <br> 
  • branches/2.5/workflow/templates/default/admin_roles.tpl

    r795 r8232  
    123123                                </select> 
    124124                        </td><td valign=center align=center> 
    125                                 <a href='javascript:void(0)' onclick="openParticipants('user_list', 'entities=ug&usePreffix=1');"><img border=0 src={src_img_add_users}></a> 
     125                                <a href='javascript:void(0)' onclick="openParticipantsWindow('user_list', 'entities=ug&usePreffix=1');"><img border=0 src={src_img_add_users}></a> 
    126126                                <br> 
    127                                 <a href='javascript:void(0)' onclick="openParticipants('user_list', 'entities=ug&usePreffix=1');">{lang_Add}</a> 
     127                                <a href='javascript:void(0)' onclick="openParticipantsWindow('user_list', 'entities=ug&usePreffix=1');">{lang_Add}</a> 
    128128                                <br><br> 
    129129                                <a href="javascript:void(0)" onclick="participantsRemoveUser(document.getElementById('user_list'));"><img border=0 src={src_img_del_users}></a> 
  • branches/2.5/zpush/backend/expresso/expresso.php

    r7671 r8232  
    2424    private function getProvider( $folderId ) 
    2525    { 
     26 
     27 
    2628        foreach($this->providers as $provider) 
    2729        { 
     
    109111    public function ChangeFolder($folderid, $oldid, $displayname, $type) 
    110112    { 
    111         // TODO: Implement ChangeFolder() method. 
     113        return $this->getProvider($oldid ? $oldid: $folderid)->ChangeFolder($folderid, $oldid, $displayname, $type); 
    112114    } 
    113115 
     
    124126    public function DeleteFolder($id, $parentid) 
    125127    { 
    126         // TODO: Implement DeleteFolder() method. 
     128        return $this->getProvider($id)->DeleteFolder($id, $parentid); 
    127129    } 
    128130 
  • branches/2.5/zpush/backend/expresso/providers/calendarProvider.php

    r8032 r8232  
    3030    { 
    3131        $return = array(); 
    32         $criteria = CALENDAR_SYNC_SIGNED_CALENDARS ? array( 'filter' => array( 'AND' , array( '=' , 'type' , '0' ) , array( '=' , 'user' , $this->_uidnumber ))) : array( 'filter' => array ( 'AND'  ,array( '=' , 'isOwner' , '1' ),array( '=' , 'type' , '0' ) , array( '=' , 'user' , $this->_uidnumber )));  
    33         $sigs = Controller::find(array('concept' => 'calendarSignature'), array( 'id','calendar' ), $criteria);  
    34   
    35         if(Request::GetDeviceType()  == 'iPhone' || Request::GetDeviceType()  == 'iPad')  
    36         {  
    37             foreach($sigs as $sig)  
    38             {  
    39                 $calendar =  Controller::read( array( 'concept' => 'calendar' , 'id' => $sig['calendar'] ));  
    40                 $tmpSig = array();  
    41                 $tmpSig["id"] = 'calendar'.$sig['id'];  
    42                 $tmpSig["parent"] = 0;  
    43                 $tmpSig["mod"] = $calendar['name'];  
    44                 $return[] = $tmpSig;  
    45             }  
    46         }  
    47         else  
    48         {  
    49             $defaultCalendar = Controller::find(array('concept' => 'modulePreference'), array('value','id') , array('filter' => array( 'and' , array('=' , 'name' , 'defaultCalendar') , array('=' , 'module' , 'expressoCalendar') , array('=' , 'user' , $this->_uidnumber )  )) );  
    50   
    51             if(isset($defaultCalendar[0])) //Prioriza agenda default de importação pois o android so sincroniza a primeira agenda.  
    52             {  
    53                 foreach($sigs as $i => $sig)  
    54                 {  
    55                     if($sig['calendar'] == $defaultCalendar[0]['value'])  
    56                     {  
    57                         $calendar =  Controller::read( array( 'concept' => 'calendar' , 'id' => $sig['calendar'] ));  
    58                         $tmpSig = array();  
    59                         $tmpSig["id"] = 'calendar'.$sig['id'];  
    60                         $tmpSig["parent"] = 0;  
    61                         $tmpSig["mod"] = $calendar['name'];  
    62                         $return[] = $tmpSig;  
    63                     }  
    64                 }  
    65             }  
    66             else  
    67             {  
    68                 $sig = $sigs[0];  
    69                 $calendar =  Controller::read( array( 'concept' => 'calendar' , 'id' => $sig['calendar'] ));  
    70                 $tmpSig = array();  
    71                 $tmpSig["id"] = 'calendar'.$sig['id'];  
    72                 $tmpSig["parent"] = 0;  
    73                 $tmpSig["mod"] = $calendar['name'];  
    74                 $return[] = $tmpSig;  
    75   
    76             }  
     32        $criteria = CALENDAR_SYNC_SIGNED_CALENDARS ? array( 'filter' => array( 'AND' , array( '=' , 'type' , '0' ) , array( '=' , 'user' , $this->_uidnumber ))) : array( 'filter' => array ( 'AND'  ,array( '=' , 'isOwner' , '1' ),array( '=' , 'type' , '0' ) , array( '=' , 'user' , $this->_uidnumber ))); 
     33        $sigs = Controller::find(array('concept' => 'calendarSignature'), array( 'id','calendar' ), $criteria); 
     34 
     35        if(Request::GetDeviceType()  == 'iPhone' || Request::GetDeviceType()  == 'iPad') 
     36        { 
     37            foreach($sigs as $sig) 
     38            { 
     39                $calendar =  Controller::read( array( 'concept' => 'calendar' , 'id' => $sig['calendar'] )); 
     40                $tmpSig = array(); 
     41                $tmpSig["id"] = 'calendar'.$sig['id']; 
     42                $tmpSig["parent"] = 0; 
     43                $tmpSig["mod"] = $calendar['name']; 
     44                $return[] = $tmpSig; 
     45            } 
     46        } 
     47        else 
     48        { 
     49            $defaultCalendar = Controller::find(array('concept' => 'modulePreference'), array('value','id') , array('filter' => array( 'and' , array('=' , 'name' , 'defaultCalendar') , array('=' , 'module' , 'expressoCalendar') , array('=' , 'user' , $this->_uidnumber )  )) ); 
     50 
     51            if(isset($defaultCalendar[0])) //Prioriza agenda default de importação pois o android so sincroniza a primeira agenda. 
     52            { 
     53                foreach($sigs as $i => $sig) 
     54                { 
     55                    if($sig['calendar'] == $defaultCalendar[0]['value']) 
     56                    { 
     57                        $calendar =  Controller::read( array( 'concept' => 'calendar' , 'id' => $sig['calendar'] )); 
     58                        $tmpSig = array(); 
     59                        $tmpSig["id"] = 'calendar'.$sig['id']; 
     60                        $tmpSig["parent"] = 0; 
     61                        $tmpSig["mod"] = $calendar['name']; 
     62                        $return[] = $tmpSig; 
     63                    } 
     64                } 
     65            } 
     66            else 
     67            { 
     68                $sig = $sigs[0]; 
     69                $calendar =  Controller::read( array( 'concept' => 'calendar' , 'id' => $sig['calendar'] )); 
     70                $tmpSig = array(); 
     71                $tmpSig["id"] = 'calendar'.$sig['id']; 
     72                $tmpSig["parent"] = 0; 
     73                $tmpSig["mod"] = $calendar['name']; 
     74                $return[] = $tmpSig; 
     75 
     76            } 
    7777        } 
    7878 
     
    154154    public function ChangeFolder($folderid, $oldid, $displayname, $type) 
    155155    { 
    156        return false; 
     156        if($oldid) 
     157        { 
     158            $idNumber = (int)str_replace('calendar' , '' , $oldid); 
     159            $calendarSignature =  Controller::read( array( 'concept' => 'calendarSignature' , 'id' => $idNumber )); 
     160 
     161            Controller::update( array('concept' => 'calendar' , 'id' => $calendarSignature['calendar']), array( 'name' => $displayname) ); 
     162 
     163            return $this->StatFolder($oldid); 
     164        } 
     165        else 
     166        { 
     167             $cal = array('name' => $displayname, 
     168                'timezone' => 'America/Sao_Paulo', 
     169                'type' => '0' 
     170            ); 
     171 
     172            $calCreated = Controller::create(array('concept' => 'calendar'), $cal); 
     173 
     174            if(!$calCreated){ 
     175                return false; 
     176            } 
     177 
     178            $sig = array('user' => $_SESSION['wallet']['user']['uidNumber'], 
     179                'calendar' => $calCreated['id'], 
     180                'isOwner' => '1', 
     181                'dtstamp' => time() . '000', 
     182                'fontColor' => 'FFFFFF', 
     183                'backgroundColor' => '3366CC', 
     184                'borderColor' => '3366CC', 
     185            ); 
     186 
     187            $sigCreated = Controller::create(array('concept' => 'calendarSignature'), $sig); 
     188 
     189            if(!$sigCreated){ 
     190                return false; 
     191            } 
     192            else 
     193            { 
     194                $return = array(); 
     195                $return["id"] = 'calendar'.$calCreated; 
     196                $return["parent"] = 0; 
     197                $return["mod"] = $displayname; 
     198                return $return; 
     199            } 
     200        } 
     201 
     202        return false; 
    157203 
    158204    } 
     
    168214     * @throws StatusException              could throw specific SYNC_FSSTATUS_* exceptions 
    169215     */ 
    170     public function DeleteFolder($id, $parentid) 
    171     { 
    172         return false; 
     216    public function DeleteFolder($id, $parent) 
     217    { 
     218        $interation = array(); 
     219        $idNumber = (int)str_replace('calendar' , '' , $id); 
     220        $calendarSignature =  Controller::read( array( 'concept' => 'calendarSignature' , 'id' => $idNumber )); 
     221 
     222        $interation['calendar://' . $calendarSignature['calendar']] = false; 
     223        ob_start(); 
     224        $args = $interation; 
     225        include EXPRESSO_PATH.'/prototype/Sync.php'; 
     226        ob_end_clean(); 
     227 
     228        return true; 
    173229    } 
    174230 
     
    302358                                break; 
    303359                            case 'd': 
    304                                 $mult = 3600; 
     360                                $mult = 1440; 
    305361                                break; 
    306362                            default: 
     
    316372                        case STATUS_ACCEPTED: 
    317373                            $message->busystatus = 2; 
    318                            break; 
     374                            break; 
    319375                        case STATUS_TENTATIVE: 
    320376                            $message->busystatus = 1; 
     
    333389        //------------------------------------------------------------------------------------------------------------// 
    334390 
    335        /* 
    336        * Sincronização de Recorrência 
    337        */ 
     391        /* 
     392        * Sincronização de Recorrência 
     393        */ 
    338394        $repeats = Controller::find(array('concept' => 'repeat'), null , array( 'filter' => array( 'and' , array( '=' , 'schedulable' , $schedulable['id'] ),array( '!=' , 'frequency' , 'none' )  ) )); 
    339395        if(is_array($repeats) && count($repeats) > 0) 
     
    359415 
    360416            if($repeat['endTime']) 
    361                $recur->until =  (int) substr($repeat['endTime'], 0, -3); 
     417                $recur->until =  (int) substr($repeat['endTime'], 0, -3); 
    362418 
    363419            $recur->interval = $repeat['interval'] ? $repeat['interval'] : 1; 
     
    558614        $schedulable['timezone'] = $calendar['timezone']; 
    559615 
    560   
    561         $sv  = new DateTime('@'.($message->starttime + $GMT_CEL), $calendarSignatureTimezone);  
    562   
    563         if($sv->format('I') == 0)  
    564             $schedulable['startTime'] = $schedulable['startTime'] - 3600000;  
    565   
    566         $ev  = new DateTime('@'.($message->endtime + $GMT_CEL), $calendarSignatureTimezone);  
    567   
    568         if($ev->format('I') == 0)  
    569             $schedulable['endTime'] = $schedulable['endTime'] - 3600000;  
    570   
     616 
     617        $sv  = new DateTime('@'.($message->starttime + $GMT_CEL), $calendarSignatureTimezone); 
     618 
     619        if($sv->format('I') == 0) 
     620            $schedulable['startTime'] = $schedulable['startTime'] - 3600000; 
     621 
     622        $ev  = new DateTime('@'.($message->endtime + $GMT_CEL), $calendarSignatureTimezone); 
     623 
     624        if($ev->format('I') == 0) 
     625            $schedulable['endTime'] = $schedulable['endTime'] - 3600000; 
     626 
    571627        $schedulable['allDay'] = $message->alldayevent; 
    572628        $schedulable['description'] = $message->body; 
     
    741797            if($v['user']['id'] == $this->_uidnumber ) 
    742798            { 
    743                $schedulable['participants'][$i]['status'] = $this->formatBusy($message->busystatus); 
     799                $schedulable['participants'][$i]['status'] = $this->formatBusy($message->busystatus); 
    744800            } 
    745801        } 
     
    779835        $schedulable['startTime'] = (($message->starttime + $GMT_CEL) + ($calendarSignatureTimezone->getOffset(new DateTime('@'.($message->starttime + $GMT_CEL), new DateTimeZone('UTC'))) * -1) ) *1000; //$message->starttime  * 1000; 
    780836        $schedulable['endTime'] = (($message->endtime + $GMT_CEL) + ($calendarSignatureTimezone->getOffset(new DateTime('@'.($message->endtime + $GMT_CEL), new DateTimeZone('UTC')))* -1)) *1000;//$message->endtime  * 1000; 
    781   
    782         $sv  = new DateTime('@'.($message->starttime + $GMT_CEL), $calendarSignatureTimezone);  
    783   
    784         if($sv->format('I') == 0)  
    785             $schedulable['startTime'] = $schedulable['startTime'] - 3600000;  
    786   
    787         $ev  = new DateTime('@'.($message->endtime + $GMT_CEL), $calendarSignatureTimezone);  
    788   
    789         if($ev->format('I') == 0)  
    790             $schedulable['endTime'] = $schedulable['endTime'] - 3600000;  
    791   
     837 
     838        $sv  = new DateTime('@'.($message->starttime + $GMT_CEL), $calendarSignatureTimezone); 
     839 
     840        if($sv->format('I') == 0) 
     841            $schedulable['startTime'] = $schedulable['startTime'] - 3600000; 
     842 
     843        $ev  = new DateTime('@'.($message->endtime + $GMT_CEL), $calendarSignatureTimezone); 
     844 
     845        if($ev->format('I') == 0) 
     846            $schedulable['endTime'] = $schedulable['endTime'] - 3600000; 
     847 
    792848        $schedulable['timezone'] = $calendar['timezone']; 
    793849 
     
    803859        $participant['isOrganizer'] = '1'; 
    804860        $participant['acl'] = 'rowi'; 
    805         $participant['status'] = '1';  
     861        $participant['status'] = '1'; 
    806862 
    807863        if($message->organizeremail) 
     
    10211077            if($v['user']['id'] == $this->_uidnumber && $v['user']['isOrganizer']  == '1') 
    10221078            { 
    1023               $delete = true; 
     1079                $delete = true; 
    10241080            } 
    10251081        } 
     
    12621318                break; 
    12631319            case 0: 
    1264                return STATUS_UNANSWERED; 
     1320                return STATUS_UNANSWERED; 
    12651321                break; 
    12661322        } 
  • branches/2.5/zpush/backend/expresso/providers/imapProvider.php

    r8169 r8232  
    497497            if (!empty($bccaddr)) $headers .= "\nBcc: $bccaddr"; 
    498498            // changed by mku ZP-330 
    499   
    500             require_once(__DIR__."/../../../../library/Mail/Mail.php");  
    501             $mail_object =& Mail::factory("smtp", $GLOBALS['config']['SMTP']);  
    502             $send = $mail_object->send($toaddr, $message->headers , $body);  
    503           //  $send =  @mail ( $toaddr, $message->headers["subject"], $body, $headers, $envelopefrom );  
     499 
     500            require_once(__DIR__."/../../../../library/Mail/Mail.php"); 
     501            $mail_object =& Mail::factory("smtp", $GLOBALS['config']['SMTP']); 
     502            $send = $mail_object->send($toaddr, $message->headers , $body); 
     503          //  $send =  @mail ( $toaddr, $message->headers["subject"], $body, $headers, $envelopefrom ); 
    504504        } 
    505505 
     
    904904 
    905905        // build name for new mailboxBackendMaildir 
    906         $displayname = Utils::Utf7_iconv_encode(Utils::Utf8_to_utf7($displayname)); 
    907         $newname = $this->server . $folderid . $this->serverdelimiter . $displayname; 
    908  
     906        $displayname = Utils::Utf7_iconv_encode(Utils::Utf8_to_utf7($displayname));; 
     907        $new = $this->server . $this->getImapIdFromFolderId($folderid) . $this->serverdelimiter.  $displayname; 
    909908        $csts = false; 
    910         // if $id is set => rename mailbox, otherwise create 
    911         if ($oldid) { 
    912             // rename doesn't work properly with IMAP 
    913             // the activesync client doesn't support a 'changing ID' 
    914             // TODO this would be solved by implementing hex ids (Mantis #459) 
    915             //$csts = imap_renamemailbox($this->mbox, $this->server . imap_utf7_encode(str_replace(".", $this->serverdelimiter, $oldid)), $newname); 
    916         } 
    917         else { 
    918             $csts = @imap_createmailbox($this->mbox, $newname); 
    919         } 
     909 
     910        $csts = ($oldid) ? imap_renamemailbox($this->mbox,  $this->server .$this->getImapIdFromFolderId($oldid) , $new) : imap_createmailbox($this->mbox, $new); 
     911 
    920912        if ($csts) { 
    921             return $this->StatFolder($folderid . $this->serverdelimiter . $displayname); 
     913           $newId =  $this->convertImapId($new); 
     914           return $this->StatFolder($newId); 
    922915        } 
    923916        else 
     
    936929     * 
    937930     */ 
    938     public function DeleteFolder($id, $parentid){ 
    939         // TODO implement 
    940         return false; 
     931    public function DeleteFolder($id, $parentid) 
     932    { 
     933        $ret = imap_deletemailbox($this->mbox , $this->server .$this->getImapIdFromFolderId($id) ); 
     934        imap_expunge( $this->mbox ); 
     935        return $ret; 
    941936    } 
    942937 
  • branches/2.5/zpush/config.php

    r8169 r8232  
    284284    $row = pg_fetch_assoc( $rs ); 
    285285 
    286     $smtpConfig = parse_ini_file(EXPRESSO_PATH . '/prototype/config/SMTP.srv' , true );  
    287     $GLOBALS['config']['SMTP'] = $smtpConfig['config'];  
    288   
     286    $smtpConfig = parse_ini_file(EXPRESSO_PATH . '/prototype/config/SMTP.srv' , true ); 
     287    $GLOBALS['config']['SMTP'] = $smtpConfig['config']; 
     288 
    289289    // ************************ 
    290290    //  BackendIMAP settings 
     
    314314    define('IMAP_USE_IMAPMAIL', false); 
    315315 
    316     define('CALENDAR_SYNC_SIGNED_CALENDARS', false);  
     316    define('CALENDAR_SYNC_SIGNED_CALENDARS', false); 
    317317 
    318318    $rs = pg_query( $GLOBALS['connections']['db'], 'SELECT app_id FROM phpgw_applications WHERE app_name = \'zpush\'' ); 
  • branches/2.5/zpush/lib/utils/utils.php

    r7589 r8232  
    446446    static public function IsSystemFolder($foldertype) { 
    447447        return ($foldertype == SYNC_FOLDER_TYPE_INBOX || $foldertype == SYNC_FOLDER_TYPE_DRAFTS || $foldertype == SYNC_FOLDER_TYPE_WASTEBASKET || $foldertype == SYNC_FOLDER_TYPE_SENTMAIL || 
    448                 $foldertype == SYNC_FOLDER_TYPE_OUTBOX || $foldertype == SYNC_FOLDER_TYPE_TASK || $foldertype == SYNC_FOLDER_TYPE_APPOINTMENT || $foldertype == SYNC_FOLDER_TYPE_CONTACT || 
     448                $foldertype == SYNC_FOLDER_TYPE_OUTBOX || $foldertype == SYNC_FOLDER_TYPE_TASK /*|| $foldertype == SYNC_FOLDER_TYPE_APPOINTMENT */|| $foldertype == SYNC_FOLDER_TYPE_CONTACT || 
    449449                $foldertype == SYNC_FOLDER_TYPE_NOTE || $foldertype == SYNC_FOLDER_TYPE_JOURNAL) ? true:false; 
    450450    } 
  • branches/2.5/zpush/setup/setup.inc.php

    r7589 r8232  
    1313        $setup_info['zpush']['title']           = 'Z-Push' ; 
    1414        /* Ao incrementar versão, não esquecer de declarar função do tables_update.inc.php*/ 
    15         $setup_info['zpush']['version']         = '2.5.0'; 
     15        $setup_info['zpush']['version']         = '2.5.1'; 
    1616        $setup_info['zpush']['app_order']       = 10; 
    1717 
Note: See TracChangeset for help on using the changeset viewer.