old user and group admin, incl. lots of old phplib templates

This commit is contained in:
Ralf Becker 2014-03-28 19:18:58 +00:00
parent b71baf7365
commit 9280eca83b
23 changed files with 5 additions and 3097 deletions

View File

@ -60,15 +60,6 @@ class admin_hooks
$file['Site Configuration'] = egw::link('/index.php','menuaction=admin.uiconfig.index&appname=admin'); $file['Site Configuration'] = egw::link('/index.php','menuaction=admin.uiconfig.index&appname=admin');
} }
if (! $GLOBALS['egw']->acl->check('account_access',1,'admin'))
{
$file['User Accounts'] = array(
'id' => '/accounts',
'icon' => common::image('addressbook', 'accounts'),
'link' => egw::link('/index.php','menuaction=admin.uiaccounts.list_users'),
);
}
if (! $GLOBALS['egw']->acl->check('account_access',16,'admin')) if (! $GLOBALS['egw']->acl->check('account_access',16,'admin'))
{ {
$file['Bulk password reset'] = egw::link('/index.php','menuaction=admin.admin_passwordreset.index'); $file['Bulk password reset'] = egw::link('/index.php','menuaction=admin.admin_passwordreset.index');

View File

@ -111,13 +111,6 @@ class admin_ui
'add' => array( 'add' => array(
'group' => $group, 'group' => $group,
)+$user_actions['add'], )+$user_actions['add'],
'edit' => array(
'onExecute' => 'javaScript:app.admin.group',
'caption' => 'Edit group',
'enableId' => '^/groups/-\\d+',
'url' => 'menuaction=admin.uiaccounts.edit_group&account_id=$id',
'group' => 2,
),
'acl' => array( 'acl' => array(
'onExecute' => 'javaScript:app.admin.group', 'onExecute' => 'javaScript:app.admin.group',
'caption' => 'Access control', 'caption' => 'Access control',
@ -422,10 +415,6 @@ if ($app == 'felamimail') continue; // disabled fmail for now, as it break whole
$tree['item'][] = self::fix_userdata(array( $tree['item'][] = self::fix_userdata(array(
'text' => $group['account_lid'], 'text' => $group['account_lid'],
'id' => $root.'/'.$group['account_id'], 'id' => $root.'/'.$group['account_id'],
'link' => egw::link('/index.php', array(
'menuaction' => 'admin.uiaccounts.edit_group',
'account_id' => $group['account_id'],
)),
)); ));
} }
} }

View File

@ -1,501 +0,0 @@
<?php
/**************************************************************************\
* eGroupWare - account administration *
* http://www.egroupware.org *
* -------------------------------------------- *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; either version 2 of the License, or (at your *
* option) any later version. *
\**************************************************************************/
/* $Id$ */
class boaccounts
{
var $so;
var $public_functions = array(
'add_group' => True,
'add_user' => True,
'delete_group' => True,
'delete_user' => True,
'edit_group' => True,
'edit_user' => True
);
var $xml_functions = array();
var $soap_functions = array(
'add_user' => array(
'in' => array('int', 'struct'),
'out' => array()
)
);
function delete_group($account_id='')
{
if(!$account_id || $GLOBALS['egw']->acl->check('group_access',32,'admin'))
{
return False;
}
$account_id = (int)$account_id;
// delete all acl (and memberships) of group
$GLOBALS['egw']->acl->delete_account($account_id);
// make this information also available in the hook
$lid = $GLOBALS['egw']->accounts->id2name($account_id);
$GLOBALS['egw']->hooks->process($GLOBALS['hook_values'] = array(
'account_id' => $account_id,
'account_name' => $lid,
'location' => 'deletegroup'
),False,True); // called for every app now, not only enabled ones)
$GLOBALS['egw']->accounts->delete($account_id);
return True;
}
function delete_user($account_id='',$new_owner='')
{
if(!$account_id || $GLOBALS['egw']->acl->check('account_access',32,'admin'))
{
return False;
}
$accountid = (int)$account_id;
$account_id = get_account_id($accountid);
// make this information also available in the hook
$lid = $GLOBALS['egw']->accounts->id2name($account_id);
$GLOBALS['hook_values'] = array(
'account_id' => $account_id,
'account_lid' => $lid,
'new_owner' => (int)$new_owner,
'location' => 'deleteaccount'
);
// first all other apps, then preferences and admin
foreach(array_merge(array_diff(array_keys($GLOBALS['egw_info']['apps']),array('preferences','admin')),array('preferences','admin')) as $app)
{
$GLOBALS['egw']->hooks->single($GLOBALS['hook_values'],$app);
}
return True;
}
function add_group($group_info)
{
if($GLOBALS['egw']->acl->check('group_access',4,'admin'))
{
return False;
}
$errors = $this->validate_group($group_info);
if(count($errors))
{
return $errors;
}
$group =& CreateObject('phpgwapi.accounts',$group_info['account_id'],'g');
$group->acct_type = 'g';
$account_info = array(
'account_type' => 'g',
'account_lid' => $group_info['account_name'],
'account_passwd' => '',
'account_firstname' => $group_info['account_name'],
'account_lastname' => 'Group',
'account_status' => 'A',
'account_expires' => -1,
// 'account_file_space' => $account_file_space_number . "-" . $account_file_space_type,
'account_email' => $group_info['account_email'],
'account_members' => $group_info['account_user']
);
$group_info['account_id'] = $group->create($account_info);
// do the following only if we got an id - the create succeeded
if($group_info['account_id'])
{
$group->set_members($group_info['account_user'],$group_info['account_id']);
$apps =& CreateObject('phpgwapi.applications',$group_info['account_id']);
$apps->update_data(Array());
reset($group_info['account_apps']);
while(list($app,$value) = each($group_info['account_apps']))
{
$apps->add($app);
$new_apps[] = $app;
}
$apps->save_repository();
$GLOBALS['hook_values'] = $group_info;
$GLOBALS['egw']->hooks->process($GLOBALS['hook_values']+array(
'location' => 'addgroup'
),False,True); // called for every app now, not only enabled ones)
return True;
}
return False;
}
function edit_group($group_info)
{
if($GLOBALS['egw']->acl->check('group_access',16,'admin'))
{
return False;
}
$errors = $this->validate_group($group_info);
if(count($errors))
{
return $errors;
}
$group =& CreateObject('phpgwapi.accounts',$group_info['account_id'],'g');
$old_group_info = $group->read_repository();
// Set group apps
$apps =& CreateObject('phpgwapi.applications',$group_info['account_id']);
$apps_before = $apps->read_account_specific();
$apps->update_data(Array());
$new_apps = Array();
if(count($group_info['account_apps']))
{
reset($group_info['account_apps']);
while(list($app,$value) = each($group_info['account_apps']))
{
$apps->add($app);
if(!@$apps_before[$app] || @$apps_before == False)
{
$new_apps[] = $app;
}
}
}
$apps->save_repository();
$group->set_members($group_info['account_user'],$group_info['account_id']);
$GLOBALS['hook_values'] = $group_info;
$GLOBALS['hook_values']['old_name'] = $group->id2name($group_info['account_id']);
// This is down here so we are sure to catch the acl changes
// for LDAP to update the memberuid attribute
$group->data['account_email'] = $group_info['account_email'];
$group->data['account_lid'] = $group_info['account_name'];
$group->save_repository();
$GLOBALS['egw']->hooks->process($GLOBALS['hook_values']+array(
'location' => 'editgroup'
),False,True); // called for every app now, not only enabled ones)
return True;
}
/**
* Process a user edit
*
* @param array $userData
* @param int $required_account_access=16 can be set to 4 for add user
* @return boolean|array with errors or true on success, false on acl failure
*/
function edit_user(&$userData, $required_account_access=16)
{
if($GLOBALS['egw']->acl->check('account_access',$required_account_access,'admin'))
{
return False;
}
//error_log(array2string($userData));
$accountPrefix = '';
if(isset($GLOBALS['egw_info']['server']['account_prefix']))
{
$accountPrefix = $GLOBALS['egw_info']['server']['account_prefix'];
}
if($accountPrefix && strpos($userData['account_lid'], $accountPrefix) !== 0)
{
$userData['account_lid'] = $accountPrefix . $userData['account_lid'];
}
$errors = $this->validate_user($userData);
if(!$errors)
{
$new_user = !$userData['account_id'];
$passwd = $userData['account_passwd'];
$errors = $this->save_user($userData);
$GLOBALS['hook_values'] = $userData + ($new_user ? array(
'new_password' => $passwd,
) : array());
$GLOBALS['egw']->hooks->process($GLOBALS['hook_values']+array(
'location' => $new_user ? 'addaccount' : 'editaccount',
),False,True); // called for every app now, not only enabled ones)
}
//error_log(__METHOD__."(".array2string($userData).") returning ".array2string($errors ? $errors : true));
return $errors ? $errors : true;
}
function validate_group($group_info)
{
$errors = Array();
$group =& CreateObject('phpgwapi.accounts',$group_info['account_id'],'g');
$group->read_repository();
if(!$group_info['account_name'])
{
$errors[] = lang('You must enter a group name.');
}
/* For LDAP */
if(!$group_info['account_user'])
{
$errors[] = lang('You must select at least one group member.');
}
if($group_info['account_name'] != $group->id2name($group_info['account_id']))
{
if($group->exists($group_info['account_name']))
{
$errors[] = lang('Sorry, that group name has already been taken.');
}
}
/*
if(preg_match("/\D/", $account_file_space_number))
{
$errors[] = lang('File space must be an integer');
}
*/
if(count($errors))
{
return $errors;
}
}
/**
* checks if the userdata are valid
*
* @return array with errors or empty array if there are none
*/
function validate_user(&$_userData)
{
$errors = array();
if($GLOBALS['egw_info']['server']['account_repository'] == 'ldap' &&
(!$_userData['account_lastname'] && !$_userData['lastname']))
{
$errors[] = lang('You must enter a lastname');
}
if(!$_userData['account_lid'])
{
$errors[] = lang('You must enter a loginid');
}
if(!in_array($_userData['account_primary_group'],$_userData['account_groups']))
{
$errors[] = lang('The groups must include the primary group');
}
// Check if an account already exists as system user, and if it does deny creation
// (increase the totalerrors counter and the message thereof)
if ($GLOBALS['egw_info']['server']['account_repository'] == 'ldap' &&
!$GLOBALS['egw_info']['server']['ldap_allow_systemusernames'] && !$_userData['account_id'] &&
function_exists('posix_getpwnam') && posix_getpwnam($_userData['account_lid']))
{
$errors[] = lang('There already is a system-user with this name. User\'s should not have the same name as a systemuser');
}
if($_userData['old_loginid'] != $_userData['account_lid'])
{
if($GLOBALS['egw']->accounts->exists($_userData['account_lid']))
{
if($GLOBALS['egw']->accounts->exists($_userData['account_lid']) && $GLOBALS['egw']->accounts->get_type($_userData['account_lid'])=='g')
{
$errors[] = lang('There already is a group with this name. Userid\'s can not have the same name as a groupid');
}
else
{
$errors[] = lang('That loginid has already been taken');
}
}
}
if($_userData['account_passwd'] || $_userData['account_passwd_2'])
{
if($_userData['account_passwd'] != $_userData['account_passwd_2'])
{
$errors[] = lang('The two passwords are not the same');
}
}
if(!count($_userData['account_permissions']) && !count($_userData['account_groups']))
{
$errors[] = lang('You must add at least 1 permission or group to this account');
}
if($_userData['account_expires_month'] || $_userData['account_expires_day'] || $_userData['account_expires_year'] || $_userData['account_expires_never'])
{
if($_userData['account_expires_never'])
{
$_userData['expires'] = -1;
$_userData['account_expires'] = $_userData['expires'];
}
else
{
if(! checkdate($_userData['account_expires_month'],$_userData['account_expires_day'],$_userData['account_expires_year']))
{
$errors[] = lang('You have entered an invalid expiration date');
}
else
{
$_userData['expires'] = mktime(2,0,0,$_userData['account_expires_month'],$_userData['account_expires_day'],$_userData['account_expires_year']);
$_userData['account_expires'] = $_userData['expires'];
}
}
}
else
{
$_userData['expires'] = -1;
$_userData['account_expires'] = $_userData['expires'];
}
/*
$check_account_file_space = explode('-', $_userData['file_space']);
if(preg_match("/\D/", $check_account_file_space[0]))
{
$errors[] = lang('File space must be an integer');
}
*/
return $errors;
}
/**
* stores the userdata
*
* @param array &$_userData "account_id" got set for new accounts
* @return array with error-messages
*/
function save_user(array &$_userData)
{
//error_log(__METHOD__."(".array2string($_userData).")");
$errors = array();
// do NOT save password via accounts::save, as pw policy violation can happen and we cant/dont report that way
$passwd = $_userData['account_passwd'];
$new_account = !$_userData['account_id'];
unset($_userData['account_passwd']);
unset($_userData['account_passwd_2']);
if ($new_account && !$GLOBALS['egw']->accounts->save($_userData))
{
$errors[] = lang('Failed to save user!');
return $errors;
}
if ($passwd)
{
$_userData['account_passwd'] = $passwd;
try {
$auth = new auth();
if ($auth->change_password('', $passwd, $_userData['account_id']))
{
if ($_userData['account_lastpwd_change']==0 || // AD requires to activate account AFTER setting pw
$new_account && $_userData['account_status'] == 'A' && $GLOBALS['egw']->accounts->require_password_for_enable())
{
// change password sets the shadow_timestamp/account_lastpwd_change timestamp
// so we need to reset that to 0 as Admin required the change of password upon next login
$GLOBALS['egw']->accounts->save($_userData);
}
}
else
{
$errors[] = lang('Failed to change password.');
}
}
catch(Exception $e) {
$errors[] = $e->getMessage();
}
}
$GLOBALS['egw']->accounts->set_memberships($_userData['account_groups'],$_userData['account_id']);
if (!$new_account && !$GLOBALS['egw']->accounts->save($_userData))
{
$errors[] = lang('Failed to save user!');
return $errors;
}
if ($_userData['account_lastpwd_change']==0)
{
if (!isset($auth)) $auth =& CreateObject('phpgwapi.auth');
// we call that with NULL for 2nd Parameter as we are doing an admin action.
$auth->setLastPwdChange($_userData['account_id'],NULL, $_userData['account_lastpwd_change']);
}
$apps = new applications((int)$_userData['account_id']);
if($_userData['account_permissions'])
{
foreach($_userData['account_permissions'] as $app => $enabled)
{
if($enabled)
{
$apps->add($app);
}
}
}
$apps->save_repository();
$acl = new acl($_userData['account_id']);
if($_userData['anonymous'])
{
$acl->add_repository('phpgwapi','anonymous',$_userData['account_id'],1);
}
else
{
$acl->delete_repository('phpgwapi','anonymous',$_userData['account_id']);
}
if(!$_userData['changepassword'])
{
$GLOBALS['egw']->acl->add_repository('preferences','nopasswordchange',$_userData['account_id'],1);
}
else
{
$GLOBALS['egw']->acl->delete_repository('preferences','nopasswordchange',$_userData['account_id']);
}
$GLOBALS['egw']->session->delete_cache((int)$_userData['account_id']);
//error_log(__METHOD__."(".array2string($_userData).") returning ".array2string($errors));
return $errors;
}
function load_group_managers($account_id)
{
$temp_user = $GLOBALS['egw']->acl->get_ids_for_location($account_id,EGW_ACL_GROUP_MANAGERS,'phpgw_group');
if(!$temp_user)
{
return Array();
}
else
{
$group_user = $temp_user;
}
$account_user = Array();
while(list($key,$user) = each($group_user))
{
$account_user[$user] = ' selected';
}
@reset($account_user);
return $account_user;
}
function load_group_apps($account_id)
{
$apps =& CreateObject('phpgwapi.applications',(int)$account_id);
$app_list = $apps->read_account_specific();
$account_apps = Array();
while(list($key,$app) = each($app_list))
{
$account_apps[$app['name']] = True;
}
@reset($account_apps);
return $account_apps;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -95,7 +95,7 @@
} }
} }
$this->template->set_var(array( $this->template->set_var(array(
'cancel_action' => $GLOBALS['egw']->link('/index.php','menuaction=admin.uiaccounts.list_users'), 'cancel_action' => $GLOBALS['egw']->link('/admin/index.php'),
'lang_cancel' => lang('Cancel') 'lang_cancel' => lang('Cancel')
)); ));
$this->template->pfp('out','list'); $this->template->pfp('out','list');

View File

@ -1,138 +0,0 @@
<?php
/**************************************************************************\
* eGroupWare - Administration *
* http://www.egroupware.org *
* -------------------------------------------- *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; either version 2 of the License, or (at your *
* option) any later version. *
\**************************************************************************/
/* $Id$ */
class uimenuclass
{
var $t;
var $rowColor = Array();
function uimenuclass()
{
$this->t =& CreateObject('phpgwapi.Template',$GLOBALS['egw']->common->get_tpl_dir('admin'));
$this->t->set_file(array('menurow' => 'menurow.tpl'));
$this->t->set_block('menurow','menu_links','menu_links');
$this->t->set_block('menurow','link_row','link_row');
$this->rowColor[0] = $GLOBALS['egw_info']['theme']['row_on'];
$this->rowColor[1] = $GLOBALS['egw_info']['theme']['row_off'];
}
function section_item($pref_link='',$pref_text='', $class='',$options='')
{
$this->t->set_var('row_link',$pref_link);
$this->t->set_var('row_text',$pref_text);
$this->t->set_var('class',$class);
$this->t->set_var('row_options',$options);
$this->t->parse('all_rows','link_row',True);
}
// $file must be in the following format:
// $file = array(
// 'Login History' => array('/index.php','menuaction=admin.uiaccess_history.list')
// );
// This allows extra data to be sent along
function display_section($_menuData, $_account_id)
{
$i=0;
// reset the value of all_rows
$this->t->set_var('all_rows','');
while(list($key,$value) = each($_menuData))
{
if (!empty($value['extradata']))
{
$link = egw::link($value['url'],'account_id=' . $_account_id . '&' . $value['extradata']);
}
else
{
$link = egw::link($value['url'],'account_id=' . get_var('account_id',array('GET','POST')));
}
$this->section_item($link,lang($value['description']),($i%2) ? "row_on": "row_off",$value['options']);
$i++;
}
if(strpos($_menuData[0]['extradata'],'user'))
{
$destination = 'users';
}
else
{
$destination = 'groups';
}
$this->t->set_var('link_done',$GLOBALS['egw']->link('/index.php','menuaction=admin.uiaccounts.list_'.$destination));
$this->t->set_var('lang_done',lang('Back'));
$this->t->set_var('row_on',$this->rowColor[0]);
$this->t->parse('out','menu_links');
return $this->t->get('out','menu_links');
}
// create the html code for the menu
function createHTMLCode($_hookname, $_account_id=null)
{
$hook = array('location' => $_hookname);
if (!$_account_id) $_account_id = get_var('account_id',array('GET','POST'));
if ($_account_id) $hook['account_id'] = $_account_id;
switch ($_hookname)
{
case 'edit_user':
$GLOBALS['menuData'][] = array(
'description' => 'User Data',
'url' => '/index.php',
'extradata' => 'menuaction=admin.uiaccounts.edit_user'
);
break;
case 'view_user':
$GLOBALS['menuData'][] = array(
'description' => 'User Data',
'url' => '/index.php',
'extradata' => 'menuaction=admin.uiaccounts.view_user'
);
break;
case 'edit_group':
$GLOBALS['menuData'][] = array(
'description' => 'Edit Group',
'url' => '/index.php',
'extradata' => 'menuaction=admin.uiaccounts.edit_group'
);
break;
case 'group_manager':
$GLOBALS['menuData'][] = array(
'description' => 'Group Manager',
'url' => '/index.php',
'extradata' => 'menuaction=admin.uiaccounts.group_manager'
);
break;
}
//_debug_array($hook);
$GLOBALS['egw']->hooks->process($hook);
if (count($GLOBALS['menuData']) >= 1)
{
$result = $this->display_section($GLOBALS['menuData'], $_account_id);
//clear $menuData
$GLOBALS['menuData'] = '';
return $result;
}
else
{
// clear $menuData
$GLOBALS['menuData'] = '';
return '';
}
}
}

View File

@ -1,8 +0,0 @@
<?php
$GLOBALS['pref']->change('common','maxmatchs','15');
$GLOBALS['pref']->change('common','theme','default');
$GLOBALS['pref']->change('common','tz_offset',0);
$GLOBALS['pref']->change('common','dateformat','m/d/Y');
$GLOBALS['pref']->change('common','timeformat',12);
$GLOBALS['pref']->change('common','lang','en');
?>

View File

@ -33,7 +33,6 @@ $setup_info['admin']['description'] = 'EGroupware administration application';
/* The hooks this app includes, needed for hooks registration */ /* The hooks this app includes, needed for hooks registration */
$setup_info['admin']['hooks'] = array( $setup_info['admin']['hooks'] = array(
'acl_manager', 'acl_manager',
'add_def_pref',
'after_navbar', 'after_navbar',
'config_validate', 'config_validate',
'deleteaccount', 'deleteaccount',

View File

@ -1,151 +0,0 @@
<!-- BEGIN form -->
{error_messages}
<script>
var email_set=0;
function check_account_email(id)
{
account = document.getElementById('account').value;
firstname = document.getElementById('firstname').value;
lastname = document.getElementById('lastname').value;
email = document.getElementById('email').value;
if (!email || email_set || id == 'account')
{
xajax_doXMLHTTP('admin.uiaccounts.ajax_check_account_email',firstname,lastname,account,{account_id},email_set ? '' : email,id);
email_set = !email || email_set;
}
}
function check_password(id)
{
password = document.getElementById('password').value;
password2 = document.getElementById('password2').value;
if (password && (password2 || id == 'password2') && password != password2)
{
alert('{lang_passwds_unequal}');
document.getElementById('password2').value = '';
document.getElementById('password').select();
document.getElementById('password').focus();
return false;
}
return true;
}
</script>
<form method="POST" action="{form_action}">
<div align="center">
<table border="0" width="95%">
<tr>
<td valign="top">
{rows}
</td>
<td valign="top">
<table border=0 width=100%>
<tr class="th">
<td colspan="4"><b>{lang_action}</b></td>
</tr>
<tr class="row_on">
<td width="25%">{lang_loginid}</td>
<td width="25%">{account_lid}&nbsp;</td>
<td width="25%">{lang_account_active}:</td>
<td width="25%">{account_status}</td>
</tr>
<tr class="row_off">
<td>{lang_firstname}</td>
<td>{account_firstname}&nbsp;</td>
<td>{lang_lastname}</td>
<td>{account_lastname}&nbsp;</td>
</tr>
{password_fields}
<!-- BEGIN ldap_extra -->
<tr class="row_off">
<td>{lang_homedir}</td>
<td>{homedirectory}&nbsp;</td>
<td>{lang_shell}</td>
<td>{loginshell}&nbsp;</td>
</tr>
<!-- END ldap_extra -->
<tr class="row_on">
<td>{lang_mustchangepassword}</td>
<td>{mustchangepassword}</td>
<td></td>
<td></td>
</tr>
<tr class="row_off">
<td>{lang_changepassword}</td>
<td>{changepassword}</td>
<td>{lang_anonymous}</td>
<td>{anonymous}</td>
</tr>
<tr class="row_on">
<td>{lang_expires}</td>
<td>{input_expires} <label style="white-space: nowrap;">{never_expires} {lang_never}</label></td>
<td>{lang_email}</td>
<td>{account_email}</td>
</tr>
<tr class="row_off">
<td>{lang_groups}</td>
<td>{groups_select}&nbsp;</td>
<td>{lang_primary_group}</td>
<td>{primary_group_select}&nbsp;</td>
</tr>
<tr class="th">
<td>{lang_app}</td>
<td>{lang_acl}</td>
<td>{lang_app}</td>
<td>{lang_acl}</td>
</tr>
{permissions_list}
{form_buttons}
</table>
</td>
</tr>
</table>
</div>
</form>
<!-- END form -->
<!-- BEGIN form_passwordinfo -->
<tr class="row_on">
<td>{lang_password}</td>
<td><input id="password" onchange="check_password(this.id);" type="password" name="account_passwd" value="{account_passwd}" autocomplete="off"></td>
<td>{lang_reenter_password}</td>
<td><input id="password2" onblur="check_password(this.id);" type="password" name="account_passwd_2" value="{account_passwd_2}" autocomplete="off"></td>
</tr>
<!-- END form_passwordinfo -->
<!-- BEGIN form_buttons_ -->
<tr class="row_off">
<td colspan="4" align="right">
<input type="submit" name="submit" value="{lang_button}">
<input type="submit" name="cancel" value="{lang_cancel}" onclick="{cancel_action}; return false;">
</td>
</tr>
<!-- END form_buttons_ -->
<!-- BEGIN form_logininfo -->
<tr class="row_on">
<td>{lang_lastlogin}</td>
<td>{account_lastlogin}</td>
<td>{lang_lastloginfrom}</td>
<td>{account_lastloginfrom}</td>
</tr>
<!-- END form_logininfo -->
<!-- BEGIN link_row -->
<tr bgcolor="{tr_color}">
<td>&nbsp;<a href="{row_link}">{row_text}</a></td>
</tr>
<!-- END link_row -->

View File

@ -1,80 +0,0 @@
<!-- $Id$ -->
<div align="center">
<table border="0" width="80%">
<tr>
<td align="right" colspan="5">
<form method="POST" action="{accounts_url}">
<table width="100%"><tr>
<td>{lang_group} {group}</td>
<td align="right">
{query_type}
<input type="text" name="query" value="{query}">
<input type="submit" name="search" value="{lang_search}">
</td>
</tr></table>
</form>
</td>
</tr>
<tr>
<td colspan="5">
<table width="100%"><tr>
<!-- BEGIN letter_search -->
<td class="{class}" onclick="location.href='{link}';">{letter}</td>
<!-- END letter_search -->
</tr></table>
</td>
</tr>
<tr>
{left_next_matchs}
<td align="center">{lang_showing}</td>
{right_next_matchs}
</tr>
</table>
</div>
<div align="center">
<table border="0" width="80%" class="egwGridView_grid">
<tr class="th">
<td width="20%">{lang_loginid}</td>
<td width="20%">{lang_lastname}</td>
<td width="20%">{lang_firstname}</td>
<td>{lang_email}</td>
<td>{lang_account_active}</td>
<td class="narrow_column">{lang_edit}</td>
<td class="narrow_column">{lang_delete}</td>
<td class="narrow_column">{lang_view}</td>
</tr>
<!-- BEGIN row -->
<tr class="{class}">
<td>{account_lid}</td>
<td>{account_lastname}</td>
<td>{account_firstname}</td>
<td>{account_email}</td>
<td>{account_status}</td>
<td>{row_edit}</td>
<td>{row_delete}</td>
<td>{row_view}</td>
</tr>
<!-- END row -->
</table>
</div>
<div align="center">
<table border="0" width="80%">
<tr>
<td align="left">
<form method="POST" action="{new_action}">
{input_add}
</form>
</td>
</tr>
</table>
</div>
<!-- BEGIN row_empty -->
<tr>
<td colspan="5" align="center">{message}</td>
</tr>
<!-- END row_empty -->

View File

@ -1,57 +0,0 @@
<!-- BEGIN list -->
<b>{lang_header}</b>
<hr><p>
<div align="center">
<table border="0" width="70%">
<tr>
<td align="left">{left_next_matchs}</td>
<td width="95%" align="center">&nbsp;</td>
<td align="right">{right_next_matchs}</td>
</tr>
</table>
</div>
<div align="center">
<table border="0" width="70%">
<tr bgcolor="{th_bg}">
<td>{lang_loginid}</td>
<td>{lang_lastname}</td>
<td>{lang_firstname}</td>
<td>{lang_access}</td>
</tr>
{rows}
</table>
</div>
<form method="POST" action="{actionurl}">
<div align="center">
<table border="0" width="70%">
<tr>
<td align="right">
<form method="POST" action="{accounts_url}">
<input name="query" value="{lang_search}">
</form>
</td>
</tr>
</table>
</div>
<!-- END list -->
<!-- BEGIN row -->
<tr bgcolor="{tr_color}">
<td>{row_loginid}</td>
<td>{row_lastname}</td>
<td>{row_firstname}</td>
<td class="narrow_column">{row_access}</td>
</tr>
<!-- END row -->
<!-- BEGIN row_empty -->
<tr>
<td colspan="5" align="center">{message}</td>
</tr>
<!-- END row_empty -->

View File

@ -1,19 +0,0 @@
<!-- BEGIN form -->
<form method="POST" action="{form_action}">
<input type="hidden" name="account_id" value="{account_id}">
<center>
<table border="0" width="85%">
<tr>
<td align="center">{lang_new_owner}</td>
</tr>
<tr>
<td align="center">{new_owner_select}</td>
</tr>
<tr>
<td align="center"><input type="submit" name="cancel" value="{cancel}">&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="delete_account" value="{delete}"></td>
</tr>
</table>
</center>
</form>
<!-- END form -->

View File

@ -1,35 +0,0 @@
<!-- $Id$ -->
<!-- BEGIN form -->
<br>
<form method="POST" action="{action_url}">
{hidden_vars}
<table border="0" with="65%" cellpadding="2" cellspacing="2" align="center">
<tr>
<td align="center" colspan="2">
<p><b>{cat_name}</b></p>
{messages}
</td>
</tr>
<tr>
<td align="center" colspan="2">{lang_subs}&nbsp;{subs}</td>
</tr>
<tr>
<!-- BEGIN delete -->
<td align="center">
<input type="submit" name="confirm" value="{lang_yes}">
</td>
<td align="center">
<input type="submit" name="cancel" value="{lang_no}">
</td>
<!-- END delete -->
<!-- BEGIN done -->
<td align="center">
<input type="submit" name="cancel" value="{lang_ok}">
</td>
<!-- END done -->
</tr>
</table>
</form>
<!-- END form -->

View File

@ -1,20 +0,0 @@
<!-- BEGIN form -->
<p>
<center>
<form action="{form_action}" method="POST">
{hidden_vars}
<table align="center" border="0" width="55%" cols="2">
{messages}
<tr>
<td width="50%" align="center">
<input type="submit" name="no" value="{no}">
</td>
<td width="50%" align="center">
<input type="submit" name="yes" value="{yes}">
</td>
</tr>
</table>
</form>
</center>
<!-- END form -->

View File

@ -1,6 +0,0 @@
<!-- $Id$ -->
<!-- BEGIN form_button -->
<form action="{action_url_button}" method="post" name="{action_text_button}form">
{action_extra_field} <input type="submit" value="{action_text_button}" {action_confirm_button}>
</form>
<!-- END form_button -->

View File

@ -1,76 +0,0 @@
{error}
<table border="0" width="60%" align="center">
<tr>
<td valign="top">
{rows}
</td>
<td valign="top">
<table border=0 width=100%>
<form action="{form_action}" method="POST" name="app_form">
{hidden_vars}
<tr>
<td>{lang_group_name}</td>
<td><input name="account_name" value="{group_name_value}" style="width: 300px;"></td>
</tr>
<tr>
<td>{lang_include_user}</td>
<td>
{accounts}
</td>
</tr>
<tr>
<td>{lang_email}</td>
<td>{email}</td>
</tr>
<tr>
<td>{lang_file_space}</td>
<td>
{account_file_space}{account_file_space_select}
</td>
</tr>
<tr>
<td>{lang_permissions}</td>
<td><table width="100%" border="0" cols="6">
{permissions_list}
</table></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="edit" value="{lang_submit_button}">
</td>
</tr>
</form>
</table>
</td>
</tr>
</table>
<!-- BEGIN select -->
<select name="account_user[]" multiple size="{select_size}">
{user_list}
</select>
<!-- END select -->
<!-- BEGIN popwin -->
<table>
<tr>
<td>
<select name="account_user[]" multiple size="{select_size}">{user_list}</select>
</td>
<td valign="top">
<input type="button" value="{lang_open_popup}" onClick="accounts_popup()">
<input type="hidden" name="accountid" value="{accountid}">
</td>
</tr>
</table>
<!-- END popwin -->

View File

@ -1,37 +0,0 @@
<!-- BEGIN form -->
{error_messages}
<center>
<table border="0" width="70%">
<tr>
<td valign="top">
{rows}
</td>
<td valign="top">
<table border="0" width="100%">
<tr bgcolor="{th_bg}">
<td><b>{lang_group}:</b></td>
<td><b>{group_name}</b></td>
</tr>
<form action="{form_action}" method="post">
{hidden}
<tr bgcolor="{tr_color1}">
<td>{lang_select_managers}</td>
<td>{group_members}</td>
</tr>
{form_buttons}
</form>
</table>
</td>
</tr>
</table>
</center>
<!-- END form -->
<!-- BEGIN link_row -->
<tr bgcolor="{tr_color}">
<td>&nbsp;<a href="{row_link}">{row_text}</a></td>
</tr>
<!-- END link_row -->

View File

@ -1,71 +0,0 @@
<!-- BEGIN list -->
<p>
<table border="0" width="45%" align="center">
<tr>
<td colspan="5">
<table width="100%"><tr>
<!-- BEGIN letter_search -->
<td class="{class}" onclick="location.href='{link}';">{letter}</td>
<!-- END letter_search -->
</tr></table>
</td>
</tr>
<tr>
{left_next_matchs}
<td align="center">{lang_groups}</td>
{right_next_matchs}
</tr>
</table>
<table border="0" width="45%" align="center" class="egwGridView_grid">
<tr class="th">
<td>{sort_name}</td>
<td>{header_edit}</td>
<td>{header_delete}</td>
</tr>
{rows}
</table>
<table border="0" width="45%" align="center">
<tr>
<td align="left">
<form method="POST" action="{new_action}">
{input_add}
</form>
</td>
<td align="right">
<!--
<form method="POST" action="{search_action}">
{input_search}
</form>
-->
<form method="POST" action="{accounts_url}">
<table width="100%"><tr>
<td>{lang_group} {group}</td>
<td align="right">
{query_type}
<input type="text" name="query" value="{query}">
<input type="submit" name="search" value="{lang_search}">
</td>
</tr></table>
</form>
</td>
</tr>
</table>
<!-- END list -->
<!-- BEGIN row -->
<tr class="{class}">
<td>{group_name}</td>
<td class="narrow_column">{edit_link}</td>
<td class="narrow_column">{delete_link}</td>
</tr>
<!-- END row -->
<!-- BEGIN row_empty -->
<tr>
<td colspan="5" align="center">{message}</td>
</tr>
<!-- END row_empty -->

View File

@ -1,63 +0,0 @@
<!-- BEGIN list -->
<style>
<!--
#prefIndex {
}
#divGenTime {
clear: left;
}
.prefAppBox {
width: 225px;
min-height: 12em;
border: 2px ridge gray;
border-radius: 10px;
margin: 5px;
padding-left: 5px;
float: left;
box-shadow:8px 8px 8px #666;
}
.prefAppBox h3 {
height: 32px;
padding-left: 50px;
padding-top: 10px;
background-image: url(../phpgwapi/templates/default/images/nonav.png);
background-repeat: no-repeat;
background-position: left;
background-size: 32px;
margin: 0;
}
.prefAppBox ul {
margin: 0;
padding-left: 20px;
padding-top: 0;
}
-->
</style>
<div id="prefIndex">
{rows}
</div>
<!-- END list -->
<!-- BEGIN app_row -->
<div class="prefAppBox">
<h3 style="background-image: url({app_icon})">{app_name}</h3>
<ul>
<!-- END app_row -->
<!-- BEGIN app_row_noicon -->
<div class="prefAppBox">
<h3>{app_name}</h3>
<ul>
<!-- END app_row_noicon -->
<!-- BEGIN link_row -->
<li><a href="{pref_link}">{pref_text}</a></li>
<!-- END link_row -->
<!-- BEGIN spacer_row -->
</ul>
</div>
<!-- END spacer_row -->

View File

@ -1,11 +0,0 @@
<br>
<table border="0" with="65%" align="center">
<tr colspan="2">
<td align="center">{lang_message}<td>
</tr>
<tr>
<td>{link_no}</td>
<td>{link_yes}</td>
</tr>
</table>

View File

@ -1,19 +0,0 @@
<!-- BEGIN menu_links -->
<table border="0" width="100%">
<tr class="th">
<td>&nbsp;</td>
</tr>
{all_rows}
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td class="row_on">&nbsp;&nbsp;<a href="{link_done}">{lang_done}</a></td>
</tr>
</table>
<!-- END menu_links -->
<!-- BEGIN link_row -->
<tr class="{class}">
<td>&nbsp;&nbsp;<a href="{row_link}" {row_options}>{row_text}</a></td>
</tr>
<!-- END link_row -->

View File

@ -1,5 +0,0 @@
<!-- BEGIN message_row -->
<tr>
<td colspan="2" align="center">{message_display}<td>
</tr>
<!-- END message_row -->

View File

@ -1,68 +0,0 @@
<!-- $Id$ -->
<!-- BEGIN nntp_header -->
<script>
function check_all()
{
for (i=0; i<document.allow.elements.length; i++) {
if (document.allow.elements[i].type == "checkbox") {
if (document.allow.elements[i].checked) {
document.allow.elements[i].checked = false;
} else {
document.allow.elements[i].checked = true;
}
}
}
}
</script>
<p><center>{title}<br>
<table border="0" width="70%">
<tr>
<td width="40%">
<div align="center">
<form method="POST" action="{action_url}">
{common_hidden_vars}
<input type="text" name="query" value="{search_value}">
<input type="submit" name="search" value="{search}">
<input type="submit" name="next" value="{next}">
</form>
</div>
</td>
</tr>
<tr>{nml}</tr>
<tr>{nmr}</tr>
</table>
<form name="allow" action="{action_url}" method="POST">
{common_hidden_vars}
<table border="0" width="70%">
<tr bgcolor="{th_bg}">
<td align="center"><font size="2" face="{th_font}">{sort_con}</font></td>
<td><font size="2" face="{th_font}">{sort_group}</font></td>
<td align="center"><font size="2" face="{th_font}">{sort_active}</font></td>
</tr>
<!-- END nntp_header -->
{output}
<!-- BEGIN nntp_list -->
<tr bgcolor="{tr_color}">
<td align="center"><font face="{th_font}">{con}</font></td>
<td><font face="{th_font}">{group}</font></td>
<td align="center"><font face="{th_font}">{active}</font></td>
</tr>
<!-- END nntp_list -->
<!-- BEGIN nntp_footer -->
<tr bgcolor="{th_bg}">
<td>&nbsp;</td>
<td align="center"><input type="submit" name="submit" value="{lang_update}"></td>
<td align=center>
<a href="javascript:check_all()"><img src="{checkmark}" border="0" height="16" width="21"></a>
</td>
</tr>
</table>
</form>
</center>
<!-- END nntp_footer -->