summaryrefslogtreecommitdiff
path: root/lib/plugins/usermanager
diff options
context:
space:
mode:
Diffstat (limited to 'lib/plugins/usermanager')
-rw-r--r--lib/plugins/usermanager/admin.php249
-rw-r--r--lib/plugins/usermanager/lang/de/lang.php20
-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.php18
-rw-r--r--lib/plugins/usermanager/lang/es/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/fr/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/it/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/nl/import.txt8
-rw-r--r--lib/plugins/usermanager/lang/nl/lang.php21
-rw-r--r--lib/plugins/usermanager/lang/ru/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/ru/lang.php20
-rw-r--r--lib/plugins/usermanager/lang/sv/lang.php13
-rw-r--r--lib/plugins/usermanager/lang/uk/lang.php4
-rw-r--r--lib/plugins/usermanager/lang/zh-tw/lang.php9
-rw-r--r--lib/plugins/usermanager/lang/zh/lang.php13
-rw-r--r--lib/plugins/usermanager/style.css9
17 files changed, 398 insertions, 27 deletions
diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php
index 3c8d38c5e..762daa6b9 100644
--- a/lib/plugins/usermanager/admin.php
+++ b/lib/plugins/usermanager/admin.php
@@ -30,6 +30,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
var $_edit_user = ''; // set to user selected for editing
var $_edit_userdata = array();
var $_disabled = ''; // if disabled set to explanatory string
+ var $_import_failures = array();
/**
* Constructor
@@ -49,6 +50,11 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$this->_auth = & $auth;
}
+
+ // attempt to retrieve any import failures from the session
+ if ($_SESSION['import_failures']){
+ $this->_import_failures = $_SESSION['import_failures'];
+ }
}
/**
@@ -101,6 +107,9 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
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;
@@ -133,6 +142,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$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');
@@ -196,7 +206,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\" />");
@@ -233,6 +246,10 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
ptln(" </div>");
ptln("</div>");
}
+
+ if ($this->_auth->canDo('addUser')) {
+ $this->_htmlImportForm();
+ }
ptln("</div>");
}
@@ -353,6 +370,59 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
}
}
+ 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>User list file (csv): <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>Most Recent Import - Failures</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.'">Download Failures as CSV for correction</a></p>');
+ ptln('</div>');
+ }
+
+ }
+
function _addUser(){
global $INPUT;
if (!checkSecurityToken()) return false;
@@ -542,12 +612,16 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
/**
* send password change notification email
*/
- function _notifyUser($user, $password) {
+ 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;
@@ -635,4 +709,171 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
return $buttons;
}
+
+ /*
+ * export a list of users in csv format using the current filter criteria
+ */
+ 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)
+ */
+ 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();
+ }
+ }
+
+ 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;
+ }
+
+ function _addImportUser($user, & $error){
+ if (!$this->_auth->triggerUserMod('create', $user)) {
+ $error = $this->lang['import_error_create'];
+ return false;
+ }
+
+ return true;
+ }
+
+ 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 $line => $fail) {
+ fputs($fd, $fail['orig']);
+ }
+ fclose($fd);
+ die;
+ }
+
}
diff --git a/lib/plugins/usermanager/lang/de/lang.php b/lib/plugins/usermanager/lang/de/lang.php
index 2b9755de8..68cdf359f 100644
--- a/lib/plugins/usermanager/lang/de/lang.php
+++ b/lib/plugins/usermanager/lang/de/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * German language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
* @author Andreas Gohr <andi@splitbrain.org>
* @author Michael Klier <chi@chimeric.de>
@@ -17,6 +18,7 @@
* @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>
*/
$lang['menu'] = 'Benutzerverwaltung';
$lang['noauth'] = '(Authentifizierungssystem nicht verfügbar)';
@@ -39,6 +41,11 @@ $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';
@@ -59,3 +66,12 @@ $lang['add_ok'] = 'Nutzer erfolgreich angelegt';
$lang['add_fail'] = 'Nutzer konnte nicht angelegt werden';
$lang['notify_ok'] = 'Benachrichtigungsmail wurde versandt';
$lang['notify_fail'] = 'Benachrichtigungsmail konnte nicht versandt werden';
+$lang['import_success_count'] = 'User-Import: %d User gefunden, %d erfolgreich importiert.';
+$lang['import_failure_count'] = 'User-Import: %d fehlgeschlagen. Fehlgeschlagene User sind nachfolgend aufgelistet.';
+$lang['import_error_fields'] = 'Unzureichende Anzahl an Feldern: %d gefunden, benötigt sind 4.';
+$lang['import_error_baduserid'] = 'User-Id fehlt';
+$lang['import_error_badname'] = 'Ungültiger Name';
+$lang['import_error_badmail'] = 'Ungültige E-Mail';
+$lang['import_error_upload'] = 'Import fehlgeschlagen. Die CSV-Datei konnte nicht hochgeladen werden, oder ist leer.';
+$lang['import_error_readfail'] = 'Import fehlgeschlagen. Die hochgeladene Datei konnte nicht gelesen werden.';
+$lang['import_error_create'] = 'User konnte nicht angelegt werden';
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..69119e196 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,16 @@ $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_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.';
+
+
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/fr/lang.php b/lib/plugins/usermanager/lang/fr/lang.php
index 40e878bbb..2ff1bd7a0 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>
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/nl/import.txt b/lib/plugins/usermanager/lang/nl/import.txt
new file mode 100644
index 000000000..69d2c2306
--- /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 omringt 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..7be10c16a 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>
@@ -14,6 +15,7 @@
* @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 +38,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 de lijst van 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 +63,13 @@ $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_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.';
diff --git a/lib/plugins/usermanager/lang/ru/import.txt b/lib/plugins/usermanager/lang/ru/import.txt
new file mode 100644
index 000000000..271a9b177
--- /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..f2029e58b 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,6 +41,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';
@@ -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/sv/lang.php b/lib/plugins/usermanager/lang/sv/lang.php
index 68f5bbc31..340886578 100644
--- a/lib/plugins/usermanager/lang/sv/lang.php
+++ b/lib/plugins/usermanager/lang/sv/lang.php
@@ -16,6 +16,7 @@
* @author Peter Åström <eaustreum@gmail.com>
* @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/uk/lang.php b/lib/plugins/usermanager/lang/uk/lang.php
index 027c94b44..3afb7b7d6 100644
--- a/lib/plugins/usermanager/lang/uk/lang.php
+++ b/lib/plugins/usermanager/lang/uk/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * ukrainian language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Oleksiy Voronin <ovoronin@gmail.com>
* @author serg_stetsuk@ukr.net
* @author okunia@gmail.com
diff --git a/lib/plugins/usermanager/lang/zh-tw/lang.php b/lib/plugins/usermanager/lang/zh-tw/lang.php
index 980d974cc..c7126bd1a 100644
--- a/lib/plugins/usermanager/lang/zh-tw/lang.php
+++ b/lib/plugins/usermanager/lang/zh-tw/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * English language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author chinsan <chinsan.tw@gmail.com>
* @author Li-Jiun Huang <ljhuang.tw@gmail.com>
* @author http://www.chinese-tools.com/tools/converter-simptrad.html
@@ -12,6 +13,7 @@
* @author Shuo-Ting Jian <shoting@gmail.com>
* @author syaoranhinata@gmail.com
* @author Ichirou Uchiki <syaoranhinata@gmail.com>
+ * @author tsangho <ou4222@gmail.com>
*/
$lang['menu'] = '帳號管理器';
$lang['noauth'] = '(帳號認證尚未開放)';
@@ -34,6 +36,8 @@ $lang['search'] = '搜尋';
$lang['search_prompt'] = '開始搜尋';
$lang['clear'] = '重設篩選條件';
$lang['filter'] = '篩選條件 (Filter)';
+$lang['import'] = '匯入新的用戶';
+$lang['error'] = '錯誤訊息';
$lang['summary'] = '顯示帳號 %1$d-%2$d,共 %3$d 筆符合。共有 %4$d 個帳號。';
$lang['nonefound'] = '找不到帳號。共有 %d 個帳號。';
$lang['delete_ok'] = '已刪除 %d 個帳號';
@@ -54,3 +58,4 @@ $lang['add_ok'] = '已新增使用者';
$lang['add_fail'] = '無法新增使用者';
$lang['notify_ok'] = '通知信已寄出';
$lang['notify_fail'] = '通知信無法寄出';
+$lang['import_error_readfail'] = '會入錯誤,無法讀取已經上傳的檔案';
diff --git a/lib/plugins/usermanager/lang/zh/lang.php b/lib/plugins/usermanager/lang/zh/lang.php
index e7a228229..2674983b2 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,7 @@
* @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>
*/
$lang['menu'] = '用户管理器';
$lang['noauth'] = '(用户认证不可用)';
@@ -36,6 +38,9 @@ $lang['search'] = '搜索';
$lang['search_prompt'] = '进行搜索';
$lang['clear'] = '重置搜索过滤器';
$lang['filter'] = '过滤器';
+$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 +61,7 @@ $lang['add_ok'] = '用户添加成功';
$lang['add_fail'] = '用户添加失败';
$lang['notify_ok'] = '通知邮件已发送';
$lang['notify_fail'] = '通知邮件无法发送';
+$lang['import_error_baduserid'] = '用户ID丢失';
+$lang['import_error_badname'] = '名称错误';
+$lang['import_error_badmail'] = '邮件地址错误';
+$lang['import_error_create'] = '不能创建新用户';
diff --git a/lib/plugins/usermanager/style.css b/lib/plugins/usermanager/style.css
index 506bd7928..2874b4f1c 100644
--- a/lib/plugins/usermanager/style.css
+++ b/lib/plugins/usermanager/style.css
@@ -21,4 +21,13 @@
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 */