- Timestamp:
- 11/03/11 13:24:14 (12 years ago)
- Location:
- trunk/expressoAdmin1_2
- Files:
-
- 46 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoAdmin1_2/controller.php
r1417 r5133 8 8 } 9 9 require_once '../header.session.inc.php'; 10 require_once '../API/class.servicelocator.php'; 10 11 11 12 // Explode action from cExecuteForm function -
trunk/expressoAdmin1_2/inc/class.bosectors.inc.php
r3915 r5133 48 48 $sector_info['objectClass'][1] = 'organizationalUnit'; 49 49 50 if( isset($_POST['associated_domain']) )51 {52 if ( $_POST['associated_domain'] != "") {53 $sector_info['objectClass'][2] = 'domainRelatedObject';54 $sector_info['associatedDomain'] = trim($_POST['associated_domain']);55 }56 }57 58 50 $systemName = $GLOBALS['phpgw_info']['server']['system_name']; 59 51 if ($systemName != '') … … 66 58 } 67 59 68 69 /*70 Insere as informações sobre quota total por usuários e por gigabytes de espaço em disco71 Se não vierem os dados, ele coloca 0 (Caso não exista controle de cota).72 */73 74 $controlled_by_quota = false;75 76 if( isset($_POST['disk_quota']) )77 {78 $controlled_by_quota = true;79 $sector_info['diskQuota'] = (trim($_POST['disk_quota']) != "") ? $_POST['disk_quota'] : "0";80 }81 82 if( isset($_POST['users_quota']) )83 {84 $controlled_by_quota = true;85 $sector_info['usersQuota'] = (trim($_POST['users_quota']) != "") ? $_POST['users_quota'] : "0";86 }87 88 if( isset($_POST['file_manager_quota']) )89 {90 $controlled_by_quota = true;91 $sector_info['fileManagerQuota'] = (trim($_POST['file_manager_quota']) != "") ? $_POST['file_manager_quota'] : "0";92 }93 94 if($controlled_by_quota)95 $sector_info['objectClass'][] = 'phpgwQuotaControlled';96 97 60 // Chama funcao para escrever no OpenLDAP, case de erro, volta com msg de erro. 98 61 if (!$this->so->write_ldap($dn, $sector_info)) … … 103 66 } 104 67 105 // 68 //Escreve no log 106 69 $this->db_functions->write_log("created sector", "$dn"); 107 70 … … 113 76 function save_sector() 114 77 { 115 $sector_info = $this->so->get_info($_POST['context']); 78 $context = utf8_encode($_POST['context']); 79 80 $sector_info = $this->so->get_info($context); 116 81 117 if (($_POST['sector_visible'] == 'on') && ($sector_info[ 0]['phpgwaccountvisible'][0] != '-1'))82 if (($_POST['sector_visible'] == 'on') && ($sector_info['phpgwaccountvisible'] != '-1')) 118 83 { 119 $phpgwAccount = $controlled_by_quota = false;120 84 foreach ($sector_info[0]['objectclass'] as $objectClass) 121 85 { 122 86 if ($objectClass == 'phpgwAccount') 123 87 $phpgwAccount = true; 124 if ($objectClass == 'phpgwquotacontrolled')125 $ controlled_by_quota = true;88 else 89 $phpgwAccount = false; 126 90 } 127 91 … … 134 98 $this->so->add_attribute($sector_info[0]['dn'], $ldap_mod_add); 135 99 } 136 else if($sector_info[0]['phpgwaccountvisible'][0] == '-1')100 else 137 101 { 138 102 $ldap_mod_del['objectClass'] = 'phpgwAccount'; … … 141 105 } 142 106 143 //Modifica o conteúdo das cotas.144 if( (isset($_POST['disk_quota']) )145 || (isset($_POST['users_quota']) )146 || (isset($_POST['file_manager_quota']) )) { //se for passado alguma coisa, lógico147 148 $file_manager_space = $this->functions->get_actual_disk_usage($_POST["context"],'FileManager');149 if($_POST["file_manager_quota"]<$file_manager_space){150 $_POST['error_messages'] = lang("Theres more disk space in use than the quota. It needs to be more than %1 MB",$file_manager_space);151 $_GET['context'] = $_POST["context"];152 ExecMethod('expressoAdmin1_2.uisectors.edit_sector');153 return false;154 }155 156 if(!$controlled_by_quota) {157 $ldap_mod_add['objectClass'][] = 'phpgwQuotaControlled';158 $this->so->add_attribute($sector_info[0]['dn'], $ldap_mod_add);159 }160 161 $ldap_mod_replace = array();162 $ldap_mod_replace['diskQuota'] = $_POST['disk_quota'];163 $ldap_mod_replace['usersQuota'] = $_POST['users_quota'];164 $ldap_mod_replace['fileManagerQuota'] = $_POST['file_manager_quota'];165 $this->so->replace_attribute($sector_info[0]['dn'], $ldap_mod_replace);166 }167 168 107 // Volta para o ListSectors 169 108 ExecMethod('expressoAdmin1_2.uisectors.list_sectors'); … … 184 123 $manager_context = $_POST['manager_context']; 185 124 186 125 $sector_dn = utf8_encode($sector_dn); 187 126 188 127 $sector_users = $this->so->get_sector_users($sector_dn); 128 189 129 for ($i=0; $i<count($sector_users)-1; $i++) 190 130 { -
trunk/expressoAdmin1_2/inc/class.db_functions.inc.php
r3251 r5133 33 33 function read_acl($account_lid) 34 34 { 35 $query = "SELECT * FROM phpgw_expressoadmin WHERE manager_lid = '" . $account_lid . "'"; 36 $this->db->query($query); 37 while($this->db->next_record()) 38 $result[] = $this->db->row(); 39 return $result; 40 } 41 42 //returns true if cotas control property is set. 43 function use_cota_control() { 44 $query = "select * from phpgw_config where config_name='expressoAdmin_cotasOu' and config_value='true'"; 45 $this->db->query($query); 46 if($this->db->next_record()) 47 return true; 48 return false; 49 } 50 35 $query = "SELECT * FROM phpgw_expressoadmin_acls WHERE manager_lid = '" . $account_lid . "'"; 36 $this->db->query($query); 37 38 $acls = array(); 39 $context = null; 40 while($this->db->next_record()) 41 { 42 $result = $this->db->row(); 43 $acls[$result['acl_name']] = '1'; 44 $context = $result['context']; 45 } 46 47 $all_contexts = split("%", $context); 48 foreach ($all_contexts as $index=>$context) 49 { 50 $acls['contexts'][] = $context; 51 $acls['contexts_display'][] = str_replace(", ", ".", ldap_dn2ufn( $context )); 52 } 53 54 $acls['raw_context'] = $context; 55 return $acls; 56 } 51 57 /* 52 58 * Reativa os usuários desabilitados por tempo inativo modificando o seu ultimo acesso para o dia atual. … … 78 84 $manager_info = $this->read_acl($manager); 79 85 80 //Escrevre no Banco a ACL do gerente 81 $sql = "INSERT INTO phpgw_expressoadmin (manager_lid, context, acl) " 82 . "VALUES('" . $new_manager . "','" . $manager_info[0]['context'] . "','" . $manager_info[0]['acl'] . "')"; 83 84 if (!$this->db->query($sql)) 86 //Deleta todas as acls do Gerente 87 $this->db->delete('phpgw_expressoadmin_acls',array('manager_lid' => $new_manager)); 88 89 foreach ($manager_info as $info => $value) 90 { 91 $acl = strstr($info, 'acl_'); 92 93 if ($acl !== false) 94 { 95 96 $fields = array( 97 'manager_lid' => $new_manager, 98 'context' => $manager_info['raw_context'], 99 'acl_name' => $acl, 100 ); 101 102 if(!$this->db->insert('phpgw_expressoadmin_acls', $fields)) 85 103 { 86 104 echo lang('error in') . 'copy_manager: ' . pg_last_error(); 87 105 return false; 88 106 } 107 } 108 109 110 } 111 112 89 113 90 114 //Pesquisa no Banco e pega os valores dos apps. 91 $sql = "SELECT * FROM phpgw_expressoadmin_apps WHERE manager_lid = '" . $manager _info[0]['manager_lid'] . "' AND context = '" . $manager_info[0]['context'] . "'";115 $sql = "SELECT * FROM phpgw_expressoadmin_apps WHERE manager_lid = '" . $manager . "' AND context = '" . $manager_info['raw_context'] . "'"; 92 116 $this->db->query($sql); 93 117 while($this->db->next_record()) … … 100 124 { 101 125 $sql = "INSERT INTO phpgw_expressoadmin_apps (manager_lid, context, app) " 102 . "VALUES('" . $new_manager . "','" . $manager_info[ 0]['context'] . "','" . $aplications[$i]['app'] . "')";126 . "VALUES('" . $new_manager . "','" . $manager_info['raw_context'] . "','" . $aplications[$i]['app'] . "')"; 103 127 if (!$this->db->query($sql)) 104 128 { … … 432 456 $return['members'] = array(); 433 457 434 // ACL Block Personal Data435 $query = "SELECT acl_rights FROM phpgw_acl WHERE acl_location = 'blockpersonaldata' AND acl_account = '" . $gidnumber . "'";436 $this->db->query($query);437 if($this->db->next_record()) {438 $block_personal_data = $this->db->row();439 $return['acl_block_personal_data'] = $block_personal_data['acl_rights'];440 }441 458 return $return; 442 459 } … … 685 702 function manager_lid_exist($manager_lid) 686 703 { 687 $query = "SELECT manager_lid FROM phpgw_expressoadmin WHERE manager_lid = '" . $manager_lid . "'";704 $query = "SELECT manager_lid FROM phpgw_expressoadmin_acls WHERE manager_lid = '" . $manager_lid . "'"; 688 705 $this->db->query($query); 689 706 while($this->db->next_record()) … … 697 714 function create_manager($params, $manager_acl) 698 715 { 699 //Escrevre no Banco a ACL do gerente 700 $sql = "INSERT INTO phpgw_expressoadmin (manager_lid, context, acl) " 701 . "VALUES('" . $params['ea_select_manager'] . "','" . $params['context'] . "','" . $manager_acl . "')"; 702 $this->db->query($sql); 716 717 //Insere novas regras 718 foreach ($manager_acl as $acl) 719 { 720 $fields = array( 721 'manager_lid' => $params['ea_select_manager'], 722 'context' => $params['context'], 723 'acl_name' => $acl, 724 ); 725 726 $this->db->insert('phpgw_expressoadmin_acls', $fields); 727 } 728 703 729 704 730 //Escrevre no Banco as aplicações que o gerente tem direito de disponibilizar aos seus usuarios. … … 718 744 function save_manager($params, $manager_acl) 719 745 { 746 747 720 748 $params['manager_lid'] = $params['hidden_manager_lid']; 721 749 722 //Executa update na tabela para atualizar ACL 723 $sql = "UPDATE phpgw_expressoadmin SET context = '" . $params['context'] . "',acl = '" . $manager_acl 724 . "' WHERE manager_lid = '" . $params['manager_lid'] ."'"; 725 $this->db->query($sql); 750 //Deleta todas as acls do Gerente 751 $this->db->delete('phpgw_expressoadmin_acls',array('manager_lid' => $params['manager_lid'],'context' => $params['context'])); 752 753 //Insere novas regras 754 foreach ($manager_acl as $acl) 755 { 756 $fields = array( 757 'manager_lid' => $params['manager_lid'], 758 'context' => $params['context'], 759 'acl_name' => $acl, 760 ); 761 762 $this->db->insert('phpgw_expressoadmin_acls', $fields); 763 } 726 764 727 765 //Deleta as aplicações e adiciona as novas. … … 743 781 return; 744 782 } 745 function save_acl_personal_data($gidnumber, $new_acl_personal_data, $op = '') { 746 if($op == 'add') 747 $sql = "INSERT INTO phpgw_acl (acl_appname, acl_location, acl_account, acl_rights) " 748 . "VALUES('preferences','blockpersonaldata','$gidnumber',$new_acl_personal_data)"; 749 elseif($op == 'remove') 750 $sql = "DELETE FROM phpgw_acl WHERE acl_account = '$gidnumber' and acl_location = 'blockpersonaldata'"; 751 else 752 $sql = "UPDATE phpgw_acl SET acl_rights = $new_acl_personal_data WHERE acl_account = '$gidnumber' " 753 . "and acl_location = 'blockpersonaldata'"; 783 784 function save_calendar_acls($user,$acl,$owner) 785 { 786 787 788 $aclArray = explode('-', $acl); 789 $rights = 0; 790 791 foreach ($aclArray as $number) 792 $rights = $rights + $number; 793 794 $this->db->delete('phpgw_acl', array('acl_appname' => 'calendar','acl_location' => $user,'acl_account' => $owner), null, null); 795 796 if($rights > 0) 797 { 798 if($this->db->insert('phpgw_acl', array('acl_appname' => 'calendar','acl_location' => $user,'acl_account' => $owner,'acl_rights' => $rights ), null, null, null)) 799 return true; 800 else 801 return false; 802 }else 803 return true; 754 804 755 //error_log($sql); 756 $this->db->query($sql); 757 758 return; 805 } 806 807 function get_calendar_acls($owner) 808 { 809 810 $colunas = array('acl_appname','acl_location','acl_account','acl_rights'); 811 $where = array('acl_appname' => 'calendar','acl_account' => $owner); 812 $this->db->select('phpgw_acl', $colunas, $where, null, null); 813 814 $return; 815 816 include_once 'class.ldap_functions.inc.php'; 817 $ldap = new ldap_functions(); 818 include_once 'class.functions.inc.php'; 819 $function = new functions(); 820 821 822 while ($this->db->next_record()) 823 { 824 $row = $this->db->row(); 825 $return[$ldap->uidnumber2uid($row['acl_location'])] = $function->normalize_calendar_acl($row['acl_rights']); 826 827 } 828 return $return; 829 759 830 } 760 831 -
trunk/expressoAdmin1_2/inc/class.functions.inc.php
r3887 r5133 43 43 function check_acl($account_lid, $access) 44 44 { 45 $acl = $this->read_acl($account_lid); 46 $array_acl = $this->make_array_acl($acl['acl']); 45 46 47 $array_acl = $this->db_functions->read_acl($account_lid); 47 48 48 49 switch($access) 49 50 { 50 51 case list_users: 51 if ($array_acl[ acl_add_users] || $array_acl[acl_edit_users] || $array_acl[acl_delete_users] || $array_acl[acl_change_users_password] || $array_acl[acl_change_users_quote] || $array_acl[acl_edit_sambausers_attributes] || $array_acl[acl_view_users] || $array_acl[acl_manipulate_corporative_information] || $array_acl[acl_edit_users_phonenumber] )52 if ($array_acl['acl_add_users'] || $array_acl['acl_edit_users'] || $array_acl['acl_delete_users'] || $array_acl['acl_change_users_password'] || $array_acl['acl_change_users_quote'] || $array_acl['acl_edit_sambausers_attributes'] || $array_acl['acl_view_users'] || $array_acl['acl_manipulate_corporative_information'] || $array_acl['acl_edit_users_phonenumber'] ) 52 53 return true; 53 54 break; 54 55 case list_groups: 55 if ($array_acl[ acl_add_groups] || $array_acl[acl_edit_groups] || $array_acl[acl_delete_groups])56 if ($array_acl['acl_add_groups'] || $array_acl['acl_edit_groups'] || $array_acl['acl_delete_groups']) 56 57 return true; 57 58 break; 58 59 case list_maillists: 59 if ($array_acl[ acl_add_maillists] || $array_acl[acl_edit_maillists] || $array_acl[acl_delete_maillists])60 if ($array_acl['acl_add_maillists'] || $array_acl['acl_edit_maillists'] || $array_acl['acl_delete_maillists']) 60 61 return true; 61 62 break; 62 63 case list_sectors: 63 if ($array_acl[ acl_create_sectors] || $array_acl[acl_edit_sectors] || $array_acl[acl_delete_sectors])64 if ($array_acl['acl_create_sectors'] || $array_acl['acl_edit_sectors'] || $array_acl['acl_delete_sectors']) 64 65 return true; 65 66 break; 66 67 case list_computers: 67 if ($array_acl[ acl_create_computers] || $array_acl[acl_edit_computers] || $array_acl[acl_delete_computers])68 if ($array_acl['acl_create_computers'] || $array_acl['acl_edit_computers'] || $array_acl['acl_delete_computers']) 68 69 return true; 69 70 break; 70 71 71 72 case display_groups: 72 if ( $array_acl[ acl_edit_users] || $array_acl[acl_view_users] || ($array_acl[acl_edit_sambausers_attributes] && ($this->current_config['expressoAdmin_samba_support'] == 'true')) )73 if ( $array_acl['acl_edit_users'] || $array_acl['acl_view_users'] || ($array_acl['acl_edit_sambausers_attributes'] && ($this->current_config['expressoAdmin_samba_support'] == 'true')) ) 73 74 return true; 74 75 break; 75 76 case display_emailconfig: 76 if ($array_acl[ acl_edit_users] || $array_acl[acl_view_users])77 if ($array_acl['acl_edit_users'] || $array_acl['acl_view_users']) 77 78 return true; 78 79 break; 79 80 case display_applications: 80 if ($array_acl[ acl_edit_users] || $array_acl[acl_view_users])81 if ($array_acl['acl_edit_users'] || $array_acl['acl_view_users']) 81 82 return true; 82 83 break; 83 84 case display_emaillists: 84 if ($array_acl[ acl_edit_users] || $array_acl[acl_view_users])85 if ($array_acl['acl_edit_users'] || $array_acl['acl_view_users']) 85 86 return true; 86 87 break; 87 88 88 89 case list_institutional_accounts: 89 if ($array_acl[ acl_add_institutional_accounts] || $array_acl[acl_edit_institutional_accounts] || $array_acl[acl_delete_institutional_accounts])90 if ($array_acl['acl_add_institutional_accounts'] || $array_acl['acl_edit_institutional_accounts'] || $array_acl['acl_delete_institutional_accounts']) 90 91 return true; 91 92 break; 92 93 case list_shared_accounts: 93 if ($array_acl[acl_add_shared_accounts] || $array_acl[acl_edit_shared_accounts] || $array_acl[acl_delete_shared_accounts]) 94 return true; 95 break; 96 94 if ($array_acl['acl_add_shared_accounts'] || $array_acl['acl_edit_shared_accounts'] || $array_acl['acl_delete_shared_accounts']) 95 return true; 96 break; 97 case configurations: 98 if ($array_acl['acl_active_blocking_sending_email_to_shared_accounts'] || $array_acl['acl_add_blocking_sending_email_to_shared_accounts_exception'] || $array_acl['acl_edit_and_remove_blocking_sending_email_to_shared_accounts_exception'] || $array_acl['acl_edit_maximum_number_of_recipients_generally'] || $array_acl['acl_add_maximum_number_of_recipients_by_user'] || $array_acl['acl_edit_and_remove_maximum_number_of_recipients_by_user'] || $array_acl['acl_add_maximum_number_of_recipients_by_group'] || $array_acl['acl_edit_and_remove_maximum_number_of_recipients_by_group']) 99 return true; 100 break; 101 case messages_size: 102 if($array_acl['acl_add_messages_size_rule'] || $array_acl['acl_edit_messages_size_rule'] || $array_acl['acl_remove_messages_size_rule']) 103 return true; 104 break; 97 105 98 106 default: … … 282 290 { 283 291 $acl = $this->db_functions->read_acl($account_lid); 284 285 $result['acl'] = $acl[0]['acl']; 286 $result['manager_lid'] = $acl[0]['manager_lid']; 287 $result['raw_context'] = $acl[0]['context']; 288 289 $all_contexts = split("%", $acl[0]['context']); 290 foreach ($all_contexts as $index=>$context) 291 { 292 $result['contexts'][] = $context; 293 $result['contexts_display'][] = str_replace(", ", ".", ldap_dn2ufn( $context )); 294 } 295 296 return $result; 297 } 298 299 // Make a array read humam 300 // Last acl: 2.147.483.648 -> edit users phonephone 301 // Last acl: 4.294.967.296 -> add institutional accounts 302 // Last acl: 8.589.934.592 -> edit institutional accounts 303 // Last acl: 17.179.869.184 -> remove institutional accounts 304 // Last acl: 34.359.738.368 -> add share accounts 305 // Last acl: 68.719.476.736 -> edit share accounts 306 // Last acl: 137.438.953.472 -> delete share accounts 307 // Last acl: 274.877.906.944 -> edit share accounts acl 308 // Last acl: 549.755.813.888 -> edit quota share quote 309 // Last acl: 1.099.511.627.776 -> empty share accounts inbox 310 311 function make_array_acl($acl) 312 { 313 $array_acl_tmp = array(); 314 $tmp = array( "acl_add_users", 315 "acl_edit_users", 316 "acl_delete_users", 317 "acl_EMPTY1", 318 "acl_add_groups", 319 "acl_edit_groups", 320 "acl_delete_groups", 321 "acl_change_users_password", 322 "acl_add_maillists", 323 "acl_edit_maillists", 324 "acl_delete_maillists", 325 "acl_EMPTY2", 326 "acl_create_sectors", 327 "acl_edit_sectors", 328 "acl_delete_sectors", 329 "acl_edit_sambausers_attributes", 330 "acl_view_global_sessions", 331 "acl_view_logs", 332 "acl_change_users_quote", 333 "acl_set_user_default_password", 334 "acl_create_computers", 335 "acl_edit_computers", 336 "acl_delete_computers", 337 "acl_rename_users", 338 "acl_edit_sambadomains", 339 "acl_view_users", 340 "acl_edit_email_groups", 341 "acl_empty_user_inbox", 342 "acl_manipulate_corporative_information", 343 "acl_edit_users_picture", 344 "acl_edit_scl_email_lists", 345 "acl_edit_users_phonenumber", 346 "acl_add_institutional_accounts", 347 "acl_edit_institutional_accounts", 348 "acl_remove_institutional_accounts", 349 "acl_add_shared_accounts", 350 "acl_edit_shared_accounts", 351 "acl_delete_shared_accounts", 352 "acl_edit_shared_accounts_acl", 353 "acl_edit_shared_accounts_quote", 354 "acl_empty_shared_accounts_inbox" 355 ); 356 357 foreach ($tmp as $index => $right) 358 { 359 $bin = ''; 360 for ($i=0; $i<$index; $i++) 361 { 362 $bin .= '0'; 363 } 364 $bin = '1' . $bin; 365 366 $array_acl[$right] = $this->safeBitCheck(bindec($bin), $acl); 367 } 368 return $array_acl; 369 } 292 return $acl; 293 } 294 370 295 371 296 function get_inactive_users($contexts) { … … 421 346 $justthese = array("uidnumber", "uid", "cn", "mail"); 422 347 $filter="(&(phpgwAccountType=u)(|(uid=*".$query."*)(sn=*".$query."*)(cn=*".$query."*)(givenName=*".$query."*)(mail=$query*)(mailAlternateAddress=$query*)))"; 423 $filter = preg_replace("/\*\*/","*",$filter); //Caso a query venha vazia, inibir a montagem do filtro com ** pois algumas versões do php mais recentes não corrigem isso no ldap_search 348 424 349 $tmp = array(); 425 350 foreach ($contexts as $index=>$context) … … 541 466 } 542 467 543 /* 544 Funciona de maneira similar ao get_sectors_list, porém retorna a propria OU do contexto 545 e monta o array de retorno de forma diferente, necessário para algumas mudanças implementadas 546 no método admin.uisectors.list_sectors. 547 */ 548 function get_organizations2($contexts, $selected='', $referral=false, $show_invisible_ou=true) { 549 468 function get_sectors($selected='', $referral=false, $show_invisible_ou=true) 469 { 470 $s = CreateObject('phpgwapi.sector_search_ldap'); 471 $sectors_info = $s->get_sectors($selected, $referral, $show_invisible_ou); 472 return $sectors_info; 473 } 474 475 // Get list of all levels, this function is used for sectors module. 476 function get_sectors_list($contexts) 477 { 478 $a_sectors = array(); 479 550 480 $dn = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 551 481 $passwd = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 552 482 $ldap_conn = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 553 483 554 484 ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 555 556 if ($referral) 557 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 558 else 559 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 560 485 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 561 486 ldap_bind($ldap_conn,$dn,$passwd); 562 487 563 $justthese = array("dn","diskQuota","usersQuota","actualDiskQuota"); 564 $filter = "(objectClass=organizationalUnit)"; 565 foreach ($contexts as $context) { 488 $justthese = array("dn"); 489 $filter = "(ou=*)"; 490 491 $systemName = strtolower($GLOBALS['phpgw_info']['server']['system_name']); 492 if ($systemName != '') 493 $filter = "(&$filter(phpgwSystem=$systemName))"; 494 495 foreach ($contexts as $context) 496 { 566 497 $search=ldap_search($ldap_conn, $context, $filter, $justthese); 567 568 ldap_sort($ldap_conn, $search, "ou"); 569 $info = ldap_get_entries($ldap_conn, $search); 570 ldap_close($ldap_conn); 571 572 // Retiro o count do array info e inverto o array para ordenaçãoo. 573 for ($i=0; $i<$info["count"]; $i++) 574 { 575 $dn = $info[$i]["dn"]; 576 577 // Necessário, pq em uma busca com ldapsearch objectClass=organizationalUnit, traz tb o próprio ou. 578 //if (strtolower($dn) == $context) 579 //continue; 580 581 $array_dn = ldap_explode_dn ( $dn, 1 ); 582 583 $array_dn_reverse = array_reverse ( $array_dn, true ); 584 585 // Retirar o indice count do array. 586 array_pop ( $array_dn_reverse ); 587 588 $inverted_dn[implode ( "#", $array_dn_reverse )] = $info[$i]; 589 } 590 } 591 // Ordenação por chave 592 ksort($inverted_dn); 498 $info = ldap_get_entries($ldap_conn, $search); 499 for ($i=0; $i<$info["count"]; $i++) 500 { 501 $a_sectors[] = $info[$i]['dn']; 502 } 503 } 504 505 ldap_close($ldap_conn); 506 507 // Retiro o count do array info e inverto o array para ordenação. 508 foreach ($a_sectors as $context) 509 { 510 511 512 $array_dn = ldap_explode_dn($context, 1 ); 513 foreach($array_dn as $key=>$value){ 514 $array_dn[$key]=preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$value); 515 } 516 517 $array_dn_reverse = array_reverse ( $array_dn, true ); 518 519 // Retirar o indice count do array. 520 array_pop ( $array_dn_reverse ); 521 522 $inverted_dn[$context] = implode ( "#", $array_dn_reverse ); 523 } 524 525 // Ordenação 526 natcasesort($inverted_dn); 593 527 594 528 // Construção do select 595 529 $level = 0; 596 530 $options = array(); 597 foreach ($inverted_dn as $dn=>$in fo_ou)531 foreach ($inverted_dn as $dn=>$invert_ufn) 598 532 { 599 533 $display = ''; 600 $info_retorno = array(); 601 $array_dn_reverse = explode ( "#", $ dn );534 535 $array_dn_reverse = explode ( "#", $invert_ufn ); 602 536 $array_dn = array_reverse ( $array_dn_reverse, true ); 603 537 … … 613 547 614 548 reset ( $array_dn ); 615 $display .= ' ' . (current ( $array_dn ) ); 616 617 $info_retorno['display'] = $display; 618 $info_retorno['dn'] = $info_ou['dn']; 619 $info_retorno['diskquota'] = $info_ou['diskquota'][0]; 620 $info_retorno['usersquota'] = $info_ou['usersquota'][0]; 621 // $info_retorno['actualdiskquota'] = round($this->get_actual_disk_usage($info_ou['dn']),2);//$info_ou['actualdiskquota'][0]; 622 // $info_retorno['actualnumusers'] = $this->get_num_users($info_ou['dn']); 623 624 array_push($options,$info_retorno); 625 626 } 627 return $options; 628 } 629 630 function get_info($context, $referral = false) { 631 $dn = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 632 $passwd = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 633 $ldap_conn = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 634 635 ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 636 637 if ($referral) 638 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 639 else 640 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 641 642 ldap_bind($ldap_conn,$dn,$passwd); 643 644 $filter="(objectClass=organizationalUnit)"; 645 $search=ldap_search($ldap_conn, $context, $filter); 646 $result = ldap_get_entries($ldap_conn, $search); 647 return $result; 648 649 } 650 651 function get_num_users($context,$selected='', $referral=false, $show_invisible_ou=true) { 652 $dn = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 653 $passwd = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 654 $ldap_conn = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 655 656 ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 657 658 if ($referral) 659 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 660 else 661 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 662 663 ldap_bind($ldap_conn,$dn,$passwd); 664 665 $justthese = array("dn"); 666 $filter = "(objectClass=inetOrgPerson)"; 667 $search=ldap_search($ldap_conn, $context, $filter, $justthese); 668 669 $retorno = ldap_count_entries($ldap_conn, $search); 670 ldap_close($ldap_conn); 671 672 return $retorno; 673 } 674 675 //Checa se existe quota para mais um usuï¿œrio no setor... se existir retorna true, senï¿œo false. 676 function existe_quota_usuario($setor) { 677 $num_users = $this->get_num_users($setor['dn']); 678 //return $num_users . " --- " . $setor['usersquota'][0] 679 if(($num_users>=$setor['usersquota'][0]) && ($setor['usersquota'][0]!=-1)) { 680 return false; 681 } 682 return true; 683 } 684 685 //Checa se existe quota em disco para mais um usuário no setor... se existir retorna true, senão false. 686 function existe_quota_disco($setor,$quota_novo_usuario) { 687 settype($quota_novo_usuario,"float"); 688 $quota_novo_usuario /= 1024; //A quota vêm da interface em megabytes, deve se tornar gigabyte. 689 690 $nova_quota = $this->get_actual_disk_usage($setor['dn']) + $quota_novo_usuario; 691 if(( $nova_quota >= $setor['diskquota'][0] ) && ($setor['diskquota'][0] != -1)) { 692 return false; 693 } 694 return true; 695 } 696 697 function has_file_disk_quota($home_directory,$quota) { 698 $uid = substr($home_directory,strpos($home_directory,"/home/")+6); 699 $context = $this->get_ou_context_from_uid($uid); 700 701 $sector = $this->get_info($context); 702 $new_quota = $this->get_actual_disk_usage($sector[0]['dn'],'FileManager',$uid) + $quota; 703 if(( $new_quota > $sector[0]['filemanagerquota'][0] ) && ($sector[0]['filemanagerquota'][0] != -1)) { 704 return false; 705 } 706 return true; 707 } 708 709 function get_ou_context_from_uid($uid,$referral = false) { 710 $dn = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 711 $passwd = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 712 $ldap_conn = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 713 $context = $GLOBALS['phpgw_info']['server']['ldap_context']; 714 715 ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 716 717 if ($referral) 718 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 719 else 720 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 721 722 ldap_bind($ldap_conn,$dn,$passwd); 723 $filter="(&(objectClass=phpgwAccount)(uid=$uid))"; 724 $search=ldap_search($ldap_conn, $context, $filter); 725 $result = ldap_get_entries($ldap_conn, $search); 726 727 if($result['count']>0){ 728 $dn = $result[0]['dn']; 729 return substr($dn,strpos($dn,$uid.",")+strlen($uid.",")); 730 } 731 else 732 return false; 733 } 734 735 // Soma as quotas de todos os usuï¿œrios daquele contexto. 736 function get_actual_disk_usage($context,$app='expressoMail',$user=null) { 737 $quota_usada=0; 738 $contexts = array($context); 739 $usuarios = $this->get_list('accounts', '', $contexts); 740 741 if($app=='expressoMail') { 742 $imap_functions = new imap_functions(); 743 foreach($usuarios as $usuario) { 744 $temp = $imap_functions->get_user_info($usuario['account_lid']); 745 if($temp['mailquota'] != -1) //Usuï¿œrio sem cota nï¿œo conta... 746 $quota_usada += ($temp['mailquota'] / 1024); 747 } 748 } 749 else if($app=='FileManager'){ //FileManager 750 $uids = ''; 751 foreach($usuarios as $usuario) { 752 if($usuario['account_lid']!=$user) 753 $uids.="'/home/".$usuario['account_lid']."',"; 754 } 755 $uids.="'a'"; //hack the last comma 756 $query = "select 1 as num,sum(quota_size) as quota from phpgw_vfs_quota where directory in ($uids) group by num"; 757 $GLOBALS['phpgw']->db->query($query); 758 if($GLOBALS['phpgw']->db->next_record()) 759 { 760 $result = $GLOBALS['phpgw']->db->row(); 761 $quota_usada = $result["quota"]; 762 } 763 } 764 return $quota_usada; 765 } 766 767 function get_sectors($selected='', $referral=false, $show_invisible_ou=true) 768 { 769 $s = CreateObject('phpgwapi.sector_search_ldap'); 770 $sectors_info = $s->get_sectors($selected, $referral, $show_invisible_ou); 771 return $sectors_info; 772 } 773 774 // Get list of all levels, this function is used for sectors module. 775 function get_sectors_list($contexts) 776 { 777 $a_sectors = array(); 778 779 $dn = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 780 $passwd = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 781 $ldap_conn = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 782 783 ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 784 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 785 ldap_bind($ldap_conn,$dn,$passwd); 786 787 $justthese = array("dn"); 788 $filter = "(objectClass=organizationalUnit)"; 789 790 $systemName = strtolower($GLOBALS['phpgw_info']['server']['system_name']); 791 if ($systemName != '') 792 $filter = "(&$filter(phpgwSystem=$systemName))"; 793 794 foreach ($contexts as $context) 795 { 796 $search=ldap_search($ldap_conn, $context, $filter, $justthese); 797 $info = ldap_get_entries($ldap_conn, $search); 798 for ($i=0; $i<$info["count"]; $i++) 799 { 800 $a_sectors[] = $info[$i]['dn']; 801 } 802 } 803 804 ldap_close($ldap_conn); 805 806 // Retiro o count do array info e inverto o array para ordenação. 807 foreach ($a_sectors as $context) 808 { 809 $array_dn = ldap_explode_dn ( $context, 1 ); 810 811 $array_dn_reverse = array_reverse ( $array_dn, true ); 812 813 // Retirar o indice count do array. 814 array_pop ( $array_dn_reverse ); 815 816 $inverted_dn[$context] = implode ( "#", $array_dn_reverse ); 817 } 818 819 // Ordenação 820 natcasesort($inverted_dn); 821 822 // Construção do select 823 $level = 0; 824 $options = array(); 825 foreach ($inverted_dn as $dn=>$invert_ufn) 826 { 827 $display = ''; 828 829 $array_dn_reverse = explode ( "#", $invert_ufn ); 830 $array_dn = array_reverse ( $array_dn_reverse, true ); 831 832 $level = count( $array_dn ) - (int)(count(explode(",", $GLOBALS['phpgw_info']['server']['ldap_context'])) + 1); 833 834 if ($level == 0) 835 $display .= '+'; 836 else 837 { 838 for ($i=0; $i<$level; $i++) 839 $display .= '---'; 840 } 841 842 reset ( $array_dn ); 843 $display .= ' ' . (current ( $array_dn ) ); 549 $display .= ' ' . (current ( $array_dn )); 844 550 845 551 $dn = trim(strtolower($dn)); … … 903 609 else 904 610 return $groups_id; 905 }906 function make_list_personal_data_fields($account_lid, $acl = '')907 {908 // Sem restrição nenhuma na edição dos campos pessoais => $acl=0;909 // Com restrição apenas na edição do Tel. Comercial => $acl=1;910 // Com restrição apenas na edição do Tel. Celular => $acl=2;911 // Com restrição na edição do Tel. Comercial e Celular => $acl=3;912 // Com restricao apenas na edicao do Tel. Residencial => $acl=4;913 // ....914 // Com restricao de edição em todos os campos pessoais => $acl=7;915 916 $personal_data_fields = array(917 array("text" => lang("%1 telephone number", lang("Commercial")) , "acl" => 1),918 array("text" => lang("%1 telephone number", lang("Mobile")) , "acl" => 2),919 array("text" => lang("%1 telephone number", lang("Home Phone")) , "acl" => 4),920 array("text" => lang("Birthday") , "acl" => 8));921 $list_personal_data = "<tr>";922 923 foreach($personal_data_fields as $i => $data_field) {924 $checked = ($data_field['acl'] & $acl) ? "CHECKED" : "";925 $list_personal_data .= "<td align=right bgcolor='#DDDDDD'>{$data_field['text']}</td>".926 "<td bgcolor='#DDDDDD' width='10'><input type='checkbox' name='acl_block_personal_data[]'".927 " value='{$data_field['acl']}' $checked></td>";928 }929 $list_personal_data .= "</tr>";930 return $list_personal_data;931 611 } 932 612 … … 1116 796 return $array_langs; 1117 797 } 798 799 800 801 function normalize_calendar_acl($acl) 802 { 803 $return = ''; 804 805 if($this->safeBitCheck(1, $acl)) 806 $return .= '1-'; 807 if($this->safeBitCheck(2, $acl)) 808 $return .= '2-'; 809 if($this->safeBitCheck(4, $acl)) 810 $return .= '4-'; 811 if($this->safeBitCheck(8, $acl)) 812 $return .= '8-'; 813 if($this->safeBitCheck(16, $acl)) 814 $return .= '16-'; 815 816 return $return; 1118 817 } 818 } 1119 819 1120 820 class sectors_object -
trunk/expressoAdmin1_2/inc/class.group.inc.php
r3396 r5133 135 135 $return['msg'] .= $result['msg']; 136 136 } 137 // PERSONAL DATA FIELDS TO BLOCK.138 if(is_array($params['acl_block_personal_data'])){139 $acl_personal_data = 0;140 foreach($params['acl_block_personal_data'] as $i => $data_field){141 $acl_personal_data |= intval($data_field);142 }143 $this->db_functions->save_acl_personal_data($id, $acl_personal_data, 'add');144 }145 137 146 138 if ($return['status'] == true) … … 428 420 } 429 421 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 430 // PERSONAL DATA FIELDS TO BLOCK.431 $old_acl_personal_data = intval($old_values['acl_block_personal_data']);432 $new_acl_personal_data = 0;433 if(is_array($new_values['acl_block_personal_data'])){434 foreach($new_values['acl_block_personal_data'] as $i => $data_field){435 $new_acl_personal_data |= intval($data_field);436 }437 }438 if($new_acl_personal_data != $old_acl_personal_data){439 if($new_acl_personal_data > 0 && $old_acl_personal_data == 0) {440 $this->db_functions->save_acl_personal_data($new_values['gidnumber'], $new_acl_personal_data, 'add');441 $this->db_functions->write_log("added ACL block personal data to group","dn:$dn -> acl: $new_acl_personal_data");442 }443 elseif($new_acl_personal_data == 0 && $old_acl_personal_data > 0){444 $this->db_functions->save_acl_personal_data($new_values['gidnumber'], $new_acl_personal_data, 'remove');445 $this->db_functions->write_log("removed ACL block personal data to group","dn:$dn");446 }447 else{448 $this->db_functions->save_acl_personal_data($new_values['gidnumber'], $new_acl_personal_data);449 $this->db_functions->write_log("changed ACL block personal data to group","dn:$dn -> acl: $old_acl_personal_data => $new_acl_personal_data");450 }451 }452 422 453 423 return $return; … … 455 425 456 426 457 function get_info($gidnumber ,$use_global_context=false)458 { 459 $group_info_ldap = $this->ldap_functions->get_group_info($gidnumber ,$use_global_context);460 $group_info_db = $this->db_functions->get_group_info($gidnumber ,$use_global_context);427 function get_info($gidnumber) 428 { 429 $group_info_ldap = $this->ldap_functions->get_group_info($gidnumber); 430 $group_info_db = $this->db_functions->get_group_info($gidnumber); 461 431 462 432 $group_info = array_merge($group_info_ldap, $group_info_db); -
trunk/expressoAdmin1_2/inc/class.imap_functions.inc.php
r4059 r5133 23 23 $this->imap_server = $_SESSION['phpgw_info']['expresso']['email_server']['imapServer']; 24 24 $this->imap_port = $_SESSION['phpgw_info']['expresso']['email_server']['imapPort']; 25 $this->imap_createspamfolder = $_SESSION['phpgw_info']['expresso']['email_server']['imapCreateSpamFolder'];26 $this->imap_cyrususerspam = $_SESSION['phpgw_info']['expresso']['email_server']['imapCyrusUserPostSpam'] ? $_SESSION['phpgw_info']['expresso']['email_server']['imapCyrusUserPostSpam'] : "anonymous";27 25 $this->imap_trashfolder = $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultTrashFolder'] ? $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultTrashFolder'] : str_replace("*","", $this->functions->lang("trash")); 28 26 $this->imap_sentfolder = $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultSentFolder'] ? $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultSentFolder'] : str_replace("*","", $this->functions->lang("sent")); … … 70 68 return $result; 71 69 } 72 if (!empty($this->imap_spamfolder) && $this->imap_createspamfolder == 'yes') 70 /* Esperando correção do william (prognus) sobre a utilização do DSPAM 71 if (!empty($this->imap_sentfolder)) 73 72 { 74 73 if (!imap_createmailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid . $this->imapDelimiter . $this->imap_spamfolder)) … … 78 77 $result['msg'] = $this->functions->lang('Error on function') . " imap_functions->create(".$this->imap_spamfolder."):" . $error[0]; 79 78 return $result; 80 } else {81 imap_setacl($this->imap, "user" . $this->imapDelimiter . $uid. $this->imapDelimiter . $this->imap_spamfolder , $this->imap_cyrususerspam, 'p');82 79 } 83 80 } 81 */ 84 82 85 83 if (!imap_set_quota($this->imap,"user" . $this->imapDelimiter . $uid, ($mailquota*1024))) … … 97 95 function get_user_info($uid) 98 96 { 99 $get_quota = @imap_get_quota ($this->imap,"user" . $this->imapDelimiter . $uid);97 $get_quota = @imap_get_quotaroot($this->imap,"user" . $this->imapDelimiter . $uid); 100 98 101 99 if (count($get_quota) == 0) … … 148 146 $result['status'] = true; 149 147 150 if (!$quota = @imap_get_quota ($this->imap, 'user' . $this->imapDelimiter . $old_mailbox))148 if (!$quota = @imap_get_quotaroot($this->imap, 'user' . $this->imapDelimiter . $old_mailbox)) 151 149 { 152 150 $result['status'] = false; … … 253 251 $result['inbox_size'] = $inbox_size; 254 252 255 $get_user_quota = @imap_get_quota ($this->imap,"user" . $this->imapDelimiter . $uid);253 $get_user_quota = @imap_get_quotaroot($this->imap,"user" . $this->imapDelimiter . $uid); 256 254 $result['mailquota_used'] = (string)(round(($get_user_quota['usage']/1024), 2)); 257 255 } … … 317 315 } 318 316 } 317 318 if( $result['status'] ) 319 $this->sendACLAdvice( $user, $acl, $mailbox ); 320 319 321 return $result; 320 322 } … … 373 375 return $result; 374 376 } 375 file_put_contents("/tmp/saida", "old ".print_r($owners_acl_old, true)."remove ".print_r($owners_to_remove, true)."add ".print_r($owners_to_add, true)."update ".print_r($owners_to_update, true));377 //file_put_contents("/tmp/saida", "old ".print_r($owners_acl_old, true)."remove ".print_r($owners_to_remove, true)."add ".print_r($owners_to_add, true)."update ".print_r($owners_to_update, true)); 376 378 if( is_array($owners_acl_new)){ 377 379 foreach($owners_to_remove as $user => $acl){ … … 397 399 return $result; 398 400 } 401 402 function sendACLAdvice( $user, $acls, $shared_account ) 403 { 404 //acl treat 405 $acl_labels = array( 'lrs' => 'read messages from this shared account', 406 'd' => 'delete/move messages from this shared account', 407 'wi' => 'create/add messages in this shared account', 408 'a' => 'send message by this shared account', 409 'p' => 'save sent messages in this shared account', 410 'c' => 'create or delete folders on this shared account' ); 411 412 $acl_found = array(); 413 414 foreach( $acl_labels as $acl => $label ) 415 { 416 if( strpos( $acls, $acl ) !== false ) 417 { 418 $acl_found[] = $this->functions->lang( $label ); 419 } 420 } 421 422 $acl = implode( "<br/>", $acl_found ); 423 424 if( empty( $acl ) ) 425 return; 426 427 //body mail template generation 428 $body = $this->getTemplate( "body_email.tpl", array( "user" => $user, 429 "acl" => $acl, 430 "shared_account" => $shared_account ) ); 431 432 //ldap fetch mail to 433 require_once('class.ldap_functions.inc.php'); 434 435 if( !$ldap ) 436 { 437 $ldap = new ldap_functions(); 438 } 439 440 $to = $ldap->uid2mailforwardingaddress( $user ); 441 $to = $to['mail']; 442 443 //mail send service 444 $mail = ServiceLocator::getService( 'mail' ); 445 $mail->sendMail( $to, false, $this->functions->lang("Your user was add/updated in the shared account"), $body ); 446 } 447 448 function getTemplate( $tpls, $macros, $target = false ) 449 { 450 require_once( ROOT.'header.inc.php' ); 451 452 $template = CreateObject( 'phpgwapi.Template', PHPGW_APP_TPL ); 453 454 if( !is_array( $tpls ) ) 455 { 456 $tpls = array( $tpls ); 457 } 458 459 $keys = array_keys( $tpls ); 460 461 if( !array_diff_key( $tpl, array_keys( $keys ) ) ) 462 { 463 $newTpls = array(); 464 465 foreach( $tpls as $tpl ) 466 { 467 $key = basename( $tpl ); 468 469 $dot = strrpos( $key, '.' ); 470 471 if( $dot !== false ) 472 { 473 $key = substr( $key, 0, $dot ); 474 } 475 476 $newTpls[ $key ] = $tpl; 477 } 478 479 $tpls = $newTpls; 480 481 $keys = array_keys( $tpls ); 482 } 483 484 $template->set_file( $tpls ); 485 486 $target = $target ? $tpls[ $target ] : $keys[0]; 487 488 $template->set_var( $this->functions->make_dinamic_lang( $template, $target ) ); 489 $template->set_var( $macros ); 490 491 return $template->fp( 'out', $target ); 492 } 399 493 } -
trunk/expressoAdmin1_2/inc/class.institutional_accounts.inc.php
r414 r5133 32 32 } 33 33 $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 34 $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 34 35 $GLOBALS['phpgw']->js->validate_file('jscode','institutional_accounts','expressoAdmin1_2'); 35 36 $GLOBALS['phpgw']->js->validate_file('modal','modal','expressoAdmin1_2'); -
trunk/expressoAdmin1_2/inc/class.ldap_functions.inc.php
r3530 r5133 4 4 include_once(PHPGW_API_INC.'/class.common.inc.php'); 5 5 include_once('class.functions.inc.php'); 6 include_once('class.db_functions.inc.php'); 6 7 7 8 function ldapRebind($ldap_connection, $ldap_url) … … 22 23 var $functions; 23 24 var $manager_contexts; 25 var $db_functions; 24 26 25 27 function ldap_functions(){ … … 41 43 } 42 44 45 $this->db_functions = new db_functions(); 43 46 $this->functions = new functions; 44 47 $manager_acl = $this->functions->read_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid']); … … 46 49 } 47 50 48 function create_shared_accounts($params) 49 { 50 /* Begin: Access verification */ 51 52 if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'add_shared_accounts')) 51 function noAccess( $context, $target, $label = false ) 52 { 53 if( !$label ) 54 $label = str_replace( '_', ' ', $target ); 55 56 if (!$this->functions->check_acl( $_SESSION['phpgw_info']['expresso']['user']['account_lid'], $target )) 53 57 { 54 58 $return['status'] = false; 55 $return['msg'] = $this->functions->lang('You do not have right to create shared accounts') . ".";59 $return['msg'] = $this->functions->lang("You do not have right to $label") . "."; 56 60 return $return; 57 61 } 58 62 59 63 $access_granted = false; 64 60 65 foreach ($this->manager_contexts as $idx=>$manager_context) 61 66 { 62 if (stristr($params['context'], $manager_context))67 if (stristr($context, $manager_context)) 63 68 { 64 69 $access_granted = true; … … 73 78 return $return; 74 79 } 80 81 return( false ); 82 } 83 84 function create_institutional_accounts($params) 85 { 86 /* Begin: Access verification */ 87 $forbidden = $this->noAccess( $params['context'], 'add_institutional_accounts', 'create institutional accounts' ); 88 89 if( $forbidden ) 90 return( $forbidden ); 91 // if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'add_institutional_accounts')) 92 // { 93 // $return['status'] = false; 94 // $return['msg'] = $this->functions->lang('You do not have right to create institutional accounts') . "."; 95 // return $return; 96 // } 97 // 98 // $access_granted = false; 99 // foreach ($this->manager_contexts as $idx=>$manager_context) 100 // { 101 // if (stristr($params['context'], $manager_context)) 102 // { 103 // $access_granted = true; 104 // break; 105 // } 106 // } 107 // if (!$access_granted) 108 // { 109 // $return['status'] = false; 110 // $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 111 // return $return; 112 // } 75 113 /* End: Access verification */ 76 114 115 /* Begin: Validation */ 116 if ( (empty($params['cn'])) || (empty($params['mail'])) ) 117 { 118 $result['status'] = false; 119 $result['msg'] = $this->functions->lang('Field mail or name is empty'); 120 return $result; 121 } 122 123 if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 124 { 125 $result['status'] = false; 126 $result['msg'] = $this->functions->lang('Field mail is not formed correcty') . '.'; 127 return $result; 128 } 129 130 $uid = 'institutional_account_' . $params['mail']; 131 $dn = "uid=$uid," . $params['context']; 132 133 $filter = "(mail=".$params['mail'].")"; 134 $justthese = array("cn"); 135 $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 136 $entries = @ldap_get_entries($this->ldap,$search); 137 if ($entries['count'] != 0) 138 { 139 $result['status'] = false; 140 $result['msg'] = $this->functions->lang('Field mail already in use'); 141 return $result; 142 } 143 /* End: Validation */ 144 145 $info = array(); 146 $info['cn'] = $params['cn']; 147 $info['sn'] = $params['cn']; 148 $info['uid'] = $uid; 149 $info['mail'] = $params['mail']; 150 $info['description'] = iconv("ISO-8859-1","UTF-8//TRANSLIT",$params['desc']); 151 $info['phpgwAccountType'] = 'i'; 152 $info['objectClass'][] = 'inetOrgPerson'; 153 $info['objectClass'][] = 'phpgwAccount'; 154 $info['objectClass'][] = 'top'; 155 $info['objectClass'][] = 'person'; 156 $info['objectClass'][] = 'qmailUser'; 157 $info['objectClass'][] = 'organizationalPerson'; 158 159 if ($params['accountStatus'] == 'on') 160 { 161 $info['accountStatus'] = 'active'; 162 } 163 if ($params['phpgwAccountVisible'] == 'on') 164 { 165 $info['phpgwAccountVisible'] = '-1'; 166 } 167 168 if (!empty($params['owners'])) 169 { 170 foreach($params['owners'] as $index=>$uidnumber) 171 { 172 $info['mailForwardingAddress'][] = $this->uidnumber2mail($uidnumber); 173 } 174 } 175 176 $result = array(); 177 if (!@ldap_add ( $this->ldap, $dn, $info )) 178 { 179 $result['status'] = false; 180 $result['msg'] = $this->functions->lang('Error on function') . ' ldap_functions->create_institutional_accounts'; 181 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 182 } 183 else 184 $result['status'] = true; 185 186 return $result; 187 } 188 189 function save_institutional_accounts($params) 190 { 191 /* Begin: Access verification */ 192 $forbidden = $this->noAccess( $params['context'], 'edit_institutional_accounts' ); 193 194 if( $forbidden ) 195 return( $forbidden ); 196 // if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'edit_institutional_accounts')) 197 // { 198 // $return['status'] = false; 199 // $return['msg'] = $this->functions->lang('You do not have right to edit institutional accounts') . "."; 200 // return $return; 201 // } 202 // $access_granted = false; 203 // foreach ($this->manager_contexts as $idx=>$manager_context) 204 // { 205 // if (stristr($params['context'], $manager_context)) 206 // { 207 // $access_granted = true; 208 // break; 209 // } 210 // } 211 // if (!$access_granted) 212 // { 213 // $return['status'] = false; 214 // $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 215 // return $return; 216 // } 217 /* End: Access verification */ 77 218 78 219 /* Begin: Validation */ … … 80 221 { 81 222 $result['status'] = false; 223 $result['msg'] = $this->functions->lang('Field mail or name is empty') . '.'; 224 return $result; 225 } 226 227 if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 228 { 229 $result['status'] = false; 230 $result['msg'] = $this->functions->lang('Field mail is not formed correcty') . '.'; 231 return $result; 232 } 233 234 $uid = 'institutional_account_' . $params['mail']; 235 $dn = strtolower("uid=$uid," . $params['context']); 236 $anchor = strtolower($params['anchor']); 237 238 $filter = "(mail=".$params['mail'].")"; 239 $justthese = array("cn"); 240 $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 241 $entries = @ldap_get_entries($this->ldap,$search); 242 243 if ( ($entries['count'] > 1) || (($entries['count'] == 1) && ($entries[0]['dn'] != $anchor)) ) 244 { 245 $result['status'] = false; 246 $result['msg'] = $this->functions->lang('Field mail already in use.'); 247 return $result; 248 } 249 /* End: Validation */ 250 251 $result = array(); 252 $result['status'] = true; 253 254 if ($anchor != $dn) 255 { 256 if (!@ldap_rename($this->ldap, $anchor, "uid=$uid", $params['context'], true)) 257 { 258 $result['status'] = false; 259 $result['msg'] = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_rename'; 260 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 261 } 262 } 263 264 $info = array(); 265 $info['cn'] = $params['cn']; 266 $info['sn'] = $params['cn']; 267 $info['uid'] = $uid; 268 $info['mail'] = $params['mail']; 269 270 if ($params['accountStatus'] == 'on') 271 $info['accountStatus'] = 'active'; 272 else 273 $info['accountStatus'] = array(); 274 275 if ($params['phpgwAccountVisible'] == 'on') 276 $info['phpgwAccountVisible'] = '-1'; 277 else 278 $info['phpgwAccountVisible'] = array(); 279 280 if ($params['desc'] != '') 281 $info['description'] = utf8_encode($params['desc']); 282 else 283 $info['description'] = array(); 284 285 if (!empty($params['owners'])) 286 { 287 foreach($params['owners'] as $index=>$uidnumber) 288 { 289 $mailForwardingAddress = $this->uidnumber2mail($uidnumber); 290 if ($mailForwardingAddress != '') 291 $info['mailForwardingAddress'][] = $mailForwardingAddress; 292 } 293 } 294 else 295 $info['mailForwardingAddress'] = array(); 296 297 if (!@ldap_modify ( $this->ldap, $dn, $info )) 298 { 299 $result['status'] = false; 300 $result['msg'] = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_modify'; 301 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 302 } 303 304 return $result; 305 } 306 307 function save_shared_accounts($params) 308 { 309 /* Begin: Access verification */ 310 $forbidden = $this->noAccess( $params['context'], 'edit_shared_accounts' ); 311 312 if( $forbidden ) 313 return $forbidden; 314 315 /* Begin: Validation */ 316 if(!$params['desc']) 317 { 318 $result['status'] = false; 319 $result['msg'] = $this->functions->lang('Field description is empty'); return $result; 320 321 } 322 323 if ( (empty($params['cn'])) || (empty($params['mail'])) ) 324 { 325 $result['status'] = false; 326 $result['msg'] = $this->functions->lang('Field mail or name is empty') . '.'; 327 return $result; 328 } 329 330 if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 331 { 332 $result['status'] = false; 333 $result['msg'] = $this->functions->lang('Field mail is not formed correcty') . '.'; 334 return $result; 335 } 336 337 $dnReal = "uid=".$params['uid']."," . $params['context']; 338 $dn = strtolower("uid=".$params['uid']."," . $params['context']); 339 $anchor = strtolower($params['anchor']); 340 341 342 $filter = "(mail=".$params['mail'].")"; 343 $justthese = array("cn","uidnumber"); 344 $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 345 $entries = @ldap_get_entries($this->ldap,$search); 346 347 //DEBUG: Alteracao para compatibilizar com LDAP da CAIXA. 348 // estas funcoes do ExpressoAdmin nao levam em consideracao o DN do objeto encontrado 349 // e o "codigo" assume que o DN comeca com UID quando na CAIXA comeca com CN. 350 351 // Se for encontrado somente um objeto e este estiver diferente do ANCHOR, entao pega o DN 352 // do resultado da busca 353 if ( ($entries['count'] == 1) && (utf8_decode($entries[0]['dn']) != $anchor) ) 354 { 355 // Forca o DN 356 $dn = strtolower (utf8_decode($entries[0]['dn'])); 357 $dnReal = $entries[0]['dn']; 358 $anchor = $dn; 359 } 360 361 if ( ($entries['count'] > 1) || (($entries['count'] == 1) && (strtolower(utf8_decode($entries[0]['dn'])) != $anchor)) ) 362 { 363 $result['status'] = false; 364 $result['msg'] = $this->functions->lang('Field mail already in use.'); 365 return $result; 366 } 367 /* End: Validation */ 368 369 $result = array(); 370 $result['status'] = true; 371 372 if ($anchor != $dn) 373 { 374 if (!@ldap_rename($this->ldap, $params['anchor'], "uid=$params[uid]", $params['context'], true)) 375 { 376 $result['status'] = false; 377 $result['msg'] = $this->functions->lang('Error on function') . ' ldap_functions->save_shared_accounts: ldap_rename'; 378 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 379 } 380 } 381 382 $info = array(); 383 $info['cn'] = utf8_encode($params['cn']); 384 $info['sn'] = utf8_encode($params['cn']); 385 $info['uid'] = $params['uid']; 386 $info['mail'] = $params['mail']; 387 388 389 $del = array(); 390 391 if( $params['mailalternateaddress'] ) 392 $info['mailalternateaddress'] = $params['mailalternateaddress']; 393 else 394 $del['mailalternateaddress'] = array(); 395 396 if ($params['accountStatus'] == 'on') 397 $info['accountStatus'] = 'active'; 398 else 399 $info['accountStatus'] = array(); 400 401 if ($params['phpgwAccountVisible'] == 'on') 402 $info['phpgwAccountVisible'] = '-1'; 403 else 404 $info['phpgwAccountVisible'] = array(); 405 406 if ($params['desc'] != '') 407 $info['description'] = utf8_encode($params['desc']); 408 else 409 $info['description'] = array(); 410 411 ldap_set_option ($this->ldap, LDAP_OPT_PROTOCOL_VERSION, 3); 412 413 if( !empty( $del ) ) 414 @ldap_mod_del( $this->ldap, $dnReal, $del ); 415 416 if (!@ldap_modify ( $this->ldap,$dnReal, $info )) 417 { 418 $result['status'] = false; 419 $result['msg'] = $this->functions->lang('Error on function') . ' ldap_functions->save_shared_accounts: ldap_modify'; 420 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 421 } 422 //print_r($info);echo "Teste $dn".$result['msg'];exit(); 423 return $result; 424 } 425 426 function create_shared_accounts($params) 427 { 428 /* Begin: Access verification */ 429 430 $forbidden = $this->noAccess( $params['context'], 'add_shared_accounts', 'create shared accounts' ); 431 432 if( $forbidden ) 433 return( $forbidden ); 434 435 /* End: Access verification */ 436 437 438 /* Begin: Validation */ 439 440 if(!$params['desc']) 441 { 442 $result['status'] = false; 443 $result['msg'] = $this->functions->lang('Field description is empty'); return $result; 444 445 } 446 447 if ( (empty($params['cn'])) || (empty($params['mail'])) ) 448 { 449 $result['status'] = false; 82 450 $result['msg'] = $this->functions->lang('Field mail or name is empty'); return $result; 83 451 } … … 96 464 if ($entries['count'] != 0) 97 465 { 98 $result['status'] = false; 99 $result['msg'] = $this->functions->lang('Field mail already in use'); 100 return $result; 101 } 466 $result['status'] = false; 467 $result['msg'] = $this->functions->lang('Field mail already in use'); 468 return $result; 469 } 470 471 // Leio o ID a ser usado na criação do objecto. Esta função já incrementa o ID no BD. 472 $next_id = ($this->db_functions->get_next_id('accounts')); 473 if ((!is_numeric($next_id['id'])) || (!$next_id['status'])) 474 { 475 $return['status'] = false; 476 $return['msg'] = $this->functions->lang('problems getting user id') . ".\n" . $id['msg']; 477 return $return; 478 } 479 else 480 { 481 $id = $next_id['id']; 482 } 483 102 484 /* End: Validation */ 103 485 104 486 $info = array(); 105 $info['cn'] = $params['cn']; 106 $info['sn'] = $params['cn']; 487 $info['cn'] = utf8_encode($params['cn']); 488 $info['sn'] = utf8_encode($params['cn']); 489 $info['uidnumber'] = $id; 490 $info['homeDirectory'] = '/dev/null'; 491 $info['gidNumber'] = '1000'; 107 492 $info['uid'] = $params['uid']; 108 493 $info['mail'] = $params['mail']; 109 494 $info['description'] = utf8_encode($params['desc']); 110 495 $info['phpgwAccountType'] = 's'; 111 $info['objectClass'][] = 'inetOrgPerson'; 112 $info['objectClass'][] = 'phpgwAccount'; 113 $info['objectClass'][] = 'top'; 114 $info['objectClass'][] = 'person'; 115 $info['objectClass'][] = 'qmailUser'; 116 $info['objectClass'][] = 'organizationalPerson'; 496 $info['objectClass'][0] = 'inetOrgPerson'; 497 $info['objectClass'][1] = 'phpgwAccount'; 498 $info['objectClass'][2] = 'top'; 499 $info['objectClass'][3] = 'person'; 500 $info['objectClass'][4] = 'qmailUser'; 501 $info['objectClass'][5] = 'organizationalPerson'; 502 $info['objectClass'][6] = 'posixAccount'; 117 503 118 504 if ($params['accountStatus'] == 'on') … … 124 510 $info['phpgwAccountVisible'] = '-1'; 125 511 } 512 if( !empty( $params['mailalternateaddress'] ) ) 513 $info['mailalternateaddress'] = $params['mailalternateaddress']; 126 514 127 515 /*if (!empty($params['owners'])) … … 338 726 */ 339 727 340 $filter = "(o bjectClass=organizationalUnit)";728 $filter = "(ou=*)"; 341 729 $justthese = array("ou"); 342 730 $search = ldap_list($ldap_connection2, $context, $filter, $justthese); … … 437 825 438 826 $filter = "(&(phpgwAccountType=u)(cpf=$cpf))"; 439 $justthese = array("cn","uid" ,"mail");827 $justthese = array("cn","uid"); 440 828 $search = ldap_search($local_ldap_connection, $context, $filter, $justthese); 441 829 $entries = ldap_get_entries($local_ldap_connection,$search); 442 830 443 if ( ($entries['count'] > 0) && (strcasecmp($uid, $entries[0]['uid'][0]) != 0) )831 if ( ($entries['count'] != 1) && (strcasecmp($uid, $entries[0]['uid'][0]) != 0) ) 444 832 { 445 833 if ($entries['count'] > 0) 446 834 { 447 $entries_text = "";835 $result['question'] = $this->functions->lang('Field CPF used by') . ":\n"; 448 836 for ($i=0; $i<$entries['count']; $i++) 449 837 { 450 838 if (strcasecmp($uid, $entries[$i]['uid'][0]) != 0) 451 $entries_text .= $entries[$i]['cn'][0] ." - ".$entries[0]['uid'][0] ." - ".$entries[$i]['mail'][0]."\n";839 $result['question'] .= "- " . $entries[$i]['cn'][0] . "\n"; 452 840 } 453 if ($this->current_config['expressoAdmin_deny_same_cpf'] == 'false' )454 {455 $result['question'] = $this->functions->lang('Field CPF used by') . ":\n";456 $result['question'] .= $entries_text;457 841 $result['question'] .= $this->functions->lang("Do you want to continue anyway") . "?"; 458 842 return $result; 459 } else {460 $result['status'] = false;461 $result['msg'] = $this->functions->lang('Field CPF cannot be duplicated') . ".\n";462 $result['msg'] .= $this->functions->lang('Field CPF used by') . ":\n";463 $result['msg'] .= $entries_text;464 return $result;465 }466 467 843 } 468 844 } … … 487 863 $justthese = array("uid"); 488 864 $i=1; 489 $login = array("status" => False,"msg" => $this->functions->lang("Login generator disabled")); 865 $login = array("status" => False,"msg" => lang("Login generator disabled")); 866 490 867 if( (isset($this->current_config['expressoAdmin_loginGenScript'])) && 491 868 ($this->current_config['expressoAdmin_loginGenScript'])) { … … 501 878 return array( 502 879 "status" => False, 503 "msg" => $this->functions->lang("Login interface not implemented (contact suport)")880 "msg" => lang("Login interface not implemented (contact suport)") 504 881 ); 505 882 } … … 665 1042 } 666 1043 1044 function get_available( $params, $justthese = false, $targetTypes = false ) 1045 { 1046 $search = $params['sentence'] ? $params['sentence'] : $params['filter']; 1047 1048 if( !$justthese ) 1049 $justthese = array('cn', 'uidNumber','uid'); 1050 1051 if( !$targetTypes ) 1052 $targetTypes = 'u'; 1053 1054 $ldapService = ServiceLocator::getService('ldap'); 1055 1056 $entries = $ldapService->accountSearch( $search, $justthese, $params['context'], $targetTypes, 'cn' ); 1057 1058 return( $entries ); 1059 } 1060 1061 function get_options( $entries, $label, $value = false, $uid = false ) 1062 { 1063 if( !$value ) 1064 $value = $label; 1065 1066 $options = ''; 1067 foreach( $entries as $entry ) 1068 { 1069 if( $uid ) 1070 $entry[$label] .= '('.$entry[$uid].')'; 1071 1072 $options .= '<option value='.$entry[$value].'>'.$entry[$label].'</option>'; 1073 } 1074 1075 return $options; 1076 } 1077 1078 function get_json( $entries, $label, $value = false, $uid = false ) 1079 { 1080 if( !$value ) 1081 $value = $label; 1082 1083 $options = array(); 1084 1085 foreach( $entries as $entry ) 1086 { 1087 if( $uid ) 1088 $entry[$label] .= '('.$entry[$uid].')'; 1089 1090 $options[] = '"'.$entry[$value].'"'.':'.'"'.$entry[$label].'"'; 1091 1092 } 1093 1094 return "{".implode(',',$options)."}"; 1095 } 1096 1097 667 1098 //Busca usuários de um contexto e já retorna as options do select; 668 1099 function get_available_users($params) 669 { 670 $context = $params['context']; 671 $recursive = $params['recursive']; 672 $justthese = array("cn", "uidNumber"); 673 $filter="(phpgwAccountType=u)"; 674 675 if ($recursive == 'true') 676 $groups_list=ldap_search($this->ldap, $context, $filter, $justthese); 677 else 678 $groups_list=ldap_list($this->ldap, $context, $filter, $justthese); 679 680 $entries = ldap_get_entries($this->ldap, $groups_list); 681 682 for ($i=0; $i<$entries["count"]; $i++){ 683 $u_tmp[$entries[$i]["uidnumber"][0]] = $entries[$i]["cn"][0]; 684 } 685 686 if (count($u_tmp)) 687 natcasesort($u_tmp); 688 689 $i = 0; 690 $users = array(); 691 692 if (count($u_tmp)) 693 { 694 foreach ($u_tmp as $uidnumber => $cn) 695 { 696 $options .= "<option value=$uidnumber>$cn</option>"; 697 } 698 unset($u_tmp); 699 } 700 701 return $options; 702 } 703 //Busca usuarios de um contexto e ja retorna as options do select; 1100 { 1101 $entries = $this->get_available($params ); 1102 1103 // $options = ''; 1104 // foreach ($entries as $value) 1105 // $options .= '<option value='.$value['uidnumber'].'>'.$value['cn'].'('.$value['uid'].')</option>'; 1106 1107 return $this->get_options( $entries, 'cn', 'uidnumber', 'uid' ); 1108 } 1109 1110 //Busca usuários e contas compartilhadas de um contexto e já retorna as options do select; 1111 function get_available_users_and_shared_acounts($params) 1112 { 1113 $entries = $this->get_available($params, array('cn', 'uidNumber','uid'), array('u','s') ); 1114 // $options = ''; 1115 // foreach ($entries as $value) 1116 // $options .= '<option value='.$value['uidnumber'].'>'.$value['cn'].'('.$value['uid'].')</option>'; 1117 1118 return $this->get_options( $entries, 'cn', 'uidnumber', 'uid' ); 1119 } 1120 704 1121 function get_available_users2($params) 705 1122 { 706 $context= $params['context']; 707 $justthese = array("cn", "uid"); 708 $filter = "(&(phpgwaccounttype=u)(!(phpgwaccountvisible=-1)))"; 709 710 if ($this->ldap) 711 { 712 $sr=ldap_search($this->ldap, $context, $filter, $justthese); 713 $entries = ldap_get_entries($this->ldap, $sr); 714 715 for ($i=0; $i<$entries["count"]; $i++){ 716 $u_tmp[$entries[$i]["uid"][0]] = $entries[$i]["cn"][0]; 717 } 718 719 natcasesort($u_tmp); 720 721 $i = 0; 722 $users = array(); 723 724 if (count($u_tmp)) 725 { 726 foreach ($u_tmp as $uidnumber => $cn) 727 { 728 $options .= "<option value=$uidnumber>$cn</option>"; 729 } 730 unset($u_tmp); 731 } 732 return $options; 733 } 734 } 1123 $entries = $this->get_available($params, array('cn', 'uid') ); 1124 1125 // $options = array(); 1126 // foreach ($entries as $value) 1127 // $options[] = '"'.$value['uid'].'"'.':'.'"'.$value['cn'].'('.$value['uid'].')'.'"'; 1128 1129 return $this->get_json( $entries, 'cn', 'uid', 'uid' ); 1130 } 1131 1132 function get_available_users3($params) 1133 { 1134 $ldapService = ServiceLocator::getService('ldap'); 1135 $groups = $ldapService->accountSearch($params['filter'], array('gidNumber','cn','uid'), $params['context'], 'g', 'cn'); 1136 $users = $ldapService->accountSearch($params['filter'], array('uidNumber','cn','uid'), $params['context'], 'u', 'cn'); 1137 1138 $user_options =''; 1139 $group_options =''; 1140 $user_options2 =''; 1141 $group_options2 =''; 1142 1143 foreach($groups as $group) 1144 { 1145 $group_options .= '<option value="'.$group['gidnumber'].'">'.$group['cn'].' ('.$group['gidnumber'].')</option>'."\n"; 1146 $group_options2 .= '<option value="'.$group['gidnumber'].',G">'.$group['cn'].' ('.$group['gidnumber'].')</option>'."\n"; 1147 } 1148 1149 foreach($users as $user) 1150 { 1151 $user_options .= '<option value="'.$user['uid'].'">'.$user['cn'].' ('.$user['uid'].')</option>'."\n"; 1152 $user_options2 .= '<option value="'.$user['uid'].',U">'.$user['cn'].' ('.$user['uid'].')</option>'."\n"; 1153 1154 } 1155 1156 return array("users" => $user_options, "groups" => $group_options , "users2" => $user_options2, "groups2" => $group_options2); 1157 } 1158 1159 /** 1160 * @abstract Busca usuários de um contexto e retorna já formatado com as options do select. 1161 * @params array params com as informações do formulário com os dados do contexto e etc. 1162 * @return array com os usuários do contexto já com a formatação das options do select. 1163 */ 1164 function get_available_users_messages_size($params) 1165 { 1166 /* $ldapService = ServiceLocator::getService('ldap'); 1167 $entries = $ldapService->accountSearch($params['sentence'], array('cn', 'uidNumber','uid'), $params['context'], 'u', 'cn'); 1168 $options = array(); 1169 1170 foreach ($entries as $value) 1171 $options[] = '"'.$value['uid'].'"'.':'.'"'.$value['cn'].'('.$value['uid'].')'.'"';*/ 1172 1173 $entries = $this->get_available( $params, array('cn', 'uid') ); 1174 1175 return $this->get_json( $entries, 'cn', 'uid','uid' ); 1176 } 1177 1178 /** 1179 * @abstract Busca usuários e grupos de um contexto e retorna já formatado com as options do select. 1180 * @params array params com as informações do formulário com os dados do contexto e etc. 1181 * @return array com os usuários do contexto já com a formatação das options do select. 1182 */ 1183 function get_available_users_and_groups_messages_size($params) 1184 { 1185 $ldapService = ServiceLocator::getService('ldap'); 1186 $groups = $ldapService->accountSearch($params['sentence'], array('gidNumber','cn','uid'), $params['context'], 'g', 'cn'); 1187 $users = $ldapService->accountSearch($params['sentence'], array('cn','uid'), $params['context'], 'u', 'cn'); 1188 $optionsUsers = array(); 1189 $optionsGroups = array(); 1190 foreach ($users as $value) 1191 $optionsUsers[] = '"'.$value['uid'].'"'.':'.'"'.$value['cn'].'('.$value['uid'].')'.'"'; 1192 1193 foreach ($groups as $value) 1194 $optionsGroups[] = '"'.$value['gidNumber'].'"'.':'.'"'.$value['cn'].'('.$value['uid'].')'.'"'; 1195 1196 return "{".implode(',',$optionsUsers).implode(',',$optionsGroups)."}"; 1197 } 1198 1199 735 1200 //Busca usuários e listas de um contexto e já retorna as options do select; 736 1201 function get_available_users_and_maillist($params) 737 { 1202 { 1203 1204 $ldapService = ServiceLocator::getService('ldap'); 1205 $users = $ldapService->accountSearch($params['sentence'], array('cn', 'mail','uid'), $params['context'], 'u', 'cn'); 1206 $listas = $ldapService->accountSearch($params['sentence'], array('cn', 'mail','uid'), $params['context'], 'l', 'cn'); 1207 $options = ''; 1208 if(count($listas) > 0) 1209 { 1210 $options .= '<option value="-1" disabled>------------------------------ '.$this->functions->lang('email lists').' ------------------------------ </option>'."\n"; 1211 foreach ($listas as $value) 1212 $options .= '<option value='.$value['mail'].'>'.$value['cn'].'('.$value['uid'].')</option>'; 1213 } 1214 1215 if(count($users) > 0) 1216 { 1217 $options .= '<option value="-1" disabled>----------------------------- '.$this->functions->lang('users').' ---------------------------- </option>'."\n"; 1218 foreach ($users as $value) 1219 $options .= '<option value='.$value['mail'].'>'.$value['cn'].'('.$value['uid'].')</option>'; 1220 } 1221 1222 return $options; 1223 } 1224 1225 function get_available_groups($params) 1226 { 1227 // $ldapService = ServiceLocator::getService('ldap'); 1228 // $entries = $ldapService->accountSearch($params['sentence'], array('cn', 'gidnumber'), $params['context'], 'g', 'cn'); 1229 // $options = ''; 1230 // 1231 // foreach ($entries as $value) 1232 // $options .= '<option value='.$value['gidnumber'].'>'.$value['cn'].'</option>'; 1233 1234 $entries = $this->get_available( $params, array( 'cn', 'gidNumber' ), 'g' ); 1235 1236 return $this->get_options( $entries, 'cn', 'gidnumber' ); 1237 } 1238 1239 function get_available_maillists($params) 1240 { 1241 if ( !$ldapMasterConnect = $this->ldapMasterConnect() ) 1242 return false; 1243 738 1244 $context = $params['context']; 739 $recursive = $params['recursive']; 740 741 //Usado para retirar a própria lista das possibilidades de inclusão. 742 $denied_uidnumber = $params['denied_uidnumber']; 743 744 $justthese = array("cn", "uidNumber", "mail"); 745 746 $users_filter="(phpgwAccountType=u)"; 747 $lists_filter = $denied_uidnumber == '' ? "(phpgwAccountType=l)" : "(&(phpgwAccountType=l)(!(uidnumber=$denied_uidnumber)))"; 748 749 $users = Array(); 750 $lists = Array(); 751 752 /* folling referral connection */ 753 $ldap_conn_following_ref = ldap_connect($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['host']); 754 if ($ldap_conn_following_ref) 755 { 756 ldap_set_option($ldap_conn_following_ref, LDAP_OPT_PROTOCOL_VERSION, 3); 757 ldap_set_option($ldap_conn_following_ref, LDAP_OPT_REFERRALS, 1); 758 759 if ( ($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] != '') && ($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['pw'] != '') ) 760 ldap_bind($ldap_conn_following_ref, $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'], $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['pw']); 761 } 762 else 763 return false; 764 765 if ($recursive == 'true') 766 $users_search = ldap_search($ldap_conn_following_ref, $context, $users_filter, $justthese); 767 else 768 $users_search = ldap_list($ldap_conn_following_ref, $context, $users_filter, $justthese); 769 770 /* email lists */ 771 if($params['listSearch'] == 'true'){ 772 if ($recursive == 'true') 773 $lists_search = ldap_search($ldap_conn_following_ref, $context, $lists_filter, $justthese); 774 else 775 $lists_search = ldap_list($ldap_conn_following_ref, $context, $lists_filter, $justthese); 776 777 $lists_entries = ldap_get_entries($ldap_conn_following_ref, $lists_search); 778 779 for ($i=0; $i<$lists_entries["count"]; $i++) 780 { 781 $l_tmp[$lists_entries[$i]["mail"][0]] = $lists_entries[$i]["cn"][0]; 782 } 783 784 if (count($l_tmp)) 785 natcasesort($l_tmp); 786 787 $i = 0; 788 $lists = array(); 789 790 $options .= '<option value="-1" disabled>------------------------------ '.$this->functions->lang('email lists').' ------------------------------ </option>'."\n"; 791 if (count($l_tmp)) 792 { 793 foreach ($l_tmp as $mail => $cn) 794 { 795 $options .= "<option value=$mail>$cn</option>"; 796 } 797 unset($l_tmp); 798 } 799 } 800 801 /* users */ 802 $users_entries = ldap_get_entries($ldap_conn_following_ref, $users_search); 803 for ($i=0; $i<$users_entries["count"]; $i++) 804 { 805 $u_tmp[$users_entries[$i]["mail"][0]] = $users_entries[$i]["cn"][0]; 806 } 807 808 if (count($u_tmp)) 809 natcasesort($u_tmp); 810 811 $i = 0; 812 $users = array(); 813 814 $options .= '<option value="-1" disabled>----------------------------- '.$this->functions->lang('users').' ---------------------------- </option>'."\n"; 815 816 if (count($u_tmp)) 817 { 818 foreach ($u_tmp as $mail => $cn) 819 { 820 $options .= "<option value=$mail class='line-above'>$cn</option>"; 821 } 822 unset($u_tmp); 823 } 824 825 ldap_close($ldap_conn_following_ref); 1245 $justthese = array("uid","mail","uidNumber"); 1246 $maillists=ldap_list($ldapMasterConnect, $context, ("(phpgwAccountType=l)"), $justthese); 1247 ldap_sort($ldapMasterConnect, $maillists, "uid"); 1248 1249 $entries = ldap_get_entries($ldapMasterConnect, $maillists); 1250 1251 $options = ''; 1252 for ($i=0; $i<$entries['count']; $i++) 1253 { 1254 $options .= "<option value=" . $entries[$i]['uid'][0] . ">" . $entries[$i]['uid'][0] . " (" . $entries[$i]['mail'][0] . ")" . "</option>"; 1255 } 1256 1257 ldap_close($ldapMasterConnect); 826 1258 return $options; 827 1259 } 828 1260 829 function get_available_groups($params) 830 { 831 $context = $params['context']; 832 $justthese = array("cn", "gidNumber"); 833 $groups_list=ldap_list($this->ldap, $context, ("(phpgwAccountType=g)"), $justthese); 834 ldap_sort($this->ldap, $groups_list, "cn"); 1261 function get_available_institutional_account($params) 1262 { 1263 if ( !$ldapMasterConnect = $this->ldapMasterConnect() ) 1264 return false; 1265 1266 $filtro =utf8_encode($params['filter']); 1267 $context =utf8_encode($params['context']);//adicionado 1268 $justthese = array("uid","mail","uidNumber"); 1269 $maillists=ldap_list($ldapMasterConnect, $context, ("(&(phpgwAccountType=i)(mail=*$filtro*))"), $justthese); 1270 ldap_sort($ldapMasterConnect, $maillists, "uid"); 835 1271 836 $entries = ldap_get_entries($this->ldap, $groups_list);1272 $entries = ldap_get_entries($ldapMasterConnect, $maillists); 837 1273 838 1274 $options = ''; 839 1275 for ($i=0; $i<$entries['count']; $i++) 840 1276 { 841 $options .= "<option value=" . $entries[$i]['gidnumber'][0] . ">" . $entries[$i]['cn'][0] . "</option>";1277 $options .= "<option value=" . $entries[$i]['mail'][0] . ">" . $entries[$i]['mail'][0] . "</option>"; 842 1278 } 843 1279 1280 ldap_close($ldapMasterConnect); 1281 1282 844 1283 return $options; 845 1284 } 846 1285 847 function get_available_maillists($params)1286 function get_available_shared_account($params) 848 1287 { 849 1288 if ( !$ldapMasterConnect = $this->ldapMasterConnect() ) 850 1289 return false; 851 1290 852 $context = $params['context']; 1291 $filtro =utf8_encode($params['filter']); 1292 $context =utf8_encode($params['context']);//adicionado 853 1293 $justthese = array("uid","mail","uidNumber"); 854 $maillists=ldap_list($ldapMasterConnect, $context, ("(phpgwAccountType=l)"), $justthese);1294 $maillists=ldap_search($ldapMasterConnect, $context, ("(&(phpgwAccountType=s)(mail=*$filtro*))"), $justthese); 855 1295 ldap_sort($ldapMasterConnect, $maillists, "uid"); 856 1296 … … 860 1300 for ($i=0; $i<$entries['count']; $i++) 861 1301 { 862 $options .= "<option value=" . $entries[$i]['uid'][0] . ">" . $entries[$i]['uid'][0] . " (" . $entries[$i]['mail'][0] . ")". "</option>";1302 $options .= "<option value=" . $entries[$i]['mail'][0] . ">" . $entries[$i]['mail'][0] . "</option>"; 863 1303 } 864 1304 … … 1132 1572 $result['departmentnumber'] = $entry[0]['departmentnumber'][0]; 1133 1573 $result['givenname'] = $entry[0]['givenname'][0]; 1134 $result['sn'] = $entry[0]['sn'][0];1574 $result['sn'] = utf8_decode($entry[0]['sn'][0]); 1135 1575 $result['telephonenumber'] = $entry[0]['telephonenumber'][0]; 1136 1576 $result['passwd_expired'] = $entry[0]['phpgwlastpasswdchange'][0]; … … 1192 1632 for ($i=0; $i<$entries['count']; $i++) 1193 1633 { 1194 $result['groups_ldap'][ $entries[$i]['gidnumber'][0] ] = $entries[$i]['cn'][0]; 1634 $result['groups_ldap'][ $entries[$i]['gidnumber'][0] ] = utf8_decode($entries[$i]['cn'][0]); 1635 } 1636 } 1637 } 1638 if (is_array($result)) 1639 return $result; 1640 else 1641 return false; 1642 } 1643 1644 1645 function get_user_cn_by_uid($uid) 1646 { 1647 foreach ($this->manager_contexts as $index=>$context) 1648 { 1649 1650 $justthese = array("cn"); 1651 $filter="(&(phpgwAccountType=u)(uid=".$uid."))"; 1652 $search = ldap_search($this->ldap, $context, $filter, $justthese); 1653 $entry = ldap_get_entries($this->ldap, $search); 1654 if($entry) 1655 return utf8_decode($entry[0]['cn'][0]); 1656 } 1657 return null; 1658 } 1659 1660 function get_group_cn_by_gidnumber($gidnumber) 1661 { 1662 foreach ($this->manager_contexts as $index=>$context) 1663 { 1664 1665 $justthese = array("cn"); 1666 $filter="(&(phpgwAccountType=g)(gidNumber=".$gidnumber."))"; 1667 $search = ldap_search($this->ldap, $context, $filter, $justthese); 1668 $entry = ldap_get_entries($this->ldap, $search); 1669 if($entry) 1670 return utf8_decode($entry[0]['cn'][0]); 1671 } 1672 return null; 1673 } 1674 1675 1676 function get_user_info_by_uid($uid) 1677 { 1678 foreach ($this->manager_contexts as $index=>$context) 1679 { 1680 $filter="(&(phpgwAccountType=u)(uid=".$uid."))"; 1681 $justthese = array("cn"); 1682 $search = ldap_search($this->ldap, $context, $filter); 1683 $entry = ldap_get_entries($this->ldap, $search); 1684 1685 if ($entry['count']) 1686 { 1687 //Pega o dn do setor do usuario. 1688 $entry[0]['dn'] = strtolower($entry[0]['dn']); 1689 $sector_dn_array = explode(",", $entry[0]['dn']); 1690 for($i=1; $i<count($sector_dn_array); $i++) 1691 $sector_dn .= $sector_dn_array[$i] . ','; 1692 //Retira ultimo pipe. 1693 $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1)); 1694 1695 $result['context'] = $sector_dn; 1696 $result['uid'] = $entry[0]['uid'][0]; 1697 $result['cn'] = utf8_decode($entry[0]['cn'][0]); 1698 $result['uidnumber'] = $entry[0]['uidnumber'][0]; 1699 $result['gidnumber'] = $entry[0]['gidnumber'][0]; 1700 $result['departmentnumber'] = $entry[0]['departmentnumber'][0]; 1701 $result['givenname'] = $entry[0]['givenname'][0]; 1702 $result['sn'] = $entry[0]['sn'][0]; 1703 $result['telephonenumber'] = $entry[0]['telephonenumber'][0]; 1704 $result['passwd_expired'] = $entry[0]['phpgwlastpasswdchange'][0]; 1705 $result['phpgwaccountstatus'] = $entry[0]['phpgwaccountstatus'][0]; 1706 $result['phpgwaccountvisible'] = $entry[0]['phpgwaccountvisible'][0]; 1707 $result['accountstatus'] = $entry[0]['accountstatus'][0]; 1708 $result['mail'] = $entry[0]['mail'][0]; 1709 $result['mailalternateaddress'] = $entry[0]['mailalternateaddress']; 1710 $result['mailforwardingaddress']= $entry[0]['mailforwardingaddress']; 1711 $result['deliverymode'] = $entry[0]['deliverymode'][0]; 1712 $result['userPasswordRFC2617'] = $entry[0]['userpasswordrfc2617'][0]; 1713 1714 //Photo 1715 if ($entry[0]['jpegphoto']['count'] == 1) 1716 $result['photo_exist'] = 'true'; 1717 1718 // Samba 1719 for ($i=0; $i<$entry[0]['objectclass']['count']; $i++) 1720 { 1721 if ($entry[0]['objectclass'][$i] == 'sambaSamAccount') 1722 $result['sambaUser'] = true; 1723 } 1724 if (($this->current_config['expressoAdmin_samba_support'] == 'true') && ($result['sambaUser'])) 1725 { 1726 $result['sambaaccflags'] = $entry[0]['sambaacctflags'][0]; 1727 $result['sambalogonscript'] = $entry[0]['sambalogonscript'][0]; 1728 $result['homedirectory'] = $entry[0]['homedirectory'][0]; 1729 $a_tmp = explode("-", $entry[0]['sambasid'][0]); 1730 array_pop($a_tmp); 1731 $result['sambasid'] = implode("-", $a_tmp); 1732 } 1733 1734 // Verifica o acesso do gerente aos atributos corporativos 1735 if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'manipulate_corporative_information')) 1736 { 1737 $result['corporative_information_employeenumber']= $entry[0]['employeenumber'][0]; 1738 $result['corporative_information_cpf'] = $entry[0]['cpf'][0]; 1739 $result['corporative_information_rg'] = $entry[0]['rg'][0]; 1740 $result['corporative_information_rguf'] = $entry[0]['rguf'][0]; 1741 $result['corporative_information_description'] = utf8_decode($entry[0]['description'][0]); 1742 } 1743 1744 // MailLists 1745 $result['maillists_info'] = $this->get_user_maillists($result['mail']); 1746 if($result['maillists_info']) 1747 { 1748 foreach ($result['maillists_info'] as $maillist) 1749 { 1750 $result['maillists'][] = $maillist['uid']; 1751 } 1752 } 1753 1754 // Groups 1755 $justthese = array("gidnumber","cn"); 1756 $filter="(&(phpgwAccountType=g)(memberuid=".$result['uid']."))"; 1757 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 1758 ldap_sort($this->ldap, $search, "cn"); 1759 $entries = ldap_get_entries($this->ldap, $search); 1760 for ($i=0; $i<$entries['count']; $i++) 1761 { 1762 $result['groups_ldap'][ $entries[$i]['gidnumber'][0] ] = utf8_decode($entries[$i]['cn'][0]); 1195 1763 } 1196 1764 } … … 1240 1808 } 1241 1809 1242 function get_group_info($gidnumber,$use_global_context=false) 1243 { 1244 $array_context = $use_global_context ? Array(0 => $GLOBALS['phpgw_info']['server']['ldap_context']) : $this->manager_contexts; 1245 foreach ($array_context as $index=>$context) 1810 function get_group_info($gidnumber) 1811 { 1812 foreach ($this->manager_contexts as $index=>$context) 1246 1813 { 1247 1814 $filter="(&(phpgwAccountType=g)(gidNumber=".$gidnumber."))"; … … 1272 1839 1273 1840 // Montagem dinamica do filtro 1274 $filter="(&( phpgwAccountType=u)(|";1841 $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=s))(|"; 1275 1842 for ($k=0; (($k<10) && ($i<$entry[0]['memberuid']['count'])); $k++) 1276 1843 { … … 1475 2042 if (count($gidnumbers)) 1476 2043 { 1477 $justthese = array("cn" );2044 $justthese = array("cn","uid"); 1478 2045 $i = 0; 1479 2046 foreach ($gidnumbers as $gidnumber) … … 1487 2054 1488 2055 else 2056 { 2057 $result['groups_info'][$i]['uid'] = $entry[0]['uid'][0]; 1489 2058 $result['groups_info'][$i]['cn'] = $entry[0]['cn'][0]; 2059 } 1490 2060 $result['groups_info'][$i]['gidnumber'] = $gidnumber; 1491 2061 … … 1510 2080 { 1511 2081 $justthese = array("uid"); 1512 $filter="(&(|(phpgwAccountType=u)(phpgwAccountType= l))(uidNumber=".$uidnumber."))";2082 $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=s)(phpgwAccountType=l))(uidNumber=".$uidnumber."))"; 1513 2083 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 1514 2084 $entry = ldap_get_entries($this->ldap, $search); … … 1522 2092 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 1523 2093 $entry = ldap_get_entries($this->ldap, $search); 1524 return $entry[0]['cn'][0]; 2094 return utf8_decode($entry[0]['cn'][0]); 2095 } 2096 2097 function uid2uidnumber($uid) 2098 { 2099 $justthese = array("uidNumber"); 2100 $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=s)(phpgwAccountType=l))(uid=".$uid."))"; 2101 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 2102 $entry = ldap_get_entries($this->ldap, $search); 2103 return $entry[0]['uidnumber'][0]; 1525 2104 } 1526 2105 … … 1947 2526 $search = ldap_search($this->ldap, $context, $filter, $justthese); 1948 2527 $count_entries = ldap_count_entries($this->ldap, $search); 1949 2528 1950 2529 if ($count_entries > 0) 1951 2530 return true; 1952 2531 else 1953 2532 return false; 1954 }1955 2533 } 2534 1956 2535 function add_sambadomain($sambadomainname, $sambasid, $context) 1957 2536 { … … 1965 2544 1966 2545 if (!@ldap_add ( $this->ldap, $dn, $entry )) 1967 {2546 { 1968 2547 $return['status'] = false; 1969 2548 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->add_sambadomain ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); … … 1974 2553 return $return; 1975 2554 } 1976 2555 1977 2556 function delete_sambadomain($sambadomainname) 1978 2557 { … … 1981 2560 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter); 1982 2561 $entry = ldap_get_entries($this->ldap, $search); 1983 2562 1984 2563 if ($entry['count'] != 0) 1985 2564 { 1986 2565 $dn = $entry[0]['dn']; 1987 2566 … … 1991 2570 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->delete_sambadomain ($sambadomainname)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1992 2571 } 1993 1994 2572 } 2573 1995 2574 return $return; 1996 2575 } 1997 2576 1998 2577 function search_user($params) 1999 { 2000 $search = $params['search']; 2001 $justthese = array("cn","uid", "mail"); 2002 $users_list=ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], "(&(phpgwAccountType=u) (|(cn=*$search*)(mail=$search*)) )", $justthese); 2003 2004 if (ldap_count_entries($this->ldap, $users_list) == 0) 2005 { 2006 $return['status'] = 'false'; 2007 $result['msg'] = $this->functions->lang('Any result was found') . '.'; 2008 return $return; 2009 } 2010 2011 ldap_sort($this->ldap, $users_list, "cn"); 2012 2013 $entries = ldap_get_entries($this->ldap, $users_list); 2014 2015 $options = ''; 2016 for ($i=0; $i<$entries['count']; $i++) 2017 { 2018 $options .= "<option value=" . $entries[$i]['uid'][0] . ">" . $entries[$i]['cn'][0] . " (".$entries[$i]['mail'][0].")" . "</option>"; 2019 } 2020 2578 { 2579 $ldapService = ServiceLocator::getService('ldap'); 2580 $entries = $ldapService->accountSearch($params['search'], array('cn','uid', "mail"), $params['context'], 'u', 'cn'); 2581 2582 if (count($entries) == 0) 2583 { 2584 $return['status'] = 'false'; 2585 $return['msg'] = $this->functions->lang('Any result was found') . '.'; 2586 return $return; 2587 } 2588 $options = ''; 2589 2590 foreach ($entries as $value) 2591 $options .= '<option value='.$value['uid'].'>'.$value['cn'].'('.$value['mail'].')'.'</option>'; 2592 2021 2593 return $options; 2022 }2023 2024 function create_institutional_accounts($params)2025 {2026 /* Begin: Access verification */2027 if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'add_institutional_accounts'))2028 {2029 $return['status'] = false;2030 $return['msg'] = $this->functions->lang('You do not have right to create institutional accounts') . ".";2031 return $return;2032 }2033 2034 $access_granted = false;2035 foreach ($this->manager_contexts as $idx=>$manager_context)2036 {2037 if (stristr($params['context'], $manager_context))2038 {2039 $access_granted = true;2040 break;2041 }2042 }2043 if (!$access_granted)2044 {2045 $return['status'] = false;2046 $return['msg'] = $this->functions->lang('You do not have access to this organization') . ".";2047 return $return;2048 }2049 /* End: Access verification */2050 2051 /* Begin: Validation */2052 if ( (empty($params['cn'])) || (empty($params['mail'])) )2053 {2054 $result['status'] = false;2055 $result['msg'] = $this->functions->lang('Field mail or name is empty');2056 return $result;2057 }2058 2059 if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) )2060 {2061 $result['status'] = false;2062 $result['msg'] = $this->functions->lang('Field mail is not formed correcty') . '.';2063 return $result;2064 }2065 2066 $uid = 'institutional_account_' . $params['mail'];2067 $dn = "uid=$uid," . $params['context'];2068 2069 $filter = "(mail=".$params['mail'].")";2070 $justthese = array("cn");2071 $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);2072 $entries = @ldap_get_entries($this->ldap,$search);2073 if ($entries['count'] != 0)2074 {2075 $result['status'] = false;2076 $result['msg'] = $this->functions->lang('Field mail already in use');2077 return $result;2078 }2079 /* End: Validation */2080 2081 $info = array();2082 $info['cn'] = iconv("ISO-8859-1","UTF-8//TRANSLIT",$params['cn']);2083 $info['sn'] = iconv("ISO-8859-1","UTF-8//TRANSLIT",$params['cn']);2084 $info['uid'] = $uid;2085 $info['mail'] = $params['mail'];2086 $info['description'] = iconv("ISO-8859-1","UTF-8//TRANSLIT",$params['desc']);2087 $info['phpgwAccountType'] = 'i';2088 $info['objectClass'][] = 'inetOrgPerson';2089 $info['objectClass'][] = 'phpgwAccount';2090 $info['objectClass'][] = 'top';2091 $info['objectClass'][] = 'person';2092 $info['objectClass'][] = 'qmailUser';2093 $info['objectClass'][] = 'organizationalPerson';2094 2095 if ($params['accountStatus'] == 'on')2096 {2097 $info['accountStatus'] = 'active';2098 }2099 if ($params['phpgwAccountVisible'] == 'on')2100 {2101 $info['phpgwAccountVisible'] = '-1';2102 }2103 2104 if (!empty($params['owners']))2105 {2106 foreach($params['owners'] as $index=>$uidnumber)2107 {2108 $info['mailForwardingAddress'][] = $this->uidnumber2mail($uidnumber);2109 }2110 }2111 2112 $result = array();2113 if (!@ldap_add ( $this->ldap, $dn, $info ))2114 {2115 $result['status'] = false;2116 $result['msg'] = $this->functions->lang('Error on function') . ' ldap_functions->create_institutional_accounts';2117 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap);2118 }2119 else2120 $result['status'] = true;2121 2122 return $result;2123 }2124 2125 function save_institutional_accounts($params)2126 {2127 /* Begin: Access verification */2128 if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'edit_institutional_accounts'))2129 {2130 $return['status'] = false;2131 $return['msg'] = $this->functions->lang('You do not have right to edit institutional accounts') . ".";2132 return $return;2133 }2134 $access_granted = false;2135 foreach ($this->manager_contexts as $idx=>$manager_context)2136 {2137 if (stristr($params['context'], $manager_context))2138 {2139 $access_granted = true;2140 break;2141 }2142 }2143 if (!$access_granted)2144 {2145 $return['status'] = false;2146 $return['msg'] = $this->functions->lang('You do not have access to this organization') . ".";2147 return $return;2148 }2149 /* End: Access verification */2150 2151 /* Begin: Validation */2152 if ( (empty($params['cn'])) || (empty($params['mail'])) )2153 {2154 $result['status'] = false;2155 $result['msg'] = $this->functions->lang('Field mail or name is empty') . '.';2156 return $result;2157 }2158 2159 if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) )2160 {2161 $result['status'] = false;2162 $result['msg'] = $this->functions->lang('Field mail is not formed correcty') . '.';2163 return $result;2164 }2165 2166 $uid = 'institutional_account_' . $params['mail'];2167 $dn = strtolower("uid=$uid," . $params['context']);2168 $anchor = strtolower($params['anchor']);2169 2170 $filter = "(mail=".$params['mail'].")";2171 $justthese = array("cn");2172 $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);2173 $entries = @ldap_get_entries($this->ldap,$search);2174 2175 if ( ($entries['count'] > 1) || (($entries['count'] == 1) && ($entries[0]['dn'] != $anchor)) )2176 {2177 $result['status'] = false;2178 $result['msg'] = $this->functions->lang('Field mail already in use.');2179 return $result;2180 }2181 /* End: Validation */2182 2183 $result = array();2184 $result['status'] = true;2185 2186 if ($anchor != $dn)2187 {2188 if (!@ldap_rename($this->ldap, $anchor, "uid=$uid", $params['context'], true))2189 {2190 $result['status'] = false;2191 $result['msg'] = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_rename';2192 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap);2193 }2194 }2195 2196 $info = array();2197 $info['cn'] = $params['cn'];2198 $info['sn'] = $params['cn'];2199 $info['uid'] = $uid;2200 $info['mail'] = $params['mail'];2201 2202 if ($params['accountStatus'] == 'on')2203 $info['accountStatus'] = 'active';2204 else2205 $info['accountStatus'] = array();2206 2207 if ($params['phpgwAccountVisible'] == 'on')2208 $info['phpgwAccountVisible'] = '-1';2209 else2210 $info['phpgwAccountVisible'] = array();2211 2212 if ($params['desc'] != '')2213 $info['description'] = utf8_encode($params['desc']);2214 else2215 $info['description'] = array();2216 2217 if (!empty($params['owners']))2218 {2219 foreach($params['owners'] as $index=>$uidnumber)2220 {2221 $mailForwardingAddress = $this->uidnumber2mail($uidnumber);2222 if ($mailForwardingAddress != '')2223 $info['mailForwardingAddress'][] = $mailForwardingAddress;2224 }2225 }2226 else2227 $info['mailForwardingAddress'] = array();2228 2229 if (!@ldap_modify ( $this->ldap, $dn, $info ))2230 {2231 $result['status'] = false;2232 $result['msg'] = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_modify';2233 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap);2234 }2235 2236 return $result;2237 2594 } 2238 2595 … … 2257 2614 for ($i=0; $i<$entries['count']; $i++) 2258 2615 { 2259 $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['cn'][0]. "</td><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "</td><td align='center' onClick=delete_institutional_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>";2260 $trs[$tr] = $entries[$i]['cn'][0];2616 $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . utf8_decode($entries[$i]['cn'][0]) . "</td><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "</td><td align='center' onClick=delete_institutional_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>"; 2617 $trs[$tr] = utf8_decode($entries[$i]['cn'][0]); 2261 2618 } 2262 2619 } … … 2299 2656 else 2300 2657 { 2301 $tmp_user_context = split(",", $entrie[0]['dn']);2658 $tmp_user_context = split(",", utf8_decode($entrie[0]['dn'])); 2302 2659 $tmp_reverse_user_context = array_reverse($tmp_user_context); 2303 2660 array_pop($tmp_reverse_user_context); … … 2307 2664 $return['accountStatus'] = $entrie[0]['accountstatus'][0]; 2308 2665 $return['phpgwAccountVisible'] = $entrie[0]['phpgwaccountvisible'][0]; 2309 $return['cn'] = $entrie[0]['cn'][0];2666 $return['cn'] = utf8_decode($entrie[0]['cn'][0]); 2310 2667 $return['mail'] = $entrie[0]['mail'][0]; 2311 2668 $return['description'] = utf8_decode($entrie[0]['description'][0]); … … 2319 2676 if (!$tmp) {} 2320 2677 else 2321 $a_cn[$tmp['uidnumber']] = $tmp['cn'] ;2678 $a_cn[$tmp['uidnumber']] = $tmp['cn'].'('.$tmp['uid'].')'; 2322 2679 } 2323 2680 natcasesort($a_cn); … … 2341 2698 2342 2699 $input = $params['input']; 2343 $justthese = array("cn", " mail", "uid");2700 $justthese = array("cn", "dn", "mail", "uid"); 2344 2701 $trs = array(); 2345 2702 … … 2351 2708 for ($i=0; $i<$entries['count']; $i++) 2352 2709 { 2353 $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['cn'][0] . "</td><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "</td><td align='center' onClick=delete_shared_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>";2354 $trs[$tr] = $entries[$i]['cn'][0];2710 $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . utf8_decode($entries[$i]['cn'][0]) . "</td><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . utf8_decode($entries[$i]['cn'][0]). " (" . $entries[$i]['uid'][0] . ")" . "</td><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "<td align='center' onClick=delete_shared_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>"; 2711 $trs[$tr] = utf8_decode($entries[$i]['cn'][0]); 2355 2712 } 2356 2713 } … … 2371 2728 } 2372 2729 2373 function save_shared_accounts($params)2374 {2375 /* Begin: Access verification */2376 if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'edit_shared_accounts'))2377 {2378 $return['status'] = false;2379 $return['msg'] = $this->functions->lang('You do not have right to edit shared accounts') . ".";2380 return $return;2381 }2382 $access_granted = false;2383 foreach ($this->manager_contexts as $idx=>$manager_context)2384 {2385 if (stristr($params['context'], $manager_context))2386 {2387 $access_granted = true;2388 break;2389 }2390 }2391 if (!$access_granted)2392 {2393 $return['status'] = false;2394 $return['msg'] = $this->functions->lang('You do not have access to this organization') . ".";2395 return $return;2396 }2397 /* End: Access verification */2398 2399 /* Begin: Validation */2400 if ( (empty($params['cn'])) || (empty($params['mail'])) )2401 {2402 $result['status'] = false;2403 $result['msg'] = $this->functions->lang('Field mail or name is empty') . '.';2404 return $result;2405 }2406 2407 if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) )2408 {2409 $result['status'] = false;2410 $result['msg'] = $this->functions->lang('Field mail is not formed correcty') . '.';2411 return $result;2412 }2413 2414 $dn = strtolower("uid=$params[uid]," . $params['context']);2415 $anchor = strtolower($params['anchor']);2416 2417 $filter = "(mail=".$params['mail'].")";2418 $justthese = array("cn");2419 $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);2420 $entries = @ldap_get_entries($this->ldap,$search);2421 2422 if ( ($entries['count'] > 1) || (($entries['count'] == 1) && ($entries[0]['dn'] != $anchor)) )2423 {2424 $result['status'] = false;2425 $result['msg'] = $this->functions->lang('Field mail already in use.');2426 return $result;2427 }2428 /* End: Validation */2429 2430 $result = array();2431 $result['status'] = true;2432 2433 if ($anchor != $dn)2434 {2435 if (!@ldap_rename($this->ldap, $anchor, "uid=$params[uid]", $params['context'], true))2436 {2437 $result['status'] = false;2438 $result['msg'] = $this->functions->lang('Error on function') . ' ldap_functions->save_shared_accounts: ldap_rename';2439 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap);2440 }2441 }2442 2443 $info = array();2444 $info['cn'] = $params['cn'];2445 $info['sn'] = $params['cn'];2446 $info['uid'] = $params['uid'];2447 $info['mail'] = $params['mail'];2448 2449 if ($params['accountStatus'] == 'on')2450 $info['accountStatus'] = 'active';2451 else2452 $info['accountStatus'] = array();2453 2454 if ($params['phpgwAccountVisible'] == 'on')2455 $info['phpgwAccountVisible'] = '-1';2456 else2457 $info['phpgwAccountVisible'] = array();2458 2459 if ($params['desc'] != '')2460 $info['description'] = utf8_encode($params['desc']);2461 else2462 $info['description'] = array();2463 2464 if (!@ldap_modify ( $this->ldap, $dn, $info ))2465 {2466 $result['status'] = false;2467 $result['msg'] = $this->functions->lang('Error on function') . ' ldap_functions->save_shared_accounts: ldap_modify';2468 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap);2469 }2470 //print_r($info);echo "Teste $dn".$result['msg'];exit();2471 return $result;2472 }2473 2474 2730 function get_shared_account_data($params) 2475 2731 { … … 2501 2757 $return['status'] = 'true'; 2502 2758 $return['accountStatus'] = $entrie[0]['accountstatus'][0]; 2759 2503 2760 $return['phpgwAccountVisible'] = $entrie[0]['phpgwaccountvisible'][0]; 2504 $return['cn'] = $entrie[0]['cn'][0];2761 $return['cn'] = utf8_decode($entrie[0]['cn'][0]); 2505 2762 $return['mail'] = $entrie[0]['mail'][0]; 2506 2763 $return['description'] = utf8_decode($entrie[0]['description'][0]); 2507 2508 } 2764 $return['dn'] = utf8_decode($entrie[0]['dn']); 2765 $return['mailalternateaddress'] = $entrie[0]['mailalternateaddress']; 2766 } 2767 2768 2769 2509 2770 2510 2771 return $return; … … 2512 2773 function mailforwardingaddress2uidnumber($mail) 2513 2774 { 2514 $justthese = array("uidnumber","cn" );2775 $justthese = array("uidnumber","cn", "uid"); 2515 2776 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], ("(&(phpgwAccountType=u)(mail=$mail))"), $justthese); 2516 2777 $entrie = ldap_get_entries($this->ldap, $search); … … 2520 2781 { 2521 2782 $return['uidnumber'] = $entrie[0]['uidnumber'][0]; 2522 $return['cn'] = $entrie[0]['cn'][0]; 2783 $return['cn'] = utf8_decode($entrie[0]['cn'][0]); 2784 $return['uid'] = $entrie[0]['uid'][0]; 2785 return $return; 2786 } 2787 } 2788 2789 function uid2mailforwardingaddress($uid) 2790 { 2791 $justthese = array("mail"); 2792 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], ("(&(phpgwAccountType=u)(uid=$uid))"), $justthese); 2793 $entrie = ldap_get_entries($this->ldap, $search); 2794 if ($entrie['count'] != 1) 2795 return false; 2796 else 2797 { 2798 $return['mail'] = $entrie[0]['mail'][0]; 2523 2799 return $return; 2524 2800 } … … 2553 2829 } 2554 2830 2555 $dn = $entrie[0]['dn'];2831 $dn = utf8_decode($entrie[0]['dn']); 2556 2832 if (!@ldap_delete($this->ldap, $dn)) 2557 2833 { … … 2629 2905 } 2630 2906 2631 function search_available_users_and_maillist($params) 2632 { 2633 $context = $params['context']; 2634 $recursive = $params['recursive']; 2635 $filtro =utf8_encode($params['filter']); 2636 //Usado para retirar a própria lista das possibilidades de inclusão. 2637 $denied_uidnumber = $params['denied_uidnumber']; 2638 2639 $justthese = array("cn", "uidNumber", "mail"); 2640 2641 $users_filter="(&(phpgwaccounttype=u)(!(phpgwaccountvisible=-1))(phpgwaccountstatus=A)(|(cn=*$filtro*)(mail=$filtro*)))"; 2642 $lists_filter = $denied_uidnumber == '' ? "(&(phpgwAccountType=l)(cn=*$filtro*))" : "(&(phpgwAccountType=l)(!(uidnumber=$denied_uidnumber))(|(cn=*$filtro*)(mail=$filtro*)))"; 2643 2644 $users = Array(); 2645 $lists = Array(); 2646 2647 /* folling referral connection */ 2648 $ldap_conn_following_ref = ldap_connect($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['host']); 2649 if ($ldap_conn_following_ref) 2650 { 2651 ldap_set_option($ldap_conn_following_ref, LDAP_OPT_PROTOCOL_VERSION, 3); 2652 ldap_set_option($ldap_conn_following_ref, LDAP_OPT_REFERRALS, 1); 2653 2654 if ( ($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] != '') && ($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['pw'] != '') ) 2655 ldap_bind($ldap_conn_following_ref, $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'], $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['pw']); 2656 } 2657 else 2658 return false; 2659 2660 if ($recursive == 'true') 2661 $users_search = ldap_search($ldap_conn_following_ref, $context, $users_filter, $justthese); 2662 else 2663 $users_search = ldap_list($ldap_conn_following_ref, $context, $users_filter, $justthese); 2664 2665 /* email lists */ 2666 if($params['listSearch'] == 'true'){ 2667 if ($recursive == 'true') 2668 $lists_search = ldap_search($ldap_conn_following_ref, $context, $lists_filter, $justthese); 2669 else 2670 $lists_search = ldap_list($ldap_conn_following_ref, $context, $lists_filter, $justthese); 2671 2672 $lists_entries = ldap_get_entries($ldap_conn_following_ref, $lists_search); 2673 2674 for ($i=0; $i<$lists_entries["count"]; $i++) 2675 { 2676 $l_tmp[$lists_entries[$i]["mail"][0]] = $lists_entries[$i]["cn"][0]; 2677 } 2678 2679 if (count($l_tmp)) 2680 natcasesort($l_tmp); 2681 2682 $i = 0; 2683 $lists = array(); 2684 2685 $options .= '<option value="-1" disabled>------------------------------ '.$this->functions->lang('email lists').' ------------------------------ </option>'."\n"; 2686 if (count($l_tmp)) 2687 { 2688 foreach ($l_tmp as $mail => $cn) 2689 { 2690 $options .= "<option value=$mail>$cn</option>"; 2691 } 2692 unset($l_tmp); 2693 } 2694 } 2695 2696 /* users */ 2697 $users_entries = ldap_get_entries($ldap_conn_following_ref, $users_search); 2698 for ($i=0; $i<$users_entries["count"]; $i++) 2699 { 2700 $u_tmp[$users_entries[$i]["mail"][0]] = $users_entries[$i]["cn"][0]; 2701 } 2702 2703 if (count($u_tmp)) 2704 natcasesort($u_tmp); 2705 2706 $i = 0; 2707 $users = array(); 2708 2709 $options .= '<option value="-1" disabled>----------------------------- '.$this->functions->lang('users').' ---------------------------- </option>'."\n"; 2710 2711 if (count($u_tmp)) 2712 { 2713 foreach ($u_tmp as $mail => $cn) 2714 { 2715 $options .= "<option value=$mail class='line-above'>$cn</option>"; 2716 } 2717 unset($u_tmp); 2718 } 2719 2720 ldap_close($ldap_conn_following_ref); 2721 return $options; 2722 } 2907 2723 2908 2724 2909 } -
trunk/expressoAdmin1_2/inc/class.manager.inc.php
r3018 r5133 50 50 function make_manager_acl($array_post) 51 51 { 52 $total_manager_acl = 0; 52 53 $total_manager_acl = array(); 54 53 55 foreach ($array_post as $atribute=>$value) 54 56 { 55 57 $acl = strstr($atribute, 'acl_'); 56 58 57 if ($acl !== false) 58 { 59 /* Valmir Andre de Sena - valmir.sena@ati.pe.gov.br 60 * changed + operation to bcadd, because php plus operation get wrong over 41 bits 61 */ 62 $total_manager_acl = bcadd( $total_manager_acl, $value); 63 } 59 if ($acl !== false && $value = 'true') 60 array_push($total_manager_acl, $atribute); 61 64 62 } 63 65 64 return $total_manager_acl; 66 65 } … … 132 131 function manager_lid_exist($manager_lid) 133 132 { 134 $query = "SELECT manager_lid FROM phpgw_expressoadmin WHERE manager_lid = '" . $manager_lid . "'";133 $query = "SELECT manager_lid FROM phpgw_expressoadmin_acls WHERE manager_lid = '" . $manager_lid . "'"; 135 134 $this->db->query($query); 136 135 while($this->db->next_record()) -
trunk/expressoAdmin1_2/inc/class.shared_accounts.inc.php
r1983 r5133 13 13 include_once('class.ldap_functions.inc.php'); 14 14 include_once('class.imap_functions.inc.php'); 15 include_once('class.db_functions.inc.php'); 15 16 16 17 class shared_accounts … … 19 20 var $ldap_functions; 20 21 var $imap_functions; 22 var $db_functions; 21 23 22 24 function shared_accounts() … … 26 28 $this->imap_functions = new imap_functions; 27 29 $this->functions = new functions; 30 $this->db_functions = new db_functions(); 28 31 29 32 } … … 42 45 $result &= $this->imap_functions->setaclfrombox($user,$acl,$params['uid']); 43 46 } 47 $owners_calendar_acl_new = unserialize($params['owners_calendar_acl']); 48 $owner = $this->ldap_functions->uid2uidnumber($params['uid']); 49 foreach($owners_calendar_acl_new as $user => $acl){ 50 $result &= $this->db_functions->save_calendar_acls($this->ldap_functions->uid2uidnumber($user),$acl,$owner); 51 } 52 44 53 } 45 54 return $return; … … 53 62 $result = $this->ldap_functions->save_shared_accounts($params); 54 63 64 55 65 if( $result['status']){ 56 66 $result = $this->imap_functions->save_shared_account($params); 67 68 $owners_calendar_acl_new = unserialize($params['owners_calendar_acl']); 69 70 $owner = $params['uidnumber']; 71 foreach($owners_calendar_acl_new as $user => $acl){ 72 $this->db_functions->save_calendar_acls($this->ldap_functions->uid2uidnumber($user),$acl,$owner); 73 } 57 74 } 58 75 … … 105 122 $owners_acl = $this->imap_functions->getaclfrombox($params); 106 123 $quota = $this->imap_functions->get_user_info($params['uid']); 124 $owner = $this->ldap_functions->uid2uidnumber($params['uid']); 125 $calendarAcls = $this->db_functions->get_calendar_acls($owner); 126 127 $return['uidnumber'] = $owner; 107 128 $return['mailquota'] = $quota['mailquota']; 108 129 $return['display_empty_inbox'] = $this->functions->check_acl($_SESSION['phpgw_session']['session_lid'],'empty_shared_accounts_inbox') ? 'block' : 'none'; … … 114 135 { 115 136 $cn = $this->ldap_functions->uid2cn($key); 137 $uidnumber = $this->ldap_functions->uid2uidnumber($key); 138 139 if( $uid ) 140 $cn .= '(' . $uid . ')'; 141 116 142 $return['owners_options'] .= '<option value='. $key .'>' . $cn . '</option>'; 117 143 $return['owners'][$i] .= $key; 118 144 $return['owners_acl'][$i] .= $value; 145 $return['owners_calendar_acl'][$i] .= $calendarAcls[$key]; 119 146 $i++; 120 147 } … … 123 150 $return['owners'] = false; 124 151 $return['owners_acl'] = false; 152 $return['owners_calendar_acl'] == false; 125 153 } 154 126 155 return $return; 127 156 } 157 158 128 159 function delete($params){ 129 160 $result = $this->ldap_functions->delete_shared_account_data($params); … … 134 165 function get_shared_mail2uid($params){ 135 166 list($uid) = explode("@",$params['mail']); 136 if( preg_match("/^(ou|dc)=(\w+),.*/", $params['context'], $match) ){137 $uid = $uid."_".$match[2];138 }139 167 return $uid; 140 168 } -
trunk/expressoAdmin1_2/inc/class.sosectors.inc.php
r1850 r5133 48 48 function write_ldap($dn, $info) 49 49 { 50 if ( @ldap_add($this->ldap_connection, $dn, $info) ) 50 $info['ou'] = utf8_encode($info['ou']); 51 52 if (ldap_add($this->ldap_connection, utf8_encode($dn), $info)) 51 53 { 52 54 $this->db_functions->write_log("write on ldap", "$dn"); … … 56 58 else 57 59 { 58 $this->db_functions->write_log("Error write on ldap", "$dn");60 echo lang('Error written in LDAP, function write_ldap'); 59 61 ldap_close($this->ldap_connection); 60 62 return false; … … 131 133 } 132 134 133 function replace_attribute($dn, $info)134 {135 $connection = $GLOBALS['phpgw']->common->ldapConnect();136 137 if (ldap_mod_replace($connection, $dn, $info))138 {139 ldap_close($connection);140 return true;141 }142 else143 {144 echo 'Erro na escrita no LDAP, funcao replace_attribute: ' . ldap_error($connection);145 ldap_close($connection);146 return false;147 }148 }149 150 135 function remove_attribute($dn, $info) 151 136 { -
trunk/expressoAdmin1_2/inc/class.uiaccounts.inc.php
r3458 r5133 48 48 } 49 49 $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 50 $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 50 51 $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 51 52 $GLOBALS['phpgw']->js->validate_file('jscode','tabs','expressoAdmin1_2'); … … 407 408 $disabled_phonenumber = ''; 408 409 } 409 elseif(($this->functions->check_acl($manager_account_lid,'edit_users')) && ($this->functions->check_acl($manager_account_lid,'edit_users_phonenumber'))) {410 $disabled_phonenumber = '';411 }412 elseif(!$this->functions->check_acl($manager_account_lid,'edit_users_phonenumber')) {413 $disabled_phonenumber = 'disabled';414 }415 416 410 // SOMENTE GRUPOS 417 411 if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && ($this->functions->check_acl($manager_account_lid,'edit_groups'))) … … 434 428 $disabled_password = ''; 435 429 $disabled_samba = ''; 430 $disabled_phonenumber = ''; 436 431 $disabled_group = ''; 437 432 } … … 496 491 foreach ($user_info['groups_info'] as $group) 497 492 { 498 $array_groups[$group['gidnumber']] = $group['cn'] ;493 $array_groups[$group['gidnumber']] = $group['cn'].'('.$group['uid'].')'; 499 494 } 500 495 natcasesort($array_groups); … … 551 546 foreach ($array_maillist as $uid=>$option) 552 547 { 553 $ea_select_user_maillists_options .= "<option value=" . $uid . ">" . $option . "</option>";548 $ea_select_user_maillists_options .= "<option value=" . $uid . ">" . $option.'('.$uid . ")</option>"; 554 549 } 555 550 } -
trunk/expressoAdmin1_2/inc/class.uigroups.inc.php
r3251 r5133 43 43 } 44 44 $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 45 $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 45 46 $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 46 47 $GLOBALS['phpgw']->js->validate_file('jscode','groups','expressoAdmin1_2'); … … 198 199 // Chama funcao para criar lista de aplicativos disponiveis. 199 200 $apps = $this->functions->make_list_app($manager_lid); 200 // Chama funcao para criar lista de campos disponiveis na edicao de dados pessoais.201 $personal_data_fields = $this->functions->make_list_personal_data_fields($manager_lid);202 201 203 202 // Cria combo de dominio samba … … 230 229 'defaultDomain' => $this->current_config['expressoAdmin_defaultDomain'], 231 230 'apps' => $apps, 232 'personal_data_fields' => $personal_data_fields,233 231 'use_attrs_samba_checked' => '', 234 232 'disabled_samba' => 'disabled', … … 302 300 if ($array_users_type[$uidnumber] == 'u') 303 301 { 304 $users .= "<option value=" . $uidnumber . ">" . $cn . " [" . $array_users_uid[$uidnumber] . "]</option>";305 } 306 else307 { 308 $unknow .= "<option value=-1>" . $cn . " [Corrigir manualmente]</option>";309 } 302 $users .= "<option value=" . $uidnumber . ">" . utf8_decode($cn) . " (" . $array_users_uid[$uidnumber] . ")</option>"; 303 } 304 /* else 305 { 306 $unknow .= "<option value=-1>" . utf8_decode($cn) . " (Corrigir manualmente)</option>"; 307 }*/ 310 308 } 311 309 … … 317 315 // Chama funcao para criar lista de aplicativos disponiveis. 318 316 $apps = $this->functions->make_list_app($manager_lid, $group_info['apps']); 319 // Chama funcao para criar lista de campos disponiveis na edicao de dados pessoais.320 $personal_data_fields = $this->functions->make_list_personal_data_fields($manager_lid, $group_info['acl_block_personal_data']);321 317 322 318 // Cria combo de dominios do samba … … 349 345 'description' => $group_info['description'], 350 346 'apps' => $apps, 351 'personal_data_fields' => $personal_data_fields,352 347 'use_attrs_samba_checked' => $group_info['sambaGroup'] ? 'CHECKED' : '', 353 348 'disabled_samba' => $group_info['sambaGroup'] ? '' : 'disabled', -
trunk/expressoAdmin1_2/inc/class.uimaillists.inc.php
r4280 r5133 39 39 } 40 40 $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 41 $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 41 42 $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 42 43 $GLOBALS['phpgw']->js->validate_file('jscode','maillists','expressoAdmin1_2'); … … 166 167 function add_maillists() 167 168 { 168 if($this->current_config['users_auto_search'] == "true"){169 169 $GLOBALS['phpgw']->js->set_onload('get_available_users(document.forms[0].org_context.value, document.forms[0].ea_check_allUsers.checked);'); 170 } 170 171 171 $manager_lid = $GLOBALS['phpgw']->accounts->data['account_lid']; 172 172 $manager_acl = $this->functions->read_acl($manager_lid); … … 206 206 'combo_manager_org' => $combo_manager_org, 207 207 'combo_all_orgs' => $combo_all_orgs, 208 'defaultDomain' => $this->current_config['expressoAdmin_defaultDomain'], 209 'autosearch' => ($this->current_config['users_auto_search'] == "") ? 0:$this->current_config['users_auto_search'], 210 'minNum' => ($this->current_config['min_num_characters'] == "") ? 0:$this->current_config['min_num_characters'] 208 'defaultDomain' => $this->current_config['expressoAdmin_defaultDomain'] 211 209 ); 212 210 $p->set_var($var); … … 263 261 if ($array_users_type[$mail] == 'u') 264 262 { 265 $users .= "<option value=" . $mail . ">" . $cn . " [" . $array_users_uid[$mail] . "]</option>";263 $users .= "<option value=" . $mail . ">" . utf8_decode($cn) . " (" . $array_users_uid[$mail] . ")</option>"; 266 264 } 267 265 elseif ($array_users_type[$mail] == 'l') 268 266 { 269 $lists .= "<option value=" . $mail . ">" . $cn . " [" . $array_users_uid[$mail] . "]</option>";267 $lists .= "<option value=" . $mail . ">" . utf8_decode($cn) . " (" . $array_users_uid[$mail] . ")</option>"; 270 268 } 271 269 else 272 270 { 273 $mail_not_found .= "<option value=" . $mail . ">" . $cn . " [" . $array_users_uid[$mail] . "]</option>";271 $mail_not_found .= "<option value=" . $mail . ">" . utf8_decode($cn) . " (" . $array_users_uid[$mail] . ")</option>"; 274 272 } 275 273 } … … 307 305 'phpgwAccountVisible_checked' => $maillist_info['phpgwAccountVisible'] == '-1' ? 'CHECKED' : '', 308 306 'ea_select_usersInMaillist' => $ea_select_usersInMaillist, 309 'defaultDomain' => $this->current_config['expressoAdmin_defaultDomain'], 310 'autosearch' => $this->current_config['users_auto_search'], 311 'minNum' => ($this->current_config['min_num_characters'] == "") ? 0:$this->current_config['min_num_characters'] 307 'defaultDomain' => $this->current_config['expressoAdmin_defaultDomain'] 312 308 ); 313 309 $p->set_var($var); … … 345 341 346 342 // Pega combo das organizações e seleciona a org da lista. 347 $sectors = $this->functions->get_organizations($GLOBALS['phpgw_info']['server']['ldap_context']); 343 // $org = $this->functions->get_organizations($manager_context, trim(strtolower($maillist_info['context']))); 344 foreach ($manager_contexts as $index=>$context) 345 $sectors .= $this->functions->get_organizations($context, trim(strtolower($maillist_info['context'])) ); 348 346 349 347 // Usuarios de senders. … … 376 374 'accountRestrictive_checked' => $maillist_info['accountRestrictive'] == 'mailListRestriction' ? 'CHECKED' : '', 377 375 'participantCanSendMail_checked'=> $maillist_info['participantCanSendMail'] == 'TRUE' ? 'CHECKED' : '', 378 'ea_select_users_SCL_Maillist' => $ea_select_users_SCL_Maillist, 379 'autosearch' => $this->current_config['users_auto_search'], 380 'minNum' => ($this->current_config['min_num_characters'] == "") ? 0:$this->current_config['min_num_characters'] 376 'ea_select_users_SCL_Maillist' => $ea_select_users_SCL_Maillist 381 377 ); 382 378 $p->set_var($var); -
trunk/expressoAdmin1_2/inc/class.uimanagers.inc.php
r1684 r5133 36 36 } 37 37 $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 38 $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 38 39 $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 39 40 $GLOBALS['phpgw']->js->validate_file('jscode','managers','expressoAdmin1_2'); … … 87 88 88 89 // Le BD para pegar os administradors. 89 $query = 'SELECT manager_lid,context FROM phpgw_expressoadmin ORDER by manager_lid';90 $query = 'SELECT distinct manager_lid manager_lid,context FROM phpgw_expressoadmin_acls ORDER by manager_lid '; 90 91 $GLOBALS['phpgw']->db->query($query); 91 92 while($GLOBALS['phpgw']->db->next_record()) … … 215 216 $manager_lid = $_GET['manager_lid']; 216 217 217 $query = "DELETE FROM phpgw_expressoadmin WHERE manager_lid = '".$manager_lid."' AND context = '" . $context ."'";218 $query = "DELETE FROM phpgw_expressoadmin_acls WHERE manager_lid = '".$manager_lid."' AND context = '" . $context ."'"; 218 219 $GLOBALS['phpgw']->db->query($query); 219 220 … … 257 258 if ($first_time) 258 259 { 259 //Pego ACL do gerente 260 $manager = $this->functions->read_acl($_GET['manager_lid']); 261 //Cria vetor da ACL 262 $manager_acl = $this->functions->make_array_acl($manager['acl']); 260 261 $manager_acl = $this->functions->read_acl($_GET['manager_lid']); 263 262 //Pesquisa no Banco e pega os valores dos apps. 264 263 $query = "SELECT * FROM phpgw_expressoadmin_apps WHERE manager_lid = '" . $_GET['manager_lid'] . "' AND context = '" . $_GET['context'] . "'"; -
trunk/expressoAdmin1_2/inc/class.uisectors.inc.php
r3887 r5133 20 20 'validate_data_sectors_edit' => True, 21 21 'delete_sector' => True, 22 'css' => True, 23 'view_cota' => True 22 'css' => True 24 23 ); 25 24 … … 47 46 48 47 // Verifica se o administrador tem acesso. 49 48 if (!$this->functions->check_acl($manager_lid,'list_sectors')) 49 { 50 $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdmin1_2/inc/access_denied.php')); 51 } 50 52 51 53 unset($GLOBALS['phpgw_info']['flags']['noheader']); … … 61 63 $p->set_block('sectors','row_empty','row_empty'); 62 64 63 //$sectors_info = $this->functions->get_sectors_list($contexts); 64 $sectors_info = $this->functions->get_organizations2($contexts); 65 $sectors_info = $this->functions->get_sectors_list($contexts); 65 66 66 67 $var = Array( … … 68 69 'back_url' => $GLOBALS['phpgw']->link('/expressoAdmin1_2/index.php'), 69 70 'context_display' => $context_display, 70 'lang_inactives' => lang('list inactives') ,71 'lang_ver_cota' => lang('view cota')72 ); 71 'lang_inactives' => lang('list inactives') 72 ); 73 73 74 $p->set_var($var); 74 75 $p->set_var($this->functions->make_dinamic_lang($p, 'list')); … … 97 98 $var = Array( 98 99 'tr_color' => $tr_color, 99 'sector_name' => $sector ['display'],100 ' cota_link' => $this->row_action('view','cota',$sector['dn']),100 'sector_name' => $sector, 101 'add_link' => $this->row_action('add','sector',$context) 101 102 ); 102 103 103 if ($this->functions->check_acl($manager_lid,'create_sectors')) 104 $p->set_var('add_link',$this->row_action('add','sector',$sector['dn'])); 105 else 106 $p->set_var('add_link',' '); 104 $var['sector_name'] = utf8_decode($var['sector_name']); 105 107 106 108 107 if(isset($GLOBALS['phpgw_info']['server']['time_to_account_expires'])) 109 $var['inactives_link'] = $this->row_action('list_inactive','users',$ sector['dn'],'uiaccounts');108 $var['inactives_link'] = $this->row_action('list_inactive','users',$context,'uiaccounts'); 110 109 else 111 110 $var['inactives_link'] = lang('disabled'); … … 115 114 if ($can_edit) 116 115 { 117 $p->set_var('edit_link',$this->row_action('edit','sector', $sector['dn']));116 $p->set_var('edit_link',$this->row_action('edit','sector',utf8_decode($context))); 118 117 } 119 118 else … … 124 123 if ($can_delete) 125 124 { 126 $p->set_var('delete_link',$this->row_action('delete','sector', $sector['dn']));125 $p->set_var('delete_link',$this->row_action('delete','sector',utf8_decode($context))); 127 126 } 128 127 else … … 139 138 $p->set_var($var); 140 139 141 if ($this->functions->check_acl($manager_lid,'create_sectors')) {142 140 $p->set_var('input_add','<input type="submit" value="' . lang('Add Sectors') . '">'); 143 }144 else {145 $p->set_var('input_add',' ');146 }147 141 148 142 $p->parse('rows','row_empty',True); … … 163 157 $context = $_GET['context']; 164 158 $combo_manager_org = $this->functions->get_organizations( $context, '', true, true, true ); 159 $combo_manager_org = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$combo_manager_org); 160 $combo_manager_org = utf8_decode($combo_manager_org); 165 161 } 166 162 else … … 193 189 'context' => $context == '' ? $GLOBALS['phpgw_info']['server']['ldap_context'] : $context, 194 190 'sector' => $_POST['sector'], 195 'associated_domain' => $_POST['associated_domain'],196 'disk_quota' => $_POST['disk_quota'],197 'users_quota' => $_POST['users_quota'],198 'file_manager_quota'=> $_POST['file_manager_quota'],199 191 'manager_org' => $combo_manager_org, 200 192 'sector_visible_checked'=> $_POST['sector_visible'] ? 'checked' : '', … … 202 194 ); 203 195 204 if($this->functions->db_functions->use_cota_control()) { 205 $var["open_comment_cotas"] = ""; 206 $var["close_comment_cotas"] =""; 207 } 208 else { 209 $var["open_comment_cotas"] = "<!--"; 210 $var["close_comment_cotas"] ="-->"; 211 } 196 $var['sector'] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$var['sector']); 197 $var['sector'] = utf8_decode($var['sector']); 212 198 213 199 $p->set_var($var); … … 225 211 $context = $_GET['context']; 226 212 227 $combo_manager_org = $this->functions->get_organizations($_GET['context'], '', true, true, true); 213 $context = utf8_encode($context); 214 $context = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$context); 215 216 $combo_manager_org = $this->functions->get_organizations($context, '', true, true, true); 217 218 $combo_manager_org = utf8_decode(preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$combo_manager_org)); 219 228 220 $combo_manager_org = substr( $combo_manager_org, 0, ( strpos($combo_manager_org, '</option>') + 9 ) ); 229 221 … … 250 242 { 251 243 $sector_info = $this->so->get_info($context); 252 $sector_disk_quota = $sector_info[0]['diskquota'][0];253 $sector_users_quota = $sector_info[0]['usersquota'][0];254 $sector_file_manager_quota = $sector_info[0]['filemanagerquota'][0];255 $sector_associated_domain = $sector_info[0]['associateddomain'][0];256 244 $_POST['sector_visible'] = $sector_info[0]['phpgwaccountvisible'][0]; 257 245 } … … 266 254 'manager_org' => $combo_manager_org, 267 255 'sector_visible_checked'=> $_POST['sector_visible'] ? 'checked' : '', 268 'associated_domain' => $_POST['associated_domain'] == '' ? $sector_associated_domain : $_POST['associated_domain'], 269 'disk_quota' => $_POST['disk_quota'] == '' ? $sector_disk_quota : $_POST['disk_quota'], 270 'users_quota' => $_POST['users_quota'] == '' ? $sector_users_quota : $_POST['users_quota'], 271 'file_manager_quota'=> $_POST['file_manager_quota'] == '' ? $sector_file_manager_quota : $_POST['file_manager_quota'], 256 272 257 'lang_add' => lang('Add'), 273 258 'disable' => 'disabled', 274 259 'error_messages' => $_POST['error_messages'] == '' ? '' : "<script type='text/javascript'>alert('".$_POST['error_messages']."')</script>", 275 'lang_disk_quota' => lang('disk quota'), 276 'lang_users_quota' => lang('users quota') 277 ); 278 if($this->functions->db_functions->use_cota_control()) { 279 $var["open_comment_cotas"] = ""; 280 $var["close_comment_cotas"] =""; 281 } 282 else { 283 $var["open_comment_cotas"] = "<!--"; 284 $var["close_comment_cotas"] ="-->"; 285 } 260 ); 261 262 $var['sector'] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$var['sector']); 263 $var['sector'] = utf8_decode($var['sector']); 264 286 265 $p->set_var($var); 287 266 $p->set_var($this->functions->make_dinamic_lang($p, 'list')); 288 267 289 268 $p->pfp('out','edit_sector'); 290 }291 292 function view_cota()293 {294 $context = $_GET['context'];295 $a_tmp = explode(",", ldap_dn2ufn($context));296 297 $sector_name = $a_tmp[0];298 if($this->functions->db_functions->use_cota_control()) {299 $sector_info = $this->so->get_info($context);300 $sector_disk_cota = $sector_info[0]['diskquota'][0];301 $sector_users_cota = $sector_info[0]['usersquota'][0];302 }303 else {304 $sector_disk_cota = lang('cotas control disabled');305 $sector_users_cota = lang('cotas control disabled');306 }307 308 309 unset($GLOBALS['phpgw_info']['flags']['noheader']);310 unset($GLOBALS['phpgw_info']['flags']['nonavbar']);311 $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Edit Sector');312 $GLOBALS['phpgw']->common->phpgw_header();313 314 // Set o template315 $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);316 $p->set_file(Array('ver_cota' => 'sectors_cota.tpl'));317 318 319 // Seta variaveis utilizadas pelo tpl.320 $var = Array(321 'back_url' => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uisectors.list_sectors'),322 'th_bg' => $GLOBALS['phpgw_info']['theme']['th_bg'],323 'context' => $context,324 'sector' => $sector_name,325 'disk_cota' => $sector_disk_cota,326 'users_cota' => $sector_users_cota,327 'actual_users' => $this->functions->get_num_users($context),328 'actual_disk' => round($this->functions->get_actual_disk_usage($context),2),329 330 'lang_back' => lang('Back'),331 'lang_context' => lang('Context'),332 'lang_sector_name' => lang('Sector name'),333 'lang_disk_cota' => lang('disk usage cota'),334 'lang_users_cota' => lang('user number cota'),335 'lang_user_number' => lang('user number'),336 'lang_disk_used' => lang('disk usage'),337 'error_messages' => $_POST['error_messages'] == '' ? '' : "<script type='text/javascript'>alert('".$_POST['error_messages']."')</script>",338 );339 $p->set_var($var);340 341 $p->pfp('out','ver_cota');342 269 } 343 270 … … 371 298 $acl = $this->functions->read_acl($account_lid); 372 299 $manager_context = $acl[0]['context']; 300 301 $manager_context = utf8_encode($manager_context); 302 $manager_context = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$manager_context); 373 303 374 304 // Verifica se tem acesso a este modulo … … 394 324 $sector_name = $tmp_sector_name[1]; 395 325 326 396 327 // Get users of sector 397 $sector_users = $this->so->get_sector_users( $_GET['context']);398 $sector_groups = $this->so->get_sector_groups( $_GET['context']);399 $sector_subsectors = $this->so->get_sector_subsectors( $_GET['context']);328 $sector_users = $this->so->get_sector_users(utf8_encode($_GET['context'])); 329 $sector_groups = $this->so->get_sector_groups(utf8_encode($_GET['context'])); 330 $sector_subsectors = $this->so->get_sector_subsectors(utf8_encode($_GET['context'])); 400 331 401 332 $users_list = ''; … … 415 346 { 416 347 if ($subsector['dn'] != $_GET['context']) 417 $subsectors_list .= $subsector['ou'][0] . '<br>';348 $subsectors_list .= utf8_decode($subsector['ou'][0] . '<br>'); 418 349 } 419 350 … … 431 362 'sectors_list' => $subsectors_list 432 363 ); 364 $var['sector_name'] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$var['sector_name']); 365 433 366 $p->set_var($var); 434 367 $p->set_var($this->functions->make_dinamic_lang($p, 'list')); -
trunk/expressoAdmin1_2/inc/class.uishared_accounts.inc.php
r1913 r5133 1 1 <?php 2 2 /***********************************************************************************\ 3 * Expresso Administra ᅵᅵo *3 * Expresso Administração * 4 4 * by Joao Alfredo Knopik Junior (joao.alfredo@gmail.com, jakjr@celepar.pr.gov.br) * 5 5 * modified by Valmir Andre de Sena valmirse@gmail.com valmir.sena@ati.pe.gov.br … … 37 37 $GLOBALS['phpgw']->js->validate_file('modal','modal','expressoAdmin1_2'); 38 38 $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 39 $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 39 40 $c = CreateObject('phpgwapi.config','expressoAdmin1_2'); 40 41 $c->read_repository(); … … 96 97 97 98 $var = Array( 98 'mailquota' => $this->current_config['expressoAdmin_default UserQuota'],99 'mailquota' => $this->current_config['expressoAdmin_defaultSharedAccountQuota'], 99 100 'changequote_disabled' => $this->functions->check_acl($account_lid,'edit_shared_accounts_quote') ? '' : 'readonly', 100 101 'disabled_empty_inbox' => $this->functions->check_acl($account_lid,'empty_shared_accounts_inbox') ? '' : 'disabled', -
trunk/expressoAdmin1_2/inc/class.user.inc.php
r3528 r5133 36 36 $return['status'] = true; 37 37 38 if($this->db_functions->use_cota_control()) {39 //Verifica quota de usuários e disco40 $setor = $this->functions->get_info($params['context']);41 if (!$this->functions->existe_quota_usuario($setor[0])) {42 $return['status'] = false;43 $return['msg'] = $this->functions->lang("user cota exceeded");//TODO colocar valor de acordo com tabela de traduções.44 return $return;45 }46 if (!$this->functions->existe_quota_disco($setor[0],$params['mailquota'])) {47 $return['status'] = false;48 $return['msg'] = $this->functions->lang("disk cota exceeded");//TODO colocar valor de acordo com tabela de traduções.49 return $return;50 }51 }52 53 38 // Verifica o acesso do gerente 54 39 if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'add_users')) … … 318 303 */ 319 304 320 //Verifica quota de disco, como estou alterando, não preciso checar quota de usuários.321 if($this->db_functions->use_cota_control()) {322 $setor = $this->functions->get_info($new_values['context']);323 if (!$this->functions->existe_quota_disco($setor[0],$new_values['mailquota'])) {324 $return['status'] = false;325 $return['msg'] = "Quota em disco excedida...";//TODO colocar valor de acordo com tabela de traduções.326 return $return;327 }328 }329 330 305 $manager_account_lid = $_SESSION['phpgw_session']['session_lid']; 331 306 if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && … … 435 410 $ldap_mod_replace['telephonenumber'] = $new_values['telephonenumber']; 436 411 $this->db_functions->write_log('modified user telephonenumber', $dn . ': ' . $old_values['telephonenumber'] . '->' . $new_values['telephonenumber']); 412 $ldap_mod_replace['telephonenumber'] = $new_values['telephonenumber']; 413 $this->db_functions->write_log('modified user telephonenumber', $dn . ': ' . $old_values['telephonenumber'] . '->' . $new_values['telephonenumber']); 437 414 } 438 415 else if (($old_values['telephonenumber'] != '') && ($new_values['telephonenumber'] == '')) … … 542 519 { 543 520 544 $size_conf = $this->current_config['expressoAdmin_photo_length'] == '' ? 10000:$this->current_config['expressoAdmin_photo_length'] ; 545 if ($_FILES['photo']['size'] > $size_conf) 521 if ($_FILES['photo']['size'] > 10000) 546 522 { 547 523 $return['status'] = false; 548 $return['msg'] .= $this->functions->lang('User photo could not be save because is bigger the ').' '.($size_conf/1024).' kb.';524 $return['msg'] .= $this->functions->lang('User photo could not be save because is bigger the 10 kb') . '.'; 549 525 } 550 526 else … … 568 544 if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'edit_users')) 569 545 { 570 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////571 546 // Passwd Expired - Sem atributo 572 547 if (($old_values['passwd_expired'] == '') && ($new_values['passwd_expired'] == '1')) -
trunk/expressoAdmin1_2/index.php
r1913 r5133 36 36 37 37 $var = Array( 38 'lang_configurations' => lang('Configurations'), 38 39 'lang_user_accounts' => lang('User Accounts'), 39 'lang_shared_accounts'=> lang('Shared Accounts'), 40 'lang_shared_accounts' => lang('Shared Accounts'), 41 'lang_messages_size' => lang('Messages Size'), 40 42 'lang_institutional_accounts'=> lang('Institutional Accounts'), 41 43 'lang_user_groups' => lang('User Groups'), -
trunk/expressoAdmin1_2/js/jscode/expressoadmin.js
r3376 r5133 21 21 } 22 22 23 function get_lang(key_raw)24 {25 key = key_raw.replace(/ /g,"_");26 key = key.replace(/-/g,"");27 lang = eval("global_langs."+key.toLowerCase());28 29 if (typeof(lang)=='undefined')30 return key_raw + '*';31 else32 return lang;33 }34 35 23 function get_associated_domain(context) 36 24 { … … 45 33 document.forms[0].associated_domain.value = ''; 46 34 } 47 } 48 cExecute ('$this.ldap_functions.get_associated_domain&context='+context, handler_associated_domain); 35 }; 36 cExecute ('$this.ldap_functions.get_associated_domain&context=' + context, handler_associated_domain); 37 } 38 39 function get_lang(key_raw) 40 { 41 key = key_raw.replace(/ /g,"_"); 42 key = key.replace(/-/g,""); 43 lang = eval("global_langs."+key.toLowerCase()); 44 45 if (typeof(lang)=='undefined') 46 return key_raw + '*'; 47 else 48 return lang; 49 49 } 50 50 … … 116 116 117 117 if (org_name != '') 118 {119 if (document.forms[0].associated_domain.value != '')120 {121 associatedDomain_name = document.forms[0].associated_domain.value;122 document.forms[0].mail1.value = document.forms[0].uid.value + '@' + associatedDomain_name;123 }124 else125 {126 118 document.forms[0].mail1.value = document.forms[0].uid.value + '@' + org_name + '.' + domain_name; 127 }128 }129 119 else 130 120 document.forms[0].mail1.value = document.forms[0].uid.value; … … 140 130 } 141 131 132 function loadAppended( id, values, name ) 133 { 134 if( !values ) return; 135 136 137 if( typeof name === "undefined" || !name ) 138 name = id + '[]'; 139 140 for( var i = 0; i < values.length; i++ ) 141 { 142 if( !values[i] || values[i] === "" ) continue; 143 144 var clone = addTextbox( name, id ); 145 146 clone.value = values[i]; 147 } 148 } 149 150 function addTextbox( name, targetId, id ) 151 { 152 var input = document.createElement( "input" ); 153 input.type = "text"; 154 input.id = ( typeof id === "undefined" )? "" : id; 155 input.name = name; 156 157 var target = document.getElementById( targetId ); 158 159 target.appendChild( input ); 160 161 removable( input ); 162 163 return( input ); 164 } 165 166 function removable( target ) 167 { 168 with( target.parentNode ) 169 { 170 var minus = document.createElement( "span" ); 171 var br = document.createElement( "br" ); 172 173 minus.innerHTML = " -"; 174 minus.style.cursor = "pointer"; 175 minus.onclick = function(){ 176 177 removeChild( target ); 178 removeChild( minus ); 179 removeChild( br ); 180 } 181 182 appendChild( minus ); 183 appendChild( br ); 184 } 185 } 186 187 function multiply( id, full ) 188 { 189 var target = document.getElementById( id ); 190 191 var clone = target.cloneNode( false ); 192 193 clone.id = ""; 194 195 if( !full ) 196 clone.value = ""; 197 198 target.parentNode.appendChild( clone ); 199 200 removable( clone ); 201 202 return( clone ); 203 } 204 205 function appendClone( id, full ) 206 { 207 return multiply( id, full ); 208 } 209 142 210 function FormataValor(event, campo) 143 211 { … … 155 223 campo.value = vr.substr( 0, tam - 1 ); 156 224 157 if (( tam == 1 ) && ( event.keyCode != 8 ) && ( event.keyCode != 46 ))225 if (( tam <= 1 ) && ( event.keyCode != 8 ) && ( event.keyCode != 46 )) 158 226 campo.value = separador1 + vr; 159 227 … … 166 234 if ((( tam == 9 ) || ( tam == 8 )) && (( event.keyCode == 8 ) || ( event.keyCode == 46 ))) 167 235 campo.value = vr.substr( 0, tam - 1 ); 168 169 if ((campo.value.length >= 1) && (campo.value.indexOf(separador1) != 0)){170 x = campo.value;171 if (x.length != 10){172 alert("Campo Telefone incorreto.");173 }174 campo.value = separador1 + x.substr(0,2) + separador2;175 campo.value = campo.value + x.substr(2,4) + separador3 + x.substr(6);176 }177 236 } 178 237 -
trunk/expressoAdmin1_2/js/jscode/groups.js
r640 r5133 79 79 } 80 80 81 function Element( id ) 82 { 83 return document.getElementById( id ); 84 } 85 81 86 // HANDLER CREATE 82 87 // É necessário 2 funcões de retorno por causa do cExecuteForm. … … 113 118 } 114 119 115 function sinc_combos_org( context, recursive)120 function sinc_combos_org() 116 121 { 117 122 combo_org_groups = document.getElementById('ea_combo_org_groups'); … … 122 127 { 123 128 combo_org_groups.options[i].selected = true; 124 get_available_users( context, recursive);129 get_available_users(); 125 130 break; 126 131 } … … 128 133 } 129 134 130 function get_available_users(context, recursive) 131 { 132 var handler_get_available_users = function(data) 133 { 134 select_available_users = document.getElementById('ea_select_available_users'); 135 function get_available_users() 136 { 137 /* var sentence = Element('ea_input_searchUser').value; 135 138 136 //Limpa o select 137 for(var i=0; i<select_available_users.options.length; i++) 138 { 139 select_available_users.options[i] = null; 140 i--; 141 } 142 143 if ((data) && (data.length > 0)) 144 { 145 // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 146 select_available_users.innerHTML = ' ' + data; 147 select_available_users.outerHTML = select_available_users.outerHTML; 139 var url = '$this.ldap_functions.get_available_users_and_shared_acounts&context=' 140 + Element('ea_combo_org_info').value 141 + '&sentence=' + sentence; 142 143 var fillHandler = function( fill ){ 148 144 149 select_available_users.disabled = false; 150 select_available_users_clone = document.getElementById('ea_select_available_users').cloneNode(true); 151 document.getElementById('ea_input_searchUser').value = ''; 152 } 153 } 154 155 //Impede chamada recursiva na raiz das organizações 156 if ((recursive) && (document.forms[0].ldap_context.value == document.getElementById('ea_combo_org_groups').value)) 157 { 158 alert(get_lang('It is not allow select all users from the root organization') + '.'); 159 document.getElementById('ea_check_allUsers').checked = false; 160 161 // Limpa select 162 select_available_users = document.getElementById('ea_select_available_users'); 163 select_available_users.innerHTML = ' '; 164 select_available_users.outerHTML = select_available_users.outerHTML; 165 return; 166 } 167 cExecute ('$this.ldap_functions.get_available_users&context='+context+'&recursive='+recursive, handler_get_available_users); 145 Element('ea_select_available_users').innerHTML = fill; 146 147 return( fill !== "" ); 148 } 149 150 userFinder( sentence, fillHandler, url, 'ea_span_searching' );*/ 151 152 optionFind( 'ea_input_searchUser', 'ea_select_available_users', 153 '$this.ldap_functions.get_available_users_and_shared_acounts', 154 'ea_combo_org_groups', 'ea_span_searching' ); 168 155 } 169 156 … … 237 224 238 225 // Funcoes 239 function optionFinderTimeout(obj) 240 { 241 clearTimeout(finderTimeout); 242 var oWait = document.getElementById("ea_span_searching"); 243 oWait.innerHTML = get_lang('Searching') + '...'; 244 var finderTimeout = setTimeout("optionFinder('"+obj.id+"')",500); 245 } 246 function optionFinder(id) { 247 var oWait = document.getElementById("ea_span_searching"); 248 var oText = document.getElementById(id); 249 250 //Limpa todo o select 251 var select_available_users_tmp = document.getElementById('ea_select_available_users') 252 for(var i = 0;i < select_available_users_tmp.options.length; i++) 253 select_available_users_tmp.options[i--] = null; 254 255 var RegExp_name = new RegExp("\\b"+oText.value, "i"); 256 257 //Inclui usuário começando com a pesquisa 258 for(i = 0; i < select_available_users_clone.length; i++){ 259 if (RegExp_name.test(select_available_users_clone[i].text)) 260 { 261 sel = select_available_users_tmp.options; 262 option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value); 263 sel[sel.length] = option; 264 } 265 } 266 267 oWait.innerHTML = ' '; 226 function optionFinderTimeout(obj, event) 227 { 228 229 if( event.keyCode == 13 ) 230 { 231 limit = 0; 232 optionFinder(obj.id); 233 } 234 } 235 function optionFinder(id) 236 { 237 get_available_users(); 268 238 } 269 239 -
trunk/expressoAdmin1_2/js/jscode/institutional_accounts.js
r3162 r5133 32 32 { 33 33 sinc_combos_org(Element('ea_combo_org').value); 34 get_available_users(Element('ea_combo_org').value); 35 get_associated_domain(Element('ea_combo_org').value); 36 } 37 38 function get_available_users(context) 39 { 40 var handler_get_users = function(data) 41 { 42 select_available_users = Element('ea_select_available_users'); 43 44 //Clean select 45 for(var i=0; i<select_available_users.options.length; i++) 46 { 47 select_available_users.options[i] = null; 48 i--; 49 } 50 51 if ((data) && (data.length > 0)) 52 { 53 // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 54 select_available_users.innerHTML = ' ' + data; 55 select_available_users.outerHTML = select_available_users.outerHTML; 56 57 select_available_users.disabled = false; 58 select_available_users_clone = Element('ea_select_available_users').cloneNode(true); 59 //document.getElementById('ea_input_searchUser').value = ''; 60 } 61 } 62 cExecute ('$this.ldap_functions.get_available_users&context='+context, handler_get_users); 63 } 34 } 35 64 36 65 37 function search_organization(key, element) … … 87 59 { 88 60 combo_org_available_users.options[i].selected = true; 89 get_available_users(context);90 61 break; 91 62 } … … 93 64 } 94 65 95 var finderTimeout = ''; 96 function optionFinderTimeout(obj) 97 { 98 clearTimeout(finderTimeout); 99 var oWait = Element("ea_span_searching"); 100 oWait.innerHTML = get_lang('searching') + '...'; 101 finderTimeout = setTimeout("optionFinder('"+obj.id+"')",500); 66 // var finderTimeout = ''; 67 // optionFinderTimeout 68 function optionFinderTimeout(obj, event) 69 { 70 71 if( event && event.keyCode !== 13 ) 72 return( true ); 73 // clearTimeout(finderTimeout); 74 // var oWait = Element("ea_span_searching"); 75 // oWait.innerHTML = get_lang('searching') + '...'; 76 // finderTimeout = setTimeout("optionFinder('"+obj.id+"')",500); 77 optionFinder( obj.id ); 78 79 return( false ); 102 80 } 103 81 function optionFinder(id) { 104 var oWait = Element("ea_span_searching"); 105 var oText = Element(id); 106 107 //Limpa todo o select 108 var select_available_users_tmp = Element('ea_select_available_users') 109 110 for(var i = 0;i < select_available_users_tmp.options.length; i++) 111 select_available_users_tmp.options[i--] = null; 112 113 var RegExp_name = new RegExp("\\b"+oText.value, "i"); 114 115 //Inclui usuário começando com a pesquisa 116 for(i = 0; i < select_available_users_clone.length; i++){ 117 if ( RegExp_name.test(select_available_users_clone[i].text) || (select_available_users_clone[i].value == -1) ) 118 { 119 sel = select_available_users_tmp.options; 120 option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value); 121 122 if (select_available_users_clone[i].value == -1) 123 option.disabled = true; 124 125 sel[sel.length] = option; 126 } 127 } 128 oWait.innerHTML = ' '; 82 // var sentence = Element( id ).value; 83 // 84 // var url = '$this.ldap_functions.get_available_users&context=' + Element('ea_combo_org').value + '&sentence=' + sentence; 85 // 86 // var fillHandler = function( fill ){ 87 // 88 // return fillContentSelect( fill, 'ea_select_available_users' ); 89 // 90 // } 91 // 92 // userFinder( sentence, fillHandler, url, 'ea_span_searching' ); 93 94 optionFind( id, 'ea_select_available_users', '$this.ldap_functions.get_available_users', 95 'ea_combo_org_available_users', 'ea_span_searching' ); 129 96 } 130 97 … … 183 150 } 184 151 185 function get_institutional_accounts_timeOut(input) 186 { 187 var head_table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr></table>'; 188 189 if (input.length > 4) 190 { 191 clearTimeout(finderTimeout); 192 finderTimeout = setTimeout("get_institutional_accounts('"+input+"')",500); 193 } 194 else 195 { 196 Element('institutional_accounts_content').innerHTML = head_table; 152 function get_institutional_accounts_timeOut(input, event) 153 { 154 Element('institutional_accounts_content').innerHTML = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr></table>'; 155 156 if (event.keyCode === 13) 157 { 158 get_institutional_accounts( input ); 197 159 } 198 160 } … … 204 166 if (data.status == 'true') 205 167 { 206 var table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang(" remove")+'</td></tr>'+data.trs+'</table>';168 var table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("delete")+'</td></tr>'+data.trs+'</table>'; 207 169 Element('institutional_accounts_content').innerHTML = table; 208 170 } … … 243 205 Element('mail').value = data.mail; 244 206 Element('desc').value = data.description; 245 //Necessario, pois o IE6 tem um bug que não exibe as novas opções se o innerHTML estava vazio 246 Element('ea_select_owners').innerHTML = ' ' + data.owners; 247 Element('ea_select_owners').outerHTML = Element('ea_select_owners').outerHTML; 207 Element('ea_select_owners').innerHTML = data.owners; 248 208 249 209 sinc_combos_org(data.user_context); -
trunk/expressoAdmin1_2/js/jscode/maillists.js
r3351 r5133 1 1 countFiles = 0; 2 3 function Element(id){ 4 return document.getElementById( id ); 5 } 6 2 7 function validate_fields(type) 3 8 { … … 157 162 } 158 163 159 function get_available_users(context, recursive,listSearch) 160 { 161 //Impede chamada recursiva na raiz das organizações 162 if(document.getElementById("autosearch").value == "true"){ 163 if ((recursive) && (document.forms[0].ldap_context.value == document.getElementById('ea_combo_org_maillists').value)) 164 { 165 alert(get_lang('It is not allow select all users from the root organization') + '.'); 166 document.getElementById('ea_check_allUsers').checked = false; 164 function get_available_users(context, recursive) 165 { 166 // var sentence = Element('ea_input_searchUser').value; 167 // 168 // var url = '$this.ldap_functions.get_available_users_and_maillist&context=' 169 // + Element('ea_combo_org_maillists').value 170 // + '&sentence=' + sentence 171 // + '&denied_uidnumber=' + document.forms[0].uidnumber.value; 172 // 173 // var fillHandler = function( fill ){ 174 // 175 // Element('ea_select_available_users').innerHTML = fill; 176 // 177 // return( fill !== "" ); 178 // } 179 // 180 // userFinder( sentence, fillHandler, url, 'ea_span_searching' ); 167 181 168 // Limpa select 169 select_available_users = document.getElementById('ea_select_available_users'); 170 select_available_users.innerHTML = ' '; 171 select_available_users.outerHTML = select_available_users.outerHTML; 172 return; 173 } 174 cExecute ('$this.ldap_functions.get_available_users_and_maillist&context='+context+'&recursive='+recursive+'&denied_uidnumber='+document.forms[0].uidnumber.value+'&listSearch='+listSearch, handler_get_available_users); 175 }else 176 document.getElementById('ea_input_searchUser').value = ''; 182 var url = '$this.ldap_functions.get_available_users_and_maillist&denied_uidnumber=' + document.forms[0].uidnumber.value; 183 184 optionFind( 'ea_input_searchUser', 'ea_select_available_users', url, 185 'ea_combo_org_maillists', 'ea_span_searching' ); 177 186 } 178 187 … … 301 310 302 311 // Funcoes 303 /*function optionFinderTimeout(obj) 304 { 305 clearTimeout(finderTimeout); 306 var oWait = document.getElementById("ea_span_searching"); 307 oWait.innerHTML = get_lang('Searching') + '...'; 308 finderTimeout = setTimeout("optionFinder('"+obj.id+"')",500); 309 }*/ 310 311 function optionFinderTimeout(obj, numMin, type, autoSearch,listSearch){ 312 var oWait = document.getElementById("ea_span_searching"); 313 oWait.innerHTML = 'Buscando...'; 314 clearTimeout(finderTimeout); 315 316 if(autoSearch == "True"){ 317 finderTimeout = setTimeout("optionFinderLocal('"+obj.id+"')",600); 318 } 319 else if (obj.value.length >= numMin){ 320 finderTimeout = setTimeout("optionFinderLdap('"+obj.id+"','"+numMin+"','"+type+"','"+listSearch+"')",600); 321 }else { 322 oWait.innerHTML = 'Mínimo de '+numMin+' letras para pesquisa'; 323 var select_available_users_tmp = document.getElementById('ea_select_available_users'); 324 for(var i = 0;i < select_available_users_tmp.options.length; i++) 325 select_available_users_tmp.options[i--] = null; 326 } 327 } 328 var handler_get_available_users = function(data) 329 { 330 select_available_users = document.getElementById('ea_select_available_users'); 331 332 //Limpa o select 333 for(var i=0; i<select_available_users.options.length; i++) 334 { 335 select_available_users.options[i] = null; 336 i--; 337 } 338 339 if ((data) && (data.length > 0)) 340 { 341 // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 342 select_available_users.innerHTML = ' ' + data; 343 select_available_users.outerHTML = select_available_users.outerHTML; 344 345 select_available_users.disabled = false; 346 select_available_users_clone = document.getElementById('ea_select_available_users').cloneNode(true); 347 //document.getElementById('ea_input_searchUser').value = ''; 348 } 349 350 } 351 // Pesquisa LDAP 352 function optionFinderLdap(id,numMin, type,listSearch){ 353 var oWait = document.getElementById("ea_span_searching"); 354 var oText = document.getElementById(id); 355 356 if (oText.value.length < numMin) { 357 oWait.innerHTML = ''; 358 var select_available_users_tmp = document.getElementById('ea_select_available_users'); 359 for(var i = 0;i < select_available_users_tmp.options.length; i++) 360 select_available_users_tmp.options[i--] = null; 361 } 362 363 if (oText.value.length >= numMin){ 364 var context = document.getElementById('ea_combo_org_maillists').value; 365 recursive = document.getElementById("ea_check_allUsers").checked; 366 cExecute ('$this.ldap_functions.search_available_users_and_maillist&context='+(context)+'&recursive='+(recursive)+'&type='+(type == '' ? 'list' : 'search')+'&filter='+oText.value+'&listSearch='+listSearch, handler_get_available_users); 367 oWait.innerHTML = ' '; 368 } 369 } 370 371 function optionFinderLocal(id) { 372 var oWait = document.getElementById("ea_span_searching"); 373 var oText = document.getElementById(id); 374 375 //Limpa todo o select 376 var select_available_users_tmp = document.getElementById('ea_select_available_users') 377 378 for(var i = 0;i < select_available_users_tmp.options.length; i++) 379 select_available_users_tmp.options[i--] = null; 380 381 var RegExp_name = new RegExp("\\b"+oText.value, "i"); 382 383 //Inclui usuário começando com a pesquisa 384 for(i = 0; i < select_available_users_clone.length; i++){ 385 if ( RegExp_name.test(select_available_users_clone[i].text) || (select_available_users_clone[i].value == -1) ) 386 { 387 sel = select_available_users_tmp.options; 388 option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value); 389 390 if (select_available_users_clone[i].value == -1) 391 option.disabled = true; 392 393 sel[sel.length] = option; 394 } 395 } 396 oWait.innerHTML = ' '; 312 function optionFinderTimeout(obj, event) 313 { 314 if( event && event.keyCode !== 13 ) 315 return; 316 317 optionFinder( obj.id ); 318 } 319 function optionFinder(id) { 320 get_available_users(); 397 321 } 398 322 -
trunk/expressoAdmin1_2/js/jscode/managers.js
r639 r5133 112 112 113 113 var searchTimeout; 114 function search_manager(manager_lid )114 function search_manager(manager_lid, event) 115 115 { 116 clearTimeout(searchTimeout); 116 // clearTimeout(searchTimeout); 117 // 118 // var spam = document.getElementById('ea_span_searching_manager'); 119 // if (manager_lid.length <= 3) 120 // spam.innerHTML = get_lang('Type more') + ' ' + (4 - manager_lid.length) + ' ' + 'letters' + '.'; 121 // else 122 // { 123 // spam.innerHTML = get_lang('Searching') + '...'; 124 // searchTimeout = setTimeout("search_user('"+manager_lid+"')",750); 125 // } 126 if( event && event.keyCode !== 13 ) 127 return( true ); 117 128 118 var spam = document.getElementById('ea_span_searching_manager'); 119 if (manager_lid.length <= 3) 120 spam.innerHTML = get_lang('Type more') + ' ' + (4 - manager_lid.length) + ' ' + 'letters' + '.'; 121 else 122 { 123 spam.innerHTML = get_lang('Searching') + '...'; 124 searchTimeout = setTimeout("search_user('"+manager_lid+"')",750); 125 } 129 search_user( manager_lid ); 130 131 return( false ); 126 132 } 127 133 128 134 function search_user(search) 129 135 { 130 var handler_search_manager = function(data) 131 { 132 var spam = document.getElementById('ea_span_searching_manager'); 133 select_available_users = document.getElementById('ea_select_managers'); 134 135 if (data.status == 'false') 136 { 137 spam.innerHTML = data.msg; 138 // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 139 select_available_users.innerHTML = '#'; 140 select_available_users.outerHTML = select_available_users.outerHTML; 141 return; 142 } 143 144 spam.innerHTML = ''; 145 // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 146 select_available_users.innerHTML = '#' + data; 147 select_available_users.outerHTML = select_available_users.outerHTML; 148 } 136 // var handler_search_manager = function(data) 137 // { 138 // var spam = document.getElementById('ea_span_searching_manager'); 139 // select_available_users = document.getElementById('ea_select_managers'); 140 // 141 // if (data.status == 'false') 142 // { 143 // spam.innerHTML = data.msg; 144 // // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 145 // select_available_users.innerHTML = '#'; 146 // select_available_users.outerHTML = select_available_users.outerHTML; 147 // return; 148 // } 149 // 150 // spam.innerHTML = ''; 151 // // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 152 // select_available_users.innerHTML = '#' + data; 153 // select_available_users.outerHTML = select_available_users.outerHTML; 154 // } 155 // 156 // cExecute ('$this.ldap_functions.search_user&search='+search, handler_search_manager); 157 158 var url = '$this.ldap_functions.search_user&search='+search; 149 159 150 cExecute ('$this.ldap_functions.search_user&search='+search, handler_search_manager); 160 // var fillHandler = function( data ) 161 // { 162 // Element( 'ea_select_managers' ).innerHTML = data; 163 // 164 // return( data !== "" ); 165 // } 166 // 167 // userFinder( search, fillHandler, url, 'ea_span_searching_manager' ); 168 169 optionFind( false, 'ea_select_managers', url, false, 'ea_span_searching_manager' ); 151 170 } 152 171 -
trunk/expressoAdmin1_2/js/jscode/shared_accounts.js
r3356 r5133 3 3 function create_shared_accounts() 4 4 { 5 // select_owners = Element('ea_select_owners'); 6 hidden_owners_acl = Element('owners_acls'); 7 hidden_owners_calendar_acl = Element('owners_calendar_acls'); 8 5 9 select_owners = Element('ea_select_owners'); 6 hidden_owners_acl = Element('owners_acls'); 7 for(var i = 0;i < select_owners.options.length; i++){ 8 var user = select_owners.options[i].value; 9 select_owners.options[i].value = user; 10 } 10 for(var i = 0;i < select_owners.options.length; i++) 11 select_owners.options[i].selected = true; 12 11 13 hidden_owners_acl.value = admin_connector.serialize(sharemailbox.ownersAcl); 14 hidden_owners_calendar_acl.value = admin_connector.serialize(sharemailbox.ownersCalendarAcl); 12 15 cExecuteForm ("$this.shared_accounts.create", document.forms['shared_accounts_form'], handler_create_shared_accounts); 13 16 hidden_owners_acl.value = ""; … … 53 56 function set_onload() 54 57 { 55 sinc_combos_org(Element('ea_combo_org').value); 56 get_available_users(Element('ea_combo_org').value); 57 get_associated_domain(Element('ea_combo_org').value); 58 } 59 60 function get_available_users(context) 61 { 62 var handler_get_users = function(data) 63 { 64 select_available_users = Element('ea_select_available_users'); 65 66 //Clean select 67 for(var i=0; i<select_available_users.options.length; i++) 68 { 69 select_available_users.options[i] = null; 70 i--; 71 } 72 73 if ((data) && (data.length > 0)) 74 { 75 // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 76 select_available_users.innerHTML = ' ' + data; 77 select_available_users.outerHTML = select_available_users.outerHTML; 78 79 select_available_users.disabled = false; 80 select_available_users_clone = Element('ea_select_available_users').cloneNode(true); 81 //document.getElementById('ea_input_searchUser').value = ''; 82 } 83 } 84 cExecute ('$this.ldap_functions.get_available_users2&context='+context, handler_get_users); 58 59 if(sharemailbox.ownersAcl) 60 { 61 delete sharemailbox.ownersAcl; 62 sharemailbox.ownersAcl = new Array(); 63 } 64 65 if(sharemailbox.ownersCalendarAcl) 66 { 67 delete sharemailbox.ownersAcl; 68 sharemailbox.ownersAcl = new Array(); 69 } 70 71 get_associated_domain(Element('ea_combo_org').value); 85 72 } 86 73 … … 109 96 { 110 97 combo_org_available_users.options[i].selected = true; 111 get_available_users(context);98 // get_available_users(context); 112 99 break; 113 100 } … … 115 102 } 116 103 117 var finderTimeout = ''; 118 function optionFinderTimeout(obj) 119 { 120 clearTimeout(finderTimeout);121 var oWait = Element("ea_span_searching");122 oWait.innerHTML = get_lang('searching') + '...';123 finderTimeout = setTimeout("optionFinder('"+obj.id+"')",500);104 function optionFinderTimeout(obj, event) 105 { 106 if( event.keyCode === 13 ) 107 { 108 limit = 0; 109 optionFinder(obj.id); 110 } 124 111 } 125 112 function optionFinder(id) { 126 var oWait = Element("ea_span_searching"); 127 var oText = Element(id); 128 129 //Limpa todo o select 130 var select_available_users_tmp = Element('ea_select_available_users') 131 132 for(var i = 0;i < select_available_users_tmp.options.length; i++) 133 select_available_users_tmp.options[i--] = null; 134 135 var RegExp_name = new RegExp("\\b"+oText.value, "i"); 136 137 //Inclui usuï¿œrio comeï¿œando com a pesquisa 138 for(i = 0; i < select_available_users_clone.length; i++){ 139 if ( RegExp_name.test(select_available_users_clone[i].text) || (select_available_users_clone[i].value == -1) ) 140 { 141 sel = select_available_users_tmp.options; 142 option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value); 143 144 if (select_available_users_clone[i].value == -1) 145 option.disabled = true; 146 147 sel[sel.length] = option; 148 } 149 } 150 oWait.innerHTML = ' '; 113 114 var sentence = Element(id).value; 115 116 var url = '$this.ldap_functions.get_available_users2&context=' + 117 Element('ea_combo_org_available_users').value + 118 ( sentence ? '&sentence=' + sentence: '' ); 119 120 userFinder( sentence, 'ea_select_available_users', url, 'ea_span_searching' ); 151 121 } 152 122 … … 198 168 Element('em_input_saveAcl').checked = false; 199 169 Element('em_input_folderAcl').checked = false; 170 Element('em_input_readCalendar').checked = false; 171 Element('em_input_writeCalendar').checked = false; 172 Element('em_input_editCalendar').checked = false; 173 Element('em_input_deleteCalendar').checked = false; 174 Element('em_input_restrictCalendar').checked = false; 200 175 Element('em_input_sendAcl').disabled = true; 201 176 select_owners = Element('ea_select_owners'); … … 211 186 var user = select_owners.options[i].value; 212 187 delete sharemailbox.ownersAcl[user]; 188 sharemailbox.ownersCalendarAcl[user] = ''; 213 189 select_owners.options[i--] = null; 214 190 } … … 222 198 } 223 199 224 function get_shared_accounts_timeOut(input) 225 { 226 var head_table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr></table>'; 227 228 if (input.length > 4) 229 { 230 clearTimeout(finderTimeout); 231 finderTimeout = setTimeout("get_shared_accounts('"+input+"')",500); 232 } 233 else 234 { 235 Element('shared_accounts_content').innerHTML = head_table; 236 } 237 } 238 239 function get_shared_accounts(input) 200 function get_shared_accounts_timeOut(input, event) 201 { 202 Element('shared_accounts_content').innerHTML = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("display name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr></table>'; 203 204 if (event.keyCode === 13) 205 { 206 get_shared_accounts( input ); 207 } 208 } 209 210 function get_shared_accounts(input, callback) 240 211 { 241 212 var handler_get_shared_accounts = function(data) … … 243 214 if (data.status == 'true') 244 215 { 245 var table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang(" mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr>'+data.trs+'</table>';216 var table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("display name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr>'+data.trs+'</table>'; 246 217 Element('shared_accounts_content').innerHTML = table; 247 218 } … … 260 231 modal('shared_accounts_modal','save'); 261 232 233 Element( 'lightboxCaption' ).innerHTML = get_lang( 'Edit Shared Accounts' ); 234 Element('shared_accounts_modal').value = data.mailquota; 235 236 262 237 var combo_org = Element('ea_combo_org'); 263 238 for (i=0; i<combo_org.length; i++) … … 278 253 if (data.phpgwAccountVisible == '-1') 279 254 Element('phpgwAccountVisible').checked = true; 280 255 Element('uidnumber').value = data.uidnumber; 281 256 Element('cn').value = data.cn; 282 257 Element('mail').value = data.mail; … … 301 276 } 302 277 278 if( data.mailalternateaddress ) 279 loadAppended( 'mailalternateaddress', data.mailalternateaddress ); 280 303 281 sinc_combos_org(data.user_context); 304 282 sharemailbox.ownersAcl = new Array(); 305 if( data.owners != "undefined" && data.owners_acl != "undefined" ){ 283 sharemailbox.ownersCalendarAcl = new Array(); 284 if( data.owners && data.owners != "undefined" && data.owners_acl != "undefined" ){ 306 285 for (i=0; i<data.owners.length; i++){ 307 286 sharemailbox.ownersAcl[ data.owners[i] ] = data.owners_acl[i]; 287 sharemailbox.ownersCalendarAcl[ data.owners[i] ] = data.owners_calendar_acl[i]; 308 288 } 309 289 } … … 324 304 else form = document.forms["shared_accounts_form"]; 325 305 306 hidden_owners_calendar_acl = Element('owners_calendar_acls'); 326 307 hidden_owners_acl = Element('owners_acls'); 327 308 select_owners = Element('ea_select_owners'); … … 331 312 } 332 313 hidden_owners_acl.value = admin_connector.serialize(sharemailbox.ownersAcl); 314 hidden_owners_calendar_acl.value = admin_connector.serialize(sharemailbox.ownersCalendarAcl); 333 315 cExecuteForm ("$this.shared_accounts.save", form, handler_save_shared_accounts); 334 hidden_owners_acl.value = "";316 get_shared_accounts(Element('ea_shared_account_search').value); 335 317 } 336 318 … … 348 330 else 349 331 { 350 get_shared_accounts(Element('ea_shared_account_search').value); 332 333 hidden_owners_acl.value = ""; 351 334 close_lightbox(); 352 335 write_msg(get_lang('Shared account successful saved') + '.', 'normal'); … … 374 357 } 375 358 cExecute ('$this.shared_accounts.delete&uid='+uid, handle_delete_shared_account); 376 } 359 }function cShareMailbox() 377 360 { 378 361 this.arrayWin = new Array(); … … 380 363 this.alert = false; 381 364 this.ownersAcl = new Array(); 365 this.ownersCalendarAcl = new Array(); 382 366 } 383 367 … … 419 403 Element('em_input_saveAcl').disabled = true; 420 404 Element('em_input_folderAcl').checked = false; 405 Element('em_input_readCalendar').checked = false; 406 Element('em_input_writeCalendar').checked = false; 407 Element('em_input_editCalendar').checked = false; 408 Element('em_input_deleteCalendar').checked = false; 409 Element('em_input_restrictCalendar').checked = false; 410 411 Element('em_input_editCalendar').disabled = true; 412 Element('em_input_deleteCalendar').disabled = true; 413 Element('em_input_restrictCalendar').disabled = true; 421 414 422 if (this.ownersAcl[user] != "false" && this.ownersAcl[user].indexOf('lrs',0) >= 0) 415 if(this.ownersCalendarAcl[user]) 416 { 417 if (this.ownersCalendarAcl[user].indexOf('1-',0) >= 0) 418 { 419 Element('em_input_readCalendar').checked = true; 420 421 Element('em_input_editCalendar').disabled = false; 422 Element('em_input_deleteCalendar').disabled = false; 423 Element('em_input_restrictCalendar').disabled = false; 424 } 425 if (this.ownersCalendarAcl[user].indexOf('2-',0) >= 0) 426 { 427 Element('em_input_writeCalendar').checked = true; 428 } 429 if (this.ownersCalendarAcl[user].indexOf('4-',0) >= 0) 430 { 431 Element('em_input_editCalendar').checked = true; 432 } 433 if (this.ownersCalendarAcl[user].indexOf('8-',0) >= 0) 434 { 435 Element('em_input_deleteCalendar').checked = true; 436 } 437 if (this.ownersCalendarAcl[user].indexOf('16-',0) >= 0) 438 { 439 Element('em_input_restrictCalendar').checked = true; 440 } 441 } 442 443 if(this.ownersAcl[user]) 444 { 445 if ( this.ownersAcl[user].indexOf('lrs',0) >= 0) 423 446 { 424 447 Element('em_input_sendAcl').disabled = false; … … 428 451 Element('em_input_sendAcl').disabled = true; 429 452 430 if (this.ownersAcl[user] != "false" &&this.ownersAcl[user].indexOf('d',0) >= 0)453 if ( this.ownersAcl[user].indexOf('d',0) >= 0) 431 454 { 432 455 Element('em_input_deleteAcl').checked = true; 433 456 } 434 if (this.ownersAcl[user] != "false" &&this.ownersAcl[user].indexOf('wi',0) >= 0)457 if ( this.ownersAcl[user].indexOf('wi',0) >= 0) 435 458 { 436 459 Element('em_input_writeAcl').checked = true; 437 460 } 438 if (this.ownersAcl[user] != "false" &&this.ownersAcl[user].indexOf('a',0) >= 0)461 if (this.ownersAcl[user].indexOf('a',0) >= 0) 439 462 { 440 463 Element('em_input_sendAcl').disabled = false; 441 464 Element('em_input_sendAcl').checked = true; 442 465 } 443 if (this.ownersAcl[user] != "false" &&this.ownersAcl[user].indexOf('p',0) >= 0)466 if ( this.ownersAcl[user].indexOf('p',0) >= 0) 444 467 { 445 468 Element('em_input_saveAcl').disabled = false; 446 469 Element('em_input_saveAcl').checked = true; 447 470 } 448 if (this.ownersAcl[user] != "false" &&this.ownersAcl[user].indexOf('c',0) >= 0)471 if ( this.ownersAcl[user].indexOf('c',0) >= 0) 449 472 { 450 473 Element('em_input_folderAcl').checked = true; 451 474 } 452 if( this.ownersAcl[user] != "false" &&Element('em_input_writeAcl').checked && Element('em_input_sendAcl').checked ){475 if( Element('em_input_writeAcl').checked && Element('em_input_sendAcl').checked ){ 453 476 Element('em_input_saveAcl').disabled = false; 454 477 } else Element('em_input_saveAcl').disabled = true; 478 } 455 479 } 456 480 … … 464 488 return false; 465 489 } 466 var user = select.options[select.selectedIndex].value; 490 491 for(var k = 0; k < select.options.length; k ++ ) 492 { 493 if(select.options[k].selected !== true ) continue; 494 495 496 acl = ''; 497 var user = select.options[k].value; 467 498 468 499 if (Element('em_input_readAcl').checked) { … … 495 526 if (Element('em_input_saveAcl').checked) 496 527 acl += 'p'; 528 497 529 this.ownersAcl[user] = acl; 530 } 531 } 532 533 cShareMailbox.prototype.setCalendaraclfromuser = function() 534 { 535 var acl = ''; 536 var select = Element('ea_select_owners'); 537 538 if(select.selectedIndex == "-1"){ 539 alert("Selecione antes um usuario!"); 540 return false; 541 } 542 543 for(var k = 0; k < select.options.length; k ++ ) 544 { 545 if(select.options[k].selected !== true ) continue; 546 547 acl = ''; 548 var user = select.options[k].value; 549 550 if (Element('em_input_readCalendar').checked) 551 { 552 553 acl += '1-'; 554 555 Element('em_input_editCalendar').disabled = false; 556 Element('em_input_deleteCalendar').disabled = false; 557 Element('em_input_restrictCalendar').disabled = false; 558 559 if (Element('em_input_editCalendar').checked) 560 acl += '4-'; 561 562 if (Element('em_input_deleteCalendar').checked) 563 acl += '8-'; 564 565 if (Element('em_input_restrictCalendar').checked) 566 acl += '16-'; 567 } 568 else 569 { 570 Element('em_input_editCalendar').disabled = true; 571 Element('em_input_deleteCalendar').disabled = true; 572 Element('em_input_restrictCalendar').disabled = true; 573 Element('em_input_editCalendar').checked = false; 574 Element('em_input_deleteCalendar').checked = false; 575 Element('em_input_restrictCalendar').checked = false; 576 } 577 578 if (Element('em_input_writeCalendar').checked) 579 acl += '2-'; 580 581 582 this.ownersCalendarAcl[user] = acl; 583 } 498 584 } 499 585 … … 550 636 for(var i = 0;i < select_users.options.length; i++) 551 637 if(select_users.options[i].selected) 638 { 639 640 var user = select_users.options[i].value; 641 this.ownersCalendarAcl[user] = ''; 552 642 select_users.options[i--] = null; 553 643 644 } 645 554 646 Element('em_input_readAcl').checked = false; 555 647 Element('em_input_deleteAcl').checked = false; … … 558 650 Element('em_input_saveAcl').checked = false; 559 651 Element('em_input_folderAcl').checked = false; 652 Element('em_input_readCalendar').checked = false; 653 Element('em_input_writeCalendar').checked = false; 654 Element('em_input_editCalendar').checked = false; 655 Element('em_input_deleteCalendar').checked = false; 656 Element('em_input_restrictCalendar').checked = false; 560 657 } 561 658 -
trunk/expressoAdmin1_2/js/jscode/users.js
r3018 r5133 1 1 countFiles = 1; 2 3 function Element( id ) 4 { 5 return document.getElementById( id ); 6 } 7 2 8 function validate_fields(type) 3 9 { … … 32 38 } 33 39 if (document.forms[0].password2.value == ''){ 34 alert(get_lang('re password field is empty') + '.');40 alert(get_lang('re-password field is empty') + '.'); 35 41 return; 36 42 } … … 38 44 39 45 if (document.forms[0].password1.value != document.forms[0].password2.value){ 40 alert(get_lang('password and re password are different') + '.');46 alert(get_lang('password and re-password are different') + '.'); 41 47 return; 42 48 } … … 155 161 156 162 if (type == 'create_user') 157 { 158 // Turn enabled checkbox on create user. 163 { // Turn enabled checkbox on create user. 159 164 document.getElementById('changepassword').disabled = false; 160 165 cExecuteForm ("$this.user.create", document.forms[0], handler_create); … … 256 261 } 257 262 258 function get_available_groups(context) 259 { 260 var handler_get_available_groups = function(data) 261 { 262 select_available_groups = document.getElementById('ea_select_available_groups'); 263 264 if ((data) && (data.length > 0)) 265 { 266 // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 267 select_available_groups.innerHTML = '#' + data; 268 select_available_groups.outerHTML = select_available_groups.outerHTML; 269 select_available_groups_clone = select_available_groups.cloneNode(true); 270 document.getElementById('ea_input_searchGroup').value = ''; 271 } 272 else 273 { 274 // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 275 select_available_groups.innerHTML = '#'; 276 select_available_groups.outerHTML = select_available_groups.outerHTML; 277 } 278 } 279 280 cExecute ('$this.ldap_functions.get_available_groups&context='+context, handler_get_available_groups); 263 function get_available_groups(context, sentence) 264 { 265 // if( !sentence ) 266 // sentence = Element( 'ea_input_searchGroup' ).value; 267 // 268 // var url = '$this.ldap_functions.get_available_groups&context='+context + '&sentence='+sentence; 269 // 270 // var fillHandler = function( fill ){ 271 // 272 // //fill = fill.users; 273 // 274 // Element('ea_select_available_groups').innerHTML = fill; 275 // 276 // return( fill !== "" ); 277 // } 278 // 279 // userFinder( sentence, fillHandler, url, new Function('x','return x'), 'ea_span_searching_group' ); 280 281 if( !sentence ) 282 sentence = 'ea_input_searchGroup'; 283 284 optionFind( sentence, 'ea_select_available_groups', 285 '$this.ldap_functions.get_available_groups', 286 context, 'ea_span_searching_group' ); 287 281 288 } 282 289 … … 352 359 } 353 360 354 function get_available_maillists(context) 355 { 356 var handler_get_available_maillists = function(data) 357 { 358 select_available_maillists = document.getElementById('ea_select_available_maillists'); 359 360 if ((data) && (data.length > 0)) 361 { 362 // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 363 select_available_maillists.innerHTML = '#' + data; 364 select_available_maillists.outerHTML = select_available_maillists.outerHTML; 365 select_available_maillists_clone = select_available_maillists.cloneNode(true); 366 document.getElementById('ea_input_searchMailList').value = ''; 367 } 368 else 369 { 370 // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 371 select_available_maillists.innerHTML = '#'; 372 select_available_maillists.outerHTML = select_available_maillists.outerHTML; 373 } 374 } 375 cExecute ('$this.ldap_functions.get_available_maillists&context='+context, handler_get_available_maillists); 361 function get_available_maillists(context, sentence) 362 { 363 if( !sentence ) 364 sentence = Element('ea_input_searchMailList').value; 365 366 var url = '$this.ldap_functions.get_available_maillists&context='+context + '&sentence='+sentence; 367 368 var fillHandler = function( fill ){ 369 370 //fill = fill.users; 371 372 Element('ea_select_available_maillists').innerHTML = fill; 373 374 return( fill !== "" ); 375 } 376 377 userFinder( sentence, fillHandler, url, new Function('x','return x'), 'ea_span_searching_maillist' ); 376 378 } 377 379 … … 565 567 566 568 // Funcoes Find MailList 567 function optionFinderTimeout_maillist(obj )568 { 569 clearTimeout(finderTimeout_maillist); 570 var oWait = document.getElementById("ea_span_searching_maillist");571 oWait.innerHTML = get_lang('Searching') + '...'; 572 finderTimeout_maillist = setTimeout("optionFinder_maillist('"+obj.id+"')",500);569 function optionFinderTimeout_maillist(obj, event) 570 { 571 if( event && event.keyCode !== 13 ) 572 return; 573 574 optionFinder_maillist( obj.id ); 573 575 } 574 576 function optionFinder_maillist(id) { 575 var oWait = document.getElementById("ea_span_searching_maillist"); 576 var oText = document.getElementById(id); 577 578 //Limpa todo o select 579 for(var i = 0;i < select_available_maillists.options.length; i++) 580 select_available_maillists.options[i--] = null; 581 582 var RegExp_name = new RegExp(oText.value, "i"); 583 584 //Inclui as listas começando com a pesquisa 585 for(i = 0; i < select_available_maillists_clone.length; i++){ 586 if (RegExp_name.test(select_available_maillists_clone[i].text)) 587 { 588 sel = select_available_maillists.options; 589 option = new Option(select_available_maillists_clone[i].text,select_available_maillists_clone[i].value); 590 sel[sel.length] = option; 591 } 592 } 593 oWait.innerHTML = ' '; 577 578 get_available_maillists( Element('ea_combo_org_maillists').value, Element(id).value ); 579 594 580 } 595 581 … … 599 585 600 586 // Funcoes Find Group 601 function optionFinderTimeout_group(obj) 602 { 603 clearTimeout(finderTimeout_group); 604 var oWait = document.getElementById("ea_span_searching_group"); 605 oWait.innerHTML = get_lang('Searching') + '...'; 606 finderTimeout_group = setTimeout("optionFinder_group('"+obj.id+"')",500); 587 function optionFinderTimeout_group(obj, event) 588 { 589 590 if( event && event.keyCode !== 13 ) 591 return; 592 593 optionFinder_group(obj.id); 607 594 } 608 595 function optionFinder_group(id) { 609 var oWait = document.getElementById("ea_span_searching_group"); 610 var oText = document.getElementById(id); 611 612 //Limpa todo o select 613 for(var i = 0;i < select_available_groups.options.length; i++) 614 select_available_groups.options[i--] = null; 615 616 var RegExp_name = new RegExp(oText.value, "i"); 617 618 //Inclui as listas começando com a pesquisa 619 for(i = 0; i < select_available_groups_clone.length; i++){ 620 if (RegExp_name.test(select_available_groups_clone[i].text)) 621 { 622 sel = select_available_groups.options; 623 option = new Option(select_available_groups_clone[i].text,select_available_groups_clone[i].value); 624 sel[sel.length] = option; 625 } 626 } 627 oWait.innerHTML = ' '; 596 597 get_available_groups( Element('ea_combo_org_groups').value, Element(id).value ); 628 598 } 629 599 -
trunk/expressoAdmin1_2/js/modal/modal.js
r1975 r5133 3 3 try{ 4 4 content = Element(id).cloneNode(true); 5 //Acrescentado para eliminar bug do IE que deixa um formulario inv álido,6 //se for inserido outro na mesma p ágina com o mesmo ID, ficando ambos inválidos5 //Acrescentado para eliminar bug do IE que deixa um formulario inválido, 6 //se for inserido outro na mesma página com o mesmo ID, ficando ambos inválidos 7 7 content_code = content.innerHTML; 8 8 content.innerHTML = content_code.replace("_template",""); -
trunk/expressoAdmin1_2/setup/setup.inc.php
r4306 r5133 13 13 $setup_info['expressoAdmin1_2']['title'] = 'Expresso Admin'; 14 14 /* Ao incrementar versão, não esquecer de declarar função do tables_update.inc.php*/ 15 $setup_info['expressoAdmin1_2']['version'] = '2. 2.2';15 $setup_info['expressoAdmin1_2']['version'] = '2.0.006'; 16 16 $setup_info['expressoAdmin1_2']['app_order'] = 1; 17 17 $setup_info['expressoAdmin1_2']['tables'][] = 'phpgw_expressoadmin'; … … 20 20 $setup_info['expressoAdmin1_2']['tables'][] = 'phpgw_expressoadmin_log'; 21 21 $setup_info['expressoAdmin1_2']['tables'][] = 'phpgw_expressoadmin_samba'; 22 $setup_info['expressoAdmin1_2']['tables'][] = 'phpgw_expressoadmin_configuration'; 23 $setup_info['expressoAdmin1_2']['tables'][] = 'phpgw_expressoadmin_acls'; 22 24 $setup_info['expressoAdmin1_2']['enable'] = 1; 23 25 … … 35 37 $setup_info['expressoAdmin1_2']['depends'][] = array( 36 38 'appname' => 'phpgwapi', 37 'versions' => Array('2. 2')39 'versions' => Array('2.4.0') 38 40 ); 39 41 ?> -
trunk/expressoAdmin1_2/setup/tables_current.inc.php
r414 r5133 15 15 'manager_lid' => array('type' => 'varchar','precision' => 50,'nullable' => false), 16 16 'context' => array('type' => 'varchar','precision' => 255,'nullable' => false), 17 'acl' => array('type' => 'int','precision' => 8,'nullable' => false)17 'acl' => array('type' => 'int','precision' => 14,'nullable' => false) 18 18 ), 19 19 'pk' => array(), … … 68 68 'ix' => array(), 69 69 'uc' => array() 70 ), 71 72 'phpgw_expressoadmin_configuration' => array( 73 'fd' => array( 74 'id' => array( 'type' => 'int', 'precision' => 8), 75 'email_user' => array( 'type' => 'varchar', 'precision' => 100), 76 'configuration_type' => array( 'type' => 'varchar', 'precision' => 30), 77 'email_max_recipient' => array( 'type' => 'int', 'precision' => 8), 78 'email_user_type' => array( 'type' => 'varchar', 'precision' => 1), 79 'email_quota' => array( 'type' => 'int', 'precision' => 8), 80 'email_recipient' => array( 'type' => 'varchar', 'precision' => 50), 81 82 ), 83 'pk' => array('id'), 84 'fk' => array(), 85 'ix' => array(), 86 'uc' => array() 87 ), 88 89 'phpgw_expressoadmin_acls' => array( 90 'fd' => array( 91 'manager_lid' => array( 'type' => 'varchar', 'precision' => 50), 92 'context' => array( 'type' => 'varchar', 'precision' => 255), 93 'acl_name' => array( 'type' => 'varchar', 'precision' => 255) 94 ), 95 'pk' => array(), 96 'fk' => array(), 97 'ix' => array(), 98 'uc' => array() 99 ), 100 101 'phpgw_expressoadmin_configuration' => array( 102 'fd' => array( 103 'id' => array( 'type' => 'int', 'precision' => 8), 104 'email_user' => array( 'type' => 'varchar', 'precision' => 100), 105 'configuration_type' => array( 'type' => 'varchar', 'precision' => 30), 106 'email_max_recipient' => array( 'type' => 'int', 'precision' => 8), 107 'email_user_type' => array( 'type' => 'varchar', 'precision' => 1), 108 'email_quota' => array( 'type' => 'int', 'precision' => 8), 109 'email_recipient' => array( 'type' => 'varchar', 'precision' => 50), 110 111 ), 112 'pk' => array('id'), 113 'fk' => array(), 114 'ix' => array(), 115 'uc' => array() 116 ), 117 118 'phpgw_expressoadmin_acls' => array( 119 'fd' => array( 120 'manager_lid' => array( 'type' => 'varchar', 'precision' => 50), 121 'context' => array( 'type' => 'varchar', 'precision' => 255), 122 'acl_name' => array( 'type' => 'varchar', 'precision' => 255) 123 ), 124 'pk' => array(), 125 'fk' => array(), 126 'ix' => array(), 127 'uc' => array() 70 128 ) 71 129 ); -
trunk/expressoAdmin1_2/setup/tables_update.inc.php
r4306 r5133 9 9 * option) any later version. * 10 10 \**************************************************************************/ 11 // Since Expresso 1.2 using ExpressoAdmin 1.261 11 $test[] = '1.2'; 12 function expressoAdmin1_2_upgrade1_2() 13 { 14 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '1.21'; 15 return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 16 } 17 18 $test[] = '1.21'; 19 function expressoAdmin1_2_upgrade1_21() 20 { 21 $oProc = $GLOBALS['phpgw_setup']->oProc; 22 23 $oProc->CreateTable( 24 'phpgw_expressoadmin_samba', array( 25 'fd' => array( 26 'samba_domain_name' => array( 'type' => 'varchar', 'precision' => 50), 27 'samba_domain_sid' => array( 'type' => 'varchar', 'precision' => 100) 28 ), 29 'pk' => array('samba_domain_name'), 30 'fk' => array(), 31 'ix' => array(), 32 'uc' => array() 33 ) 34 ); 35 36 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '1.240'; 37 return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 38 } 39 40 $test[] = '1.240'; 41 function expressoAdmin1_2_upgrade1_240() 42 { 43 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '1.250'; 44 return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 45 } 46 47 $test[] = '1.250'; 48 function expressoAdmin1_2_upgrade1_250() 49 { 50 $GLOBALS['phpgw_setup']->oProc->DropColumn('phpgw_expressoadmin_log','','appinfo'); 51 $GLOBALS['phpgw_setup']->oProc->DropColumn('phpgw_expressoadmin_log','','groupinfo'); 52 $GLOBALS['phpgw_setup']->oProc->DropColumn('phpgw_expressoadmin_log','','msg'); 53 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '1.261'; 54 return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 55 } 56 12 57 $test[] = '1.261'; 13 58 function expressoAdmin1_2_upgrade1_261() … … 44 89 { 45 90 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.0.005'; 91 //$GLOBALS['phpgw_setup']->db->query("alter table phpgw_expressoadmin_log drop groupinfo"); 92 //$GLOBALS['phpgw_setup']->db->query("alter table phpgw_expressoadmin_log drop appinfo"); 93 //$GLOBALS['phpgw_setup']->db->query("alter table phpgw_expressoadmin_log drop msg");/ 94 46 95 return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 47 96 } 48 97 $test[] = '2.0.005'; 49 function expressoAdmin1_2_upgrade2_0_005() 50 { 51 $GLOBALS['phpgw_setup']->db->query("alter table phpgw_expressoadmin_log drop groupinfo"); 52 $GLOBALS['phpgw_setup']->db->query("alter table phpgw_expressoadmin_log drop appinfo"); 53 $GLOBALS['phpgw_setup']->db->query("alter table phpgw_expressoadmin_log drop msg"); 54 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.1.000'; 55 return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 56 } 57 $test[] = '2.1.000'; 58 function expressoAdmin1_2_upgrade2_1_000() 59 { 60 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.2.000'; 61 return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 62 } 63 $test[] = '2.2.000'; 64 function expressoAdmin1_2_upgrade2_2_000() 65 { 66 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.2.1'; 67 return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 68 } 69 $test[] = '2.2.1'; 70 function expressoAdmin1_2_upgrade2_2_1() 98 function expressoAdmin1_2_upgrade2_0_005() { 99 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.0.006'; 100 $GLOBALS['phpgw_setup']->db->query(" 101 102 DROP SEQUENCE IF EXISTS seq_phpgw_expressoadmin_configuration; 103 CREATE SEQUENCE seq_phpgw_expressoadmin_configuration 104 INCREMENT 1 105 MINVALUE 1 106 MAXVALUE 9223372036854775807 107 START 93 108 CACHE 1; 109 ALTER TABLE seq_phpgw_expressoadmin_configuration OWNER TO ".$GLOBALS['phpgw_domain']['default']['db_user']."; 110 111 112 DROP TABLE IF EXISTS phpgw_expressoadmin_configuration; 113 CREATE TABLE phpgw_expressoadmin_configuration 114 ( 115 id integer NOT NULL DEFAULT nextval(('seq_phpgw_expressoadmin_configuration'::text)::regclass), 116 email_user character varying(100), 117 configuration_type character varying(30) NOT NULL, 118 email_max_recipient integer DEFAULT 0, 119 email_user_type character varying(1), 120 email_quota integer, 121 email_recipient character varying(50), 122 CONSTRAINT phpgw_expressoadmin_configuration_pkey PRIMARY KEY (id) 123 ) 124 WITH ( 125 OIDS=TRUE 126 ); 127 128 DROP INDEX IF EXISTS configuration_type_indice; 129 CREATE INDEX configuration_type_indice 130 ON phpgw_expressoadmin_configuration 131 USING btree 132 (configuration_type); 133 ALTER TABLE phpgw_expressoadmin_configuration CLUSTER ON configuration_type_indice; 134 135 DROP INDEX IF EXISTS email_user_indice; 136 CREATE INDEX email_user_indice 137 ON phpgw_expressoadmin_configuration 138 USING btree 139 (email_user); 140 ALTER TABLE phpgw_expressoadmin_configuration CLUSTER ON email_user_indice; 141 142 DROP TABLE IF EXISTS phpgw_expressoadmin_acls; 143 CREATE TABLE phpgw_expressoadmin_acls 144 ( 145 manager_lid character varying(50) NOT NULL, 146 context character varying(255) NOT NULL, 147 acl_name character varying(255) NOT NULL 148 ) 149 WITH ( 150 OIDS=TRUE 151 ); 152 ALTER TABLE phpgw_expressoadmin_acls OWNER TO ".$GLOBALS['phpgw_domain']['default']['db_user']."; 153 154 155 DROP INDEX IF EXISTS manager_lid_indice; 156 CREATE INDEX manager_lid_indice 157 ON phpgw_expressoadmin_acls 158 USING btree 159 (manager_lid); 160 ALTER TABLE phpgw_expressoadmin_acls CLUSTER ON manager_lid_indice; 161 162 163 "); 164 165 $GLOBALS['phpgw_setup']->db->query("SELECT * FROM phpgw_expressoadmin"); 166 $results = array(); 167 168 function safeBitCheck($number,$comparison) 169 { 170 $binNumber = base_convert($number,10,2); 171 $binComparison = strrev(base_convert($comparison,10,2)); 172 $str = strlen($binNumber); 173 174 if ( ($str <= strlen($binComparison)) && ($binComparison{$str-1}==="1") ) 175 return '1'; 176 else 177 return '0'; 178 } 179 180 function make_array_acl($acl) 181 { 182 183 $array_acl_tmp = array(); 184 $tmp = array( "acl_add_users", 185 "acl_edit_users", 186 "acl_delete_users", 187 "acl_EMPTY1", 188 "acl_add_groups", 189 "acl_edit_groups", 190 "acl_delete_groups", 191 "acl_change_users_password", 192 "acl_add_maillists", 193 "acl_edit_maillists", 194 "acl_delete_maillists", 195 "acl_EMPTY2", 196 "acl_create_sectors", 197 "acl_edit_sectors", 198 "acl_delete_sectors", 199 "acl_edit_sambausers_attributes", 200 "acl_view_global_sessions", 201 "acl_view_logs", 202 "acl_change_users_quote", 203 "acl_set_user_default_password", 204 "acl_create_computers", 205 "acl_edit_computers", 206 "acl_delete_computers", 207 "acl_rename_users", 208 "acl_edit_sambadomains", 209 "acl_view_users", 210 "acl_edit_email_groups", 211 "acl_empty_user_inbox", 212 "acl_manipulate_corporative_information", 213 "acl_edit_users_picture", 214 "acl_edit_scl_email_lists", 215 "acl_edit_users_phonenumber", 216 "acl_add_institutional_accounts", 217 "acl_edit_institutional_accounts", 218 "acl_remove_institutional_accounts", 219 "acl_add_shared_accounts", 220 "acl_edit_shared_accounts", 221 "acl_delete_shared_accounts", 222 "acl_edit_shared_accounts_acl", 223 "acl_edit_shared_accounts_quote", 224 "acl_empty_shared_accounts_inbox" 225 ); 226 227 foreach ($tmp as $index => $right) 228 { 229 $bin = ''; 230 for ($i=0; $i<$index; $i++) 231 { 232 $bin .= '0'; 233 } 234 $bin = '1' . $bin; 235 236 $array_acl[$right] = safeBitCheck(bindec($bin), $acl); 237 } 238 return $array_acl; 239 } 240 241 while($GLOBALS['phpgw_setup']->db->next_record()) 242 array_push($results, $GLOBALS['phpgw_setup']->db->row()); 243 244 foreach ($results as $result) 245 { 246 $manager_info = make_array_acl($result['acl']); 247 248 249 foreach ($manager_info as $info => $value) 250 { 251 $acl = strstr($info, 'acl_'); 252 253 if ($acl !== false) 71 254 { 72 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.2.2'; 255 256 $fields = array( 257 'manager_lid' => $result['manager_lid'], 258 'context' => $result['context'], 259 'acl_name' => $info, 260 ); 261 262 263 $GLOBALS['phpgw_setup']->db->insert('phpgw_expressoadmin_acls', $fields); 264 265 } 266 267 } 268 269 } 270 73 271 return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 74 272 } -
trunk/expressoAdmin1_2/templates/default/accounts_form.tpl
r3018 r5133 22 22 <input type="hidden" name="defaultDomain" value="{defaultDomain}"> 23 23 <input type="hidden" name="ldap_context" value="{ldap_context}"> 24 <input type="hidden" name="associated_domain" value="{associated_domain}">25 24 26 25 <br> … … 43 42 <tr bgcolor={row_on}> 44 43 <td>{lang_search_organization}:</td> 45 <td><input type="text" id="organization_search" {disabled} autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_info');" onBlur="javascript:sinc_combos_org(context.value); get_a ssociated_domain(context.value); get_available_groups(context.value); get_available_maillists(context.value); get_available_sambadomains(context.value, '{type}')"></td>44 <td><input type="text" id="organization_search" {disabled} autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_info');" onBlur="javascript:sinc_combos_org(context.value); get_available_sambadomains(context.value, '{type}')"></td> 46 45 </tr> 47 46 48 47 <tr bgcolor={row_off}> 49 48 <td>{lang_organizations}:</td> 50 <td><select {disabled} id="ea_combo_org_info" name="context" onchange="javascript:sinc_combos_org(this.value); get_a ssociated_domain(this.value); get_available_groups(this.value); get_available_maillists(this.value); get_available_sambadomains(this.value, '{type}')">{sectors}</select></td>49 <td><select {disabled} id="ea_combo_org_info" name="context" onchange="javascript:sinc_combos_org(this.value); get_available_groups(this.value); get_available_maillists(this.value); get_available_sambadomains(this.value, '{type}')">{sectors}</select></td> 51 50 </tr> 52 51 … … 245 244 <td> 246 245 {lang_search_for_group}:<br> 247 <input {disable_group} id="ea_input_searchGroup" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout_group(this )"><br>246 <input {disable_group} id="ea_input_searchGroup" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout_group(this, event)"><br> 248 247 <font color="red"><span id="ea_span_searching_group"> <span></font> 249 248 <br> … … 308 307 <td> 309 308 {lang_search_email_list}:<br> 310 <input {disabled} id="ea_input_searchMailList" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout_maillist(this )"><br>309 <input {disabled} id="ea_input_searchMailList" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout_maillist(this, event)"><br> 311 310 <font color="red"><span id="ea_span_searching_maillist"> <span></font> 312 311 <br> -
trunk/expressoAdmin1_2/templates/default/config.tpl
r3351 r5133 82 82 </tr> 83 83 <tr class="row_off"> 84 <td>{lang_Default_Shared_Account_Quota}:</td> 85 <td><input name="newsettings[expressoAdmin_defaultSharedAccountQuota]" value="{value_expressoAdmin_defaultSharedAccountQuota}" size="10" /></td> 86 </tr> 87 <tr class="row_on"> 84 88 <td>{lang_Minimum_Size_Login}:</td> 85 89 <td><input name="newsettings[expressoAdmin_minimumSizeLogin]" value="{value_expressoAdmin_minimumSizeLogin}" size="10" /></td> 86 90 </tr> 87 <tr class="row_o n">91 <tr class="row_off"> 88 92 <td>{lang_Default_Domain}:</td> 89 93 <td><input name="newsettings[expressoAdmin_defaultDomain]" value="{value_expressoAdmin_defaultDomain}" size="15" /></td> 90 94 </tr> 91 <tr class="row_o ff">95 <tr class="row_on"> 92 96 <td>{lang_concatenate_default_domain_to_the_mail}:</td> 93 97 <td> … … 98 102 </td> 99 103 </tr> 100 <tr class="row_o n">104 <tr class="row_off"> 101 105 <td>{lang_use_restrictions_in_the_creation_of_groups}:</td> 102 106 <td> … … 107 111 </td> 108 112 </tr> 109 <tr class="row_o ff">113 <tr class="row_on"> 110 114 <td>{lang_use_restrictions_in_the_creation_of_emaillists}:</td> 111 115 <td> … … 116 120 </td> 117 121 </tr> 118 <tr class="row_o n">119 <td>{lang_This_server_uses_Sending_Control_List_by_P policy}:</td>122 <tr class="row_off"> 123 <td>{lang_This_server_uses_Sending_Control_List_by_Policy}:</td> 120 124 <td> 121 125 <select name="newsettings[expressoAdmin_scl]"> … … 125 129 </td> 126 130 </tr> 127 <tr class="row_o ff">131 <tr class="row_on"> 128 132 <td>{lang_Does_CPF_field_must_be_completed}?</td> 129 133 <td> … … 135 139 </tr> 136 140 137 <tr class="row_off">138 <td>{lang_deny_user_accounts_with_the_same_cpf}?</td>139 <td>140 <select name="newsettings[expressoAdmin_deny_same_cpf]">141 <option value="false" {selected_expressoAdmin_deny_same_cpf_false}>{lang_no}</option>142 <option value="true" {selected_expressoAdmin_deny_same_cpf_true}>{lang_yes}</option>143 </select>144 </td>145 </tr>146 147 <tr class="row_th">148 <td>{lang_maximum_length_of_photo_archive__(default_10240_=_10_kb)}:</td>149 <td><input name="newsettings[expressoAdmin_photo_length]" value="{value_expressoAdmin_photo_length}" size="15" /></td>150 </tr>151 152 <tr bgcolor="{row_on}">153 <td>{lang_Do_you_wish_enable_autosearch?}</td>154 <td>155 <select id="usersAutoSearch" name="newsettings[users_auto_search]">156 <option value="false" {selected_users_auto_search_false}>{lang_No}</option>157 <option value="true" {selected_users_auto_search_true}>{lang_Yes}</option>158 </select>159 </td>160 </tr>161 162 <tr bgcolor="{row_off}">163 <td>{lang_Minimum_number_of_characters_to_start_the_search_for_participants}</td>164 <td>165 <input type="text" id="minNum" value="{value_min_num_characters}" name="newsettings[min_num_characters] " size=2 maxlength=2 />166 </td>167 </tr>168 169 141 <tr class="th"> 170 142 <td colspan="2" align="center"><b>{lang_Configurations_to_get_nextID_from_another_DB}<br>{lang_Leave_the_host_field_empty_to_use_the_same_DB_of_the_ExpressoLivre}</b></td> 171 143 </tr> 172 <tr class="row_o ff">144 <tr class="row_on"> 173 145 <td>{lang_db_host}:</td> 174 146 <td><input id="nextid_db_host" name="newsettings[expressoAdmin_nextid_db_host]" value="{value_expressoAdmin_nextid_db_host}" size="30" /></td> 175 147 </tr> 176 <tr class="row_o n">148 <tr class="row_off"> 177 149 <td>{lang_db_port}:</td> 178 150 <td><input id="nextid_db_port" name="newsettings[expressoAdmin_nextid_db_port]" value="{value_expressoAdmin_nextid_db_port}" size="30" /></td> 179 151 </tr> 180 <tr class="row_o ff">152 <tr class="row_on"> 181 153 <td>{lang_db_name}:</td> 182 154 <td><input id="nextid_db_name" name="newsettings[expressoAdmin_nextid_db_name]" value="{value_expressoAdmin_nextid_db_name}" size="30" /></td> 183 155 </tr> 184 <tr class="row_o n">156 <tr class="row_off"> 185 157 <td>{lang_db_user}:</td> 186 158 <td><input id="nextid_db_user" name="newsettings[expressoAdmin_nextid_db_user]" value="{value_expressoAdmin_nextid_db_user}" size="30" /></td> 187 159 </tr> 188 <tr class="row_o ff">160 <tr class="row_on"> 189 161 <td>{lang_db_password}:</td> 190 162 <td><input id="nextid_db_password" name="newsettings[expressoAdmin_nextid_db_password]" value="{value_expressoAdmin_nextid_db_password}" size="30" /></td> 191 163 </tr> 192 <tr class="row_o n">164 <tr class="row_off"> 193 165 <td><input type="button" value="{lang_test_connection_with_DB}" onClick="javascript:test_db_connection()"></td> 194 166 <td><span>{lang_Result}: </span><span id="nextid_db_result"></span></td> 195 167 </tr> 196 <tr class="row_off">197 <td>{lang_use_quotas_control_for_ou}</td>198 <td>199 <select name="newsettings[expressoAdmin_cotasOu]">200 <option value="">{lang_No}</option>201 <option value="true"{selected_expressoAdmin_cotasOu_true}>{lang_Yes}</option>202 </select>203 </td>204 </tr>205 168 <tr class="row_on"> 206 169 <td>{lang_use_login_generator}</td> -
trunk/expressoAdmin1_2/templates/default/groups_form.tpl
r3251 r5133 77 77 78 78 <br> 79 <!-- 79 80 <input type="checkbox" name="ea_check_allUsers" id="ea_check_allUsers" onclick="javascript:get_available_users(org_context.value, this.checked);">{lang_show_users_from_all_sub-organizations}. 81 --> 80 82 <br><br> 81 83 82 84 {lang_search_user}:<br> 83 <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this )"><br>85 <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this, event)"><br> 84 86 85 87 <font color="red"><span id="ea_span_searching"> </span></font> … … 99 101 </td> 100 102 </tr> 101 <tr>102 <td colspan="3">103 {lang_block_personal_data_edit}:104 <br>105 <table width="50%" border="0">106 {personal_data_fields}107 </table>108 </td>109 </tr>110 103 111 104 <tr> -
trunk/expressoAdmin1_2/templates/default/index.tpl
r1913 r5133 1 1 <!-- BEGIN body --> 2 2 <table width="90%" border="0" cellspacing="10" cellpadding="0" align="center"> 3 <tr> 4 <td width="1%" align="center"> 5 <img src='./templates/default/images/configurations.png'> 6 </td> 7 <td> 8 <a href="../index.php?menuaction=expressoAdmin1_2.uiconfiguration.index">{lang_configurations}</a> 9 </td> 10 </tr> 3 11 <tr> 4 12 <td width="1%" align="center"> … … 57 65 </td> 58 66 </tr> 67 68 <tr> 69 <td width="1%" align="center"> 70 <img src='./templates/default/images/message_size.png'> 71 </td> 72 <td> 73 <a href="../index.php?menuaction=expressoAdmin1_2.uimessages_size.index">{lang_messages_size}</a> 74 </td> 75 </tr> 76 59 77 <tr> 60 78 <td width="1%" align="center"> -
trunk/expressoAdmin1_2/templates/default/institutional_accounts.tpl
r1458 r5133 15 15 <td align="right" "left" width="25%"> 16 16 {lang_to_search}: 17 <input type="text" onKeyUp="javascript:get_institutional_accounts_timeOut(this.value )" id="ea_institutional_account_search" autocomplete="off" value="{query}">17 <input type="text" onKeyUp="javascript:get_institutional_accounts_timeOut(this.value, event)" id="ea_institutional_account_search" autocomplete="off" value="{query}"> 18 18 </td> 19 19 </tr> … … 26 26 <td width="30%">{lang_full_name}</td> 27 27 <td width="30%">{lang_mail}</td> 28 <td width="5%" align="center">{lang_ remove}</td>28 <td width="5%" align="center">{lang_delete}</td> 29 29 </tr> 30 30 </table> -
trunk/expressoAdmin1_2/templates/default/institutional_accounts_modal.tpl
r1991 r5133 1 <input type="hidden" id="{modal_id}_title" value="{lang_criation_of_institutional_accounts}" >2 <input type="hidden" id="{modal_id}_height" value="503" >3 <input type="hidden" id="{modal_id}_width" value="930" >4 <input type="hidden" id="{modal_id}_close_action" value="close_lightbox()" >5 <input type="hidden" id="{modal_id}_create_action" value="create_institutional_accounts()" >6 <input type="hidden" id="{modal_id}_save_action" value="save_institutional_accounts()" >7 <input type="hidden" id="{modal_id}_onload_action" value="set_onload({manager_context})" >1 <input type="hidden" id="{modal_id}_title" value="{lang_criation_of_institutional_accounts}" /> 2 <input type="hidden" id="{modal_id}_height" value="503" /> 3 <input type="hidden" id="{modal_id}_width" value="930" /> 4 <input type="hidden" id="{modal_id}_close_action" value="close_lightbox()" /> 5 <input type="hidden" id="{modal_id}_create_action" value="create_institutional_accounts()" /> 6 <input type="hidden" id="{modal_id}_save_action" value="save_institutional_accounts()" /> 7 <input type="hidden" id="{modal_id}_onload_action" value="set_onload({manager_context})" /> 8 8 9 9 <form enctype="multipart/form-data" name="institutional_accounts_form_template" method="post"> 10 <input type="hidden" id="anchor" name="anchor" >10 <input type="hidden" id="anchor" name="anchor" /> 11 11 12 12 <table border="0" width="80%" cellspacing="4"> 13 13 <tr> 14 14 <td width="35%" bgcolor="#DDDDDD"> 15 {lang_search_organization}:<br >16 <input type="text" id="organization_search" autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org');" onBlur="javascript:sinc_combos_org(context.value);">17 <br >18 {lang_organization}:<br >19 <select id="ea_combo_org" name="context" onchange="javascript:sinc_combos_org(this.value); javascript:get_associated_domain(this.value);">{manager_organizations}</select><br>15 {lang_search_organization}:<br /> 16 <input type="text" id="organization_search" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org');" onBlur="javascript:sinc_combos_org(context.value);" /> 17 <br /> 18 {lang_organization}:<br /> 19 <select id="ea_combo_org" name="context" onchange="javascript:sinc_combos_org(this.value);">{manager_organizations}</select><br /> 20 20 21 <input type="hidden" id="associated_domain" name="associated_domain"> 21 {lang_full_name}: <font color="blue">{lang_eg}: Setor Diser</font><br /> 22 <input id="cn" name="cn" size="35" autocomplete="off" /><br /> 22 23 23 {lang_ full_name}: <font color="blue">{lang_eg}: Setor Diser</font><br>24 <input id=" cn" name="cn" size="35" autocomplete="off"><br>24 {lang_mail}: <font color="blue">{lang_eg}: diser@celepar.pr.gov.br</font><br /> 25 <input id="mail" name="mail" onKeyUp='javascript:emailSugestion_expressoadmin2(this)' size="35" autocomplete="off" /><br /> 25 26 26 {lang_ mail}: <font color="blue">{lang_eg}: diser@celepar.pr.gov.br</font><br>27 <input id=" mail" name="mail" onKeyUp='javascript:emailSugestion_expressoadmin2(this)' size="35" autocomplete="off"><br>27 {lang_description}:<br /> 28 <input id="desc" name="desc" size="60" autocomplete="off" /><br /> 28 29 29 {lang_ description}:<br>30 <input id="desc" name="desc" size="60" autocomplete="off"><br>30 {lang_is_account_active}: <input type="checkbox" id="accountStatus" name="accountStatus" checked /><br /> 31 {lang_omit_account_from_the_catalog}: <input type="checkbox" id="phpgwAccountVisible" name="phpgwAccountVisible" /><br /> 31 32 32 {lang_is_account_active}: <input type="checkbox" id="accountStatus" name="accountStatus" checked><br> 33 {lang_omit_account_from_the_catalog}: <input type="checkbox" id="phpgwAccountVisible" name="phpgwAccountVisible"><br> 34 35 <b>{lang_owners}:</b><br> 33 <b>{lang_owners}:</b><br /> 36 34 <select id="ea_select_owners" name="owners[]" style="width:400px; height:200px" multiple size="13"></select> 37 35 </td> 38 36 39 37 <td width="10%" valign="middle" align="center" bgcolor="#DDDDDD"> 40 <button type="button" onClick="javascript:add_user();"><img src="expressoAdmin1_2/templates/default/images/add.png" style="vertical-align: middle;" > {lang_add_owner}</button>41 <br ><br>42 <button type="button" onClick="javascript:remove_user();"><img src="expressoAdmin1_2/templates/default/images/rem.png" style="vertical-align: middle;" > {lang_remove_owner}</button>38 <button type="button" onClick="javascript:add_user();"><img src="expressoAdmin1_2/templates/default/images/add.png" style="vertical-align: middle;" /> {lang_add_owner}</button> 39 <br /><br /> 40 <button type="button" onClick="javascript:remove_user();"><img src="expressoAdmin1_2/templates/default/images/rem.png" style="vertical-align: middle;" /> {lang_remove_owner}</button> 43 41 </td> 44 42 45 43 <td width="35%" valign="bottom" bgcolor="#DDDDDD"> 46 {lang_search_organization}:<br >47 <input type="text" id="organization_search" autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_available_users');" onBlur="javascript:get_available_users(org_context.value);">48 <br >44 {lang_search_organization}:<br /> 45 <input type="text" id="organization_search" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_available_users');" onBlur="javascript:get_available_users(org_context.value);" /> 46 <br /> 49 47 50 {lang_organizations}:<br >48 {lang_organizations}:<br /> 51 49 <select name="org_context" id="ea_combo_org_available_users" onchange="javascript:get_available_users(this.value);">{all_organizations}</select> 52 <br >50 <br /> 53 51 <!-- 54 52 <input type="checkbox" name="ea_check_allUsers" id="ea_check_allUsers" onclick="javascript:get_available_users(org_context.value, this.checked);">{lang_all_users}. 55 53 --> 56 <br ><br>54 <br /><br /> 57 55 58 {lang_search_user}:<br >59 <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this )"><br>56 {lang_search_user}:<br /> 57 <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this,event)" /><br /> 60 58 61 59 <font color="red"><span id="ea_span_searching"> </span></font> 62 <br >63 <b>{lang_users}:</b><br >60 <br /> 61 <b>{lang_users}:</b><br /> 64 62 <select id="ea_select_available_users" style="width:400px; height:200px" multiple size="13"></select> 65 63 </td> -
trunk/expressoAdmin1_2/templates/default/maillists_form.tpl
r3351 r5133 14 14 <input type="hidden" name="restrictionsOnEmailLists" value="{restrictionsOnEmailLists}"> 15 15 <input type="hidden" name="defaultDomain" value="{defaultDomain}"> 16 <input type="hidden" id="autosearch" value="{autosearch}">17 16 18 17 <tr> … … 63 62 64 63 {lang_organizations}:<br> 65 <select name="org_context" id="ea_combo_org_maillists" onchange="javascript:get_available_users(this.value, ea_check_allUsers.checked ,true);">{combo_all_orgs}</select>64 <select name="org_context" id="ea_combo_org_maillists" onchange="javascript:get_available_users(this.value, ea_check_allUsers.checked);">{combo_all_orgs}</select> 66 65 <br> 66 <!-- 67 67 <input type="checkbox" name="ea_check_allUsers" id="ea_check_allUsers" onclick="javascript:get_available_users(org_context.value, this.checked);">{lang_show_users_from_all_sub-organizations}. 68 --> 68 69 <br><br> 69 70 70 71 {lang_search_user}:<br> 71 <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this, {minNum},'search',{autosearch},true)"><br>72 <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this,event)"><br> 72 73 73 74 <font color="red"><span id="ea_span_searching"> </span></font> -
trunk/expressoAdmin1_2/templates/default/maillists_scl.tpl
r3351 r5133 12 12 <input type="hidden" name="ldap_context" value="{ldap_context}"> 13 13 <input type="hidden" name="manager_context" value="{manager_context}"> 14 <input type="hidden" id="autosearch" value="{autosearch}">14 15 15 <tr> 16 16 <td colspan="3" align="right" bgcolor="{color_bg1}"> … … 39 39 <td valign="bottom" bgcolor="#DDDDDD"> 40 40 {lang_organizations}:<br> 41 <select name="org_context" id="ea_combo_org_maillists" onchange="javascript:get_available_users(this.value, ea_check_allUsers.checked ,false);">{combo_org}</select>41 <select name="org_context" id="ea_combo_org_maillists" onchange="javascript:get_available_users(this.value, ea_check_allUsers.checked);">{combo_org}</select> 42 42 43 43 <br> … … 47 47 48 48 {lang_search_user}:<br> 49 <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this ,{minNum},'search',{autosearch},false)"><br>49 <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this)"><br> 50 50 51 51 <font color="red"><span id="ea_span_searching"> </span></font> -
trunk/expressoAdmin1_2/templates/default/managers.tpl
r4559 r5133 5 5 <td align="right"> 6 6 <form method="POST" action="{action}"> 7 <input type="submit" value="{lang_add_manager}" >7 <input type="submit" value="{lang_add_manager}" /> 8 8 </form> 9 9 </td> -
trunk/expressoAdmin1_2/templates/default/managers_form.tpl
r1913 r5133 27 27 <td width="25%">{lang_search_for_manager}:</td> 28 28 <td> 29 <input type="text" id="manager_lid" {input_manager_lid_disabled} name="manager_lid" value="{manager_lid}" size=30 autocomplete="off" onkey up="javascript:search_manager(this.value)"></input>29 <input type="text" id="manager_lid" {input_manager_lid_disabled} name="manager_lid" value="{manager_lid}" size=30 autocomplete="off" onkeypress="return search_manager(this.value, event)"></input> 30 30 <font color="red"><span id="ea_span_searching_manager"> </span></font> 31 31 </td> … … 62 62 <tr bgcolor="{color_font1}" align='right'> 63 63 <td width="20%">{lang_add_users}:</td> 64 <td width="2%"><input type="checkbox" name="acl_add_users" value=" 1" {acl_add_users}></td>64 <td width="2%"><input type="checkbox" name="acl_add_users" value="true" {acl_add_users}></td> 65 65 <td width="20%">{lang_add_groups}:</td> 66 <td width="2%"><input type="checkbox" name="acl_add_groups" value=" 16" {acl_add_groups}></td>66 <td width="2%"><input type="checkbox" name="acl_add_groups" value="true" {acl_add_groups}></td> 67 67 <td width="20%">{lang_add_email_lists}:</td> 68 <td width="2%"><input type="checkbox" name="acl_add_maillists" value=" 256" {acl_add_maillists}></td>68 <td width="2%"><input type="checkbox" name="acl_add_maillists" value="true" {acl_add_maillists}></td> 69 69 <td width="20%">{lang_create_organizations}:</td> 70 <td width="2%"><input type="checkbox" name="acl_create_sectors" value=" 4096" {acl_create_sectors}></td>70 <td width="2%"><input type="checkbox" name="acl_create_sectors" value="true" {acl_create_sectors}></td> 71 71 </tr> 72 72 <tr bgcolor="{color_font2}" align='right'> 73 73 <td>{lang_edit_users}:</td> 74 <td><input type="checkbox" name="acl_edit_users" value=" 2" {acl_edit_users}></td>74 <td><input type="checkbox" name="acl_edit_users" value="true" {acl_edit_users}></td> 75 75 <td>{lang_edit_groups}:</td> 76 <td><input type="checkbox" name="acl_edit_groups" value=" 32" {acl_edit_groups}></td>76 <td><input type="checkbox" name="acl_edit_groups" value="true" {acl_edit_groups}></td> 77 77 <td>{lang_edit_email_lists}:</td> 78 <td><input type="checkbox" name="acl_edit_maillists" value=" 512" {acl_edit_maillists}></td>78 <td><input type="checkbox" name="acl_edit_maillists" value="true" {acl_edit_maillists}></td> 79 79 <td>{lang_edit_organizations}:</td> 80 <td><input type="checkbox" name="acl_edit_sectors" value=" 8192" {acl_edit_sectors}></td>80 <td><input type="checkbox" name="acl_edit_sectors" value="true" {acl_edit_sectors}></td> 81 81 </tr> 82 82 <tr bgcolor="{color_font1}" align='right'> 83 83 <td>{lang_delete_users}:</td> 84 <td><input type="checkbox" name="acl_delete_users" value=" 4" {acl_delete_users}></td>84 <td><input type="checkbox" name="acl_delete_users" value="true" {acl_delete_users}></td> 85 85 <td>{lang_delete_groups}:</td> 86 <td><input type="checkbox" name="acl_delete_groups" value=" 64" {acl_delete_groups}></td>86 <td><input type="checkbox" name="acl_delete_groups" value="true" {acl_delete_groups}></td> 87 87 <td>{lang_delete_email_lists}:</td> 88 <td><input type="checkbox" name="acl_delete_maillists" value=" 1024" {acl_delete_maillists}></td>88 <td><input type="checkbox" name="acl_delete_maillists" value="true" {acl_delete_maillists}></td> 89 89 <td>{lang_delete_organizations}:</td> 90 <td><input type="checkbox" name="acl_delete_sectors" value="16384" {acl_delete_sectors}></td> 91 </tr> 92 <tr bgcolor="{color_font2}" align='right'> 93 <td>{lang_rename_users}:</td> 94 <td><input type="checkbox" name="acl_rename_users" value="8388608" {acl_rename_users}></td> 95 <td>{lang_edit_email_attribute_from_the_groups}:</td> 96 <td><input type="checkbox" name="acl_edit_email_groups" value="67108864" {acl_edit_email_groups}></td> 97 <td>{lang_edit_SCL_email_lists}:</td> 98 <td><input type="checkbox" name="acl_edit_scl_email_lists" value="1073741824" {acl_edit_scl_email_lists}></td> 99 </tr> 100 <tr bgcolor="{color_font1}" align='right'> 101 <td>{lang_manipulate_corporative_information}:</td> 102 <td><input type="checkbox" name="acl_manipulate_corporative_information" value="268435456" {acl_manipulate_corporative_information}></td> 90 <td><input type="checkbox" name="acl_delete_sectors" value="true" {acl_delete_sectors}></td> 91 </tr> 92 <tr align='right'> 93 <td bgcolor="{color_font2}">{lang_rename_users}:</td> 94 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_rename_users" value="true" {acl_rename_users}></td> 95 <td bgcolor="{color_font2}">{lang_edit_email_attribute_from_the_groups}:</td> 96 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_email_groups" value="true" {acl_edit_email_groups}></td> 97 <td bgcolor="{color_font2}">{lang_edit_SCL_email_lists}:</td> 98 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_scl_email_lists" value="true" {acl_edit_scl_email_lists}></td> 99 <td> </td> 100 <td> </td> 101 </tr> 102 <tr align='right'> 103 <td bgcolor="{color_font1}" >{lang_manipulate_corporative_information}:</td> 104 <td bgcolor="{color_font1}" ><input type="checkbox" name="acl_manipulate_corporative_information" value="true" {acl_manipulate_corporative_information}></td> 105 <td> </td> 106 <td> </td> 107 <td> </td> 108 <td> </td> 109 <td> </td> 110 <td> </td> 103 111 </tr> 104 112 <tr bgcolor="{color_font2}" align='right'> 105 113 <td>{lang_view_user}:</td> 106 <td><input type="checkbox" name="acl_view_users" value=" 33554432" {acl_view_users}></td>114 <td><input type="checkbox" name="acl_view_users" value="true" {acl_view_users}></td> 107 115 <td>{lang_add_shared_accounts}:</td> 108 <td><input type="checkbox" name="acl_add_shared_accounts" value=" 34359738368" {acl_add_shared_accounts}></td>116 <td><input type="checkbox" name="acl_add_shared_accounts" value="true" {acl_add_shared_accounts}></td> 109 117 <td>{lang_add_institutional_accounts}:</td> 110 <td><input type="checkbox" name="acl_add_institutional_accounts" value="4294967296" {acl_add_institutional_accounts}></td> 111 </tr> 112 <tr bgcolor="{color_font1}" align='right'> 113 <td>{lang_edit_users_picture}:</td> 114 <td><input type="checkbox" name="acl_edit_users_picture" value="536870912" {acl_edit_users_picture}></td> 115 <td>{lang_edit_shared_accounts}:</td> 116 <td><input type="checkbox" name="acl_edit_shared_accounts" value="68719476736" {acl_edit_shared_accounts}></td> 117 <td>{lang_edit_institutional_accounts}:</td> 118 <td><input type="checkbox" name="acl_edit_institutional_accounts" value="8589934592" {acl_edit_institutional_accounts}></td> 119 120 </tr> 121 <tr bgcolor="{color_font2}" align='right'> 122 <td>{lang_edit_users_phonenumber}:</td> 123 <td><input type="checkbox" name="acl_edit_users_phonenumber" value="2147483648" {acl_edit_users_phonenumber}></td> 124 <td>{lang_delete_shared_accounts}:</td> 125 <td><input type="checkbox" name="acl_delete_shared_accounts" value="137438953472" {acl_delete_shared_accounts}></td> 126 <td>{lang_remove_institutional_accounts}:</td> 127 <td><input type="checkbox" name="acl_remove_institutional_accounts" value="17179869184" {acl_remove_institutional_accounts}></td> 128 </tr> 129 <tr bgcolor="{color_font1}" align='right'> 130 <td>{lang_change_users_password}:</td> 131 <td><input type="checkbox" name="acl_change_users_password" value="128" {acl_change_users_password}></td> 132 <td>{lang_edit_shared_accounts_acl}:</td> 133 <td><input type="checkbox" name="acl_edit_shared_accounts_acl" value="274877906944" {acl_edit_shared_accounts_acl}></td> 134 </tr> 135 <tr bgcolor="{color_font2}" align='right'> 136 <td>{lang_change_users_quote}:</td> 137 <td><input type="checkbox" name="acl_change_users_quote" value="262144" {acl_change_users_quote}></td> 138 <td>{lang_edit_shared_accounts_quote}:</td> 139 <td><input type="checkbox" name="acl_edit_shared_accounts_quote" value="549755813888" {acl_edit_shared_accounts_quote}></td> 140 </tr> 141 <tr bgcolor="{color_font1}" align='right'> 142 <td>{lang_set_default_users_password}:</td> 143 <td><input type="checkbox" name="acl_set_user_default_password" value="524288" {acl_set_user_default_password}></td> 144 <td>{lang_empty_shared_accounts_inbox}:</td> 145 <td><input type="checkbox" name="acl_empty_shared_accounts_inbox" value="1099511627776" {acl_empty_shared_accounts_inbox}></td> 146 </tr> 147 <tr bgcolor="{color_font2}" align='right'> 148 <td>{lang_empty_user_inbox}:</td> 149 <td><input type="checkbox" name="acl_empty_user_inbox" value="134217728" {acl_empty_user_inbox}></td> 118 <td><input type="checkbox" name="acl_add_institutional_accounts" value="true" {acl_add_institutional_accounts}></td> 119 <td>{lang_edit_general_maximum_number_of_recipients}:</td> 120 <td><input type="checkbox" name="acl_edit_maximum_number_of_recipients_generally" value="true" {acl_edit_maximum_number_of_recipients_generally}></td> 121 122 </tr> 123 <tr align='right'> 124 <td bgcolor="{color_font1}" >{lang_edit_users_picture}:</td> 125 <td bgcolor="{color_font1}" ><input type="checkbox" name="acl_edit_users_picture" value="true" {acl_edit_users_picture}></td> 126 <td bgcolor="{color_font1}" >{lang_edit_shared_accounts}:</td> 127 <td bgcolor="{color_font1}" ><input type="checkbox" name="acl_edit_shared_accounts" value="true" {acl_edit_shared_accounts}></td> 128 <td bgcolor="{color_font1}" >{lang_edit_institutional_accounts}:</td> 129 <td bgcolor="{color_font1}" ><input type="checkbox" name="acl_edit_institutional_accounts" value="true" {acl_edit_institutional_accounts}></td> 130 <td bgcolor="{color_font1}" >{lang_add_maximum_number_of_recipients_by_user}:</td> 131 <td bgcolor="{color_font1}" ><input type="checkbox" name="acl_add_maximum_number_of_recipients_by_user" value="true" {acl_add_maximum_number_of_recipients_by_user}></td> 132 133 </tr> 134 <tr align='right'> 135 <td bgcolor="{color_font2}">{lang_edit_users_phonenumber}:</td> 136 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_users_phonenumber" value="true" {acl_edit_users_phonenumber}></td> 137 <td bgcolor="{color_font2}">{lang_delete_shared_accounts}:</td> 138 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_delete_shared_accounts" value="true" {acl_delete_shared_accounts}></td> 139 <td bgcolor="{color_font2}">{lang_remove_institutional_accounts}:</td> 140 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_remove_institutional_accounts" value="true" {acl_remove_institutional_accounts}></td> 141 <td bgcolor="{color_font2}">{lang_edit_and_remove_maximum_number_of_recipients_by_user}:</td> 142 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_and_remove_maximum_number_of_recipients_by_user" value="true" {acl_edit_and_remove_maximum_number_of_recipients_by_user}></td> 143 144 </tr> 145 <tr align='right'> 146 <td bgcolor="{color_font1}">{lang_change_users_password}:</td> 147 <td bgcolor="{color_font1}"><input type="checkbox" name="acl_change_users_password" value="true" {acl_change_users_password}></td> 148 <td bgcolor="{color_font1}">{lang_edit_shared_accounts_acl}:</td> 149 <td bgcolor="{color_font1}"><input type="checkbox" name="acl_edit_shared_accounts_acl" value="true" {acl_edit_shared_accounts_acl}></td> 150 <td> </td> 151 <td> </td> 152 <td bgcolor="{color_font1}">{lang_add_maximum_number_of_recipients_by_group}:</td> 153 <td bgcolor="{color_font1}"><input type="checkbox" name="acl_add_maximum_number_of_recipients_by_group" value=true" {acl_add_maximum_number_of_recipients_by_group}></td> 154 155 </tr> 156 <tr align='right'> 157 <td bgcolor="{color_font2}"> {lang_change_users_quote}:</td> 158 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_change_users_quote" value="true" {acl_change_users_quote}></td> 159 <td bgcolor="{color_font2}">{lang_edit_shared_accounts_quote}:</td> 160 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_shared_accounts_quote" value="true" {acl_edit_shared_accounts_quote}></td> 161 <td bgcolor="{color_font2}">{lang_active_blocking_sending_email_to_shared_accounts}:</td> 162 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_active_blocking_sending_email_to_shared_accounts" value="true" {acl_active_blocking_sending_email_to_shared_accounts}</td> 163 <td bgcolor="{color_font2}">{lang_edit_and_remove_maximum_number_of_recipients_by_group}:</td> 164 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_and_remove_maximum_number_of_recipients_by_group" value="true" {acl_edit_and_remove_maximum_number_of_recipients_by_group}</td> 165 </tr> 166 <tr align='right'> 167 <td bgcolor="{color_font1}">{lang_set_default_users_password}:</td> 168 <td bgcolor="{color_font1}"><input type="checkbox" name="acl_set_user_default_password" value="true" {acl_set_user_default_password}></td> 169 <td bgcolor="{color_font1}">{lang_empty_shared_accounts_inbox}:</td> 170 <td bgcolor="{color_font1}"><input type="checkbox" name="acl_empty_shared_accounts_inbox" value="true" {acl_empty_shared_accounts_inbox}></td> 171 <td bgcolor="{color_font1}">{lang_add_blocking_sending_email_to_shared_accounts_exception}:</td> 172 <td bgcolor="{color_font1}"><input type="checkbox" name="acl_add_blocking_sending_email_to_shared_accounts_exception" value="true" {acl_add_blocking_sending_email_to_shared_accounts_exception}</td> 173 <td> </td> 174 <td> </td> 175 </tr> 176 <tr align='right'> 177 <td bgcolor="{color_font2}">{lang_empty_user_inbox}:</td> 178 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_empty_user_inbox" value="true" {acl_empty_user_inbox}></td> 179 <td> </td> 180 <td> </td> 181 <td bgcolor="{color_font2}">{lang_edit_and_remove_blocking_sending_email_to_shared_accounts_exception}:</td> 182 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_and_remove_blocking_sending_email_to_shared_accounts_exception" value="true" {acl_edit_and_remove_blocking_sending_email_to_shared_accounts_exception}</td> 183 <td> </td> 184 <td> </td> 150 185 </tr> 151 186 … … 153 188 <tr bgcolor="{color_font1}" align='right'> 154 189 <td style="{display_samba_suport}">{lang_edit_SAMBA_users_attributes}:</td> 155 <td style="{display_samba_suport}"><input type="checkbox" name="acl_edit_sambausers_attributes" value=" 32768" {acl_edit_sambausers_attributes}></td>190 <td style="{display_samba_suport}"><input type="checkbox" name="acl_edit_sambausers_attributes" value="true" {acl_edit_sambausers_attributes}></td> 156 191 </tr> 157 192 <tr bgcolor="{color_font2}" align='right'> 158 193 <td style="{display_samba_suport}">{lang_edit_SAMBA_domains}:</td> 159 <td style="{display_samba_suport}"><input type="checkbox" name="acl_edit_sambadomains" value=" 16777216" {acl_edit_sambadomains}></td>194 <td style="{display_samba_suport}"><input type="checkbox" name="acl_edit_sambadomains" value="true" {acl_edit_sambadomains}></td> 160 195 </tr> 161 196 <tr><td> </td></tr> 162 197 198 <td> </td> 199 <td> </td> 200 <td bgcolor="{color_font2}" align='right'>{lang_add_messages_size_rule}:</td> 201 <td bgcolor="{color_font2}" align='right'><input type="checkbox" name="acl_add_messages_size_rule" value="true" {acl_add_messages_size_rule}</td> 202 163 203 <tr bgcolor="{color_font2}" align='right'> 164 204 <td>{lang_show_sessions}:</td> 165 <td><input type="checkbox" name="acl_view_global_sessions" value="65536" {acl_view_global_sessions}></td> 205 <td><input type="checkbox" name="acl_view_global_sessions" value="true" {acl_view_global_sessions}></td> 206 207 <td bgcolor="{color_font2}">{lang_edit_messages_size_rule}:</td> 208 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_messages_size_rule" value="true" {acl_edit_messages_size_rule}</td> 209 166 210 <td style="{display_samba_suport}">{lang_create_computers}:</td> 167 <td style="{display_samba_suport}"><input type="checkbox" name="acl_create_computers" value=" 1048576" {acl_create_computers}></td>211 <td style="{display_samba_suport}"><input type="checkbox" name="acl_create_computers" value="true" {acl_create_computers}></td> 168 212 </tr> 169 213 <tr bgcolor="{color_font1}" align='right'> 170 214 <td>{lang_view_logs}:</td> 171 <td><input type="checkbox" name="acl_view_logs" value="131072" {acl_view_logs}></td> 215 <td><input type="checkbox" name="acl_view_logs" value="true" {acl_view_logs}></td> 216 217 <td bgcolor="{color_font2}">{lang_remove_messages_size_rule}:</td> 218 <td bgcolor="{color_font2}"><input type="checkbox" name="acl_remove_messages_size_rule" value="true" {acl_remove_messages_size_rule}</td> 219 172 220 <td style="{display_samba_suport}">{lang_edit_computers}:</td> 173 <td style="{display_samba_suport}"><input type="checkbox" name="acl_edit_computers" value=" 2097152" {acl_edit_computers}></td>221 <td style="{display_samba_suport}"><input type="checkbox" name="acl_edit_computers" value="true" {acl_edit_computers}></td> 174 222 </tr> 175 223 <tr bgcolor="{color_font2}" align='right'> … … 177 225 <td> </td> 178 226 <td style="{display_samba_suport}">{lang_delete_computers}:</td> 179 <td style="{display_samba_suport}"><input type="checkbox" name="acl_delete_computers" value="4194304" {acl_delete_computers}></td> 180 </tr> 181 </table></td></tr> 227 <td style="{display_samba_suport}"><input type="checkbox" name="acl_delete_computers" value="true" {acl_delete_computers}></td> 228 </tr> 229 </table></td> 230 231 </tr> 182 232 <!-- END ACL CONTROL --> 183 233 … … 208 258 {error_messages} 209 259 <!-- END form --> 260 -
trunk/expressoAdmin1_2/templates/default/sectors.tpl
r1516 r5133 17 17 </table> 18 18 19 <table border="0" width=" 70%" align="center">19 <table border="0" width="65%" align="center"> 20 20 <tr bgcolor="{th_bg}"> 21 21 <td>{lang_name}</td> 22 22 <td>{lang_inactives}</td> 23 <td>{lang_ver_cota}</td>24 23 <td>{lang_add_sub_sectors}</td> 25 24 <td>{lang_edit}</td> … … 34 33 <td>{sector_name}</td> 35 34 <td width="13%">{inactives_link}</td> 36 <td width="13%">{cota_link}</td> 37 <td width="12%">{add_link}</td> 35 <td width="25%">{add_link}</td> 38 36 <td width="5%">{edit_link}</td> 39 37 <td width="5%">{delete_link}</td> -
trunk/expressoAdmin1_2/templates/default/sectors_form.tpl
r3887 r5133 25 25 <tr> 26 26 <td> 27 {lang_Associated_domain}:28 </td>29 <td>30 <input type="text" {disable} autocomplete="off" name="associated_domain" value={associated_domain}>31 </td>32 </tr>33 {open_comment_cotas}34 <tr>35 <td>36 {lang_users_quota}:37 </td>38 <td>39 <input type="text" autocomplete="off" name="users_quota" value={users_quota}>40 </td>41 </tr>42 43 <tr>44 <td>45 {lang_disk_quota}:46 </td>47 <td>48 <input type="text" autocomplete="off" name="disk_quota" value={disk_quota}>49 </td>50 </tr>51 <tr>52 <td>53 {lang_file_manager_quota}:54 </td>55 <td>56 <input type="text" autocomplete="off" name="file_manager_quota" value={file_manager_quota}>57 </td>58 </tr>59 {close_comment_cotas}60 <tr>61 <td>62 27 {lang_do_not_show_this_sector}: 63 28 </td> -
trunk/expressoAdmin1_2/templates/default/shared_accounts.tpl
r1913 r5133 15 15 <td align="right" "left" width="25%"> 16 16 {lang_to_search}: 17 <input type="text" onKeyUp="javascript:get_shared_accounts_timeOut(this.value )" id="ea_shared_account_search" autocomplete="off" value="{query}">17 <input type="text" onKeyUp="javascript:get_shared_accounts_timeOut(this.value, event)" id="ea_shared_account_search" autocomplete="off" value="{query}"> 18 18 </td> 19 19 </tr> … … 25 25 <tr bgcolor="{th_bg}"> 26 26 <td width="30%">{lang_full_name}</td> 27 <td width="30%">{lang_display_name}</td> 27 28 <td width="30%">{lang_mail}</td> 28 29 <td width="5%" align="center">{lang_remove}</td> -
trunk/expressoAdmin1_2/templates/default/shared_accounts_modal.tpl
r3356 r5133 1 1 <input type="hidden" id="{modal_id}_title" value="{lang_creation_of_shared_accounts}"> 2 <input type="hidden" id="{modal_id}_height" value="5 03">2 <input type="hidden" id="{modal_id}_height" value="550"> 3 3 <input type="hidden" id="{modal_id}_width" value="930"> 4 4 <input type="hidden" id="{modal_id}_close_action" value="close_lightbox()"> … … 6 6 <input type="hidden" id="{modal_id}_save_action" value="save_shared_accounts()"> 7 7 <input type="hidden" id="{modal_id}_onload_action" value="set_onload({manager_context})"> 8 <input type="hidden" id="{modal_id}_alternate_mails" value="{alternate_mails}"> 8 9 <form enctype="multipart/form-data" name="shared_accounts_form_template" method="post"> 9 10 <input type="hidden" id="anchor" name="anchor"> 10 11 <input type="hidden" id="owners_acls" name="owners_acl" value=""> 12 <input type="hidden" id="owners_calendar_acls" name="owners_calendar_acl" value=""> 13 <input type="hidden" id="uidnumber" name="uidnumber" value=""> 11 14 <table border="0" cellspacing="4"> 12 15 <tr> 13 16 <td width="35%" bgcolor="#DDDDDD"> 14 < pstyle="line-height: 220%">{lang_search_organization}:17 <div style="line-height: 220%">{lang_search_organization}: 15 18 <input type="text" id="organization_search" autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org');" onBlur="javascript:sinc_combos_org(context.value);"><br> 16 19 … … 19 22 20 23 <input type="hidden" id="associated_domain" name="associated_domain"> 21 22 24 {lang_full_name}: 23 25 <input id="cn" name="cn" size="36" autocomplete="off"><br> 24 25 26 {lang_mail}: 26 27 <input id="mail" name="mail" onKeyUp='javascript:emailSugestion_expressoadmin2(this)' size="45" autocomplete="off"><br> 27 28 <input type="button" value="{lang_add_alternative_mail}" onclick="addTextbox( 'mailalternateaddress[]', 'mailalternateaddress' );"> 29 <div style="overflow: auto; height: 40px; line-height: 100%;" id="mailalternateaddress"> 30 <!-- <input id="mailalternateaddress" name="mailalternateaddress[]" size="45" autocomplete="off"><span onclick="appendClone('mailalternateaddress');" style="cursor: pointer;"> +</span> --> 31 </div> 28 32 {lang_description}: 29 33 <input id="desc" name="desc" size="42" autocomplete="off"><br> … … 34 38 <div id='display_empty_inbox' name='display_empty_inbox' style="display:none"><input type='button' {disabled} {disabled_empty_inbox} value='{lang_empty_inbox}' onclick="javascript:empty_inbox(anchor.value);"></div> 35 39 36 {lang_is_account_active}: <input type="checkbox" id="accountStatus" name="accountStatus" checked>< br>37 {lang_omit_account_from_the_catalog}: <input type="checkbox" id="phpgwAccountVisible" name="phpgwAccountVisible"></ p>40 {lang_is_account_active}: <input type="checkbox" id="accountStatus" name="accountStatus" checked><!--<br>--> 41 {lang_omit_account_from_the_catalog}: <input type="checkbox" id="phpgwAccountVisible" name="phpgwAccountVisible"></div> 38 42 39 43 <b>{lang_owners}:</b><br> 40 44 <select style="width:350px; height:170px" id="ea_select_owners" onchange="sharemailbox.getaclfromuser(this.value);" name="owners[]" multiple size="13"></select> 41 <span style="position:absolute;top:240;left:410"><table><tbody><tr><td colspan="2"><b>{lang_Rights}:</b></td></tr> 42 <tr><td>{lang_read}:</td><td><input id="em_input_readAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_others_users_will_can_read_your_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 43 <tr><td>{lang_exclusion}:</td><td><input id="em_input_deleteAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_others_users_will_can_delete/move_your_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 44 <tr><td>{lang_creation}:</td><td><input id="em_input_writeAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_others_users_will_can_create/add_your_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 45 <tr><td>{lang_send}:</td><td><input disabled="disabled" id="em_input_sendAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_others_users_will_can_send_messages_as_you}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 46 <tr><td>{lang_save}:</td><td><input disabled="disabled" id="em_input_saveAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_other_users_will_save_the_sent_messages_as_you_in_this_mailbox}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 47 <tr><td>{lang_folder}:</td><td><input id="em_input_folderAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_allow_create_or_delete_folders_on_this_mailbox}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 48 </span></tbody></table> 45 49 46 </td> 50 47 51 <td width="15%" valign="middle" align="center" bgcolor="#DDDDDD"> 48 <td width="15%" valign="bottom" align="center" bgcolor="#DDDDDD" style="padding-bottom: 5px;"> 49 <table align="center"> 50 <tbody> 51 <tr> 52 <td colspan="2" width="125"><b>{lang_calendar}:</b></td> 53 </tr> 54 <tr> 55 <td>{lang_read}</td><td><input type="checkbox" name="checkAttr" id ="em_input_readCalendar" onclick="return sharemailbox.setCalendaraclfromuser();" /><img title="{lang_this_user_will_can_read_events_at_the_mailbox_calendar}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td> 56 </tr> 57 <tr > 58 <td>{lang_add}</td><td><input type="checkbox" name="checkAttr" id ="em_input_writeCalendar" onclick="return sharemailbox.setCalendaraclfromuser();" /><img title="{lang_this_user_will_can_create_events_at_the_mailbox_calendar}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td> 59 </tr> 60 <tr> 61 <td>{lang_edit}</td><td><input type="checkbox" name="checkAttr" id ="em_input_editCalendar" onclick="return sharemailbox.setCalendaraclfromuser();" /><img title="{lang_this_user_will_can_edit_events_at_the_mailbox_calendar}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td> 62 </tr> 63 <tr> 64 <td>{lang_exclusion}</td><td><input type="checkbox" name="checkAttr" id ="em_input_deleteCalendar" onclick="return sharemailbox.setCalendaraclfromuser();" /><img title="{lang_this_user_will_can_delete_events_at_the_mailbox_calendar}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td> 65 </tr> 66 <tr > 67 <td>{lang_restrict}</td><td><input type="checkbox" name="checkAttr" id ="em_input_restrictCalendar" onclick="return sharemailbox.setCalendaraclfromuser();" /><img title="{lang_this_user_will_can_read_restrict_events_at_the_mailbox_calendar}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td> 68 </tr> 69 </tbody> 70 </table> 71 <br /> 72 <table align="ce"><tbody><tr><td colspan="2" width="125"><b>{lang_Rights}:</b></td></tr> 73 <tr><td>{lang_read}:</td><td><input id="em_input_readAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_this_user_will_can_read_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 74 <tr><td>{lang_exclusion}:</td><td><input id="em_input_deleteAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_this_user_will_can_delete/move_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 75 <tr><td>{lang_creation}:</td><td><input id="em_input_writeAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_this_user_will_can_create/add_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 76 <tr><td>{lang_send}:</td><td><input disabled="disabled" id="em_input_sendAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_this_user_will_can_send_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 77 <tr><td>{lang_save}:</td><td><input disabled="disabled" id="em_input_saveAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_this_user_will_save_the_sent_messages_on_this_mailbox}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 78 <tr><td>{lang_folder}:</td><td><input id="em_input_folderAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_allow_create_or_delete_folders_on_this_mailbox}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 79 </tbody></table> 80 <br /> 52 81 <button id="bt_add_user" type="button" onClick="javascript:add_user();"><img src="expressoAdmin1_2/templates/default/images/add.png" style="vertical-align: middle;"> {lang_add_owner}</button> 53 <br ><br>54 <button id="bt_remove_user" type="button" onClick="javascript:remove_user();"><img src="expressoAdmin1_2/templates/default/images/rem.png" style="vertical-align: middle;"> {lang_remove_owner}</button> 82 <br /><br /> 83 <button id="bt_remove_user" type="button" onClick="javascript:remove_user();"><img src="expressoAdmin1_2/templates/default/images/rem.png" style="vertical-align: middle;"> {lang_remove_owner}</button><br><br> 55 84 </td> 56 85 57 86 <td width="25%" valign="bottom" bgcolor="#DDDDDD"> 58 87 {lang_search_organization}:<br> 59 <input type="text" id="organization_search" autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_available_users');" onBlur="javascript:get_available_users(org_context.value);">88 <input type="text" id="organization_search" autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_available_users');" > 60 89 <br> 61 90 62 91 {lang_organizations}:<br> 63 <select name="org_context" id="ea_combo_org_available_users" onchange="javascript:get_available_users(this.value);">{all_organizations}</select>92 <select name="org_context" id="ea_combo_org_available_users" >{all_organizations}</select> 64 93 <br> 65 94 <!-- 66 <input type="checkbox" name="ea_check_allUsers" id="ea_check_allUsers" onclick="javascript:get_available_users(org_context.value, this.checked);">{lang_all_users}.95 <input type="checkbox" name="ea_check_allUsers" id="ea_check_allUsers">{lang_all_users}. 67 96 --> 68 97 <br><br> 69 98 70 99 {lang_search_user}:<br> 71 <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this )"><br>100 <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this, event)"><br> 72 101 73 102 <font color="red"><span id="ea_span_searching"> </span></font> 74 103 <br> 75 104 <b>{lang_users}:</b><br> 76 <select id="ea_select_available_users" style="width:350px; height:160px" multiple size="13"></select> 105 <!-- <div style="overflow: scroll; width:350px; height:160px" > --> 106 <select id="ea_select_available_users" style="overflow: scroll; width:350px; height:160px" multiple size="13" ></select> 107 <!-- </div> --> 77 108 </td> 78 109 </tr>
Note: See TracChangeset
for help on using the changeset viewer.