mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-27 09:09:04 +01:00
Added an admin module for ldap based email settings (based on emailadmin)
but reduced to those functions, which are needed to manage ldap entries, which rely only on standard schemas (core, qmail) which are not considered "experimental" and without the need to add a separate schema. This modul will be extended whenever possible and approved for more values. Main goal here is: Ability to easily use eGW Admin for account management with LDAP beackend and to comply with those schemas, the distros are delivering. The link for this module will be shown in addition to Lars' EmailAdmin if LDAP is used as account storage. So it will not break existing installation ;-)
This commit is contained in:
parent
87fd7d1d05
commit
eabf6925b5
400
admin/inc/class.boldap_mgr.inc.php
Normal file
400
admin/inc/class.boldap_mgr.inc.php
Normal file
@ -0,0 +1,400 @@
|
||||
<?php
|
||||
/***************************************************************************\
|
||||
* EGroupWare - LDAPManager *
|
||||
* http://www.egroupware.org *
|
||||
* Written by : Andreas Krause (ak703@users.sourceforge.net *
|
||||
* based on EmailAdmin by Lars Kneschke [lkneschke@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. *
|
||||
\***************************************************************************/
|
||||
|
||||
|
||||
class boldap_mgr
|
||||
{
|
||||
var $sessionData;
|
||||
var $LDAPData;
|
||||
|
||||
var $SMTPServerType = array(); // holds a list of config options
|
||||
|
||||
var $imapClass; // holds the imap/pop3 class
|
||||
var $smtpClass; // holds the smtp class
|
||||
|
||||
var $public_functions = array
|
||||
(
|
||||
'getFieldNames' => True,
|
||||
'getLDAPStorageData' => True,
|
||||
'getLocals' => True,
|
||||
'getProfile' => True,
|
||||
'getProfileList' => True,
|
||||
'getRcptHosts' => True,
|
||||
'getSMTPServerTypes' => True
|
||||
);
|
||||
|
||||
function boldap_mgr($_profileID=-1)
|
||||
{
|
||||
$this->soldapmgr = CreateObject('admin.soldap_mgr');
|
||||
|
||||
$this->SMTPServerType = array(
|
||||
'1' => array(
|
||||
'fieldNames' => array(
|
||||
'smtpServer',
|
||||
'smtpPort',
|
||||
'smtpAuth',
|
||||
'smtpType'
|
||||
),
|
||||
'description' => lang('standard SMTP-Server'),
|
||||
'classname' => 'defaultsmtp'
|
||||
),
|
||||
'2' => array(
|
||||
'fieldNames' => array(
|
||||
'smtpServer',
|
||||
'smtpPort',
|
||||
'smtpAuth',
|
||||
'smtpType',
|
||||
'smtpLDAPServer',
|
||||
'smtpLDAPAdminDN',
|
||||
'smtpLDAPAdminPW',
|
||||
'smtpLDAPBaseDN',
|
||||
'smtpLDAPUseDefault'
|
||||
),
|
||||
'description' => lang('Postfix with LDAP'),
|
||||
'classname' => 'postfixldap'
|
||||
)
|
||||
);
|
||||
|
||||
$this->IMAPServerType = array(
|
||||
'1' => array(
|
||||
'fieldNames' => array(
|
||||
'imapServer',
|
||||
'imapPort',
|
||||
'imapType',
|
||||
'imapLoginType',
|
||||
'imapTLSEncryption',
|
||||
'imapTLSAuthentication',
|
||||
'imapoldcclient'
|
||||
),
|
||||
'description' => lang('standard POP3 server'),
|
||||
'protocol' => 'pop3',
|
||||
'classname' => 'defaultpop'
|
||||
),
|
||||
'2' => array(
|
||||
'fieldNames' => array(
|
||||
'imapServer',
|
||||
'imapPort',
|
||||
'imapType',
|
||||
'imapLoginType',
|
||||
'imapTLSEncryption',
|
||||
'imapTLSAuthentication',
|
||||
'imapoldcclient'
|
||||
),
|
||||
'description' => lang('standard IMAP server'),
|
||||
'protocol' => 'imap',
|
||||
'classname' => 'defaultimap'
|
||||
),
|
||||
'3' => array(
|
||||
'fieldNames' => array(
|
||||
'imapServer',
|
||||
'imapPort',
|
||||
'imapType',
|
||||
'imapLoginType',
|
||||
'imapTLSEncryption',
|
||||
'imapTLSAuthentication',
|
||||
'imapoldcclient',
|
||||
'imapEnableCyrusAdmin',
|
||||
'imapAdminUsername',
|
||||
'imapAdminPW',
|
||||
'imapEnableSieve',
|
||||
'imapSieveServer',
|
||||
'imapSievePort'
|
||||
),
|
||||
'description' => lang('Cyrus IMAP Server'),
|
||||
'protocol' => 'imap',
|
||||
'classname' => 'cyrusimap'
|
||||
)
|
||||
);
|
||||
|
||||
$this->restoreSessionData();
|
||||
|
||||
if($_profileID >= 0)
|
||||
{
|
||||
$this->profileID = $_profileID;
|
||||
|
||||
$this->profileData = $this->getProfile($_profileID);
|
||||
|
||||
$this->imapClass = $this->IMAPServerType[$this->profileData['imapType']]['classname'];
|
||||
$this->smtpClass = $this->SMTPServerType[$this->profileData['smtpType']]['classname'];
|
||||
}
|
||||
}
|
||||
|
||||
function encodeHeader($_string, $_encoding='q')
|
||||
{
|
||||
switch($_encoding)
|
||||
{
|
||||
case "q":
|
||||
if(!preg_match("/[\x80-\xFF]/",$_string))
|
||||
{
|
||||
// nothing to quote, only 7 bit ascii
|
||||
return $_string;
|
||||
}
|
||||
|
||||
$string = imap_8bit($_string);
|
||||
$stringParts = explode("=\r\n",$string);
|
||||
while(list($key,$value) = each($stringParts))
|
||||
{
|
||||
if(!empty($retString)) $retString .= " ";
|
||||
$value = str_replace(" ","_",$value);
|
||||
// imap_8bit does not convert "?"
|
||||
// it does not need, but it should
|
||||
$value = str_replace("?","=3F",$value);
|
||||
$retString .= "=?".strtoupper($this->displayCharset)."?Q?".$value."?=";
|
||||
}
|
||||
#exit;
|
||||
return $retString;
|
||||
break;
|
||||
default:
|
||||
return $_string;
|
||||
}
|
||||
}
|
||||
|
||||
function getAccountEmailAddress($_accountName, $_profileID)
|
||||
{
|
||||
$profileData = $this->getProfile($_profileID);
|
||||
|
||||
$smtpClass = $this->SMTPServerType[$profileData['smtpType']]['classname'];
|
||||
|
||||
return empty($smtpClass) ? False : ExecMethod("emailadmin.$smtpClass.getAccountEmailAddress",$_accountName,3,$profileData);
|
||||
}
|
||||
|
||||
function getFieldNames($_serverTypeID, $_class)
|
||||
{
|
||||
switch($_class)
|
||||
{
|
||||
case 'imap':
|
||||
return $this->IMAPServerType[$_serverTypeID]['fieldNames'];
|
||||
break;
|
||||
case 'smtp':
|
||||
return $this->SMTPServerType[$_serverTypeID]['fieldNames'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
# function getIMAPClass($_profileID)
|
||||
# {
|
||||
# if(!is_object($this->imapClass))
|
||||
# {
|
||||
# $profileData = $this->getProfile($_profileID);
|
||||
# $this->imapClass = CreateObject('emailadmin.cyrusimap',$profileData);
|
||||
# }
|
||||
#
|
||||
# return $this->imapClass;
|
||||
# }
|
||||
|
||||
function getIMAPServerTypes()
|
||||
{
|
||||
foreach($this->IMAPServerType as $key => $value)
|
||||
{
|
||||
$retData[$key]['description'] = $value['description'];
|
||||
$retData[$key]['protocol'] = $value['protocol'];
|
||||
}
|
||||
|
||||
return $retData;
|
||||
}
|
||||
|
||||
function getLDAPStorageData($_serverid)
|
||||
{
|
||||
$storageData = $this->soldapmgr->getLDAPStorageData($_serverid);
|
||||
return $storageData;
|
||||
}
|
||||
|
||||
function getMailboxString($_folderName)
|
||||
{
|
||||
if (!empty($this->imapClass))
|
||||
{
|
||||
return ExecMethod("emailadmin.".$this->imapClass.".getMailboxString",$_folderName,3,$this->profileData);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function getProfile($_profileID)
|
||||
{
|
||||
$profileData = $this->soldapmgr->getProfileList($_profileID);
|
||||
$fieldNames = $this->SMTPServerType[$profileData[0]['smtpType']]['fieldNames'];
|
||||
$fieldNames = array_merge($fieldNames, $this->IMAPServerType[$profileData[0]['imapType']]['fieldNames']);
|
||||
$fieldNames[] = 'description';
|
||||
$fieldNames[] = 'defaultDomain';
|
||||
$fieldNames[] = 'profileID';
|
||||
$fieldNames[] = 'organisationName';
|
||||
$fieldNames[] = 'userDefinedAccounts';
|
||||
|
||||
return $this->soldapmgr->getProfile($_profileID, $fieldNames);
|
||||
}
|
||||
|
||||
function getProfileList($_profileID='')
|
||||
{
|
||||
$profileList = $this->soldapmgr->getProfileList($_profileID);
|
||||
return $profileList;
|
||||
}
|
||||
|
||||
# function getSMTPClass($_profileID)
|
||||
# {
|
||||
# if(!is_object($this->smtpClass))
|
||||
# {
|
||||
# $profileData = $this->getProfile($_profileID);
|
||||
# $this->smtpClass = CreateObject('emailadmin.postfixldap',$profileData);
|
||||
# }
|
||||
#
|
||||
# return $this->smtpClass;
|
||||
# }
|
||||
|
||||
function getSMTPServerTypes()
|
||||
{
|
||||
foreach($this->SMTPServerType as $key => $value)
|
||||
{
|
||||
$retData[$key] = $value['description'];
|
||||
}
|
||||
|
||||
return $retData;
|
||||
}
|
||||
|
||||
function getUserData($_accountID, $_usecache)
|
||||
{
|
||||
if ($_usecache)
|
||||
{
|
||||
$userData = $this->userSessionData[$_accountID];
|
||||
}
|
||||
else
|
||||
{
|
||||
$userData = $this->soldapmgr->getUserData($_accountID);
|
||||
$this->userSessionData[$_accountID] = $userData;
|
||||
$this->saveSessionData();
|
||||
}
|
||||
return $userData;
|
||||
}
|
||||
|
||||
function restoreSessionData()
|
||||
{
|
||||
global $phpgw;
|
||||
|
||||
$this->sessionData = $phpgw->session->appsession('session_data');
|
||||
$this->userSessionData = $phpgw->session->appsession('user_session_data');
|
||||
|
||||
#while(list($key, $value) = each($this->userSessionData))
|
||||
#{
|
||||
# print "++ $key: $value<br>";
|
||||
#}
|
||||
#print "restored Session<br>";
|
||||
}
|
||||
|
||||
function saveProfile($_globalSettings, $_smtpSettings, $_imapSettings)
|
||||
{
|
||||
if(!isset($_globalSettings['profileID']))
|
||||
{
|
||||
$this->soldapmgr->addProfile($_globalSettings, $_smtpSettings, $_imapSettings);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->soldapmgr->updateProfile($_globalSettings, $_smtpSettings, $_imapSettings);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function saveSessionData()
|
||||
{
|
||||
global $phpgw;
|
||||
|
||||
$phpgw->session->appsession('session_data','',$this->sessionData);
|
||||
$phpgw->session->appsession('user_session_data','',$this->userSessionData);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function saveUserData($_accountID, $_formData, $_boAction)
|
||||
{
|
||||
$this->userSessionData[$_accountID]['mail'] = $_formData["mail"];
|
||||
$this->userSessionData[$_accountID]['mailForwardingAddress'] = $_formData["mailForwardingAddress"];
|
||||
$this->userSessionData[$_accountID]['accountStatus'] = $_formData["accountStatus"];
|
||||
|
||||
switch ($_boAction)
|
||||
{
|
||||
case 'add_mailAlternateAddress':
|
||||
|
||||
if (is_array($this->userSessionData[$_accountID]['mailAlternateAddress']))
|
||||
{
|
||||
$count = count($this->userSessionData[$_accountID]['mailAlternateAddress']);
|
||||
}
|
||||
else
|
||||
{
|
||||
//ACHTUNG!!
|
||||
$count = 0;
|
||||
}
|
||||
|
||||
$this->userSessionData[$_accountID]['mailAlternateAddress'][$count] =
|
||||
$_formData['add_mailAlternateAddress'];
|
||||
|
||||
$this->saveSessionData();
|
||||
|
||||
break;
|
||||
|
||||
case 'remove_mailAlternateAddress':
|
||||
$i=0;
|
||||
|
||||
while(list($key, $value) = @each($this->userSessionData[$_accountID]['mailAlternateAddress']))
|
||||
{
|
||||
#print ".. $key: $value<br>";
|
||||
if ($key != $_formData['remove_mailAlternateAddress'])
|
||||
{
|
||||
$newMailAlternateAddress[$i]=$value;
|
||||
#print "!! $i: $value<br>";
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$this->userSessionData[$_accountID]['mailAlternateAddress'] = $newMailAlternateAddress;
|
||||
|
||||
$this->saveSessionData();
|
||||
|
||||
break;
|
||||
|
||||
case 'save':
|
||||
$this->soldapmgr->saveUserData(
|
||||
$_accountID,
|
||||
$this->userSessionData[$_accountID]);
|
||||
$bofelamimail = CreateObject('felamimail.bofelamimail');
|
||||
$bofelamimail->openConnection('','',true);
|
||||
$bofelamimail->imapSetQuota($GLOBALS['phpgw']->accounts->id2name($_accountID),
|
||||
$this->userSessionData[$_accountID]['quotaLimit']);
|
||||
$bofelamimail->closeConnection();
|
||||
$GLOBALS['phpgw']->accounts->cache_invalidate($_accountID);
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function updateAccount($_hookValues)
|
||||
{
|
||||
if (!empty($this->imapClass))
|
||||
{
|
||||
ExecMethod("emailadmin.".$this->imapClass.".updateAccount",$_hookValues,3,$this->profileData);
|
||||
}
|
||||
|
||||
if (!empty($this->smtpClass))
|
||||
{
|
||||
ExecMethod("emailadmin.".$this->smtpClass.".updateAccount",$_hookValues,3,$this->profileData);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
173
admin/inc/class.soldap_mgr.inc.php
Normal file
173
admin/inc/class.soldap_mgr.inc.php
Normal file
@ -0,0 +1,173 @@
|
||||
<?php
|
||||
/***************************************************************************\
|
||||
* EGroupWare - LDAPManager *
|
||||
* http://www.egroupware.org *
|
||||
* Written by : Andreas Krause (ak703@users.sourceforge.net *
|
||||
* based on EmailAdmin by Lars Kneschke [lkneschke@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. *
|
||||
\***************************************************************************/
|
||||
|
||||
class soldap_mgr
|
||||
{
|
||||
function soldap_mgr()
|
||||
{
|
||||
$this->db = $GLOBALS['phpgw']->db;
|
||||
include(PHPGW_INCLUDE_ROOT.'/emailadmin/setup/tables_current.inc.php');
|
||||
$this->tables = &$phpgw_baseline;
|
||||
unset($phpgw_baseline);
|
||||
$this->table = &$this->tables['phpgw_emailadmin'];
|
||||
}
|
||||
|
||||
|
||||
function getUserData($_accountID)
|
||||
{
|
||||
global $phpgw, $phpgw_info;
|
||||
|
||||
$ldap = $phpgw->common->ldapConnect();
|
||||
$filter = "(&(uidnumber=$_accountID))";
|
||||
|
||||
$sri = @ldap_search($ldap,$phpgw_info['server']['ldap_context'],$filter);
|
||||
if ($sri)
|
||||
{
|
||||
$allValues = ldap_get_entries($ldap, $sri);
|
||||
if ($allValues['count'] > 0)
|
||||
{
|
||||
#print "found something<br>";
|
||||
$userData["mail"] = $allValues[0]["mail"][0];
|
||||
$userData["mailAlternateAddress"] = $allValues[0]["mailalternateaddress"];
|
||||
$userData["accountStatus"] = $allValues[0]["accountstatus"][0];
|
||||
$userData["mailForwardingAddress"] = $allValues[0]["mailforwardingaddress"][0];
|
||||
$userData["deliveryMode"] = $allValues[0]["deliverymode"][0];
|
||||
|
||||
unset($userData["mailAlternateAddress"]["count"]);
|
||||
unset($userData["mailForwardingAddress"]["count"]);
|
||||
|
||||
return $userData;
|
||||
}
|
||||
}
|
||||
|
||||
// if we did not return before, return false
|
||||
return false;
|
||||
}
|
||||
|
||||
function saveUserData($_accountID, $_accountData)
|
||||
{
|
||||
|
||||
$ldap = $GLOBALS['phpgw']->common->ldapConnect();
|
||||
// need to be fixed
|
||||
if(is_numeric($_accountID))
|
||||
{
|
||||
$filter = "uidnumber=$_accountID";
|
||||
}
|
||||
else
|
||||
{
|
||||
$filter = "uid=$_accountID";
|
||||
}
|
||||
|
||||
$sri = @ldap_search($ldap,$GLOBALS['phpgw_info']['server']['ldap_context'],$filter);
|
||||
if ($sri)
|
||||
{
|
||||
$allValues = ldap_get_entries($ldap, $sri);
|
||||
$accountDN = $allValues[0]['dn'];
|
||||
$uid = $allValues[0]['uid'][0];
|
||||
$homedirectory = $allValues[0]['homedirectory'][0];
|
||||
$objectClasses = $allValues[0]['objectclass'];
|
||||
|
||||
unset($objectClasses['count']);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(empty($homedirectory))
|
||||
{
|
||||
$homedirectory = "/home/".$uid;
|
||||
}
|
||||
|
||||
// the old code for qmail ldap
|
||||
$newData = array
|
||||
(
|
||||
'mail' => $_accountData["mail"],
|
||||
'mailAlternateAddress' => $_accountData["mailAlternateAddress"],
|
||||
'mailForwardingAddress' => $_accountData["mailForwardingAddress"],
|
||||
// 'homedirectory' => $homedirectory,
|
||||
// 'mailMessageStore' => $homedirectory."/Maildir/",
|
||||
// 'gidnumber' => '1000',
|
||||
// 'qmailDotMode' => $_accountData["qmailDotMode"],
|
||||
// 'deliveryProgramPath' => $_accountData["deliveryProgramPath"]
|
||||
);
|
||||
|
||||
if(!in_array('qmailUser',$objectClasses) &&
|
||||
!in_array('qmailuser',$objectClasses))
|
||||
{
|
||||
$objectClasses[] = 'qmailuser';
|
||||
}
|
||||
|
||||
// the new code for postfix+cyrus+ldap
|
||||
$newData = array
|
||||
(
|
||||
'mail' => $_accountData["mail"],
|
||||
'accountStatus' => $_accountData["accountStatus"],
|
||||
'objectclass' => $objectClasses
|
||||
);
|
||||
|
||||
if(is_array($_accountData["mailAlternateAddress"]))
|
||||
{
|
||||
$newData['mailAlternateAddress'] = $_accountData["mailAlternateAddress"];
|
||||
}
|
||||
else
|
||||
{
|
||||
$newData['mailAlternateAddress'] = array();
|
||||
}
|
||||
|
||||
if($_accountData["accountStatus"] == 'active')
|
||||
{
|
||||
$newData['accountStatus'] = 'active';
|
||||
}
|
||||
else
|
||||
{
|
||||
$newData['accountStatus'] = 'disabled';
|
||||
}
|
||||
/*
|
||||
if(!empty($_accountData["deliveryMode"]))
|
||||
{
|
||||
$newData['deliveryMode'] = $_accountData["deliveryMode"];
|
||||
}
|
||||
else
|
||||
{
|
||||
$newData['deliveryMode'] = array();
|
||||
}
|
||||
*/
|
||||
|
||||
// if(is_array($_accountData["mailForwardingAddress"]))
|
||||
// {
|
||||
$newData['mailForwardingAddress'] = $_accountData["mailForwardingAddress"];
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// $newData['mailForwardingAddress'] = array();
|
||||
// }
|
||||
|
||||
#print "<br>DN: $accountDN<br>";
|
||||
ldap_mod_replace ($ldap, $accountDN, $newData);
|
||||
|
||||
// also update the account_email field in phpgw_accounts
|
||||
// when using sql account storage
|
||||
if($GLOBALS['phpgw_info']['server']['account_repository'] == 'sql')
|
||||
{
|
||||
$this->db->update('phpgw_accounts',array(
|
||||
'account_email' => $_accountData["mail"]
|
||||
),
|
||||
array(
|
||||
'account_id' => $_accountID
|
||||
),__LINE__,__FILE__
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
@ -632,6 +632,22 @@
|
||||
'extradata' => 'menuaction=admin.uiaclmanager.list_apps'
|
||||
);
|
||||
}
|
||||
|
||||
// NDEE210804
|
||||
// added for different way of handling ldap entries inside account manager
|
||||
// we show this only, if accounts are stored in ldap
|
||||
|
||||
if ($GLOBALS['phpgw_info']['server']['account_repository'] == "ldap")
|
||||
{
|
||||
$GLOBALS['menuData'][] = array(
|
||||
'description' => 'LDAP-MGR',
|
||||
'url' => '/index.php',
|
||||
'extradata' => 'menuaction=admin.uildap_mgr.editUserData'
|
||||
);
|
||||
}
|
||||
//NDEE
|
||||
|
||||
|
||||
}
|
||||
|
||||
function edit_user($cd='',$account_id='')
|
||||
|
192
admin/inc/class.uildap_mgr.inc.php
Normal file
192
admin/inc/class.uildap_mgr.inc.php
Normal file
@ -0,0 +1,192 @@
|
||||
<?php
|
||||
/***************************************************************************\
|
||||
* EGroupWare - LDAPManager *
|
||||
* http://www.egroupware.org *
|
||||
* Written by : Andreas Krause (ak703@users.sourceforge.net *
|
||||
* based on EmailAdmin by Lars Kneschke [lkneschke@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. *
|
||||
\***************************************************************************/
|
||||
|
||||
class uildap_mgr
|
||||
{
|
||||
|
||||
var $public_functions = array
|
||||
(
|
||||
'editUserData' => True,
|
||||
'saveUserData' => True
|
||||
);
|
||||
|
||||
function uildap_mgr()
|
||||
{
|
||||
$this->t = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
|
||||
$this->boldapmgr = CreateObject('admin.boldap_mgr');
|
||||
}
|
||||
|
||||
function display_app_header()
|
||||
{
|
||||
$GLOBALS['phpgw']->common->phpgw_header();
|
||||
echo parse_navbar();
|
||||
|
||||
}
|
||||
|
||||
function editUserData($_useCache='0')
|
||||
{
|
||||
global $phpgw, $phpgw_info, $HTTP_GET_VARS;
|
||||
|
||||
$accountID = $HTTP_GET_VARS['account_id'];
|
||||
$GLOBALS['account_id'] = $accountID;
|
||||
|
||||
$this->display_app_header();
|
||||
|
||||
$this->translate();
|
||||
|
||||
$this->t->set_file(array("editUserData" => "account_form_ldapdata.tpl"));
|
||||
$this->t->set_block('editUserData','form','form');
|
||||
$this->t->set_block('editUserData','link_row','link_row');
|
||||
$this->t->set_var("th_bg",$phpgw_info["theme"]["th_bg"]);
|
||||
$this->t->set_var("tr_color1",$phpgw_info["theme"]["row_on"]);
|
||||
$this->t->set_var("tr_color2",$phpgw_info["theme"]["row_off"]);
|
||||
|
||||
$this->t->set_var("lang_email_config",lang("edit email settings"));
|
||||
$this->t->set_var("lang_emailAddress",lang("email address"));
|
||||
$this->t->set_var("lang_emailaccount_active",lang("email account active"));
|
||||
$this->t->set_var("lang_mailAlternateAddress",lang("alternate email address"));
|
||||
$this->t->set_var("lang_mailForwardingAddress",lang("forward email's to"));
|
||||
$this->t->set_var("lang_forward_also_to",lang("forward also to"));
|
||||
$this->t->set_var("lang_button",lang("save"));
|
||||
$this->t->set_var("lang_deliver_extern",lang("deliver extern"));
|
||||
$this->t->set_var("lang_edit_email_settings",lang("edit email settings"));
|
||||
$this->t->set_var("lang_ready",lang("Done"));
|
||||
$this->t->set_var("link_back",$phpgw->link('/admin/accounts.php'));
|
||||
|
||||
$linkData = array
|
||||
(
|
||||
'menuaction' => 'admin.uildap_mgr.saveUserData',
|
||||
'account_id' => $accountID
|
||||
);
|
||||
$this->t->set_var("form_action", $phpgw->link('/index.php',$linkData));
|
||||
|
||||
// only when we show a existing user
|
||||
if($userData = $this->boldapmgr->getUserData($accountID, $_useCache))
|
||||
{
|
||||
echo "<br><br><br>";
|
||||
if ($userData['mailAlternateAddress'] != '')
|
||||
{
|
||||
$options_mailAlternateAddress = "<select size=\"6\" name=\"mailAlternateAddress\">\n";
|
||||
for ($i=0;$i < count($userData['mailAlternateAddress']); $i++)
|
||||
{
|
||||
$options_mailAlternateAddress .= "<option value=\"".$i."\">".
|
||||
$userData['mailAlternateAddress'][$i].
|
||||
"</option>\n";
|
||||
}
|
||||
$options_mailAlternateAddress .= "</select>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$options_mailAlternateAddress = lang('no alternate email address');
|
||||
}
|
||||
|
||||
$this->t->set_var("mail",$userData["mail"]);
|
||||
// $this->t->set_var("mailAlternateAddress",'');
|
||||
$this->t->set_var("mailForwardingAddress",$userData["mailForwardingAddress"]);
|
||||
$this->t->set_var("options_mailAlternateAddress",$options_mailAlternateAddress);
|
||||
|
||||
$this->t->set_var("uid",rawurlencode($_accountData["dn"]));
|
||||
if ($userData["accountStatus"] == "active")
|
||||
$this->t->set_var("account_checked","checked");
|
||||
if ($userData["deliveryMode"] == "forwardOnly")
|
||||
$this->t->set_var("forwardOnly_checked","checked");
|
||||
if ($_accountData["deliverExtern"] == "active")
|
||||
$this->t->set_var("deliver_checked","checked");
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->t->set_var("mail",'');
|
||||
$this->t->set_var("mailAlternateAddress",'');
|
||||
$this->t->set_var("mailForwardingAddress",'');
|
||||
$this->t->set_var("options_mailAlternateAddress",lang('no alternate email address'));
|
||||
$this->t->set_var("account_checked",'');
|
||||
$this->t->set_var("forwardOnly_checked",'');
|
||||
}
|
||||
|
||||
// create the menu on the left, if needed
|
||||
$menuClass = CreateObject('admin.uimenuclass');
|
||||
$this->t->set_var('rows',$menuClass->createHTMLCode('edit_user'));
|
||||
|
||||
$this->t->pparse("out","form");
|
||||
|
||||
}
|
||||
|
||||
function saveUserData()
|
||||
{
|
||||
global $HTTP_POST_VARS, $HTTP_GET_VARS;
|
||||
|
||||
if($HTTP_POST_VARS["accountStatus"] == "on")
|
||||
{
|
||||
$accountStatus = "active";
|
||||
}
|
||||
if($HTTP_POST_VARS["forwardOnly"] == "on")
|
||||
{
|
||||
$deliveryMode = "forwardOnly";
|
||||
}
|
||||
|
||||
$formData = array
|
||||
(
|
||||
'mail' => $HTTP_POST_VARS["mail"],
|
||||
'mailAlternateAddress' => $HTTP_POST_VARS["mailAlternateAddress"],
|
||||
'mailForwardingAddress' => $HTTP_POST_VARS["mailForwardingAddress"],
|
||||
'add_mailAlternateAddress' => $HTTP_POST_VARS["mailAlternateAddressInput"],
|
||||
'remove_mailAlternateAddress' => $HTTP_POST_VARS["mailAlternateAddress"],
|
||||
'accountStatus' => $accountStatus,
|
||||
'deliveryMode' => $deliveryMode
|
||||
);
|
||||
|
||||
//echo "<br><br>DebugArray in uiuserdata";
|
||||
// echo _debug_array($formData);
|
||||
|
||||
if($HTTP_POST_VARS["add_mailAlternateAddress"]) $bo_action='add_mailAlternateAddress';
|
||||
if($HTTP_POST_VARS["remove_mailAlternateAddress"]) $bo_action='remove_mailAlternateAddress';
|
||||
if($HTTP_POST_VARS["save"]) $bo_action='save';
|
||||
|
||||
$this->boldapmgr->saveUserData($_GET['account_id'], $formData, $bo_action);
|
||||
|
||||
if ($bo_action == 'save')
|
||||
{
|
||||
// read date fresh from ldap storage
|
||||
$this->editUserData();
|
||||
}
|
||||
else
|
||||
{
|
||||
// use cached data
|
||||
$this->editUserData('1');
|
||||
}
|
||||
}
|
||||
|
||||
function translate()
|
||||
{
|
||||
global $phpgw_info;
|
||||
|
||||
$this->t->set_var('th_bg',$phpgw_info['theme']['th_bg']);
|
||||
|
||||
$this->t->set_var('lang_add',lang('add'));
|
||||
$this->t->set_var('lang_done',lang('Done'));
|
||||
$this->t->set_var('lang_remove',lang('remove'));
|
||||
$this->t->set_var('lang_remove',lang('remove'));
|
||||
$this->t->set_var('lang_advanced_options',lang('advanced options'));
|
||||
$this->t->set_var('lang_qmaildotmode',lang('qmaildotmode'));
|
||||
$this->t->set_var('lang_default',lang('default'));
|
||||
$this->t->set_var('lang_quota_settings',lang('quota settings'));
|
||||
$this->t->set_var('lang_qoutainmbyte',lang('qouta size in MByte'));
|
||||
$this->t->set_var('lang_inmbyte',lang('in MByte'));
|
||||
$this->t->set_var('lang_0forunlimited',lang('leave empty for no quota'));
|
||||
$this->t->set_var('lang_forward_only',lang('forward only'));
|
||||
$this->t->set_var('lang_mailAliases',lang('Aliases'));
|
||||
$this->t->set_var('lang_masterEmailAddress',lang('Main Email-Address'));
|
||||
$this->t->set_var('lang_RouteMailsTo',lang('Route all Mails to'));
|
||||
}
|
||||
}
|
||||
?>
|
@ -36,11 +36,14 @@ admin email addresses (comma-separated) to be notified about the blocking (empty
|
||||
admin name admin de Admininistratorname
|
||||
administration admin de Administration
|
||||
admins admin de Administatoren
|
||||
advanced options admin de erweiterte Optionen
|
||||
after how many unsuccessful attempts to login, an account should be blocked (default 3) ? admin de Nach wievielen erfolglosen Versuchen sich anzumelden, soll ein Benutzerkonto gesperrt werden (Vorgabe 3)?
|
||||
after how many unsuccessful attempts to login, an ip should be blocked (default 3) ? admin de Nach wievielen erfolglosen Versuchen sich anzumelden soll eine IP-Adresse gesperrt werden (Vorgabe 3)?
|
||||
aliases admin de Email-Alias
|
||||
all records and account information will be lost! admin de Alle Datensätze und Kontoinformationen sind dann verloren!
|
||||
all users admin de Alle Benutzer
|
||||
allow anonymous access to this app admin de Anonymen Zugriff auf diese Anwendung zulassen
|
||||
alternate email address admin de Alternative Emailadresse
|
||||
anonymous user admin de Anonymer Benutzer
|
||||
anonymous user (not shown in list sessions) admin de Anonymer Benutzer (wird bei Sitzungen anzeigen nicht angezeigt)
|
||||
appearance admin de Aussehen
|
||||
@ -84,6 +87,7 @@ color admin de Farbe
|
||||
country selection admin de Länderauswahl
|
||||
create group admin de Erstelle Gruppe
|
||||
crontab only (recomended) admin de nur Crontab (empfohlen)
|
||||
cyrus imap server admin de Cyrus IMAP Server
|
||||
data admin de Daten
|
||||
day admin de Tag
|
||||
day of week<br>(0-6, 0=sun) admin de Wochentag<br>(0-6, 0=Sonntag)
|
||||
@ -127,6 +131,7 @@ do you want to delete all global subcategories ? admin de M
|
||||
do you want to move all global subcategories one level down ? admin de Wollen sie alle globalen Unterkategorien eine Ebene nach unten verschieben?
|
||||
edit account admin de Benutzerkonto bearbeiten
|
||||
edit application admin de Anwendung bearbeiten
|
||||
edit email settings admin de Email Einstellungen bearbeiten
|
||||
edit global category admin de Globale Kategorie bearbeiten
|
||||
edit global category for %1 admin de Globale Kategorie für %1 bearbeiten
|
||||
edit group admin de Gruppe bearbeiten
|
||||
@ -140,6 +145,8 @@ edit this group admin de Diese Gruppe bearbeiten
|
||||
edit this user admin de Diesen Benutzer bearbeiten
|
||||
edit user admin de Benutzer bearbeiten
|
||||
edit user account admin de Benutzerkonto bearbeiten
|
||||
email account active admin de Emailkonto aktiv
|
||||
email address admin de Email-Adresse
|
||||
enable debug-messages admin de Debug-Meldungen einschalten
|
||||
enabled - hidden from navbar admin de Verfügbar, aber nicht in der Navigationsleiste
|
||||
enabled - popup window admin de Verfügbar, Popup-Fenster
|
||||
@ -195,6 +202,7 @@ icon admin de Icon
|
||||
idle admin de im Leerlauf
|
||||
if no acl records for user or any group the user is a member of admin de Wenn es keinen ACL-Eintrag für einen Benutzer oder oder eine Gruppe der er angehört gibt
|
||||
if using ldap, do you want to manage homedirectory and loginshell attributes? admin de Wenn Sie LDAP verwenden, wollen Sie Benutzerverzeichnisse und Komandointerpreter verwalten ?
|
||||
in mbyte admin de in MByte
|
||||
inbound admin de eingehend
|
||||
install crontab admin de Crontab installieren
|
||||
installed applications common de Installierte Anwendungen
|
||||
@ -230,6 +238,7 @@ login shell admin de Login-Komandointerpreter (Login-Shell)
|
||||
login time admin de Login-Zeit
|
||||
loginid admin de Login-ID
|
||||
mail settings admin de EMail Einstellungen
|
||||
main email-address admin de Stamm-Emailadresse
|
||||
main screen message admin de Nachricht der Startseite
|
||||
manager admin de Manager
|
||||
maximum account id (e.g. 65535 or 1000000) admin de Maximum für Benutzer-ID (z.B. 65535 oder 1000000)
|
||||
@ -245,6 +254,7 @@ new group name admin de Neuer Gruppenname
|
||||
new password [ leave blank for no change ] admin de Neues Passwort [ Feld leerlassen, wenn das Passwort nicht geändert werden soll ]
|
||||
next run admin de nächste Ausführung
|
||||
no algorithms available admin de Kein Algorithmus verfügbar
|
||||
no alternate email address admin de keine Aliases definiert
|
||||
no jobs in the database !!! admin de Keine Jobs in der Datenbank!!!
|
||||
no login history exists for this user admin de Benutzer hat sich noch nie angemeldet
|
||||
no matches found admin de Keine Übereinstimmungen gefunden
|
||||
@ -268,15 +278,20 @@ please enter a name admin de Bitte einen Namen eingeben
|
||||
please enter a name for that server ! admin de Bitte einen Namen für diesen Server eingeben!
|
||||
please run setup to become current admin de Bitte Setup ausführen um die Installation zu aktualisieren
|
||||
please select admin de Bitte auswählen
|
||||
postfix with ldap admin de Postfix mit LDAP
|
||||
preferences admin de Einstellungen
|
||||
primary group admin de primäre Gruppe
|
||||
qouta size in mbyte admin de Quotagröße in MByte
|
||||
quota settings admin de Quota-Einstellungen
|
||||
re-enter password admin de Passwort wiederholen
|
||||
read this list of methods. admin de Diese Liste der Methoden lesen
|
||||
register application hooks admin de Registrieren der "Hooks" der Anwendungen
|
||||
remove admin de Entfernen
|
||||
remove all users from this group admin de Entferne alle Benutzer aus dieser Gruppe
|
||||
remove all users from this group ? admin de Entferne alle Benutzer aus dieser Gruppe
|
||||
return to admin mainscreen admin de zum Adminstrationsmenü zurückkehren
|
||||
return to view account admin de Zurück zum Anzeigen des Benutzerkontos
|
||||
route all mails to admin de Alle Mails senden an
|
||||
run asynchronous services admin de Asynchrone Dienste ausführen
|
||||
save the category admin de Kategorie speichern
|
||||
save the category and return back to the list admin de Kategorie speichern und zur Liste zurückkehren
|
||||
@ -317,6 +332,9 @@ sorry, the follow users are still a member of the group %1 admin de Sorry, die f
|
||||
sort the entries admin de Einträge sortieren
|
||||
ssl admin de verschlüsselt (SSL)
|
||||
standard admin de Standard
|
||||
standard imap server admin de Standard IMAP Server
|
||||
standard pop3 server admin de Standard POP3 Server
|
||||
standard smtp-server admin de Standard SMTP Server
|
||||
start testjob! admin de Testjob starten!
|
||||
submit changes admin de Änderungen speichern
|
||||
submit the search string admin de Geben Sie Ihren Suchbegriff ein
|
||||
@ -365,9 +383,9 @@ view sessions admin de Sitzungen anzeigen
|
||||
view this user admin de Diesen Benutzer anzeigen
|
||||
view user account admin de Benutzerkonto anzeigen
|
||||
who would you like to transfer all records owned by the deleted user to? admin de Wem sollen alle Datensätze, die dem zu löschenden Benutzer gehören, übertragen werden?
|
||||
would you like egroupware to cache the egw info array ? admin de Soll eGroupWare das egw info Array cachen ?
|
||||
would you like egroupware to check for a new version<br>when admins login ? admin de Soll eGroupWare prüfen ob eine neue Version vorhanden ist,<br> wenn sich ein Administrator anmeldet ?
|
||||
would you like egroupware to check for new application versions when admins login ? admin de Soll eGroupWare auf neue Versionen der Anwendungen prüfen, wenn sich ein Administrator anmeldet ?
|
||||
would you like egroupware to cache the egw info array ? admin de Soll eGroupWare das egw info Array cachen ?
|
||||
would you like to automaticaly load new langfiles (at login-time) ? admin de Sollen neue Sprachdateien automatisch gelanden werden (beim Login) ?
|
||||
would you like to show each application's upgrade status ? admin de Soll der Upgrade-Status aller Anwendungen angezeigt werden ?
|
||||
xml-rpc admin de XML-RPC
|
||||
|
@ -35,11 +35,14 @@ admin email addresses (comma-separated) to be notified about the blocking (empty
|
||||
admin name admin en Admin Name
|
||||
administration admin en Administration
|
||||
admins admin en Admins
|
||||
advanced options admin en advanced options
|
||||
after how many unsuccessful attempts to login, an account should be blocked (default 3) ? admin en After how many unsuccessful attempts to login, an account should be blocked (default 3) ?
|
||||
after how many unsuccessful attempts to login, an ip should be blocked (default 3) ? admin en After how many unsuccessful attempts to login, an IP should be blocked (default 3) ?
|
||||
aliases admin en Aliases
|
||||
all records and account information will be lost! admin en All records and account information will be lost!
|
||||
all users admin en All Users
|
||||
allow anonymous access to this app admin en Allow anonymous access to this app
|
||||
alternate email address admin en alternate email address
|
||||
anonymous user admin en Anonymous user
|
||||
anonymous user (not shown in list sessions) admin en Anonymous User (not shown in list sessions)
|
||||
appearance admin en Appearance
|
||||
@ -83,6 +86,7 @@ color admin en Color
|
||||
country selection admin en Country Selection
|
||||
create group admin en Create Group
|
||||
crontab only (recomended) admin en crontab only (recomended)
|
||||
cyrus imap server admin en Cyrus IMAP Server
|
||||
data admin en Data
|
||||
day admin en Day
|
||||
day of week<br>(0-6, 0=sun) admin en Day of week<br>(0-6, 0=Sun)
|
||||
@ -101,6 +105,7 @@ delete the group admin en delete the group
|
||||
delete this category admin en delete this category
|
||||
delete this group admin en delete this group
|
||||
delete this user admin en delete this user
|
||||
deliver extern admin en deliver extern
|
||||
deny access to access log admin en Deny access to access log
|
||||
deny access to application registery admin en Deny access to application registery
|
||||
deny access to applications admin en Deny access to applications
|
||||
@ -126,6 +131,7 @@ do you want to delete all global subcategories ? admin en Do you want to delete
|
||||
do you want to move all global subcategories one level down ? admin en Do you want to move all global subcategories one level down ?
|
||||
edit account admin en Edit account
|
||||
edit application admin en Edit application
|
||||
edit email settings admin en edit email settings
|
||||
edit global category admin en Edit global category
|
||||
edit global category for %1 admin en Edit global category for %1
|
||||
edit group admin en Edit Group
|
||||
@ -139,6 +145,8 @@ edit this group admin en edit this group
|
||||
edit this user admin en edit this user
|
||||
edit user admin en edit user
|
||||
edit user account admin en Edit user account
|
||||
email account active admin en email account active
|
||||
email address admin en email address
|
||||
enable debug-messages admin en Enable debug-messages
|
||||
enabled - hidden from navbar admin en Enabled - Hidden from navbar
|
||||
enabled - popup window admin en Enabled - Popup Window
|
||||
@ -174,6 +182,9 @@ find and register all application hooks admin en Find and Register all Applicati
|
||||
for the times above admin en for the times above
|
||||
for the times below (empty values count as '*', all empty = every minute) admin en for the times below (empty values count as '*', all empty = every minute)
|
||||
force selectbox admin en Force Selectbox
|
||||
forward also to admin en forward also to
|
||||
forward email's to admin en forward email's to
|
||||
forward only admin en forward only
|
||||
global categories common en Global Categories
|
||||
group ? admin en group ?
|
||||
group has been added common en Group has been added
|
||||
@ -192,6 +203,7 @@ icon admin en Icon
|
||||
idle admin en idle
|
||||
if no acl records for user or any group the user is a member of admin en If no ACL records for user or any group the user is a member of
|
||||
if using ldap, do you want to manage homedirectory and loginshell attributes? admin en If using LDAP, do you want to manage homedirectory and loginshell attributes?
|
||||
in mbyte admin en in MByte
|
||||
inbound admin en inbound
|
||||
install crontab admin en Install crontab
|
||||
installed applications common en Installed applications
|
||||
@ -214,6 +226,7 @@ ldap groups context admin en LDAP groups context
|
||||
ldap host admin en LDAP host
|
||||
ldap root password admin en LDAP root password
|
||||
ldap rootdn admin en LDAP rootdn
|
||||
leave empty for no quota admin en leave empty for no quota
|
||||
leave the category untouched and return back to the list admin en leave the category untouched and return back to the list
|
||||
leave the group untouched and return back to the list admin en Leave the group untouched and return back to the list
|
||||
list config settings admin en List config settings
|
||||
@ -226,6 +239,7 @@ login shell admin en Login shell
|
||||
login time admin en Login Time
|
||||
loginid admin en LoginID
|
||||
mail settings admin en Mail settings
|
||||
main email-address admin en Main Email-Address
|
||||
main screen message admin en Main screen message
|
||||
manager admin en Manager
|
||||
maximum account id (e.g. 65535 or 1000000) admin en Maximum account id (e.g. 65535 or 1000000)
|
||||
@ -240,6 +254,7 @@ new group name admin en New group name
|
||||
new password [ leave blank for no change ] admin en New password [ Leave blank for no change ]
|
||||
next run admin en Next run
|
||||
no algorithms available admin en no algorithms available
|
||||
no alternate email address admin en no alternate email address
|
||||
no jobs in the database !!! admin en No jobs in the database !!!
|
||||
no login history exists for this user admin en No login history exists for this user
|
||||
no matches found admin en No matches found
|
||||
@ -263,15 +278,21 @@ please enter a name admin en Please enter a name
|
||||
please enter a name for that server ! admin en Please enter a name for that server !
|
||||
please run setup to become current admin en Please run setup to become current
|
||||
please select admin en Please Select
|
||||
postfix with ldap admin en Postfix with LDAP
|
||||
preferences admin en Preferences
|
||||
primary group admin en primary Group
|
||||
qmaildotmode admin en qmaildotmode
|
||||
qouta size in mbyte admin en qouta size in MByte
|
||||
quota settings admin en quota settings
|
||||
re-enter password admin en Re-enter password
|
||||
read this list of methods. admin en Read this list of methods.
|
||||
register application hooks admin en Register application hooks
|
||||
remove admin en remove
|
||||
remove all users from this group admin en Remove all users from this group
|
||||
remove all users from this group ? admin en Remove all users from this group ?
|
||||
return to admin mainscreen admin en return to admin mainscreen
|
||||
return to view account admin en Return to view account
|
||||
route all mails to admin en Route all Mails to
|
||||
run asynchronous services admin en Run Asynchronous services
|
||||
save the category admin en save the category
|
||||
save the category and return back to the list admin en save the category and return back to the list
|
||||
@ -311,6 +332,9 @@ sorry, the follow users are still a member of the group %1 admin en Sorry, the f
|
||||
sort the entries admin en sort the entries
|
||||
ssl admin en ssl
|
||||
standard admin en standard
|
||||
standard imap server admin en standard IMAP server
|
||||
standard pop3 server admin en standard POP3 server
|
||||
standard smtp-server admin en standard SMTP-Server
|
||||
start testjob! admin en Start TestJob!
|
||||
submit changes admin en Submit Changes
|
||||
submit the search string admin en Submit the search string
|
||||
@ -359,9 +383,10 @@ view sessions admin en View sessions
|
||||
view this user admin en view this user
|
||||
view user account admin en View user account
|
||||
who would you like to transfer all records owned by the deleted user to? admin en Who would you like to transfer ALL records owned by the deleted user to?
|
||||
would you like egroupware to cache the egw info array ? admin en Would you like eGroupWare to cache the egw info array ?
|
||||
would you like egroupware to cache the phpgw info array ? admin en Would you like eGroupWare to cache the phpgw info array ?
|
||||
would you like egroupware to check for a new version<br>when admins login ? admin en Would you like eGroupWare to check for a new version<br>when admins login ?
|
||||
would you like egroupware to check for new application versions when admins login ? admin en Would you like eGroupWare to check for new application versions when admins login ?
|
||||
would you like egroupware to cache the egw info array ? admin en Would you like eGroupWare to cache the egw info array ?
|
||||
would you like to automaticaly load new langfiles (at login-time) ? admin en Would you like to automatically load new langfiles (at login-time) ?
|
||||
would you like to show each application's upgrade status ? admin en Would you like to show each application's upgrade status ?
|
||||
xml-rpc admin en XML-RPC
|
||||
|
@ -312,6 +312,7 @@ last name of the user, eg. "%1" common de Familienname des Benutzers, zB. "%1"
|
||||
last page common de Letzte Seite
|
||||
lastname common de Name
|
||||
latvia common de LATVIA
|
||||
ldap-mgr common de LDAP-Manager
|
||||
lebanon common de LIBANON
|
||||
lesotho common de LESOTHO
|
||||
liberia common de LYBIEN
|
||||
|
@ -307,6 +307,7 @@ last name of the user, eg. "%1" common en last name of the user, eg. "%1"
|
||||
last page common en Last page
|
||||
lastname common en Lastname
|
||||
latvia common en LATVIA
|
||||
ldap-mgr common en LDAP-Manager
|
||||
lebanon common en LEBANON
|
||||
lesotho common en LESOTHO
|
||||
liberia common en LIBERIA
|
||||
|
Loading…
Reference in New Issue
Block a user