summaryrefslogtreecommitdiff
path: root/lib/plugins/usermanager
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2013-10-28 20:22:05 +0100
committerAndreas Gohr <andi@splitbrain.org>2013-10-28 20:22:05 +0100
commit23a363f01514464eb2238ac09ec7723d03d57ecb (patch)
tree42c7dcff8c5b0e506a25d08ee5583ed2a24e8602 /lib/plugins/usermanager
parent25e48e54df60b3df6efa365daceb3a8966c8f427 (diff)
parent75cf672f10a71f7dee6d50eb70b742689838bc36 (diff)
downloadrpg-23a363f01514464eb2238ac09ec7723d03d57ecb.tar.gz
rpg-23a363f01514464eb2238ac09ec7723d03d57ecb.tar.bz2
Merge branch 'master' into stable
* master: (413 commits) release preparation fixed strict violation in ACL plugin Fix issues from teams:i18n:translation-check in localizations ensure locale is set back to the original value skip FS#2867 test if \s doesn't match \xA0 after attempting to change the locale unittests for auth_loadACL translation update allow charset for SSO to be configured FS#2148 Mailer: avoid overlong headers in content ids FS#2868 translation update translation update replace \s, \S with [ \t], [^ \t] in regexs used with acls translation update translation update translation update translation update Fix handling of the legacy subscription action name remove obsolete opera handling and session closing remove no longer used ajax.php fix proxy CONNECT where HTTP 1.1 answer is given ...
Diffstat (limited to 'lib/plugins/usermanager')
-rw-r--r--lib/plugins/usermanager/admin.php699
-rw-r--r--lib/plugins/usermanager/lang/cs/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/cs/lang.php23
-rw-r--r--lib/plugins/usermanager/lang/da/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/de-informal/import.txt7
-rw-r--r--lib/plugins/usermanager/lang/de-informal/lang.php22
-rw-r--r--lib/plugins/usermanager/lang/de/import.txt8
-rw-r--r--lib/plugins/usermanager/lang/de/lang.php30
-rw-r--r--lib/plugins/usermanager/lang/el/lang.php8
-rw-r--r--lib/plugins/usermanager/lang/en/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/en/lang.php21
-rw-r--r--lib/plugins/usermanager/lang/eo/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/eo/lang.php21
-rw-r--r--lib/plugins/usermanager/lang/es/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/fa/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/fr/import.txt11
-rw-r--r--lib/plugins/usermanager/lang/fr/lang.php22
-rw-r--r--lib/plugins/usermanager/lang/he/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/hu/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/hu/lang.php33
-rw-r--r--lib/plugins/usermanager/lang/it/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/ja/import.txt10
-rw-r--r--lib/plugins/usermanager/lang/ja/lang.php24
-rw-r--r--lib/plugins/usermanager/lang/ko/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/ko/lang.php36
-rw-r--r--lib/plugins/usermanager/lang/ne/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/nl/import.txt8
-rw-r--r--lib/plugins/usermanager/lang/nl/lang.php25
-rw-r--r--lib/plugins/usermanager/lang/pt-br/lang.php20
-rw-r--r--lib/plugins/usermanager/lang/pt/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/pt/lang.php17
-rw-r--r--lib/plugins/usermanager/lang/ru/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/ru/lang.php22
-rw-r--r--lib/plugins/usermanager/lang/sk/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/sk/lang.php23
-rw-r--r--lib/plugins/usermanager/lang/sl/lang.php17
-rw-r--r--lib/plugins/usermanager/lang/sv/lang.php22
-rw-r--r--lib/plugins/usermanager/lang/tr/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/uk/lang.php4
-rw-r--r--lib/plugins/usermanager/lang/zh-tw/lang.php9
-rw-r--r--lib/plugins/usermanager/lang/zh/import.txt7
-rw-r--r--lib/plugins/usermanager/lang/zh/lang.php24
-rw-r--r--lib/plugins/usermanager/plugin.info.txt2
-rw-r--r--lib/plugins/usermanager/style.css13
44 files changed, 1045 insertions, 250 deletions
diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php
index 445836a50..c4d71cb22 100644
--- a/lib/plugins/usermanager/admin.php
+++ b/lib/plugins/usermanager/admin.php
@@ -21,58 +21,65 @@ if(!defined('DOKU_PLUGIN_IMAGES')) define('DOKU_PLUGIN_IMAGES',DOKU_BASE.'lib/pl
*/
class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
- var $_auth = null; // auth object
- var $_user_total = 0; // number of registered users
- var $_filter = array(); // user selection filter(s)
- var $_start = 0; // index of first user to be displayed
- var $_last = 0; // index of the last user to be displayed
- var $_pagesize = 20; // number of users to list on one page
- var $_edit_user = ''; // set to user selected for editing
- var $_edit_userdata = array();
- var $_disabled = ''; // if disabled set to explanatory string
+ protected $_auth = null; // auth object
+ protected $_user_total = 0; // number of registered users
+ protected $_filter = array(); // user selection filter(s)
+ protected $_start = 0; // index of first user to be displayed
+ protected $_last = 0; // index of the last user to be displayed
+ protected $_pagesize = 20; // number of users to list on one page
+ protected $_edit_user = ''; // set to user selected for editing
+ protected $_edit_userdata = array();
+ protected $_disabled = ''; // if disabled set to explanatory string
+ protected $_import_failures = array();
/**
* Constructor
*/
- function admin_plugin_usermanager(){
+ public function admin_plugin_usermanager(){
+ /** @var DokuWiki_Auth_Plugin $auth */
global $auth;
$this->setupLocale();
if (!isset($auth)) {
- $this->disabled = $this->lang['noauth'];
+ $this->_disabled = $this->lang['noauth'];
} else if (!$auth->canDo('getUsers')) {
- $this->disabled = $this->lang['nosupport'];
+ $this->_disabled = $this->lang['nosupport'];
} else {
- // we're good to go
- $this->_auth = & $auth;
+ // we're good to go
+ $this->_auth = & $auth;
}
+
+ // attempt to retrieve any import failures from the session
+ if ($_SESSION['import_failures']){
+ $this->_import_failures = $_SESSION['import_failures'];
+ }
}
/**
- * return prompt for admin menu
- */
- function getMenuText($language) {
+ * Return prompt for admin menu
+ */
+ public function getMenuText($language) {
if (!is_null($this->_auth))
return parent::getMenuText($language);
- return $this->getLang('menu').' '.$this->disabled;
+ return $this->getLang('menu').' '.$this->_disabled;
}
/**
* return sort order for position in admin menu
*/
- function getMenuSort() {
+ public function getMenuSort() {
return 2;
}
/**
- * handle user request
+ * Handle user request
*/
- function handle() {
+ public function handle() {
global $INPUT;
if (is_null($this->_auth)) return false;
@@ -89,36 +96,40 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
}
if ($cmd != "search") {
- $this->_start = $INPUT->int('start', 0);
- $this->_filter = $this->_retrieveFilter();
+ $this->_start = $INPUT->int('start', 0);
+ $this->_filter = $this->_retrieveFilter();
}
switch($cmd){
- case "add" : $this->_addUser(); break;
- case "delete" : $this->_deleteUser(); break;
- case "modify" : $this->_modifyUser(); break;
- case "edit" : $this->_editUser($param); break;
- case "search" : $this->_setFilter($param);
- $this->_start = 0;
- break;
+ case "add" : $this->_addUser(); break;
+ case "delete" : $this->_deleteUser(); break;
+ case "modify" : $this->_modifyUser(); break;
+ case "edit" : $this->_editUser($param); break;
+ case "search" : $this->_setFilter($param);
+ $this->_start = 0;
+ break;
+ case "export" : $this->_export(); break;
+ case "import" : $this->_import(); break;
+ case "importfails" : $this->_downloadImportFailures(); break;
}
$this->_user_total = $this->_auth->canDo('getUserCount') ? $this->_auth->getUserCount($this->_filter) : -1;
// page handling
switch($cmd){
- case 'start' : $this->_start = 0; break;
- case 'prev' : $this->_start -= $this->_pagesize; break;
- case 'next' : $this->_start += $this->_pagesize; break;
- case 'last' : $this->_start = $this->_user_total; break;
+ case 'start' : $this->_start = 0; break;
+ case 'prev' : $this->_start -= $this->_pagesize; break;
+ case 'next' : $this->_start += $this->_pagesize; break;
+ case 'last' : $this->_start = $this->_user_total; break;
}
$this->_validatePagination();
+ return true;
}
/**
- * output appropriate html
+ * Output appropriate html
*/
- function html() {
+ public function html() {
global $ID;
if(is_null($this->_auth)) {
@@ -127,12 +138,12 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
}
$user_list = $this->_auth->retrieveUsers($this->_start, $this->_pagesize, $this->_filter);
- $users = array_keys($user_list);
$page_buttons = $this->_pagination();
$delete_disable = $this->_auth->canDo('delUser') ? '' : 'disabled="disabled"';
$editable = $this->_auth->canDo('UserMod');
+ $export_label = empty($this->_filter) ? $this->lang['export_all'] : $this->lang['export_filtered'];
print $this->locale_xhtml('intro');
print $this->locale_xhtml('list');
@@ -141,9 +152,14 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
ptln("<div class=\"level2\">");
if ($this->_user_total > 0) {
- ptln("<p>".sprintf($this->lang['summary'],$this->_start+1,$this->_last,$this->_user_total,$this->_auth->getUserCount())."</p>");
+ ptln("<p>".sprintf($this->lang['summary'],$this->_start+1,$this->_last,$this->_user_total,$this->_auth->getUserCount())."</p>");
} else {
- ptln("<p>".sprintf($this->lang['nonefound'],$this->_auth->getUserCount())."</p>");
+ if($this->_user_total < 0) {
+ $allUserTotal = 0;
+ } else {
+ $allUserTotal = $this->_auth->getUserCount();
+ }
+ ptln("<p>".sprintf($this->lang['nonefound'], $allUserTotal)."</p>");
}
ptln("<form action=\"".wl($ID)."\" method=\"post\">");
formSecurityToken();
@@ -164,25 +180,31 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
ptln(" </thead>");
if ($this->_user_total) {
- ptln(" <tbody>");
- foreach ($user_list as $user => $userinfo) {
- extract($userinfo);
- $groups = join(', ',$grps);
- ptln(" <tr class=\"user_info\">");
- ptln(" <td class=\"centeralign\"><input type=\"checkbox\" name=\"delete[".$user."]\" ".$delete_disable." /></td>");
- if ($editable) {
- ptln(" <td><a href=\"".wl($ID,array('fn[edit]['.hsc($user).']' => 1,
- 'do' => 'admin',
- 'page' => 'usermanager',
- 'sectok' => getSecurityToken())).
- "\" title=\"".$this->lang['edit_prompt']."\">".hsc($user)."</a></td>");
- } else {
- ptln(" <td>".hsc($user)."</td>");
+ ptln(" <tbody>");
+ foreach ($user_list as $user => $userinfo) {
+ extract($userinfo);
+ /**
+ * @var string $name
+ * @var string $pass
+ * @var string $mail
+ * @var array $grps
+ */
+ $groups = join(', ',$grps);
+ ptln(" <tr class=\"user_info\">");
+ ptln(" <td class=\"centeralign\"><input type=\"checkbox\" name=\"delete[".$user."]\" ".$delete_disable." /></td>");
+ if ($editable) {
+ ptln(" <td><a href=\"".wl($ID,array('fn[edit]['.hsc($user).']' => 1,
+ 'do' => 'admin',
+ 'page' => 'usermanager',
+ 'sectok' => getSecurityToken())).
+ "\" title=\"".$this->lang['edit_prompt']."\">".hsc($user)."</a></td>");
+ } else {
+ ptln(" <td>".hsc($user)."</td>");
+ }
+ ptln(" <td>".hsc($name)."</td><td>".hsc($mail)."</td><td>".hsc($groups)."</td>");
+ ptln(" </tr>");
}
- ptln(" <td>".hsc($name)."</td><td>".hsc($mail)."</td><td>".hsc($groups)."</td>");
- ptln(" </tr>");
- }
- ptln(" </tbody>");
+ ptln(" </tbody>");
}
ptln(" <tbody>");
@@ -196,7 +218,10 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
ptln(" <input type=\"submit\" name=\"fn[next]\" ".$page_buttons['next']." class=\"button\" value=\"".$this->lang['next']."\" />");
ptln(" <input type=\"submit\" name=\"fn[last]\" ".$page_buttons['last']." class=\"button\" value=\"".$this->lang['last']."\" />");
ptln(" </span>");
- ptln(" <input type=\"submit\" name=\"fn[search][clear]\" class=\"button\" value=\"".$this->lang['clear']."\" />");
+ if (!empty($this->_filter)) {
+ ptln(" <input type=\"submit\" name=\"fn[search][clear]\" class=\"button\" value=\"".$this->lang['clear']."\" />");
+ }
+ ptln(" <input type=\"submit\" name=\"fn[export]\" class=\"button\" value=\"".$export_label."\" />");
ptln(" <input type=\"hidden\" name=\"do\" value=\"admin\" />");
ptln(" <input type=\"hidden\" name=\"page\" value=\"usermanager\" />");
@@ -213,34 +238,43 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$style = $this->_edit_user ? " class=\"edit_user\"" : "";
if ($this->_auth->canDo('addUser')) {
- ptln("<div".$style.">");
- print $this->locale_xhtml('add');
- ptln(" <div class=\"level2\">");
+ ptln("<div".$style.">");
+ print $this->locale_xhtml('add');
+ ptln(" <div class=\"level2\">");
- $this->_htmlUserForm('add',null,array(),4);
+ $this->_htmlUserForm('add',null,array(),4);
- ptln(" </div>");
- ptln("</div>");
+ ptln(" </div>");
+ ptln("</div>");
}
if($this->_edit_user && $this->_auth->canDo('UserMod')){
- ptln("<div".$style." id=\"scroll__here\">");
- print $this->locale_xhtml('edit');
- ptln(" <div class=\"level2\">");
+ ptln("<div".$style." id=\"scroll__here\">");
+ print $this->locale_xhtml('edit');
+ ptln(" <div class=\"level2\">");
- $this->_htmlUserForm('modify',$this->_edit_user,$this->_edit_userdata,4);
+ $this->_htmlUserForm('modify',$this->_edit_user,$this->_edit_userdata,4);
- ptln(" </div>");
- ptln("</div>");
+ ptln(" </div>");
+ ptln("</div>");
+ }
+
+ if ($this->_auth->canDo('addUser')) {
+ $this->_htmlImportForm();
}
ptln("</div>");
+ return true;
}
-
/**
- * @todo disable fields which the backend can't change
+ * Display form to add or modify a user
+ *
+ * @param string $cmd 'add' or 'modify'
+ * @param string $user id of user
+ * @param array $userdata array with name, mail, pass and grps
+ * @param int $indent
*/
- function _htmlUserForm($cmd,$user='',$userdata=array(),$indent=0) {
+ protected function _htmlUserForm($cmd,$user='',$userdata=array(),$indent=0) {
global $conf;
global $ID;
@@ -248,10 +282,10 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$notes = array();
if ($user) {
- extract($userdata);
- if (!empty($grps)) $groups = join(',',$grps);
+ extract($userdata);
+ if (!empty($grps)) $groups = join(',',$grps);
} else {
- $notes[] = sprintf($this->lang['note_group'],$conf['defaultgroup']);
+ $notes[] = sprintf($this->lang['note_group'],$conf['defaultgroup']);
}
ptln("<form action=\"".wl($ID)."\" method=\"post\">",$indent);
@@ -270,12 +304,14 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$this->_htmlInputField($cmd."_usergroups","usergroups",$this->lang["user_groups"],$groups,$this->_auth->canDo("modGroups"),$indent+6);
if ($this->_auth->canDo("modPass")) {
- $notes[] = $this->lang['note_pass'];
- if ($user) {
- $notes[] = $this->lang['note_notify'];
- }
+ if ($cmd == 'add') {
+ $notes[] = $this->lang['note_pass'];
+ }
+ if ($user) {
+ $notes[] = $this->lang['note_notify'];
+ }
- ptln("<tr><td><label for=\"".$cmd."_usernotify\" >".$this->lang["user_notify"].": </label></td><td><input type=\"checkbox\" id=\"".$cmd."_usernotify\" name=\"usernotify\" value=\"1\" /></td></tr>", $indent);
+ ptln("<tr><td><label for=\"".$cmd."_usernotify\" >".$this->lang["user_notify"].": </label></td><td><input type=\"checkbox\" id=\"".$cmd."_usernotify\" name=\"usernotify\" value=\"1\" /></td></tr>", $indent);
}
ptln(" </tbody>",$indent);
@@ -296,27 +332,43 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
ptln(" </tr>",$indent);
ptln(" </tbody>",$indent);
ptln(" </table>",$indent);
- ptln(" </div>",$indent);
-
- foreach ($notes as $note)
- ptln("<div class=\"fn\">".$note."</div>",$indent);
+ if ($notes) {
+ ptln(" <ul class=\"notes\">");
+ foreach ($notes as $note) {
+ ptln(" <li><span class=\"li\">".$note."</span></li>",$indent);
+ }
+ ptln(" </ul>");
+ }
+ ptln(" </div>",$indent);
ptln("</form>",$indent);
}
- function _htmlInputField($id, $name, $label, $value, $cando, $indent=0) {
+ /**
+ * Prints a inputfield
+ *
+ * @param string $id
+ * @param string $name
+ * @param string $label
+ * @param string $value
+ * @param bool $cando whether auth backend is capable to do this action
+ * @param int $indent
+ */
+ protected function _htmlInputField($id, $name, $label, $value, $cando, $indent=0) {
$class = $cando ? '' : ' class="disabled"';
echo str_pad('',$indent);
if($name == 'userpass'){
$fieldtype = 'password';
$autocomp = 'autocomplete="off"';
+ }elseif($name == 'usermail'){
+ $fieldtype = 'email';
+ $autocomp = '';
}else{
$fieldtype = 'text';
$autocomp = '';
}
-
echo "<tr $class>";
echo "<td><label for=\"$id\" >$label: </label></td>";
echo "<td>";
@@ -330,21 +382,95 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
echo "</tr>";
}
- function _htmlFilter($key) {
+ /**
+ * Returns htmlescaped filter value
+ *
+ * @param string $key name of search field
+ * @return string html escaped value
+ */
+ protected function _htmlFilter($key) {
if (empty($this->_filter)) return '';
return (isset($this->_filter[$key]) ? hsc($this->_filter[$key]) : '');
}
- function _htmlFilterSettings($indent=0) {
+ /**
+ * Print hidden inputs with the current filter values
+ *
+ * @param int $indent
+ */
+ protected function _htmlFilterSettings($indent=0) {
ptln("<input type=\"hidden\" name=\"start\" value=\"".$this->_start."\" />",$indent);
foreach ($this->_filter as $key => $filter) {
- ptln("<input type=\"hidden\" name=\"filter[".$key."]\" value=\"".hsc($filter)."\" />",$indent);
+ ptln("<input type=\"hidden\" name=\"filter[".$key."]\" value=\"".hsc($filter)."\" />",$indent);
}
}
- function _addUser(){
+ /**
+ * Print import form and summary of previous import
+ *
+ * @param int $indent
+ */
+ protected function _htmlImportForm($indent=0) {
+ global $ID;
+
+ $failure_download_link = wl($ID,array('do'=>'admin','page'=>'usermanager','fn[importfails]'=>1));
+
+ ptln('<div class="level2 import_users">',$indent);
+ print $this->locale_xhtml('import');
+ ptln(' <form action="'.wl($ID).'" method="post" enctype="multipart/form-data">',$indent);
+ formSecurityToken();
+ ptln(' <label>'.$this->lang['import_userlistcsv'].'<input type="file" name="import" /></label>',$indent);
+ ptln(' <input type="submit" name="fn[import]" value="'.$this->lang['import'].'" />',$indent);
+ ptln(' <input type="hidden" name="do" value="admin" />',$indent);
+ ptln(' <input type="hidden" name="page" value="usermanager" />',$indent);
+
+ $this->_htmlFilterSettings($indent+4);
+ ptln(' </form>',$indent);
+ ptln('</div>');
+
+ // list failures from the previous import
+ if ($this->_import_failures) {
+ $digits = strlen(count($this->_import_failures));
+ ptln('<div class="level3 import_failures">',$indent);
+ ptln(' <h3>'.$this->lang['import_header'].'</h3>');
+ ptln(' <table class="import_failures">',$indent);
+ ptln(' <thead>',$indent);
+ ptln(' <tr>',$indent);
+ ptln(' <th class="line">'.$this->lang['line'].'</th>',$indent);
+ ptln(' <th class="error">'.$this->lang['error'].'</th>',$indent);
+ ptln(' <th class="userid">'.$this->lang['user_id'].'</th>',$indent);
+ ptln(' <th class="username">'.$this->lang['user_name'].'</th>',$indent);
+ ptln(' <th class="usermail">'.$this->lang['user_mail'].'</th>',$indent);
+ ptln(' <th class="usergroups">'.$this->lang['user_groups'].'</th>',$indent);
+ ptln(' </tr>',$indent);
+ ptln(' </thead>',$indent);
+ ptln(' <tbody>',$indent);
+ foreach ($this->_import_failures as $line => $failure) {
+ ptln(' <tr>',$indent);
+ ptln(' <td class="lineno"> '.sprintf('%0'.$digits.'d',$line).' </td>',$indent);
+ ptln(' <td class="error">' .$failure['error'].' </td>', $indent);
+ ptln(' <td class="field userid"> '.hsc($failure['user'][0]).' </td>',$indent);
+ ptln(' <td class="field username"> '.hsc($failure['user'][2]).' </td>',$indent);
+ ptln(' <td class="field usermail"> '.hsc($failure['user'][3]).' </td>',$indent);
+ ptln(' <td class="field usergroups"> '.hsc($failure['user'][4]).' </td>',$indent);
+ ptln(' </tr>',$indent);
+ }
+ ptln(' </tbody>',$indent);
+ ptln(' </table>',$indent);
+ ptln(' <p><a href="'.$failure_download_link.'">'.$this->lang['import_downloadfailures'].'</a></p>');
+ ptln('</div>');
+ }
+
+ }
+
+ /**
+ * Add an user to auth backend
+ *
+ * @return bool whether succesful
+ */
+ protected function _addUser(){
global $INPUT;
if (!checkSecurityToken()) return false;
if (!$this->_auth->canDo('addUser')) return false;
@@ -353,61 +479,63 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
if (empty($user)) return false;
if ($this->_auth->canDo('modPass')){
- if (empty($pass)){
- if($INPUT->has('usernotify')){
- $pass = auth_pwgen($user);
- } else {
- msg($this->lang['add_fail'], -1);
- return false;
+ if (empty($pass)){
+ if($INPUT->has('usernotify')){
+ $pass = auth_pwgen($user);
+ } else {
+ msg($this->lang['add_fail'], -1);
+ return false;
+ }
}
- }
} else {
- if (!empty($pass)){
- msg($this->lang['add_fail'], -1);
- return false;
- }
+ if (!empty($pass)){
+ msg($this->lang['add_fail'], -1);
+ return false;
+ }
}
if ($this->_auth->canDo('modName')){
- if (empty($name)){
- msg($this->lang['add_fail'], -1);
- return false;
- }
+ if (empty($name)){
+ msg($this->lang['add_fail'], -1);
+ return false;
+ }
} else {
- if (!empty($name)){
- return false;
- }
+ if (!empty($name)){
+ return false;
+ }
}
if ($this->_auth->canDo('modMail')){
- if (empty($mail)){
- msg($this->lang['add_fail'], -1);
- return false;
- }
+ if (empty($mail)){
+ msg($this->lang['add_fail'], -1);
+ return false;
+ }
} else {
- if (!empty($mail)){
- return false;
- }
+ if (!empty($mail)){
+ return false;
+ }
}
if ($ok = $this->_auth->triggerUserMod('create', array($user,$pass,$name,$mail,$grps))) {
- msg($this->lang['add_ok'], 1);
+ msg($this->lang['add_ok'], 1);
- if ($INPUT->has('usernotify') && $pass) {
- $this->_notifyUser($user,$pass);
- }
+ if ($INPUT->has('usernotify') && $pass) {
+ $this->_notifyUser($user,$pass);
+ }
} else {
- msg($this->lang['add_fail'], -1);
+ msg($this->lang['add_fail'], -1);
}
return $ok;
}
/**
- * Delete user
+ * Delete user from auth backend
+ *
+ * @return bool whether succesful
*/
- function _deleteUser(){
+ protected function _deleteUser(){
global $conf, $INPUT;
if (!checkSecurityToken()) return false;
@@ -424,12 +552,12 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$count = $this->_auth->triggerUserMod('delete', array($selected));
if ($count == count($selected)) {
- $text = str_replace('%d', $count, $this->lang['delete_ok']);
- msg("$text.", 1);
+ $text = str_replace('%d', $count, $this->lang['delete_ok']);
+ msg("$text.", 1);
} else {
- $part1 = str_replace('%d', $count, $this->lang['delete_ok']);
- $part2 = str_replace('%d', (count($selected)-$count), $this->lang['delete_fail']);
- msg("$part1, $part2",-1);
+ $part1 = str_replace('%d', $count, $this->lang['delete_ok']);
+ $part2 = str_replace('%d', (count($selected)-$count), $this->lang['delete_fail']);
+ msg("$part1, $part2",-1);
}
// invalidate all sessions
@@ -440,18 +568,20 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
/**
* Edit user (a user has been selected for editing)
+ *
+ * @param string $param id of the user
+ * @return bool whether succesful
*/
- function _editUser($param) {
+ protected function _editUser($param) {
if (!checkSecurityToken()) return false;
if (!$this->_auth->canDo('UserMod')) return false;
-
- $user = cleanID(preg_replace('/.*:/','',$param));
+ $user = $this->_auth->cleanUser(preg_replace('/.*[:\/]/','',$param));
$userdata = $this->_auth->getUserData($user);
// no user found?
if (!$userdata) {
- msg($this->lang['edit_usermissing'],-1);
- return false;
+ msg($this->lang['edit_usermissing'],-1);
+ return false;
}
$this->_edit_user = $user;
@@ -461,16 +591,18 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
}
/**
- * Modify user (modified user data has been recieved)
+ * Modify user in the auth backend (modified user data has been recieved)
+ *
+ * @return bool whether succesful
*/
- function _modifyUser(){
+ protected function _modifyUser(){
global $conf, $INPUT;
if (!checkSecurityToken()) return false;
if (!$this->_auth->canDo('UserMod')) return false;
// get currently valid user data
- $olduser = cleanID(preg_replace('/.*:/','',$INPUT->str('userid_old')));
+ $olduser = $this->_auth->cleanUser(preg_replace('/.*[:\/]/','',$INPUT->str('userid_old')));
$oldinfo = $this->_auth->getUserData($olduser);
// get new user data subject to change
@@ -480,18 +612,18 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$changes = array();
if ($newuser != $olduser) {
- if (!$this->_auth->canDo('modLogin')) { // sanity check, shouldn't be possible
- msg($this->lang['update_fail'],-1);
- return false;
- }
+ if (!$this->_auth->canDo('modLogin')) { // sanity check, shouldn't be possible
+ msg($this->lang['update_fail'],-1);
+ return false;
+ }
- // check if $newuser already exists
- if ($this->_auth->getUserData($newuser)) {
- msg(sprintf($this->lang['update_exists'],$newuser),-1);
- $re_edit = true;
- } else {
- $changes['user'] = $newuser;
- }
+ // check if $newuser already exists
+ if ($this->_auth->getUserData($newuser)) {
+ msg(sprintf($this->lang['update_exists'],$newuser),-1);
+ $re_edit = true;
+ } else {
+ $changes['user'] = $newuser;
+ }
}
// generate password if left empty and notification is on
@@ -509,18 +641,18 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$changes['grps'] = $newgrps;
if ($ok = $this->_auth->triggerUserMod('modify', array($olduser, $changes))) {
- msg($this->lang['update_ok'],1);
+ msg($this->lang['update_ok'],1);
- if ($INPUT->has('usernotify') && $newpass) {
- $notify = empty($changes['user']) ? $olduser : $newuser;
- $this->_notifyUser($notify,$newpass);
- }
+ if ($INPUT->has('usernotify') && $newpass) {
+ $notify = empty($changes['user']) ? $olduser : $newuser;
+ $this->_notifyUser($notify,$newpass);
+ }
- // invalidate all sessions
- io_saveFile($conf['cachedir'].'/sessionpurge',time());
+ // invalidate all sessions
+ io_saveFile($conf['cachedir'].'/sessionpurge',time());
} else {
- msg($this->lang['update_fail'],-1);
+ msg($this->lang['update_fail'],-1);
}
if (!empty($re_edit)) {
@@ -531,25 +663,36 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
}
/**
- * send password change notification email
+ * Send password change notification email
+ *
+ * @param string $user id of user
+ * @param string $password plain text
+ * @param bool $status_alert whether status alert should be shown
+ * @return bool whether succesful
*/
- function _notifyUser($user, $password) {
+ protected function _notifyUser($user, $password, $status_alert=true) {
if ($sent = auth_sendPassword($user,$password)) {
- msg($this->lang['notify_ok'], 1);
+ if ($status_alert) {
+ msg($this->lang['notify_ok'], 1);
+ }
} else {
- msg($this->lang['notify_fail'], -1);
+ if ($status_alert) {
+ msg($this->lang['notify_fail'], -1);
+ }
}
return $sent;
}
/**
- * retrieve & clean user data from the form
+ * Retrieve & clean user data from the form
*
+ * @param bool $clean whether the cleanUser method of the authentication backend is applied
* @return array (user, password, full name, email, array(groups))
*/
- function _retrieveUser($clean=true) {
+ protected function _retrieveUser($clean=true) {
+ /** @var DokuWiki_Auth_Plugin $auth */
global $auth;
global $INPUT;
@@ -568,21 +711,31 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
return $user;
}
- function _setFilter($op) {
+ /**
+ * Set the filter with the current search terms or clear the filter
+ *
+ * @param string $op 'new' or 'clear'
+ */
+ protected function _setFilter($op) {
$this->_filter = array();
if ($op == 'new') {
- list($user,$pass,$name,$mail,$grps) = $this->_retrieveUser(false);
+ list($user,$pass,$name,$mail,$grps) = $this->_retrieveUser(false);
- if (!empty($user)) $this->_filter['user'] = $user;
- if (!empty($name)) $this->_filter['name'] = $name;
- if (!empty($mail)) $this->_filter['mail'] = $mail;
- if (!empty($grps)) $this->_filter['grps'] = join('|',$grps);
+ if (!empty($user)) $this->_filter['user'] = $user;
+ if (!empty($name)) $this->_filter['name'] = $name;
+ if (!empty($mail)) $this->_filter['mail'] = $mail;
+ if (!empty($grps)) $this->_filter['grps'] = join('|',$grps);
}
}
- function _retrieveFilter() {
+ /**
+ * Get the current search terms
+ *
+ * @return array
+ */
+ protected function _retrieveFilter() {
global $INPUT;
$t_filter = $INPUT->arr('filter');
@@ -598,32 +751,226 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
return $filter;
}
- function _validatePagination() {
+ /**
+ * Validate and improve the pagination values
+ */
+ protected function _validatePagination() {
if ($this->_start >= $this->_user_total) {
- $this->_start = $this->_user_total - $this->_pagesize;
+ $this->_start = $this->_user_total - $this->_pagesize;
}
if ($this->_start < 0) $this->_start = 0;
$this->_last = min($this->_user_total, $this->_start + $this->_pagesize);
}
- /*
- * return an array of strings to enable/disable pagination buttons
+ /**
+ * Return an array of strings to enable/disable pagination buttons
+ *
+ * @return array with enable/disable attributes
*/
- function _pagination() {
+ protected function _pagination() {
$disabled = 'disabled="disabled"';
$buttons['start'] = $buttons['prev'] = ($this->_start == 0) ? $disabled : '';
if ($this->_user_total == -1) {
- $buttons['last'] = $disabled;
- $buttons['next'] = '';
+ $buttons['last'] = $disabled;
+ $buttons['next'] = '';
} else {
- $buttons['last'] = $buttons['next'] = (($this->_start + $this->_pagesize) >= $this->_user_total) ? $disabled : '';
+ $buttons['last'] = $buttons['next'] = (($this->_start + $this->_pagesize) >= $this->_user_total) ? $disabled : '';
}
return $buttons;
}
+
+ /**
+ * Export a list of users in csv format using the current filter criteria
+ */
+ protected function _export() {
+ // list of users for export - based on current filter criteria
+ $user_list = $this->_auth->retrieveUsers(0, 0, $this->_filter);
+ $column_headings = array(
+ $this->lang["user_id"],
+ $this->lang["user_name"],
+ $this->lang["user_mail"],
+ $this->lang["user_groups"]
+ );
+
+ // ==============================================================================================
+ // GENERATE OUTPUT
+ // normal headers for downloading...
+ header('Content-type: text/csv;charset=utf-8');
+ header('Content-Disposition: attachment; filename="wikiusers.csv"');
+# // for debugging assistance, send as text plain to the browser
+# header('Content-type: text/plain;charset=utf-8');
+
+ // output the csv
+ $fd = fopen('php://output','w');
+ fputcsv($fd, $column_headings);
+ foreach ($user_list as $user => $info) {
+ $line = array($user, $info['name'], $info['mail'], join(',',$info['grps']));
+ fputcsv($fd, $line);
+ }
+ fclose($fd);
+ die;
+ }
+
+ /**
+ * Import a file of users in csv format
+ *
+ * csv file should have 4 columns, user_id, full name, email, groups (comma separated)
+ *
+ * @return bool whether succesful
+ */
+ protected function _import() {
+ // check we are allowed to add users
+ if (!checkSecurityToken()) return false;
+ if (!$this->_auth->canDo('addUser')) return false;
+
+ // check file uploaded ok.
+ if (empty($_FILES['import']['size']) || !empty($FILES['import']['error']) && is_uploaded_file($FILES['import']['tmp_name'])) {
+ msg($this->lang['import_error_upload'],-1);
+ return false;
+ }
+ // retrieve users from the file
+ $this->_import_failures = array();
+ $import_success_count = 0;
+ $import_fail_count = 0;
+ $line = 0;
+ $fd = fopen($_FILES['import']['tmp_name'],'r');
+ if ($fd) {
+ while($csv = fgets($fd)){
+ if (!utf8_check($csv)) {
+ $csv = utf8_encode($csv);
+ }
+ $raw = str_getcsv($csv);
+ $error = ''; // clean out any errors from the previous line
+ // data checks...
+ if (1 == ++$line) {
+ if ($raw[0] == 'user_id' || $raw[0] == $this->lang['user_id']) continue; // skip headers
+ }
+ if (count($raw) < 4) { // need at least four fields
+ $import_fail_count++;
+ $error = sprintf($this->lang['import_error_fields'], count($raw));
+ $this->_import_failures[$line] = array('error' => $error, 'user' => $raw, 'orig' => $csv);
+ continue;
+ }
+ array_splice($raw,1,0,auth_pwgen()); // splice in a generated password
+ $clean = $this->_cleanImportUser($raw, $error);
+ if ($clean && $this->_addImportUser($clean, $error)) {
+ $sent = $this->_notifyUser($clean[0],$clean[1],false);
+ if (!$sent){
+ msg(sprintf($this->lang['import_notify_fail'],$clean[0],$clean[3]),-1);
+ }
+ $import_success_count++;
+ } else {
+ $import_fail_count++;
+ $this->_import_failures[$line] = array('error' => $error, 'user' => $raw, 'orig' => $csv);
+ }
+ }
+ msg(sprintf($this->lang['import_success_count'], ($import_success_count+$import_fail_count), $import_success_count),($import_success_count ? 1 : -1));
+ if ($import_fail_count) {
+ msg(sprintf($this->lang['import_failure_count'], $import_fail_count),-1);
+ }
+ } else {
+ msg($this->lang['import_error_readfail'],-1);
+ }
+
+ // save import failures into the session
+ if (!headers_sent()) {
+ session_start();
+ $_SESSION['import_failures'] = $this->_import_failures;
+ session_write_close();
+ }
+ return true;
+ }
+
+ /**
+ * Returns cleaned user data
+ *
+ * @param array $candidate raw values of line from input file
+ * @param $error
+ * @return array|bool cleaned data or false
+ */
+ protected function _cleanImportUser($candidate, & $error){
+ global $INPUT;
+
+ // kludgy ....
+ $INPUT->set('userid', $candidate[0]);
+ $INPUT->set('userpass', $candidate[1]);
+ $INPUT->set('username', $candidate[2]);
+ $INPUT->set('usermail', $candidate[3]);
+ $INPUT->set('usergroups', $candidate[4]);
+
+ $cleaned = $this->_retrieveUser();
+ list($user,$pass,$name,$mail,$grps) = $cleaned;
+ if (empty($user)) {
+ $error = $this->lang['import_error_baduserid'];
+ return false;
+ }
+
+ // no need to check password, handled elsewhere
+
+ if (!($this->_auth->canDo('modName') xor empty($name))){
+ $error = $this->lang['import_error_badname'];
+ return false;
+ }
+
+ if ($this->_auth->canDo('modMail')) {
+ if (empty($mail) || !mail_isvalid($mail)) {
+ $error = $this->lang['import_error_badmail'];
+ return false;
+ }
+ } else {
+ if (!empty($mail)) {
+ $error = $this->lang['import_error_badmail'];
+ return false;
+ }
+ }
+
+ return $cleaned;
+ }
+
+ /**
+ * Adds imported user to auth backend
+ *
+ * Required a check of canDo('addUser') before
+ *
+ * @param array $user data of user
+ * @param string &$error reference catched error message
+ * @return bool whether succesful
+ */
+ protected function _addImportUser($user, & $error){
+ if (!$this->_auth->triggerUserMod('create', $user)) {
+ $error = $this->lang['import_error_create'];
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Downloads failures as csv file
+ */
+ protected function _downloadImportFailures(){
+
+ // ==============================================================================================
+ // GENERATE OUTPUT
+ // normal headers for downloading...
+ header('Content-type: text/csv;charset=utf-8');
+ header('Content-Disposition: attachment; filename="importfails.csv"');
+# // for debugging assistance, send as text plain to the browser
+# header('Content-type: text/plain;charset=utf-8');
+
+ // output the csv
+ $fd = fopen('php://output','w');
+ foreach ($this->_import_failures as $fail) {
+ fputs($fd, $fail['orig']);
+ }
+ fclose($fd);
+ die;
+ }
+
}
diff --git a/lib/plugins/usermanager/lang/cs/import.txt b/lib/plugins/usermanager/lang/cs/import.txt
new file mode 100644
index 000000000..c264ae185
--- /dev/null
+++ b/lib/plugins/usermanager/lang/cs/import.txt
@@ -0,0 +1,9 @@
+===== Hromadný import uživatelů =====
+
+Vyžaduje CSV soubor s uživateli obsahující alespoň 4 sloupce.
+Sloupce obsahují (v daném pořadí): user-id, celé jméno, emailovou adresu, seznam skupin.
+Položky CSV musí být odděleny čárkou (,) a řetězce umístěny v uvozovkách (""). Zpětné lomítko (\) lze použít pro escapování.
+Pro získání příkladu takového souboru využijte funkci "Exportovat uživatele" výše.
+Záznamy s duplicitním user-id budou ignorovány.
+
+Hesla budou vygenerována a zaslána e-mailem všem úspěšně importovaným uživatelům. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/cs/lang.php b/lib/plugins/usermanager/lang/cs/lang.php
index 9fc3a5e75..bbb560679 100644
--- a/lib/plugins/usermanager/lang/cs/lang.php
+++ b/lib/plugins/usermanager/lang/cs/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Czech language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Tomas Valenta <t.valenta@sh.cvut.cz>
* @author Zbynek Krivka <zbynek.krivka@seznam.cz>
* @author Bohumir Zamecnik <bohumir@zamecnik.org>
@@ -13,6 +14,7 @@
* @author Bohumir Zamecnik <bohumir.zamecnik@gmail.com>
* @author Jakub A. Těšínský (j@kub.cz)
* @author mkucera66@seznam.cz
+ * @author Zbyněk Křivka <krivka@fit.vutbr.cz>
*/
$lang['menu'] = 'Správa uživatelů';
$lang['noauth'] = '(autentizace uživatelů není k dispozici)';
@@ -35,6 +37,11 @@ $lang['search'] = 'Hledání';
$lang['search_prompt'] = 'Prohledat';
$lang['clear'] = 'Zrušit vyhledávací filtr';
$lang['filter'] = 'Filtr';
+$lang['export_all'] = 'Exportovat všechny uživatele (CSV)';
+$lang['export_filtered'] = 'Exportovat filtrovaný seznam uživatelů (CSV)';
+$lang['import'] = 'Importovat nové uživatele';
+$lang['line'] = 'Řádek č.';
+$lang['error'] = 'Chybová zpráva';
$lang['summary'] = 'Zobrazuji uživatele %1$d-%2$d z %3$d nalezených. Celkem %4$d uživatelů.';
$lang['nonefound'] = 'Žadný uživatel nenalezen. Celkem %d uživatelů.';
$lang['delete_ok'] = '%d uživatelů smazáno';
@@ -50,8 +57,18 @@ $lang['edit_usermissing'] = 'Vybraný uživatel nebyl nalezen, zadané uži
$lang['user_notify'] = 'Upozornit uživatele';
$lang['note_notify'] = 'Maily s upozorněním se budou posílat pouze, když uživatel dostává nové heslo.';
$lang['note_group'] = 'Noví uživatelé budou přidáváni do této výchozí skupiny (%s), pokud pro ně není uvedena žádná skupina.';
-$lang['note_pass'] = 'Heslo bude automaticky vygenerováno pokud je pole ponecháno prázdné a je zapnutá notifikace uživatele.';
+$lang['note_pass'] = 'Heslo bude automaticky vygenerováno, pokud je pole ponecháno prázdné a je zapnuto upozornění uživatele.';
$lang['add_ok'] = 'Uživatel úspěšně vytvořen';
$lang['add_fail'] = 'Vytvoření uživatele selhalo';
$lang['notify_ok'] = 'Odeslán mail s upozorněním';
$lang['notify_fail'] = 'Mail s upozorněním nebylo možno odeslat';
+$lang['import_success_count'] = 'Import uživatelů: nalezeno %d uživatelů, %d úspěšně importováno.';
+$lang['import_failure_count'] = 'Import uživatelů: %d selhalo. Seznam chybných je níže.';
+$lang['import_error_fields'] = 'Nedostatek položek, nalezena/y %d, požadovány 4.';
+$lang['import_error_baduserid'] = 'Chybí User-id';
+$lang['import_error_badname'] = 'Špatné jméno';
+$lang['import_error_badmail'] = 'Špatná emailová adresa';
+$lang['import_error_upload'] = 'Import selhal. CSV soubor nemohl být nahrán nebo je prázdný.';
+$lang['import_error_readfail'] = 'Import selhal. Nelze číst nahraný soubor.';
+$lang['import_error_create'] = 'Nelze vytvořit uživatele';
+$lang['import_notify_fail'] = 'Importovanému uživateli %s s emailem %s nemohlo být zasláno upozornění.';
diff --git a/lib/plugins/usermanager/lang/da/lang.php b/lib/plugins/usermanager/lang/da/lang.php
index 845457f7e..6b615b51d 100644
--- a/lib/plugins/usermanager/lang/da/lang.php
+++ b/lib/plugins/usermanager/lang/da/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Danish language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Lars Næsbye Christensen <larsnaesbye@stud.ku.dk>
* @author Kalle Sommer Nielsen <kalle@php.net>
* @author Esben Laursen <hyber@hyber.dk>
diff --git a/lib/plugins/usermanager/lang/de-informal/import.txt b/lib/plugins/usermanager/lang/de-informal/import.txt
new file mode 100644
index 000000000..6fd6b8d8c
--- /dev/null
+++ b/lib/plugins/usermanager/lang/de-informal/import.txt
@@ -0,0 +1,7 @@
+===== Massenimport von Benutzern =====
+
+Dieser Import benötigt eine CSV-Datei mit mindestens vier Spalten. Diese Spalten müssen die folgenden Daten (in dieser Reihenfolge) enthalten: Benutzername, Name, E-Mailadresse und Gruppenzugehörigkeit.
+Die CSV-Felder müssen durch ein Komma (,) getrennt sein. Die Zeichenfolgen müssen von Anführungszeichen ("") umgeben sein. Ein Backslash (\) kann zum Maskieren benutzt werden.
+Für eine Beispieldatei kannst Du die "Benutzer exportieren"-Funktion oben benutzen. Doppelte Benutzername werden ignoriert.
+
+Ein Passwort wird generiert und den einzelnen, erfolgreich importierten Benutzern zugemailt. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/de-informal/lang.php b/lib/plugins/usermanager/lang/de-informal/lang.php
index 07390854f..bea4159d0 100644
--- a/lib/plugins/usermanager/lang/de-informal/lang.php
+++ b/lib/plugins/usermanager/lang/de-informal/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * German (informal) language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Alexander Fischer <tbanus@os-forge.net>
* @author Juergen Schwarzer <jschwarzer@freenet.de>
* @author Marcel Metz <marcel_metz@gmx.de>
@@ -9,6 +10,8 @@
* @author Christian Wichmann <nospam@zone0.de>
* @author Pierre Corell <info@joomla-praxis.de>
* @author Frank Loizzi <contact@software.bacal.de>
+ * @author Volker Bödker <volker@boedker.de>
+ * @author Dennis Plöger <develop@dieploegers.de>
*/
$lang['menu'] = 'Benutzerverwaltung';
$lang['noauth'] = '(Benutzeranmeldung ist nicht verfügbar)';
@@ -31,6 +34,11 @@ $lang['search'] = 'Suchen';
$lang['search_prompt'] = 'Suche ausführen';
$lang['clear'] = 'Suchfilter zurücksetzen';
$lang['filter'] = 'Filter';
+$lang['export_all'] = 'Alle Benutzer exportieren (CSV)';
+$lang['export_filtered'] = 'Gefilterte Benutzerliste exportieren (CSV)';
+$lang['import'] = 'Neue Benutzer importieren';
+$lang['line'] = 'Zeile Nr.';
+$lang['error'] = 'Fehlermeldung';
$lang['summary'] = 'Zeige Benutzer %1$d-%2$d von %3$d gefundenen. %4$d Benutzer insgesamt.';
$lang['nonefound'] = 'Keinen Benutzer gefunden. Insgesamt %d Benutzer.';
$lang['delete_ok'] = '%d Benutzer wurden gelöscht';
@@ -51,3 +59,13 @@ $lang['add_ok'] = 'Benutzer erfolgreich hinzugefügt';
$lang['add_fail'] = 'Hinzufügen des Benutzers fehlgeschlagen';
$lang['notify_ok'] = 'Benachrichtigungsmail wurde versendet';
$lang['notify_fail'] = 'Benachrichtigungsemail konnte nicht gesendet werden';
+$lang['import_success_count'] = 'Benutzerimport: %d Benutzer gefunden, %d erfolgreich importiert.';
+$lang['import_failure_count'] = 'Benutzerimport: %d Benutzerimporte fehlgeschalten. Alle Fehler werden unten angezeigt.';
+$lang['import_error_fields'] = 'Falsche Anzahl Felder. Gefunden: %d. Benötigt: 4.';
+$lang['import_error_baduserid'] = 'Benutzername fehlt';
+$lang['import_error_badname'] = 'Ungültiger Name';
+$lang['import_error_badmail'] = 'Ungültige E-Mailadresse';
+$lang['import_error_upload'] = 'Import fehlgeschlagen. Die CSV-Datei konnte nicht hochgeladen werden oder ist leer.';
+$lang['import_error_readfail'] = 'Import fehlgeschlagen. Konnte die hochgeladene Datei nicht lesen.';
+$lang['import_error_create'] = 'Konnte den Benutzer nicht erzeugen';
+$lang['import_notify_fail'] = 'Benachrichtigung konnte an Benutzer %s (%s) nicht geschickt werden.';
diff --git a/lib/plugins/usermanager/lang/de/import.txt b/lib/plugins/usermanager/lang/de/import.txt
new file mode 100644
index 000000000..bf0d2922e
--- /dev/null
+++ b/lib/plugins/usermanager/lang/de/import.txt
@@ -0,0 +1,8 @@
+===== Benutzer-Massenimport =====
+
+Um mehrere Benutzer gleichzeitig zu importieren, wird eine CSV-Datei mit den folgenden vier Spalten benötigt (In dieser Reihenfolge): Benutzer-ID, Voller Name, E-Mail-Adresse und Gruppen.
+Die CSV-Felder sind Kommata-separiert (,) und mit Anführungszeichen eingefasst ("). Mit Backslashes (\) können Sonderzeichen maskiert werden.
+Ein Beispiel für eine gültige Datei kann mit der Benutzer-Export-Funktion oben generiert werden.
+Doppelte Benutzer-IDs werden ignoriert.
+
+Für jeden importierten Benutzer wird ein Passwort generiert und dem Benutzer per Mail zugestellt. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/de/lang.php b/lib/plugins/usermanager/lang/de/lang.php
index 0dd90cc68..21be74f71 100644
--- a/lib/plugins/usermanager/lang/de/lang.php
+++ b/lib/plugins/usermanager/lang/de/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * German language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
* @author Andreas Gohr <andi@splitbrain.org>
* @author Michael Klier <chi@chimeric.de>
@@ -17,6 +18,8 @@
* @author Paul Lachewsky <kaeptn.haddock@gmail.com>
* @author Pierre Corell <info@joomla-praxis.de>
* @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Sven <Svenluecke48@gmx.d>
+ * @author christian studer <cstuder@existenz.ch>
*/
$lang['menu'] = 'Benutzerverwaltung';
$lang['noauth'] = '(Authentifizierungssystem nicht verfügbar)';
@@ -39,23 +42,38 @@ $lang['search'] = 'Suchen';
$lang['search_prompt'] = 'Benutzerdaten filtern';
$lang['clear'] = 'Filter zurücksetzen';
$lang['filter'] = 'Filter';
+$lang['export_all'] = 'Alle User exportieren (CSV)';
+$lang['export_filtered'] = 'Exportiere gefilterte Userliste (CSV)';
+$lang['import'] = 'Importiere neue User';
+$lang['line'] = 'Zeilennr.';
+$lang['error'] = 'Fehlermeldung';
$lang['summary'] = 'Zeige Benutzer %1$d-%2$d von %3$d gefundenen. %4$d Benutzer insgesamt.';
$lang['nonefound'] = 'Keine Benutzer gefunden. %d Benutzer insgesamt.';
$lang['delete_ok'] = '%d Benutzer gelöscht';
$lang['delete_fail'] = '%d konnten nicht gelöscht werden.';
$lang['update_ok'] = 'Benutzerdaten erfolgreich geändert.';
$lang['update_fail'] = 'Änderung der Benutzerdaten fehlgeschlagen.';
-$lang['update_exists'] = 'Nutzername konnte nicht geändert werden, weil der angegebene Nutzer (%s) bereits existiert (alle anderen Änderungen wurden durchgeführt).';
+$lang['update_exists'] = 'Benutzername konnte nicht geändert werden, weil der angegebene Benutzer (%s) bereits existiert (alle anderen Änderungen wurden durchgeführt).';
$lang['start'] = 'Anfang';
$lang['prev'] = 'Vorherige';
$lang['next'] = 'Nächste';
$lang['last'] = 'Ende';
-$lang['edit_usermissing'] = 'Der ausgewählte Nutzer wurde nicht gefunden. Möglicherweise wurde er gelöscht oder der Nutzer wurde anderswo geändert.';
+$lang['edit_usermissing'] = 'Der ausgewählte Benutzer wurde nicht gefunden. Möglicherweise wurde er gelöscht oder der Benutzer wurde anderswo geändert.';
$lang['user_notify'] = 'Nutzer benachrichtigen';
$lang['note_notify'] = 'Benachrichtigungs-E-Mails werden nur versandt, wenn ein neues Passwort vergeben wurde.';
-$lang['note_group'] = 'Neue Nutzer werden der Standard-Gruppe (%s) hinzugefügt, wenn keine Gruppe angegeben wurde.';
-$lang['note_pass'] = 'Das Passwort wird automatisch generiert, wenn das entsprechende Feld leergelassen wird und die Benachrichtigung des Nutzers aktiviert ist.';
+$lang['note_group'] = 'Neue Benutzer werden der Standard-Gruppe (%s) hinzugefügt, wenn keine Gruppe angegeben wurde.';
+$lang['note_pass'] = 'Das Passwort wird automatisch generiert, wenn das entsprechende Feld leergelassen wird und die Benachrichtigung des Benutzers aktiviert ist.';
$lang['add_ok'] = 'Nutzer erfolgreich angelegt';
$lang['add_fail'] = 'Nutzer konnte nicht angelegt werden';
$lang['notify_ok'] = 'Benachrichtigungsmail wurde versandt';
$lang['notify_fail'] = 'Benachrichtigungsmail konnte nicht versandt werden';
+$lang['import_success_count'] = 'User-Import: %d User gefunden, %d erfolgreich importiert.';
+$lang['import_failure_count'] = 'User-Import: %d fehlgeschlagen. Fehlgeschlagene User sind nachfolgend aufgelistet.';
+$lang['import_error_fields'] = 'Unzureichende Anzahl an Feldern: %d gefunden, benötigt sind 4.';
+$lang['import_error_baduserid'] = 'User-Id fehlt';
+$lang['import_error_badname'] = 'Ungültiger Name';
+$lang['import_error_badmail'] = 'Ungültige E-Mail';
+$lang['import_error_upload'] = 'Import fehlgeschlagen. Die CSV-Datei konnte nicht hochgeladen werden, oder ist leer.';
+$lang['import_error_readfail'] = 'Import fehlgeschlagen. Die hochgeladene Datei konnte nicht gelesen werden.';
+$lang['import_error_create'] = 'User konnte nicht angelegt werden';
+$lang['import_notify_fail'] = 'Notifikation konnte nicht an den importierten Benutzer %s (E-Mail: %s) gesendet werden.';
diff --git a/lib/plugins/usermanager/lang/el/lang.php b/lib/plugins/usermanager/lang/el/lang.php
index da7c8fb0f..e14aa615e 100644
--- a/lib/plugins/usermanager/lang/el/lang.php
+++ b/lib/plugins/usermanager/lang/el/lang.php
@@ -1,10 +1,8 @@
<?php
+
/**
- * Greek language file
- *
- * Based on DokuWiki Version rc2007-05-24 english language file
- * Original english language file contents included for reference
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Chris Smith <chris@jalakai.co.uk>
* @author Thanos Massias <tm@thriasio.gr>
* @author Αθανάσιος Νταής <homunculus@wana.gr>
diff --git a/lib/plugins/usermanager/lang/en/import.txt b/lib/plugins/usermanager/lang/en/import.txt
new file mode 100644
index 000000000..2087083e0
--- /dev/null
+++ b/lib/plugins/usermanager/lang/en/import.txt
@@ -0,0 +1,9 @@
+===== Bulk User Import =====
+
+Requires a CSV file of users with at least four columns.
+The columns must contain, in order: user-id, full name, email address and groups.
+The CSV fields should be separated by commas (,) and strings delimited by quotation marks (""). Backslash (\) can be used for escaping.
+For an example of a suitable file, try the "Export Users" function above.
+Duplicate user-ids will be ignored.
+
+A password will be generated and emailed to each successfully imported user.
diff --git a/lib/plugins/usermanager/lang/en/lang.php b/lib/plugins/usermanager/lang/en/lang.php
index 189a1db20..f87c77afb 100644
--- a/lib/plugins/usermanager/lang/en/lang.php
+++ b/lib/plugins/usermanager/lang/en/lang.php
@@ -31,6 +31,11 @@ $lang['search'] = 'Search';
$lang['search_prompt'] = 'Perform search';
$lang['clear'] = 'Reset Search Filter';
$lang['filter'] = 'Filter';
+$lang['export_all'] = 'Export All Users (CSV)';
+$lang['export_filtered'] = 'Export Filtered User list (CSV)';
+$lang['import'] = 'Import New Users';
+$lang['line'] = 'Line no.';
+$lang['error'] = 'Error message';
$lang['summary'] = 'Displaying users %1$d-%2$d of %3$d found. %4$d users total.';
$lang['nonefound'] = 'No users found. %d users total.';
@@ -56,3 +61,19 @@ $lang['add_fail'] = 'User addition failed';
$lang['notify_ok'] = 'Notification email sent';
$lang['notify_fail'] = 'Notification email could not be sent';
+// import & errors
+$lang['import_userlistcsv'] = 'User list file (CSV): ';
+$lang['import_header'] = 'Most Recent Import - Failures';
+$lang['import_success_count'] = 'User Import: %d users found, %d imported successfully.';
+$lang['import_failure_count'] = 'User Import: %d failed. Failures are listed below.';
+$lang['import_error_fields'] = "Insufficient fields, found %d, require 4.";
+$lang['import_error_baduserid'] = "User-id missing";
+$lang['import_error_badname'] = 'Bad name';
+$lang['import_error_badmail'] = 'Bad email address';
+$lang['import_error_upload'] = 'Import Failed. The csv file could not be uploaded or is empty.';
+$lang['import_error_readfail'] = 'Import Failed. Unable to read uploaded file.';
+$lang['import_error_create'] = 'Unable to create the user';
+$lang['import_notify_fail'] = 'Notification message could not be sent for imported user, %s with email %s.';
+$lang['import_downloadfailures'] = 'Download Failures as CSV for correction';
+
+
diff --git a/lib/plugins/usermanager/lang/eo/import.txt b/lib/plugins/usermanager/lang/eo/import.txt
new file mode 100644
index 000000000..61c2c74de
--- /dev/null
+++ b/lib/plugins/usermanager/lang/eo/import.txt
@@ -0,0 +1,9 @@
+===== Amasa importo de uzantoj =====
+
+Tio ĉi postulas CSV-dosiero de uzantoj kun minimume kvar kolumnoj.
+La kolumnoj devas enhavi, laŭorde: uzant-id, kompleta nomo, retadreso kaj grupoj.
+La CSV-kampoj devos esti apartitaj per komoj (,) kaj ĉenoj devas esti limigitaj per citiloj (""). Retroklino (\) povas esti uzata por eskapo.
+Por ekzemplo de taŭga dosiero, provu la funkcion "Eksporti uzantojn" supre.
+Duobligitaj uzant-id estos preteratentataj.
+
+Pasvorto estos generata kaj retsendata al ĉiu sukecse importita uzanto. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/eo/lang.php b/lib/plugins/usermanager/lang/eo/lang.php
index 75782fe23..4c4174339 100644
--- a/lib/plugins/usermanager/lang/eo/lang.php
+++ b/lib/plugins/usermanager/lang/eo/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Esperantolanguage file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Felipe Castro <fefcas@uol.com.br>
* @author Felipe Castro <fefcas@gmail.com>
* @author Felipe Castro <fefcas (cxe) gmail (punkto) com>
@@ -10,6 +11,7 @@
* @author Erik Pedersen <erik pedersen@shaw.ca>
* @author Erik Pedersen <erik.pedersen@shaw.ca>
* @author Robert Bogenschneider <bogi@uea.org>
+ * @author Felipe Castro <fefcas@yahoo.com.br>
*/
$lang['menu'] = 'Administrado de uzantoj';
$lang['noauth'] = '(identiĝo de uzantoj ne disponeblas)';
@@ -32,6 +34,11 @@ $lang['search'] = 'Serĉi';
$lang['search_prompt'] = 'Fari serĉon';
$lang['clear'] = 'Refari serĉan filtron';
$lang['filter'] = 'Filtro';
+$lang['export_all'] = 'Eksporti ĉiujn uzantojn (CSV)';
+$lang['export_filtered'] = 'Eksporti filtritan uzant-liston (CSV)';
+$lang['import'] = 'Importi novajn uzantojn';
+$lang['line'] = 'Lini-num.';
+$lang['error'] = 'Erar-mesaĝo';
$lang['summary'] = 'Montriĝas uzantoj %1$d-%2$d el %3$d trovitaj. %4$d uzantoj entute.';
$lang['nonefound'] = 'Neniuj uzantoj troviĝas. %d uzantoj entute.';
$lang['delete_ok'] = '%d uzantoj forigiĝis';
@@ -52,3 +59,13 @@ $lang['add_ok'] = 'La uzanto sukcese aldoniĝis';
$lang['add_fail'] = 'Ne eblis aldoni uzanton';
$lang['notify_ok'] = 'Avizanta mesaĝo sendiĝis';
$lang['notify_fail'] = 'La avizanta mesaĝo ne povis esti sendita';
+$lang['import_success_count'] = 'Uzant-importo: %d uzantoj trovataj, %d sukcese importitaj.';
+$lang['import_failure_count'] = 'Uzant-importo: %d fiaskis. Fiaskoj estas sube listitaj.';
+$lang['import_error_fields'] = 'Nesufiĉe da kampoj, ni trovis %d, necesas 4.';
+$lang['import_error_baduserid'] = 'Mankas uzant-id';
+$lang['import_error_badname'] = 'Malĝusta nomo';
+$lang['import_error_badmail'] = 'Malĝusta retadreso';
+$lang['import_error_upload'] = 'Importo fiaskis. La csv-dosiero ne povis esti alŝutata aŭ ĝi estas malplena.';
+$lang['import_error_readfail'] = 'Importo fiaskis. Ne eblas legi alŝutitan dosieron.';
+$lang['import_error_create'] = 'Ne eblas krei la uzanton';
+$lang['import_notify_fail'] = 'Averta mesaĝo ne povis esti sendata al la importita uzanto %s, kun retdreso %s.';
diff --git a/lib/plugins/usermanager/lang/es/lang.php b/lib/plugins/usermanager/lang/es/lang.php
index 521191701..26e4200e4 100644
--- a/lib/plugins/usermanager/lang/es/lang.php
+++ b/lib/plugins/usermanager/lang/es/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Spanish language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Miguel Pagano <miguel.pagano>
* @author Oscar M. Lage <r0sk10@gmail.com>
* @author Gabriel Castillo <gch@pumas.ii.unam.mx>
diff --git a/lib/plugins/usermanager/lang/fa/lang.php b/lib/plugins/usermanager/lang/fa/lang.php
index 8176b776b..a6a484411 100644
--- a/lib/plugins/usermanager/lang/fa/lang.php
+++ b/lib/plugins/usermanager/lang/fa/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Persian language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author behrad eslamifar <behrad_es@yahoo.com)
* @author Mohsen Firoozmandan <info@mambolearn.com>
* @author omidmr@gmail.com
diff --git a/lib/plugins/usermanager/lang/fr/import.txt b/lib/plugins/usermanager/lang/fr/import.txt
new file mode 100644
index 000000000..191bb8370
--- /dev/null
+++ b/lib/plugins/usermanager/lang/fr/import.txt
@@ -0,0 +1,11 @@
+===== Importation d'utilisateurs par lot =====
+
+Requière un fichier [[wpfr>CSV]] d'utilisateurs avec un minimum de quatre colonnes.
+Les colonnes doivent comporter, dans l'ordre : identifiant, nom complet, adresse de courriel et groupes.
+
+Les champs doivent être séparés par une virgule (,), les chaînes sont délimitées par des guillemets (""). On peut utiliser la balance inverse (\) comme caractère d'échappement.
+Pour obtenir un exemple de fichier acceptable, essayer la fonction "Exporter les utilisateurs" ci dessus.
+
+Les identifiants dupliqués seront ignorés.
+
+L'importation générera un mot de passe et l'enverra à chaque utilisateur correctement importé. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/fr/lang.php b/lib/plugins/usermanager/lang/fr/lang.php
index 40e878bbb..7c24ef900 100644
--- a/lib/plugins/usermanager/lang/fr/lang.php
+++ b/lib/plugins/usermanager/lang/fr/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * french language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Guy Brand <gb@unistra.fr>
* @author Delassaux Julien <julien@delassaux.fr>
* @author Maurice A. LeBlanc <leblancma@cooptel.qc.ca>
@@ -20,6 +21,8 @@
* @author Olivier DUVAL <zorky00@gmail.com>
* @author Anael Mobilia <contrib@anael.eu>
* @author Bruno Veilleux <bruno.vey@gmail.com>
+ * @author Antoine Turmel <geekshadow@gmail.com>
+ * @author schplurtz <Schplurtz@laposte.net>
*/
$lang['menu'] = 'Gestion des utilisateurs';
$lang['noauth'] = '(authentification de l\'utilisateur non disponible)';
@@ -42,6 +45,11 @@ $lang['search'] = 'Rechercher';
$lang['search_prompt'] = 'Effectuer la recherche';
$lang['clear'] = 'Réinitialiser la recherche';
$lang['filter'] = 'Filtre';
+$lang['export_all'] = 'Exporter tous les utilisateurs (CSV)';
+$lang['export_filtered'] = 'Exporter la liste d\'utilisateurs filtrés (CSV)';
+$lang['import'] = 'Importer de nouveaux utilisateurs';
+$lang['line'] = 'Ligne n°';
+$lang['error'] = 'Message d\'erreur';
$lang['summary'] = 'Affichage des utilisateurs %1$d-%2$d parmi %3$d trouvés. %4$d utilisateurs au total.';
$lang['nonefound'] = 'Aucun utilisateur trouvé. %d utilisateurs au total.';
$lang['delete_ok'] = '%d utilisateurs effacés';
@@ -62,3 +70,13 @@ $lang['add_ok'] = 'Utilisateur ajouté avec succès';
$lang['add_fail'] = 'Échec de l\'ajout de l\'utilisateur';
$lang['notify_ok'] = 'Courriel de notification expédié';
$lang['notify_fail'] = 'Échec de l\'expédition du courriel de notification';
+$lang['import_success_count'] = 'Import d’utilisateurs : %d utilisateurs trouvés, %d utilisateurs importés avec succès.';
+$lang['import_failure_count'] = 'Import d\'utilisateurs : %d ont échoué. Les erreurs sont listées ci-dessous.';
+$lang['import_error_fields'] = 'Nombre de champs insuffisant, %d trouvé, 4 requis.';
+$lang['import_error_baduserid'] = 'Identifiant de l\'utilisateur manquant';
+$lang['import_error_badname'] = 'Mauvais nom';
+$lang['import_error_badmail'] = 'Mauvaise adresse e-mail';
+$lang['import_error_upload'] = 'L\'import a échoué. Le fichier csv n\'a pas pu être téléchargé ou bien il est vide.';
+$lang['import_error_readfail'] = 'L\'import a échoué. Impossible de lire le fichier téléchargé.';
+$lang['import_error_create'] = 'Impossible de créer l\'utilisateur';
+$lang['import_notify_fail'] = 'Impossible d\'expédier une notification à l\'utilisateur importé %s, adresse %s.';
diff --git a/lib/plugins/usermanager/lang/he/lang.php b/lib/plugins/usermanager/lang/he/lang.php
index 601163013..18202584e 100644
--- a/lib/plugins/usermanager/lang/he/lang.php
+++ b/lib/plugins/usermanager/lang/he/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * hebrew language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author DoK <kamberd@yahoo.com>
* @author Dotan Kamber <kamberd@yahoo.com>
* @author Moshe Kaplan <mokplan@gmail.com>
diff --git a/lib/plugins/usermanager/lang/hu/import.txt b/lib/plugins/usermanager/lang/hu/import.txt
new file mode 100644
index 000000000..5a4bc8b1c
--- /dev/null
+++ b/lib/plugins/usermanager/lang/hu/import.txt
@@ -0,0 +1,9 @@
+==== Felhasználók tömeges importálása ====
+
+Egy, legalább 4 oszlopot tartalmazó, felhasználóikat tartalmazó fájl szükséges hozzá.
+Az oszlopok kötelező tartalma, megfelelő sorrendben: felhasználói azonosító, teljes név, e-mailcím és csoportjai.
+A CSV mezőit vesszővel (,) kell elválasztani, a szövegeket idézőjelek ("") közé kell foglalni.
+Mintafájl megtekintéséhez próbáld ki a fenti, "Felhasználók exportálása" funkciót. A fordított törtvonallal (\) lehet kilépni.
+Megegyező felhasználói azonosítók esetén, nem kerülnek feldolgozásra.
+
+Minden sikeresen importált felhasználó kap egy e-mailt, amiben megtalálja a generált jelszavát. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/hu/lang.php b/lib/plugins/usermanager/lang/hu/lang.php
index 9b9740cb0..dd76bfd50 100644
--- a/lib/plugins/usermanager/lang/hu/lang.php
+++ b/lib/plugins/usermanager/lang/hu/lang.php
@@ -1,19 +1,22 @@
<?php
+
/**
- * Hungarian language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Sandor TIHANYI <stihanyi+dw@gmail.com>
* @author Siaynoq Mage <siaynoqmage@gmail.com>
* @author schilling.janos@gmail.com
* @author Szabó Dávid <szabo.david@gyumolcstarhely.hu>
* @author Sándor TIHANYI <stihanyi+dw@gmail.com>
* @author David Szabo <szabo.david@gyumolcstarhely.hu>
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ * @author Serenity87HUN <anikototh87@gmail.com>
*/
$lang['menu'] = 'Felhasználók kezelése';
$lang['noauth'] = '(A felhasználói azonosítás nem működik.)';
$lang['nosupport'] = '(A felhasználók kezelése nem támogatott.)';
$lang['badauth'] = 'nem érvényes autentikációs technika';
-$lang['user_id'] = 'Felhasználó azonosító';
+$lang['user_id'] = 'Felhasználói azonosító';
$lang['user_pass'] = 'Jelszó';
$lang['user_name'] = 'Név';
$lang['user_mail'] = 'E-mail';
@@ -30,8 +33,13 @@ $lang['search'] = 'Keresés';
$lang['search_prompt'] = 'Keresés';
$lang['clear'] = 'Keresési szűrés törlése';
$lang['filter'] = 'Szűrés';
-$lang['summary'] = '%1$d-%2$d. felhasználókat mutatom a(z) %3$d megtalált felhasználóból. %4$d felhasználó van összesen.';
-$lang['nonefound'] = 'Nem találtam ilyen felhasználót. %d felhasználó van összesen.';
+$lang['export_all'] = 'Összes felhasználó exportálása (CSV)';
+$lang['export_filtered'] = 'Kiválasztott felhasználók exportálása (CSV)';
+$lang['import'] = 'Új felhasználók importálása';
+$lang['line'] = 'Sor száma';
+$lang['error'] = 'Hibaüzenet';
+$lang['summary'] = '%1$d-%2$d. felhasználók megjelenítése a(z) %3$d megtalált felhasználóból. %4$d felhasználó van összesen.';
+$lang['nonefound'] = 'Nincs ilyen felhasználó. %d felhasználó van összesen.';
$lang['delete_ok'] = '%d felhasználó törölve.';
$lang['delete_fail'] = '%d felhasználót nem sikerült törölni.';
$lang['update_ok'] = 'A felhasználó adatait sikeresen elmentettem.';
@@ -45,8 +53,21 @@ $lang['edit_usermissing'] = 'A kiválasztott felhasználót nem találom, a
$lang['user_notify'] = 'Felhasználó értesítése';
$lang['note_notify'] = 'Csak akkor küld értesítő e-mailt, ha a felhasználó új jelszót kapott.';
$lang['note_group'] = 'Ha nincs csoport meghatározva, az új felhasználó az alapértelmezett csoportba (%s) kerül.';
-$lang['note_pass'] = 'Ha a baloldali mező üres, és a felhasználó értesítés aktív, akkor generált jelszó lesz.';
+$lang['note_pass'] = 'Ha a baloldali mező üres és a felhasználó értesítés aktív, akkor a jelszót a rendszer generálja.';
$lang['add_ok'] = 'A felhasználó sikeresen hozzáadva.';
$lang['add_fail'] = 'A felhasználó hozzáadása nem sikerült.';
$lang['notify_ok'] = 'Értesítő levél elküldve.';
$lang['notify_fail'] = 'Nem sikerült az értesítő levelet elküldeni.';
+$lang['import_userlistcsv'] = 'Felhasználók listája fájl (CSV)';
+$lang['import_header'] = 'Legutóbbi importálás - Hibák';
+$lang['import_success_count'] = 'Felhasználók importálása: %d felhasználót találtunk, ebből %d sikeresen importálva.';
+$lang['import_failure_count'] = 'Felhasználók importálása: %d sikertelen. A sikertelenség okait lejjebb találod.';
+$lang['import_error_fields'] = 'Túl kevés mezőt adtál meg, %d darabot találtunk, legalább 4-re van szükség.';
+$lang['import_error_baduserid'] = 'Felhasználói azonosító hiányzik';
+$lang['import_error_badname'] = 'Nem megfelelő név';
+$lang['import_error_badmail'] = 'Nem megfelelő e-mailcím';
+$lang['import_error_upload'] = 'Sikertelen importálás. A csv fájl nem feltölthető vagy üres.';
+$lang['import_error_readfail'] = 'Sikertelen importálás. A feltöltött fájl nem olvasható.';
+$lang['import_error_create'] = 'Ez a felhasználó nem hozható létre';
+$lang['import_notify_fail'] = 'Az értesítő e-mail nem küldhető el az alábbi importált felhasználónak: %s e-mailcíme: %s.';
+$lang['import_downloadfailures'] = 'Töltsd le a hibákat tartalmazó fájlt CSV formátumban, hogy ki tudd javítani a hibákat';
diff --git a/lib/plugins/usermanager/lang/it/lang.php b/lib/plugins/usermanager/lang/it/lang.php
index 0222ff1e4..dfacc6545 100644
--- a/lib/plugins/usermanager/lang/it/lang.php
+++ b/lib/plugins/usermanager/lang/it/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Italian language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Chris Smith <chris@jalakai.co.uk>
* @author Silvia Sargentoni <polinnia@tin.it>
* @author Pietro Battiston toobaz@email.it
diff --git a/lib/plugins/usermanager/lang/ja/import.txt b/lib/plugins/usermanager/lang/ja/import.txt
new file mode 100644
index 000000000..d4f7d08bf
--- /dev/null
+++ b/lib/plugins/usermanager/lang/ja/import.txt
@@ -0,0 +1,10 @@
+===== 一括ユーザーインポート =====
+
+少なくとも4列のユーザーCSVファイルが必要です。
+列の順序:ユーザーID、氏名、電子メールアドレス、グループ。
+CSVフィールドはカンマ(,)区切り、文字列は引用符("")区切りです。
+エスケープにバックスラッシュ(\)を使用できます。
+適切なファイル例は、上記の"エクスポートユーザー"機能で試して下さい。
+重複するユーザーIDは無視されます。
+
+正常にインポートされたユーザー毎に、パスワードを作成し、電子メールで送付します。 \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/ja/lang.php b/lib/plugins/usermanager/lang/ja/lang.php
index 1510d1eb0..0830416f3 100644
--- a/lib/plugins/usermanager/lang/ja/lang.php
+++ b/lib/plugins/usermanager/lang/ja/lang.php
@@ -1,6 +1,8 @@
<?php
+
/**
- * japanese language file
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Yuji Takenaka <webmaster@davilin.com>
* @author Chris Smith <chris@jalakai.co.uk>
* @author Ikuo Obataya <i.obataya@gmail.com>
@@ -8,6 +10,8 @@
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
* @author Taisuke Shimamoto <dentostar@gmail.com>
* @author Satoshi Sahara <sahara.satoshi@gmail.com>
+ * @author Hideaki SAWADA <sawadakun@live.jp>
+ * @author Hideaki SAWADA <chuno@live.jp>
*/
$lang['menu'] = 'ユーザー管理';
$lang['noauth'] = '(ユーザー認証が無効です)';
@@ -30,6 +34,11 @@ $lang['search'] = '検索';
$lang['search_prompt'] = '検索を実行';
$lang['clear'] = '検索フィルターをリセット';
$lang['filter'] = 'フィルター';
+$lang['export_all'] = '全ユーザーのエクスポート(CSV)';
+$lang['export_filtered'] = '抽出したユーザー一覧のエクスポート(CSV)';
+$lang['import'] = '新規ユーザーのインポート';
+$lang['line'] = '行番号';
+$lang['error'] = 'エラーメッセージ';
$lang['summary'] = 'ユーザー %1$d-%2$d / %3$d, 総ユーザー数 %4$d';
$lang['nonefound'] = 'ユーザーが見つかりません, 総ユーザー数 %d';
$lang['delete_ok'] = '%d ユーザーが削除されました';
@@ -50,3 +59,16 @@ $lang['add_ok'] = 'ユーザーを登録しました';
$lang['add_fail'] = 'ユーザーの登録に失敗しました';
$lang['notify_ok'] = '通知メールを送信しました';
$lang['notify_fail'] = '通知メールを送信できませんでした';
+$lang['import_userlistcsv'] = 'ユーザー一覧ファイル(CSV):';
+$lang['import_header'] = '最新インポート - 失敗';
+$lang['import_success_count'] = 'ユーザーインポート:ユーザーが%d件あり、%d件正常にインポートされました。';
+$lang['import_failure_count'] = 'ユーザーインポート:%d件が失敗しました。失敗は次のとおりです。';
+$lang['import_error_fields'] = '列の不足(4列必要)が%d件ありました。';
+$lang['import_error_baduserid'] = '欠落したユーザーID';
+$lang['import_error_badname'] = '不正な氏名';
+$lang['import_error_badmail'] = '不正な電子メールアドレス';
+$lang['import_error_upload'] = 'インポートが失敗しました。CSVファイルをアップロードできなかったか、ファイルが空です。';
+$lang['import_error_readfail'] = 'インポートが失敗しました。アップロードされたファイルが読込できません。';
+$lang['import_error_create'] = 'ユーザーが作成できません。';
+$lang['import_notify_fail'] = '通知メッセージがインポートされたユーザー(%s)・電子メールアドレス(%s)に送信できませんでした。';
+$lang['import_downloadfailures'] = '修正用に失敗を CSVファイルとしてダウンロードする。';
diff --git a/lib/plugins/usermanager/lang/ko/import.txt b/lib/plugins/usermanager/lang/ko/import.txt
new file mode 100644
index 000000000..44fe392d0
--- /dev/null
+++ b/lib/plugins/usermanager/lang/ko/import.txt
@@ -0,0 +1,9 @@
+===== 대량 사용자 가져오기 =====
+
+적어도 열 네 개가 있는 사용자의 CSV 파일이 필요합니다.
+열은 다음과 같이 포함해야 합니다: 사용자 id, 실명, 이메일 주소와 그룹.
+CSV 필드는 인용 부호("")로 쉼표(,)와 구분된 문자열로 구분해야 합니다. 백슬래시(\)는 탈출에 사용할 수 있습니다.
+적절한 파일의 예를 들어, 위의 "사용자 목록 내보내기"를 시도하세요.
+중복된 사용자 id는 무시됩니다.
+
+비밀번호는 생성되고 각 성공적으로 가져온 사용자에게 이메일로 보내집니다. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/ko/lang.php b/lib/plugins/usermanager/lang/ko/lang.php
index f8c400d19..1905fadc2 100644
--- a/lib/plugins/usermanager/lang/ko/lang.php
+++ b/lib/plugins/usermanager/lang/ko/lang.php
@@ -1,21 +1,23 @@
<?php
+
/**
- * Korean language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author jk Lee
* @author dongnak@gmail.com
* @author Song Younghwan <purluno@gmail.com>
* @author Seung-Chul Yoo <dryoo@live.com>
* @author erial2@gmail.com
* @author Myeongjin <aranet100@gmail.com>
+ * @author Gerrit Uitslag <klapinklapin@gmail.com>
*/
$lang['menu'] = '사용자 관리자';
$lang['noauth'] = '(사용자 인증이 불가능합니다)';
$lang['nosupport'] = '(사용자 관리가 지원되지 않습니다)';
-$lang['badauth'] = '인증 메카니즘이 잘못되었습니다';
+$lang['badauth'] = '인증 메커니즘이 잘못되었습니다';
$lang['user_id'] = '사용자';
$lang['user_pass'] = '비밀번호';
-$lang['user_name'] = '실제 이름';
+$lang['user_name'] = '실명';
$lang['user_mail'] = '이메일 ';
$lang['user_groups'] = '그룹';
$lang['field'] = '항목';
@@ -23,17 +25,22 @@ $lang['value'] = '값';
$lang['add'] = '추가';
$lang['delete'] = '삭제';
$lang['delete_selected'] = '선택 삭제';
-$lang['edit'] = '수정';
-$lang['edit_prompt'] = '이 사용자 수정';
+$lang['edit'] = '편집';
+$lang['edit_prompt'] = '이 사용자 편집';
$lang['modify'] = '바뀜 저장';
$lang['search'] = '찾기';
$lang['search_prompt'] = '찾기 실행';
-$lang['clear'] = '찾기 필터 초기화';
+$lang['clear'] = '찾기 필터 재설정';
$lang['filter'] = '필터';
+$lang['export_all'] = '모든 사용자 목록 내보내기 (CSV)';
+$lang['export_filtered'] = '필터된 사용자 목록 내보내기 (CSV)';
+$lang['import'] = '새 사용자 목록 가져오기';
+$lang['line'] = '줄 번호';
+$lang['error'] = '오류 메시지';
$lang['summary'] = '찾은 사용자 %3$d 중 %1$d-%2$d을(를) 봅니다. 전체 사용자는 %4$d명입니다.';
$lang['nonefound'] = '찾은 사용자가 없습니다. 전체 사용자는 %d명입니다.';
$lang['delete_ok'] = '사용자 %d명이 삭제되었습니다';
-$lang['delete_fail'] = '사용자 %d명의 삭제가 실패했습니다.';
+$lang['delete_fail'] = '사용자 %d명을 삭제하는 데 실패했습니다.';
$lang['update_ok'] = '사용자 정보를 성공적으로 바꾸었습니다';
$lang['update_fail'] = '사용자 정보를 바꾸는 데 실패했습니다';
$lang['update_exists'] = '사용자 이름을 바꾸는 데 실패했습니다. 사용자 이름(%s)이 이미 존재합니다. (다른 항목의 바뀜은 적용됩니다.)';
@@ -50,3 +57,16 @@ $lang['add_ok'] = '사용자를 성공적으로 추가했습니
$lang['add_fail'] = '사용자 추가를 실패했습니다';
$lang['notify_ok'] = '알림 이메일을 성공적으로 보냈습니다';
$lang['notify_fail'] = '알림 이메일을 보낼 수 없습니다';
+$lang['import_userlistcsv'] = '사용자 목록 파일 (CSV):';
+$lang['import_header'] = '가장 최근 가져오기 - 실패';
+$lang['import_success_count'] = '사용자 가져오기: 사용자 %d명을 찾았고, %d명을 성공적으로 가져왔습니다.';
+$lang['import_failure_count'] = '사용자 가져오기: %d명을 가져오지 못했습니다. 실패는 아래에 나타나 있습니다.';
+$lang['import_error_fields'] = '충분하지 않은 필드로, %d개를 찾았고, 4개가 필요합니다.';
+$lang['import_error_baduserid'] = '사용자 id 없음';
+$lang['import_error_badname'] = '잘못된 이름';
+$lang['import_error_badmail'] = '잘못된 이메일 주소';
+$lang['import_error_upload'] = '가져오기를 실패했습니다. csv 파일을 올릴 수 없거나 비어 있습니다.';
+$lang['import_error_readfail'] = '가져오기를 실패했습니다. 올린 파일을 읽을 수 없습니다.';
+$lang['import_error_create'] = '사용자를 만들 수 없습니다.';
+$lang['import_notify_fail'] = '알림 메시지를 가져온 %2$s (이메일: %1$s ) 사용자에게 보낼 수 없습니다.';
+$lang['import_downloadfailures'] = '교정을 위한 CSV로 다운로드 실패';
diff --git a/lib/plugins/usermanager/lang/ne/lang.php b/lib/plugins/usermanager/lang/ne/lang.php
index f68ed2074..9a44d19ce 100644
--- a/lib/plugins/usermanager/lang/ne/lang.php
+++ b/lib/plugins/usermanager/lang/ne/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Nepali language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Saroj Kumar Dhakal <lotusnagarkot@gmail.com>
* @author SarojKumar Dhakal <lotusnagarkot@yahoo.com>
* @author Saroj Dhakal<lotusnagarkot@yahoo.com>
diff --git a/lib/plugins/usermanager/lang/nl/import.txt b/lib/plugins/usermanager/lang/nl/import.txt
new file mode 100644
index 000000000..267891098
--- /dev/null
+++ b/lib/plugins/usermanager/lang/nl/import.txt
@@ -0,0 +1,8 @@
+===== Massa-import van gebruikers =====
+
+Hiervoor is een CSV-bestand nodig van de gebruikers met minstens vier kolommen. De kolommen moeten bevatten, in deze volgorde: gebruikers-id, complete naam, e-mailadres en groepen.
+Het CSV-velden moeten worden gescheiden met komma's (,) en de teksten moeten worden omringd met dubbele aanhalingstekens (""). Backslash (\) kan worden gebruikt om te escapen.
+Voor een voorbeeld van een werkend bestand, probeer de "Exporteer Gebruikers" functie hierboven.
+Dubbele gebruikers-id's zullen worden genegeerd.
+
+Een wachtwoord zal worden gegenereerd en gemaild naar elke gebruiker die succesvol is geïmporteerd. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/nl/lang.php b/lib/plugins/usermanager/lang/nl/lang.php
index e960e9a14..5cebede89 100644
--- a/lib/plugins/usermanager/lang/nl/lang.php
+++ b/lib/plugins/usermanager/lang/nl/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Dutch language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Wouter Schoot <wouter@schoot.org>
* @author John de Graaff <john@de-graaff.net>
* @author Niels Schoot <niels.schoot@quintiq.com>
@@ -13,7 +14,7 @@
* @author Timon Van Overveldt <timonvo@gmail.com>
* @author Jeroen
* @author Ricardo Guijt <ricardoguijt@gmail.com>
- * @author Gerrit <klapinklapin@gmail.com>
+ * @author Gerrit Uitslag <klapinklapin@gmail.com>
*/
$lang['menu'] = 'Gebruikersmanager';
$lang['noauth'] = '(gebruikersauthenticatie niet beschikbaar)';
@@ -36,6 +37,11 @@ $lang['search'] = 'Zoek';
$lang['search_prompt'] = 'Voer zoekopdracht uit';
$lang['clear'] = 'Verwijder zoekfilter';
$lang['filter'] = 'Filter';
+$lang['export_all'] = 'Exporteer Alle Gebruikers (CSV)';
+$lang['export_filtered'] = 'Exporteer Gefilterde Gebruikers (CSV)';
+$lang['import'] = 'Importeer Nieuwe Gebruikers';
+$lang['line'] = 'Regelnummer';
+$lang['error'] = 'Foutmelding';
$lang['summary'] = 'Weergegeven gebruikers %1$d-%2$d van %3$d gevonden. %4$d gebruikers in totaal.';
$lang['nonefound'] = 'Geen gebruikers gevonden. %d gebruikers in totaal.';
$lang['delete_ok'] = '%d gebruikers verwijderd';
@@ -56,3 +62,16 @@ $lang['add_ok'] = 'Gebruiker succesvol toegevoegd';
$lang['add_fail'] = 'Gebruiker kon niet worden toegevoegd';
$lang['notify_ok'] = 'Notificatie-e-mail verzonden';
$lang['notify_fail'] = 'Notificatie-e-mail kon niet worden verzonden';
+$lang['import_userlistcsv'] = 'Gebruikerslijst (CSV-bestand):';
+$lang['import_header'] = 'Meest recente import - Gevonden fouten';
+$lang['import_success_count'] = 'Gebruikers importeren: %d gebruikers gevonden, %d geïmporteerd';
+$lang['import_failure_count'] = 'Gebruikers importeren: %d mislukt. Fouten zijn hieronder weergegeven.';
+$lang['import_error_fields'] = 'Onvoldoende velden, gevonden %d, nodig 4.';
+$lang['import_error_baduserid'] = 'Gebruikers-id mist';
+$lang['import_error_badname'] = 'Verkeerde naam';
+$lang['import_error_badmail'] = 'Verkeerd e-mailadres';
+$lang['import_error_upload'] = 'Importeren mislukt. Het CSV bestand kon niet worden geüpload of is leeg.';
+$lang['import_error_readfail'] = 'Importeren mislukt. Lezen van het geüploade bestand is mislukt.';
+$lang['import_error_create'] = 'Aanmaken van de gebruiker was niet mogelijk.';
+$lang['import_notify_fail'] = 'Notificatiebericht kon niet naar de geïmporteerde gebruiker worden verstuurd, %s met e-mail %s.';
+$lang['import_downloadfailures'] = 'Download de gevonden fouten als CSV voor correctie';
diff --git a/lib/plugins/usermanager/lang/pt-br/lang.php b/lib/plugins/usermanager/lang/pt-br/lang.php
index 637be8860..9bb37742a 100644
--- a/lib/plugins/usermanager/lang/pt-br/lang.php
+++ b/lib/plugins/usermanager/lang/pt-br/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Portuguese language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
* @author Felipe Castro <fefcas@gmail.com>
* @author Lucien Raven <lucienraven@yahoo.com.br>
@@ -17,6 +18,8 @@
* @author Isaias Masiero Filho <masiero@masiero.org>
* @author Balaco Baco <balacobaco@imap.cc>
* @author Victor Westmann <victor.westmann@gmail.com>
+ * @author Leone Lisboa Magevski <leone1983@gmail.com>
+ * @author Dário Estevão <darioems@gmail.com>
*/
$lang['menu'] = 'Gerenciamento de Usuários';
$lang['noauth'] = '(o gerenciamento de usuários não está disponível)';
@@ -39,6 +42,10 @@ $lang['search'] = 'Pesquisar';
$lang['search_prompt'] = 'Executar a pesquisa';
$lang['clear'] = 'Limpar o filtro de pesquisa';
$lang['filter'] = 'Filtro';
+$lang['export_all'] = 'Exportar Todos Usuários (CSV)';
+$lang['import'] = 'Importar Novos Usuários';
+$lang['line'] = 'Linha Nº.';
+$lang['error'] = 'Mensagem de Erro';
$lang['summary'] = 'Exibindo usuários %1$d-%2$d de %3$d encontrados. %4$d usuários no total.';
$lang['nonefound'] = 'Nenhum usuário encontrado. %d usuários no total.';
$lang['delete_ok'] = '%d usuários excluídos';
@@ -59,3 +66,12 @@ $lang['add_ok'] = 'O usuário foi adicionado com sucesso';
$lang['add_fail'] = 'O usuário não foi adicionado';
$lang['notify_ok'] = 'O e-mail de notificação foi enviado';
$lang['notify_fail'] = 'Não foi possível enviar o e-mail de notificação';
+$lang['import_success_count'] = 'Importação de Usuário: %d usuário (s) encontrado (s), %d importado (s) com sucesso.';
+$lang['import_failure_count'] = 'Importação de Usuário: %d falhou. As falhas estão listadas abaixo.';
+$lang['import_error_fields'] = 'Campos insuficientes, encontrado (s) %d, necessário 4.';
+$lang['import_error_baduserid'] = 'Id do usuário não encontrado.';
+$lang['import_error_badname'] = 'Nome errado';
+$lang['import_error_badmail'] = 'Endereço de email errado';
+$lang['import_error_upload'] = 'Falha na Importação: O arquivo csv não pode ser carregado ou está vazio.';
+$lang['import_error_readfail'] = 'Falha na Importação: Habilitar para ler o arquivo a ser carregado.';
+$lang['import_error_create'] = 'Habilitar para criar o usuário.';
diff --git a/lib/plugins/usermanager/lang/pt/import.txt b/lib/plugins/usermanager/lang/pt/import.txt
new file mode 100644
index 000000000..3a604030c
--- /dev/null
+++ b/lib/plugins/usermanager/lang/pt/import.txt
@@ -0,0 +1,9 @@
+===== Importação de Utilizadores em Massa =====
+
+Requer um ficheiro CSV de utilizadores com pelo menos quatro colunas.
+As colunas têm de conter, em ordem: id de utilizador, nome completo, endereço de email e grupos.
+Os campos CSV devem ser separados por vírgulas (,) e as strings delimitadas por aspas (""). A contra-barra (\) pode ser usada para escapar.
+Para um exemplo de um ficheiro adequado, tente a função "Exportar Utilizadores" acima.
+Ids de utilizador duplicados serão ignorados.
+
+Uma senha será gerada e enviada por email a cada utilizador importado com sucesso. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/pt/lang.php b/lib/plugins/usermanager/lang/pt/lang.php
index 6d0d85e38..b59649aa1 100644
--- a/lib/plugins/usermanager/lang/pt/lang.php
+++ b/lib/plugins/usermanager/lang/pt/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Portugueselanguage file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author José Monteiro <Jose.Monteiro@DoWeDo-IT.com>
* @author Enrico Nicoletto <liverig@gmail.com>
* @author Fil <fil@meteopt.com>
@@ -29,6 +30,10 @@ $lang['search'] = 'Pesquisar';
$lang['search_prompt'] = 'Pesquisar';
$lang['clear'] = 'Limpar Filtro de Pesquisa';
$lang['filter'] = 'Filtro';
+$lang['export_all'] = 'Exportar Todos os Utilizadores (CSV)';
+$lang['export_filtered'] = 'Exportar a lista de utilizadores filtrada (CSV)';
+$lang['import'] = 'Importar Novos Utilizadores';
+$lang['error'] = 'Mensagem de erro';
$lang['summary'] = 'Apresentar utilizadores %1$d-%2$d de %3$d encontrados. %4$d inscritos.';
$lang['nonefound'] = 'Nenhum utilizador encontrado. %d inscritos.';
$lang['delete_ok'] = '%d utilizadores removidos';
@@ -49,3 +54,11 @@ $lang['add_ok'] = 'Utilizador adicionado.';
$lang['add_fail'] = 'Utilizador não adicionado.';
$lang['notify_ok'] = 'Mensagem de notificação enviada.';
$lang['notify_fail'] = 'Não foi possível enviar mensagem de notificação';
+$lang['import_success_count'] = 'Importar Utilizadores: %d utiliyadores encontrados, %d importados com sucesso.';
+$lang['import_failure_count'] = 'Importar Utilizadores: %d falharam. As falhas estão listadas abaixo.';
+$lang['import_error_fields'] = 'Campos insuficientes, encontrados %d mas requeridos 4.';
+$lang['import_error_baduserid'] = 'Falta id de utilizador';
+$lang['import_error_upload'] = 'Falhou a importação. O ficheiro csv não pôde ser importado ou está vazio.';
+$lang['import_error_readfail'] = 'Falhou a importação. Não foi possível ler o ficheiro submetido.';
+$lang['import_error_create'] = 'Não foi possível criar o utilizador.';
+$lang['import_notify_fail'] = 'A mensagem de notificação não pôde ser enviada para o utilizador importado, %s com email %s.';
diff --git a/lib/plugins/usermanager/lang/ru/import.txt b/lib/plugins/usermanager/lang/ru/import.txt
new file mode 100644
index 000000000..3a25f34ce
--- /dev/null
+++ b/lib/plugins/usermanager/lang/ru/import.txt
@@ -0,0 +1,9 @@
+===== Импорт нескольких пользователей =====
+
+Потребуется список пользователей в файле формата CSV, состоящий из 4 столбцов.
+Столбцы должны быть заполнены следующим образом: user-id, полное имя, эл. почта, группы.
+Поля CSV должны быть отделены запятой (,), а строки должны быть заключены в кавычки (""). Обратный слэш используется как прерывание.
+В качестве примера можете взять список пользователей, экспортированный через «Экспорт пользователей».
+Повторяющиеся идентификаторы user-id будут игнорироваться.
+
+Пароль доступа будет сгенерирован и отправлен по почте удачно импортированному пользователю. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/ru/lang.php b/lib/plugins/usermanager/lang/ru/lang.php
index 29cee6576..3102ac32a 100644
--- a/lib/plugins/usermanager/lang/ru/lang.php
+++ b/lib/plugins/usermanager/lang/ru/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * Russian language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Denis Simakov <akinoame1@gmail.com>
* @author Andrew Pleshakov <beotiger@mail.ru>
* @author Змей Этерийский evil_snake@eternion.ru
@@ -18,6 +18,7 @@
* @author Eugene <windy.wanderer@gmail.com>
* @author Johnny Utah <pcpa@cyberpunk.su>
* @author Ivan I. Udovichenko (sendtome@mymailbox.pp.ua)
+ * @author Pavel <ivanovtsk@mail.ru>
*/
$lang['menu'] = 'Управление пользователями';
$lang['noauth'] = '(авторизация пользователей недоступна)';
@@ -40,7 +41,12 @@ $lang['search'] = 'Поиск';
$lang['search_prompt'] = 'Искать';
$lang['clear'] = 'Сброс фильтра поиска';
$lang['filter'] = 'Фильтр';
-$lang['summary'] = 'Показаны пользователи %1$d-%2$d из %3$d найденных. Всего пользователей: %4$d.';
+$lang['export_all'] = 'Экспорт всех пользователей (CSV)';
+$lang['export_filtered'] = 'Экспорт пользователей с фильтрацией списка (CSV)';
+$lang['import'] = 'Импорт новых пользователей';
+$lang['line'] = 'Строка №';
+$lang['error'] = 'Ошибка';
+$lang['summary'] = 'Показаны пользователи %1$d–%2$d из %3$d найденных. Всего пользователей: %4$d.';
$lang['nonefound'] = 'Не найдено ни одного пользователя. Всего пользователей: %d.';
$lang['delete_ok'] = 'Удалено пользователей: %d';
$lang['delete_fail'] = 'Не удалось удалить %d.';
@@ -60,3 +66,13 @@ $lang['add_ok'] = 'Пользователь успешно доб
$lang['add_fail'] = 'Не удалось добавить пользователя';
$lang['notify_ok'] = 'Письмо с уведомлением отправлено';
$lang['notify_fail'] = 'Не удалось отправить письмо с уведомлением';
+$lang['import_success_count'] = 'Импорт пользователей: %d пользователей найдено, %d импортировано успешно.';
+$lang['import_failure_count'] = 'Импорт пользователей: %d не удалось. Список ошибок прочтите ниже.';
+$lang['import_error_fields'] = 'Не все поля заполнены. Найдено %d, а нужно 4.';
+$lang['import_error_baduserid'] = 'Отсутствует идентификатор пользователя';
+$lang['import_error_badname'] = 'Имя не годится';
+$lang['import_error_badmail'] = 'Адрес электронной почты не годится';
+$lang['import_error_upload'] = 'Импорт не удался. CSV файл не загружен или пуст.';
+$lang['import_error_readfail'] = 'Импорт не удался. Невозможно прочесть загруженный файл.';
+$lang['import_error_create'] = 'Невозможно создать пользователя';
+$lang['import_notify_fail'] = 'Оповещение не может быть отправлено импортированному пользователю %s по электронной почте %s.';
diff --git a/lib/plugins/usermanager/lang/sk/import.txt b/lib/plugins/usermanager/lang/sk/import.txt
new file mode 100644
index 000000000..91fa3e370
--- /dev/null
+++ b/lib/plugins/usermanager/lang/sk/import.txt
@@ -0,0 +1,9 @@
+===== Hromadný import používateľov =====
+
+Vyžaduje CSV súbor používateľov s minimálne 4 stĺpcami.
+Stĺpce musia obsahovať postupne: ID používateľa, meno a priezvisko, emailová adresa a skupiny.
+CVS záznamy by mali byť oddelené čiarkou (,) a reťazce uzavreté úvodzovkami (""). Znak (\) sa používa v spojení so špeciálnymi znakmi.
+Príklad vhodného súboru je možné získať funkciou "Export používateľov".
+Duplicitné ID používateľov budú ignorované.
+
+Každému úspešne importovanému používateľovi bude vygenerované heslo a zaslaný email. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/sk/lang.php b/lib/plugins/usermanager/lang/sk/lang.php
index 54ed374c6..9aadbb53a 100644
--- a/lib/plugins/usermanager/lang/sk/lang.php
+++ b/lib/plugins/usermanager/lang/sk/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Slovak language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Ondrej Végh <ov@vsieti.sk>
* @author Michal Mesko <michal.mesko@gmail.com>
* @author exusik@gmail.com
@@ -28,6 +29,11 @@ $lang['search'] = 'Hľadať';
$lang['search_prompt'] = 'Vykonať vyhľadávanie';
$lang['clear'] = 'Vynulovať vyhľadávací filter';
$lang['filter'] = 'Filter';
+$lang['export_all'] = 'Export všetkých používateľov (CSV)';
+$lang['export_filtered'] = 'Export zoznamu používateľov na základe filtra (CSV)';
+$lang['import'] = 'Import nových používateľov';
+$lang['line'] = 'Riadok č.';
+$lang['error'] = 'Chybová správa';
$lang['summary'] = 'Zobrazenie užívateľov %1$d-%2$d z %3$d nájdených. %4$d užívateľov celkom.';
$lang['nonefound'] = 'Žiadni užívatelia nenájdení. %d užívateľov celkom.';
$lang['delete_ok'] = '%d užívateľov zmazaných';
@@ -48,3 +54,16 @@ $lang['add_ok'] = 'Používateľ úspešne pridaný';
$lang['add_fail'] = 'Pridávanie užívateľa nebolo úspešné';
$lang['notify_ok'] = 'Notifikačný e-mail bol poslaný';
$lang['notify_fail'] = 'Notifikačný e-mail nemohol byť poslaný';
+$lang['import_userlistcsv'] = 'Súbor so zoznamov používateľov (CSV):';
+$lang['import_header'] = 'Chyby pri poslednom importe';
+$lang['import_success_count'] = 'Import používateľov: %d nájdených, %d úspešne importovaných.';
+$lang['import_failure_count'] = 'Import používateľov: %d neúspešných. Problámy vypísané nižšie.';
+$lang['import_error_fields'] = 'Neúplné záznamy, %d nájdené, 4 požadované.';
+$lang['import_error_baduserid'] = 'Chýba ID používateľa';
+$lang['import_error_badname'] = 'Nesprávne meno';
+$lang['import_error_badmail'] = 'Nesprávna emailová adresa';
+$lang['import_error_upload'] = 'Import neúspešný. CSV súbor nemohol byť nahraný alebo je prázdny.';
+$lang['import_error_readfail'] = 'Import neúspešný. Nie je možné prečítať nahraný súbor.';
+$lang['import_error_create'] = 'Nie je možné vytvoriť pouzívateľa';
+$lang['import_notify_fail'] = 'Správa nemohla byť zaslaná importovanému používatelovi, %s s emailom %s.';
+$lang['import_downloadfailures'] = 'Stiahnuť chyby vo formáte CSV za účelom opravy';
diff --git a/lib/plugins/usermanager/lang/sl/lang.php b/lib/plugins/usermanager/lang/sl/lang.php
index 96acfd0af..dc2de375e 100644
--- a/lib/plugins/usermanager/lang/sl/lang.php
+++ b/lib/plugins/usermanager/lang/sl/lang.php
@@ -1,11 +1,13 @@
<?php
+
/**
- * Slovenian language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Dejan Levec <webphp@gmail.com>
* @author Boštjan Seničar <senicar@gmail.com>
* @author Gregor Skumavc (grega.skumavc@gmail.com)
* @author Matej Urbančič (mateju@svn.gnome.org)
+ * @author Matej Urbančič <mateju@svn.gnome.org>
*/
$lang['menu'] = 'Upravljanje uporabnikov';
$lang['noauth'] = '(overjanje istovetnosti uporabnikov ni na voljo)';
@@ -28,6 +30,9 @@ $lang['search'] = 'Iskanje';
$lang['search_prompt'] = 'Poišči';
$lang['clear'] = 'Počisti filter iskanja';
$lang['filter'] = 'Filter';
+$lang['import'] = 'Uvozi nove uporabnike';
+$lang['line'] = 'Številka vrstice';
+$lang['error'] = 'Sporočilo napake';
$lang['summary'] = 'Izpisani so uporabniki %1$d-%2$d od skupno %3$d. Vseh uporabnikov je %4$d.';
$lang['nonefound'] = 'Ni najdenih uporabnikov. Vseh uporabnikov je %d.';
$lang['delete_ok'] = '%d uporabnikov je izbrisanih';
@@ -48,3 +53,11 @@ $lang['add_ok'] = 'Uporabnik je uspešno dodan';
$lang['add_fail'] = 'Dodajanje uporabnika je spodletelo';
$lang['notify_ok'] = 'Obvestilno sporočilo je poslano.';
$lang['notify_fail'] = 'Obvestilnega sporočila ni mogoče poslati.';
+$lang['import_error_fields'] = 'Neustrezno število polj; najdenih je %d, zahtevana pa so 4.';
+$lang['import_error_baduserid'] = 'Manjka ID uporabnika';
+$lang['import_error_badname'] = 'Napačno navedeno ime';
+$lang['import_error_badmail'] = 'Napačno naveden elektronski naslov';
+$lang['import_error_upload'] = 'Uvoz je spodletel. Datoteke CSV ni mogoče naložiti ali pa je prazna.';
+$lang['import_error_readfail'] = 'Uvoz je spodletel. Ni mogoče prebrati vsebine datoteke.';
+$lang['import_error_create'] = 'Ni mogoče ustvariti računa uporabnika';
+$lang['import_notify_fail'] = 'Obvestilnega sporočila za uvoženega uporabnika %s z elektronskim naslovom %s ni mogoče poslati.';
diff --git a/lib/plugins/usermanager/lang/sv/lang.php b/lib/plugins/usermanager/lang/sv/lang.php
index bd747927e..340886578 100644
--- a/lib/plugins/usermanager/lang/sv/lang.php
+++ b/lib/plugins/usermanager/lang/sv/lang.php
@@ -1,10 +1,11 @@
<?php
+
/**
- * Swedish language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Per Foreby <per@foreby.se>
* @author Nicklas Henriksson <nicklas[at]nihe.se>
- * @author Håkan Sandell <hakan.sandell[at]mydata.se>
+ * @author Håkan Sandell <hakan.sandell@home.se>
* @author Dennis Karlsson
* @author Tormod Otter Johansson <tormod@latast.se>
* @author emil@sys.nu
@@ -13,8 +14,9 @@
* @author Emil Lind <emil@sys.nu>
* @author Bogge Bogge <bogge@bogge.com>
* @author Peter Åström <eaustreum@gmail.com>
- * @author Håkan Sandell <hakan.sandell@home.se>
* @author mikael@mallander.net
+ * @author Smorkster Andersson smorkster@gmail.com
+ * @author Tor Härnqvist <tor.harnqvist@gmail.com>
*/
$lang['menu'] = 'Hantera användare';
$lang['noauth'] = '(användarautentisering ej tillgänlig)';
@@ -37,6 +39,10 @@ $lang['search'] = 'Sök';
$lang['search_prompt'] = 'Utför sökning';
$lang['clear'] = 'Återställ sökfilter';
$lang['filter'] = 'Filter';
+$lang['export_all'] = 'Exportera alla användare (CSV)';
+$lang['export_filtered'] = 'Exportera filtrerade användarlistningen (CSV)';
+$lang['import'] = 'Importera nya användare';
+$lang['error'] = 'Error-meddelande';
$lang['summary'] = 'Visar användare %1$d-%2$d av %3$d funna. %4$d användare totalt.';
$lang['nonefound'] = 'Inga användare hittades. %d användare totalt.';
$lang['delete_ok'] = '%d användare raderade';
@@ -57,3 +63,11 @@ $lang['add_ok'] = 'Användaren tillagd';
$lang['add_fail'] = 'Användare kunde inte läggas till';
$lang['notify_ok'] = 'E-postmeddelande skickat';
$lang['notify_fail'] = 'E-postmeddelande kunde inte skickas';
+$lang['import_success_count'] = 'Användar-import: %d användare funna, %d importerade framgångsrikt.';
+$lang['import_failure_count'] = 'Användar-import: %d misslyckades. Misslyckandena listas nedan.';
+$lang['import_error_baduserid'] = 'Användar-id saknas';
+$lang['import_error_badname'] = 'Felaktigt namn';
+$lang['import_error_badmail'] = 'Felaktig e-postadress';
+$lang['import_error_upload'] = 'Import misslyckades. Csv-filen kunde inte laddas upp eller är tom.';
+$lang['import_error_readfail'] = 'Import misslyckades. Den uppladdade filen gick inte att läsa.';
+$lang['import_error_create'] = 'Misslyckades att skapa användaren.';
diff --git a/lib/plugins/usermanager/lang/tr/lang.php b/lib/plugins/usermanager/lang/tr/lang.php
index 7ddb7dd5d..6329803a8 100644
--- a/lib/plugins/usermanager/lang/tr/lang.php
+++ b/lib/plugins/usermanager/lang/tr/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Turkish language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Aydın Coşkuner <aydinweb@gmail.com>
* @author Cihan Kahveci <kahvecicihan@gmail.com>
* @author Yavuz Selim <yavuzselim@gmail.com>
diff --git a/lib/plugins/usermanager/lang/uk/lang.php b/lib/plugins/usermanager/lang/uk/lang.php
index 027c94b44..3afb7b7d6 100644
--- a/lib/plugins/usermanager/lang/uk/lang.php
+++ b/lib/plugins/usermanager/lang/uk/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * ukrainian language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Oleksiy Voronin <ovoronin@gmail.com>
* @author serg_stetsuk@ukr.net
* @author okunia@gmail.com
diff --git a/lib/plugins/usermanager/lang/zh-tw/lang.php b/lib/plugins/usermanager/lang/zh-tw/lang.php
index 980d974cc..c7126bd1a 100644
--- a/lib/plugins/usermanager/lang/zh-tw/lang.php
+++ b/lib/plugins/usermanager/lang/zh-tw/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * English language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author chinsan <chinsan.tw@gmail.com>
* @author Li-Jiun Huang <ljhuang.tw@gmail.com>
* @author http://www.chinese-tools.com/tools/converter-simptrad.html
@@ -12,6 +13,7 @@
* @author Shuo-Ting Jian <shoting@gmail.com>
* @author syaoranhinata@gmail.com
* @author Ichirou Uchiki <syaoranhinata@gmail.com>
+ * @author tsangho <ou4222@gmail.com>
*/
$lang['menu'] = '帳號管理器';
$lang['noauth'] = '(帳號認證尚未開放)';
@@ -34,6 +36,8 @@ $lang['search'] = '搜尋';
$lang['search_prompt'] = '開始搜尋';
$lang['clear'] = '重設篩選條件';
$lang['filter'] = '篩選條件 (Filter)';
+$lang['import'] = '匯入新的用戶';
+$lang['error'] = '錯誤訊息';
$lang['summary'] = '顯示帳號 %1$d-%2$d,共 %3$d 筆符合。共有 %4$d 個帳號。';
$lang['nonefound'] = '找不到帳號。共有 %d 個帳號。';
$lang['delete_ok'] = '已刪除 %d 個帳號';
@@ -54,3 +58,4 @@ $lang['add_ok'] = '已新增使用者';
$lang['add_fail'] = '無法新增使用者';
$lang['notify_ok'] = '通知信已寄出';
$lang['notify_fail'] = '通知信無法寄出';
+$lang['import_error_readfail'] = '會入錯誤,無法讀取已經上傳的檔案';
diff --git a/lib/plugins/usermanager/lang/zh/import.txt b/lib/plugins/usermanager/lang/zh/import.txt
new file mode 100644
index 000000000..eacce5a77
--- /dev/null
+++ b/lib/plugins/usermanager/lang/zh/import.txt
@@ -0,0 +1,7 @@
+===== 批量导入用户 =====
+
+需要至少有 4 列的 CSV 格式用户列表文件。列必须按顺序包括:用户ID、全名、电子邮件地址和组。
+CSV 域需要用逗号 (,) 分隔,字符串用英文双引号 ("") 分开。反斜杠可以用来转义。
+可以尝试上面的“导入用户”功能来查看示例文件。重复的用户ID将被忽略。
+
+密码生成后会通过电子邮件发送给每个成功导入的用户。 \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/zh/lang.php b/lib/plugins/usermanager/lang/zh/lang.php
index e7a228229..25eb1a294 100644
--- a/lib/plugins/usermanager/lang/zh/lang.php
+++ b/lib/plugins/usermanager/lang/zh/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * English language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author ZDYX <zhangduyixiong@gmail.com>
* @author http://www.chinese-tools.com/tools/converter-tradsimp.html
* @author George Sheraton guxd@163.com
@@ -14,6 +15,8 @@
* @author caii, patent agent in China <zhoucaiqi@gmail.com>
* @author lainme993@gmail.com
* @author Shuo-Ting Jian <shoting@gmail.com>
+ * @author Rachel <rzhang0802@gmail.com>
+ * @author Yangyu Huang <yangyu.huang@gmail.com>
*/
$lang['menu'] = '用户管理器';
$lang['noauth'] = '(用户认证不可用)';
@@ -36,6 +39,11 @@ $lang['search'] = '搜索';
$lang['search_prompt'] = '进行搜索';
$lang['clear'] = '重置搜索过滤器';
$lang['filter'] = '过滤器';
+$lang['export_all'] = '导出所有用户(CSV)';
+$lang['export_filtered'] = '导出已筛选的用户列表(CSV)';
+$lang['import'] = '请输入新用户名';
+$lang['line'] = '行号';
+$lang['error'] = '信息错误';
$lang['summary'] = '找到 %3$d 名用户,显示其中第 %1$d 至 %2$d 位用户。数据库中共有 %4$d 名用户。';
$lang['nonefound'] = '没有找到用户。数据库中共有 %d 名用户。';
$lang['delete_ok'] = '用户 %d 已删除';
@@ -56,3 +64,15 @@ $lang['add_ok'] = '用户添加成功';
$lang['add_fail'] = '用户添加失败';
$lang['notify_ok'] = '通知邮件已发送';
$lang['notify_fail'] = '通知邮件无法发送';
+$lang['import_userlistcsv'] = '用户列表文件(CSV)';
+$lang['import_header'] = '最近一次导入 - 失败';
+$lang['import_success_count'] = '用户导入:找到了 %d 个用户,%d 个用户被成功导入。';
+$lang['import_failure_count'] = '用户导入:%d 个用户导入失败。下面列出了失败的用户。';
+$lang['import_error_fields'] = '域的数目不足,发现 %d 个,需要 4 个。';
+$lang['import_error_baduserid'] = '用户ID丢失';
+$lang['import_error_badname'] = '名称错误';
+$lang['import_error_badmail'] = '邮件地址错误';
+$lang['import_error_upload'] = '导入失败。CSV 文件无法上传或是空的。';
+$lang['import_error_readfail'] = '导入失败。无法读取上传的文件。';
+$lang['import_error_create'] = '不能创建新用户';
+$lang['import_notify_fail'] = '通知消息无法发送到导入的用户 %s,电子邮件地址是 %s。';
diff --git a/lib/plugins/usermanager/plugin.info.txt b/lib/plugins/usermanager/plugin.info.txt
index 1f8c2282b..315459122 100644
--- a/lib/plugins/usermanager/plugin.info.txt
+++ b/lib/plugins/usermanager/plugin.info.txt
@@ -3,5 +3,5 @@ author Chris Smith
email chris@jalakai.co.uk
date 2013-02-20
name User Manager
-desc Manage users
+desc Manage DokuWiki user accounts
url http://dokuwiki.org/plugin:usermanager
diff --git a/lib/plugins/usermanager/style.css b/lib/plugins/usermanager/style.css
index ff8e5d9d1..d119b195a 100644
--- a/lib/plugins/usermanager/style.css
+++ b/lib/plugins/usermanager/style.css
@@ -13,8 +13,21 @@
#user__manager table {
margin-bottom: 1em;
}
+#user__manager ul.notes {
+ padding-left: 0;
+ padding-right: 1.4em;
+}
#user__manager input.button[disabled] {
color: #ccc!important;
border-color: #ccc!important;
}
+#user__manager .import_users {
+ margin-top: 1.4em;
+}
+#user__manager .import_failures {
+ margin-top: 1.4em;
+}
+#user__manager .import_failures td.lineno {
+ text-align: center;
+}
/* IE won't understand but doesn't require it */