summaryrefslogtreecommitdiff
path: root/lib/plugins/usermanager
diff options
context:
space:
mode:
authorGerrit Uitslag <klapinklapin@gmail.com>2013-11-19 21:26:50 +0100
committerGerrit Uitslag <klapinklapin@gmail.com>2013-11-19 21:26:50 +0100
commit703aeaef1a43b07dc5497dba72c98151466396cc (patch)
tree1e18a6b3fc3c28156c2e56f8a3d515b8dd6a9cf9 /lib/plugins/usermanager
parent33c3b3817b00aa9384760813643fac0e33daaaff (diff)
parent14b3007921f7b66fc9e3621b861a3c83e7e9093c (diff)
downloadrpg-703aeaef1a43b07dc5497dba72c98151466396cc.tar.gz
rpg-703aeaef1a43b07dc5497dba72c98151466396cc.tar.bz2
Merge remote-tracking branch 'origin/master' into diff_navigation
Diffstat (limited to 'lib/plugins/usermanager')
-rw-r--r--lib/plugins/usermanager/admin.php699
-rw-r--r--lib/plugins/usermanager/lang/ar/lang.php5
-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.php23
-rw-r--r--lib/plugins/usermanager/lang/de-informal/import.txt7
-rw-r--r--lib/plugins/usermanager/lang/de-informal/lang.php21
-rw-r--r--lib/plugins/usermanager/lang/de/import.txt8
-rw-r--r--lib/plugins/usermanager/lang/de/lang.php33
-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.php24
-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.php21
-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/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/zh-tw/lang.php37
-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
46 files changed, 1107 insertions, 252 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/ar/lang.php b/lib/plugins/usermanager/lang/ar/lang.php
index d4b891320..0a751e7fb 100644
--- a/lib/plugins/usermanager/lang/ar/lang.php
+++ b/lib/plugins/usermanager/lang/ar/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Arabic language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Yaman Hokan <always.smile.yh@hotmail.com>
* @author Usama Akkad <uahello@gmail.com>
* @author uahello@gmail.com
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..47d7efea2 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>
@@ -11,6 +12,7 @@
* @author rasmus@kinnerup.com
* @author Michael Pedersen subben@gmail.com
* @author Mikael Lyngvig <mikael@lyngvig.org>
+ * @author soer9648 <soer9648@eucl.dk>
*/
$lang['menu'] = 'Brugerstyring';
$lang['noauth'] = '(Brugervalidering er ikke tilgængelig)';
@@ -33,6 +35,11 @@ $lang['search'] = 'Søg';
$lang['search_prompt'] = 'Udfør søgning';
$lang['clear'] = 'Nulstil søgefilter';
$lang['filter'] = 'Filter';
+$lang['export_all'] = 'Eksportér Alle Brugere (CSV)';
+$lang['export_filtered'] = 'Eksportér Filtrerede Brugerliste (CSV)';
+$lang['import'] = 'Importér Nye Brugere';
+$lang['line'] = 'Linje nr.';
+$lang['error'] = 'Fejlmeddelelse';
$lang['summary'] = 'Viser brugerne %1$d-%2$d ud af %3$d fundne. %4$d brugere totalt.';
$lang['nonefound'] = 'Ingen brugere fundet. %d brugere totalt.';
$lang['delete_ok'] = '%d brugere slettet';
@@ -53,3 +60,15 @@ $lang['add_ok'] = 'Bruger tilføjet uden fejl.';
$lang['add_fail'] = 'Tilføjelse af bruger mislykkedes';
$lang['notify_ok'] = 'Meddelelse sendt';
$lang['notify_fail'] = 'Meddelelse kunne ikke sendes';
+$lang['import_userlistcsv'] = 'Brugerlistefil (CSV):';
+$lang['import_header'] = 'Nyeste Import - Fejl';
+$lang['import_success_count'] = 'Bruger-Import: %d brugere fundet, %d importeret med succes.';
+$lang['import_failure_count'] = 'Bruger-Import: %d fejlet. Fejl er listet nedenfor.';
+$lang['import_error_fields'] = 'Utilstrækkelige felter, fandt %d, påkrævet 4.';
+$lang['import_error_baduserid'] = 'Bruger-id mangler';
+$lang['import_error_badname'] = 'Ugyldigt navn';
+$lang['import_error_badmail'] = 'Ugyldig email-adresse';
+$lang['import_error_upload'] = 'Import Fejlet. CSV-filen kunne ikke uploades eller er tom.';
+$lang['import_error_readfail'] = 'Import Fejlet. Ikke muligt at læse uploadede fil.';
+$lang['import_error_create'] = 'Ikke muligt at oprette brugeren';
+$lang['import_notify_fail'] = 'Notifikationsmeddelelse kunne ikke sendes for importerede bruger %s, med emailen %s.';
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 791cfa74f..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>
@@ -10,6 +11,7 @@
* @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)';
@@ -32,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';
@@ -52,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..d1b9b908b 100644
--- a/lib/plugins/usermanager/lang/de/lang.php
+++ b/lib/plugins/usermanager/lang/de/lang.php
@@ -1,6 +1,7 @@
<?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>
@@ -17,6 +18,10 @@
* @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>
+ * @author Ben Fey <benedikt.fey@beck-heun.de>
+ * @author Jonas Gröger <jonas.groeger@gmail.com>
*/
$lang['menu'] = 'Benutzerverwaltung';
$lang['noauth'] = '(Authentifizierungssystem nicht verfügbar)';
@@ -39,23 +44,41 @@ $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_userlistcsv'] = 'Benutzerliste (CSV-Datei):';
+$lang['import_header'] = 'Letzte Fehler bei Import';
+$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.';
+$lang['import_downloadfailures'] = 'Fehler als CSV-Datei zur Korrektur herunterladen';
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..ff7818e05 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,16 @@ $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_userlistcsv'] = 'Dosiero kun listo de uzantoj (CSV):';
+$lang['import_header'] = 'Plej lastaj Import-eraroj';
+$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.';
+$lang['import_downloadfailures'] = 'Elŝut-eraroj por korektado (CSV)';
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 57bfbc4a2..ccc7f9059 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'] = '항목';
@@ -26,14 +28,19 @@ $lang['delete_selected'] = '선택 삭제';
$lang['edit'] = '편집';
$lang['edit_prompt'] = '이 사용자 편집';
$lang['modify'] = '바뀜 저장';
-$lang['search'] = '찾기';
-$lang['search_prompt'] = '찾기 실행';
-$lang['clear'] = '찾기 필터 초기화';
+$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명이 삭제되었습니다';
-$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 f8b530d90..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,9 +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)';
@@ -38,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';
@@ -58,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/import.txt b/lib/plugins/usermanager/lang/zh-tw/import.txt
new file mode 100644
index 000000000..a6bb5f6ef
--- /dev/null
+++ b/lib/plugins/usermanager/lang/zh-tw/import.txt
@@ -0,0 +1,9 @@
+===== 批次匯入使用者 =====
+
+需提供 CSV 格式的使用者列表檔案(UTF-8 編碼)。
+每列至少 4 欄,依序為:帳號、姓名、電郵、群組。
+各欄以半形逗號 (,) 分隔,有半形逗號的字串可用半形雙引號 ("") 分開,引號可用反斜線 (\) 跳脫。
+重複的使用者帳號會自動忽略。
+如需要範例檔案,可用上面的「匯出使用者」取得。
+
+系統會為成功匯入的使用者產生密碼並寄信通知。
diff --git a/lib/plugins/usermanager/lang/zh-tw/lang.php b/lib/plugins/usermanager/lang/zh-tw/lang.php
index 980d974cc..3fb6b6712 100644
--- a/lib/plugins/usermanager/lang/zh-tw/lang.php
+++ b/lib/plugins/usermanager/lang/zh-tw/lang.php
@@ -1,27 +1,34 @@
<?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
* @author Wayne San <waynesan@zerozone.tw>
* @author Li-Jiun Huang <ljhuang.tw@gmai.com>
* @author Cheng-Wei Chien <e.cwchien@gmail.com>
- * @author Danny Lin <danny0838@pchome.com.tw>
* @author Shuo-Ting Jian <shoting@gmail.com>
* @author syaoranhinata@gmail.com
* @author Ichirou Uchiki <syaoranhinata@gmail.com>
+ * @author tsangho <ou4222@gmail.com>
+ * @author Danny Lin <danny0838@gmail.com>
*/
$lang['menu'] = '帳號管理器';
+
+// custom language strings for the plugin
$lang['noauth'] = '(帳號認證尚未開放)';
$lang['nosupport'] = '(尚不支援帳號管理)';
+
$lang['badauth'] = '錯誤的認證機制';
+
$lang['user_id'] = '帳號';
$lang['user_pass'] = '密碼';
$lang['user_name'] = '名稱';
$lang['user_mail'] = '電郵';
$lang['user_groups'] = '群組';
+
$lang['field'] = '欄位';
$lang['value'] = '設定值';
$lang['add'] = '增加';
@@ -34,6 +41,12 @@ $lang['search'] = '搜尋';
$lang['search_prompt'] = '開始搜尋';
$lang['clear'] = '重設篩選條件';
$lang['filter'] = '篩選條件 (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 個帳號';
@@ -41,10 +54,13 @@ $lang['delete_fail'] = '%d 個帳號無法刪除。';
$lang['update_ok'] = '已更新該帳號';
$lang['update_fail'] = '無法更新該帳號';
$lang['update_exists'] = '無法變更帳號名稱 (%s) ,因為有同名帳號存在。其他修改則已套用。';
+
$lang['start'] = '開始';
$lang['prev'] = '上一頁';
$lang['next'] = '下一頁';
$lang['last'] = '最後一頁';
+
+// added after 2006-03-09 release
$lang['edit_usermissing'] = '找不到選取的帳號,可能已被刪除或改為其他名稱。';
$lang['user_notify'] = '通知使用者';
$lang['note_notify'] = '通知信只會在指定使用者新密碼時寄送。';
@@ -54,3 +70,18 @@ $lang['add_ok'] = '已新增使用者';
$lang['add_fail'] = '無法新增使用者';
$lang['notify_ok'] = '通知信已寄出';
$lang['notify_fail'] = '通知信無法寄出';
+
+// import & errors
+$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'] = '使用者帳號遺失';
+$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/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 */