Patch from Klaus Leithoff <kl-at-stylite.de> to better deal with a big number of groups in edit accounts

This commit is contained in:
Ralf Becker 2006-12-15 10:41:33 +00:00
parent 22508fffc1
commit 176554400a

View File

@ -74,7 +74,7 @@
'start' => 'start with', 'start' => 'start with',
'exact' => 'exact', 'exact' => 'exact',
); );
if ($GLOBALS['egw']->acl->check('group_access',1,'admin')) if ($GLOBALS['egw']->acl->check('group_access',1,'admin'))
{ {
$GLOBALS['egw']->redirect($GLOBALS['egw']->link('/admin/index.php')); $GLOBALS['egw']->redirect($GLOBALS['egw']->link('/admin/index.php'));
@ -88,7 +88,7 @@
//if(eregi('^[a-z_0-9]+$',$_REQUEST['query'])) //if(eregi('^[a-z_0-9]+$',$_REQUEST['query']))
$GLOBALS['query'] = $_REQUEST['query']; $GLOBALS['query'] = $_REQUEST['query'];
} }
if(isset($_POST['start'])) if(isset($_POST['start']))
{ {
$start = (int)$_POST['start']; $start = (int)$_POST['start'];
@ -117,7 +117,7 @@
$sort = 'ASC'; $sort = 'ASC';
break; break;
} }
unset($GLOBALS['egw_info']['flags']['noheader']); unset($GLOBALS['egw_info']['flags']['noheader']);
unset($GLOBALS['egw_info']['flags']['nonavbar']); unset($GLOBALS['egw_info']['flags']['nonavbar']);
if(!@is_object($GLOBALS['egw']->js)) if(!@is_object($GLOBALS['egw']->js))
@ -226,7 +226,7 @@
} }
} }
$link_data += array( $link_data += array(
'order' => $order, 'order' => $order,
'sort' => $sort, 'sort' => $sort,
@ -259,7 +259,7 @@
'class' => $_REQUEST['query_type'] != 'start' || !in_array($GLOBALS['query'],$letters) ? 'letter_box_active' : 'letter_box', 'class' => $_REQUEST['query_type'] != 'start' || !in_array($GLOBALS['query'],$letters) ? 'letter_box_active' : 'letter_box',
)); ));
$p->fp('letter_search_cells','letter_search',True); $p->fp('letter_search_cells','letter_search',True);
$var = Array( $var = Array(
'new_action' => $GLOBALS['egw']->link('/index.php','menuaction=admin.uiaccounts.add_group'), 'new_action' => $GLOBALS['egw']->link('/index.php','menuaction=admin.uiaccounts.add_group'),
'search_action' => $GLOBALS['egw']->link('/index.php','menuaction=admin.uiaccounts.list_groups') 'search_action' => $GLOBALS['egw']->link('/index.php','menuaction=admin.uiaccounts.list_groups')
@ -606,7 +606,7 @@
$this->list_users(); $this->list_users();
return False; return False;
} }
unset($GLOBALS['egw_info']['flags']['noheader']); unset($GLOBALS['egw_info']['flags']['noheader']);
unset($GLOBALS['egw_info']['flags']['nonavbar']); unset($GLOBALS['egw_info']['flags']['nonavbar']);
if(!@is_object($GLOBALS['egw']->js)) if(!@is_object($GLOBALS['egw']->js))
@ -660,7 +660,7 @@
'extradata' => 'menuaction=admin.uiaclmanager.list_apps' 'extradata' => 'menuaction=admin.uiaclmanager.list_apps'
); );
} }
} }
@ -679,7 +679,7 @@
$accountid = $account_id; $accountid = $account_id;
settype($account_id,'integer'); settype($account_id,'integer');
$account_id = ($_GET['account_id'] ? $_GET['account_id'] : (int)$accountid); $account_id = ($_GET['account_id'] ? $_GET['account_id'] : (int)$accountid);
// todo // todo
// not needed if i use the same file for new groups too // not needed if i use the same file for new groups too
if (! $account_id) if (! $account_id)
@ -719,11 +719,11 @@
'extradata' => 'menuaction=admin.uiaclmanager.list_apps' 'extradata' => 'menuaction=admin.uiaclmanager.list_apps'
); );
} }
// NDEE210804 // NDEE210804
// added for different way of handling ldap entries inside account manager // added for different way of handling ldap entries inside account manager
// we show this only, if accounts are stored in ldap // we show this only, if accounts are stored in ldap
/* just doublicated EMailAdmin functionality /* just doublicated EMailAdmin functionality
if ($GLOBALS['egw_info']['server']['account_repository'] == "ldap") if ($GLOBALS['egw_info']['server']['account_repository'] == "ldap")
{ {
$GLOBALS['menuData'][] = array( $GLOBALS['menuData'][] = array(
@ -734,8 +734,8 @@
} }
*/ */
//NDEE //NDEE
} }
function edit_user($cd='',$account_id='') function edit_user($cd='',$account_id='')
@ -753,7 +753,7 @@
$accountid = $account_id; $accountid = $account_id;
settype($account_id,'integer'); settype($account_id,'integer');
$account_id = (int)($_GET['account_id'] ? $_GET['account_id'] : $accountid); $account_id = (int)($_GET['account_id'] ? $_GET['account_id'] : $accountid);
// todo // todo
// not needed if i use the same file for new users too // not needed if i use the same file for new users too
if (! $account_id) if (! $account_id)
@ -888,9 +888,9 @@
$availableApps = $GLOBALS['egw_info']['apps']; $availableApps = $GLOBALS['egw_info']['apps'];
@asort($availableApps); @asort($availableApps);
@reset($availableApps); @reset($availableApps);
foreach($availableApps as $app => $data) foreach($availableApps as $app => $data)
{ {
if ($data['enabled'] && $data['status'] != 2) if ($data['enabled'] && $data['status'] != 2)
{ {
$perm_display[$i]['appName'] = $app; $perm_display[$i]['appName'] = $app;
$perm_display[$i]['title'] = $data['title']; $perm_display[$i]['title'] = $data['title'];
@ -950,7 +950,7 @@
$accountid = $account_id; $accountid = $account_id;
settype($account_id,'integer'); settype($account_id,'integer');
$account_id = (int)($_GET['account_id'] ? $_GET['account_id'] : $accountid); $account_id = (int)($_GET['account_id'] ? $_GET['account_id'] : $accountid);
// todo // todo
// not needed if i use the same file for new groups too // not needed if i use the same file for new groups too
if (! $account_id) if (! $account_id)
@ -985,7 +985,7 @@
$p->set_file(Array('edit' => 'group_form.tpl')); $p->set_file(Array('edit' => 'group_form.tpl'));
$p->set_block('edit','select'); $p->set_block('edit','select');
$p->set_block('edit','popwin'); $p->set_block('edit','popwin');
//fix from Maanus 280105 //fix from Maanus 280105
$accounts =& CreateObject('phpgwapi.accounts',$group_info['account_id'],'g'); $accounts =& CreateObject('phpgwapi.accounts',$group_info['account_id'],'g');
if (!is_object($GLOBALS['egw']->uiaccountsel)) if (!is_object($GLOBALS['egw']->uiaccountsel))
@ -1047,7 +1047,7 @@
$perm_html = '<td width="35%">'.lang('Application').'</td><td width="15%">'.lang('enabled').' / '.lang('ACL').'</td>'; $perm_html = '<td width="35%">'.lang('Application').'</td><td width="15%">'.lang('enabled').' / '.lang('ACL').'</td>';
$perm_html = '<tr class="th">'. $perm_html = '<tr class="th">'.
$perm_html.$perm_html."</tr>\n"; $perm_html.$perm_html."</tr>\n";
$tr_color = $GLOBALS['egw_info']['theme']['row_off']; $tr_color = $GLOBALS['egw_info']['theme']['row_off'];
for ($i=0;$i < count($perm_display);$i++) for ($i=0;$i < count($perm_display);$i++)
{ {
@ -1087,7 +1087,7 @@
function create_edit_user($_account_id,$_userData='',$_errors='') function create_edit_user($_account_id,$_userData='',$_errors='')
{ {
$GLOBALS['egw_info']['flags']['include_xajax'] = true; $GLOBALS['egw_info']['flags']['include_xajax'] = true;
$jscal =& CreateObject('phpgwapi.jscalendar'); $jscal =& CreateObject('phpgwapi.jscalendar');
unset($GLOBALS['egw_info']['flags']['noheader']); unset($GLOBALS['egw_info']['flags']['noheader']);
@ -1097,7 +1097,7 @@
$GLOBALS['egw']->js =& CreateObject('phpgwapi.javascript'); $GLOBALS['egw']->js =& CreateObject('phpgwapi.javascript');
} }
$GLOBALS['egw']->js->validate_file('jscode','openwindow','admin'); $GLOBALS['egw']->js->validate_file('jscode','openwindow','admin');
$GLOBALS['egw']->common->egw_header(); $GLOBALS['egw']->common->egw_header();
$t =& CreateObject('phpgwapi.Template',EGW_APP_TPL); $t =& CreateObject('phpgwapi.Template',EGW_APP_TPL);
@ -1116,9 +1116,9 @@
$t->set_block('account','form_buttons_','form_buttons_'); $t->set_block('account','form_buttons_','form_buttons_');
$t->set_block('account','link_row','link_row'); $t->set_block('account','link_row','link_row');
$theme = $GLOBALS['egw_info']['user']['preferences']['common']['theme']; $theme = $GLOBALS['egw_info']['user']['preferences']['common']['theme'];
$t->set_var('icon_create_edit', '<img src="'. $GLOBALS['egw_info']['server']['webserver_url'] .'/admin/templates/'.$theme.'/images/useradm.gif">'); $t->set_var('icon_create_edit', '<img src="'. $GLOBALS['egw_info']['server']['webserver_url'] .'/admin/templates/'.$theme.'/images/useradm.gif">');
//print_debug('Type : '.gettype($_userData).'<br>_userData(size) = "'.$_userData.'"('.strlen($_userData).')'); //print_debug('Type : '.gettype($_userData).'<br>_userData(size) = "'.$_userData.'"('.strlen($_userData).')');
if (is_array($_userData)) if (is_array($_userData))
{ {
@ -1275,6 +1275,27 @@
$t->set_var($var); $t->set_var($var);
$t->parse('password_fields','form_passwordinfo',True); $t->parse('password_fields','form_passwordinfo',True);
// prepare the allGroups array for use with the checkbox-multiselect use
$allGroupsBuff=array();
while (list($key,$value) = each($allGroups))
{
$allGroupsBuff[$value['account_lid']]=$value['account_id'];
}
// sort alphabetical
ksort($allGroupsBuff);
$allGroupsSorted=array();
while (list($key,$value) = each($allGroupsBuff))
{
$allGroupsSorted[$value]=$key;
}
//prepare the userGroups Array for use with the checkbox-multiselect use -> selarray
$selarray=array();
while (list($key,$value) = each($userGroups))
{
array_push($selarray,$value['account_id']);
}
$t->set_var('groups_select','<div id="groupselector">' .$GLOBALS['egw']->html->checkbox_multiselect('account_groups[]',$selarray,$allGroupsSorted,true,'',min(3+count($allGroupsSorted),10),' style="width: 300px; text-align:left" ').'</div>');
/* KL 20061211 removed
$groups_select = ''; $groups_select = '';
$primary_group_select = ''; $primary_group_select = '';
reset($allGroups); reset($allGroups);
@ -1284,9 +1305,9 @@
$groups_select .= '<input type="checkbox" name="account_groups[]" value="' . $value['account_id'] . '"'; $groups_select .= '<input type="checkbox" name="account_groups[]" value="' . $value['account_id'] . '"';
for ($i=0; $i<count($userGroups); $i++) for ($i=0; $i<count($userGroups); $i++)
{ {
/* print // print
"Los1:".$userData["account_id"].$userGroups[$i]['account_id']." : //"Los1:".$userData["account_id"].$userGroups[$i]['account_id']." :
".$value['account_id']."<br>"; */ //".$value['account_id']."<br>";
if (@$userGroups[$i]['account_id'] == $value['account_id']) if (@$userGroups[$i]['account_id'] == $value['account_id'])
{ {
$groups_select .= ' checked'; $groups_select .= ' checked';
@ -1294,7 +1315,7 @@
} }
$groups_select .= '>' . $value['account_lid'] . "<br/>\n"; $groups_select .= '>' . $value['account_lid'] . "<br/>\n";
} }
*/
if (!$userData['account_primary_group']) if (!$userData['account_primary_group'])
{ {
@ -1330,7 +1351,7 @@
} }
$checked = (@$userData['account_permissions'][$app] || @$db_perms[$app]) && $_account_id ? ' checked="1"' : ''; $checked = (@$userData['account_permissions'][$app] || @$db_perms[$app]) && $_account_id ? ' checked="1"' : '';
$part[$i&1] = sprintf('<td>%s</td><td><input type="checkbox" name="account_permissions[%s]" value="True"%s>', $part[$i&1] = sprintf('<td>%s</td><td><input type="checkbox" name="account_permissions[%s]" value="True"%s>',
$data['title'],$app,$checked). $data['title'],$app,$checked).
($this->apps_with_acl[$app] && $_account_id?'<a href="'.$GLOBALS['egw']->link('/index.php','menuaction=preferences.uiaclprefs.index&acl_app='.$app.'&owner='.$_account_id) ($this->apps_with_acl[$app] && $_account_id?'<a href="'.$GLOBALS['egw']->link('/index.php','menuaction=preferences.uiaclprefs.index&acl_app='.$app.'&owner='.$_account_id)
. '"><img src="'.$GLOBALS['egw']->common->image('phpgwapi','edit').'" border="0" hspace="3" align="absmiddle" title="' . '"><img src="'.$GLOBALS['egw']->common->image('phpgwapi','edit').'" border="0" hspace="3" align="absmiddle" title="'
. lang('Grant Access').'"></a>':'&nbsp;').'</td>'; . lang('Grant Access').'"></a>':'&nbsp;').'</td>';
@ -1348,12 +1369,13 @@
} }
$var = Array( $var = Array(
'groups_select' // KL 20061211 groups_select is already set
=> '<div id="groupselector">' . //'groups_select'
"\n".$groups_select. '</div>' . "\n", //=> '<div id="groupselector">' .
//"\n".$groups_select. '</div>' . "\n",
'primary_group_select' 'primary_group_select'
=> '<select => '<select
name="account_primary_group">'."\n".$primary_group_select.'</ name="account_primary_group">'."\n".$primary_group_select.'</
select>'."\n", select>'."\n",
'permissions_list' 'permissions_list'
=> $appRightsOutput, => $appRightsOutput,
@ -1365,9 +1387,9 @@
$var = Array( $var = Array(
'groups_select' 'groups_select'
=> '<select name="account_groups[]" multiple>'."\n".$groups_select.'</select>'."\n", => '<select name="account_groups[]" multiple>'."\n".$groups_select.'</select>'."\n",
'primary_group_select' 'primary_group_select'
=> '<select name="account_primary_group">'."\n".$primary_group_select.'</select>'."\n", => '<select name="account_primary_group">'."\n".$primary_group_select.'</select>'."\n",
'permissions_list' 'permissions_list'
=> $appRightsOutput, => $appRightsOutput,
'lang_app' => lang('application'), 'lang_app' => lang('application'),
'lang_acl' => lang('enabled').' / '.lang('ACL'), 'lang_acl' => lang('enabled').' / '.lang('ACL'),
@ -1400,7 +1422,7 @@
} }
return $response->getXML(); return $response->getXML();
} }
function edit_group_managers($group_info,$_errors='') function edit_group_managers($group_info,$_errors='')
{ {
if ($GLOBALS['egw']->acl->check('group_access',16,'admin')) if ($GLOBALS['egw']->acl->check('group_access',16,'admin'))
@ -1459,4 +1481,4 @@
$t->pfp('out','form'); $t->pfp('out','form');
} }
} }
?> ?>