diff options
36 files changed, 190 insertions, 57 deletions
diff --git a/app/Controllers/userController.php b/app/Controllers/userController.php index 7d3c010c4..b5725e6b5 100644 --- a/app/Controllers/userController.php +++ b/app/Controllers/userController.php @@ -175,12 +175,22 @@ class FreshRSS_user_Controller extends Minz_ActionController { if (Minz_Request::isPost()) { $action = Minz_Request::param('action'); - if ('delete' === $action) { - $this->deleteAction(); - } elseif ('update' === $action) { - $this->updateAction(); - } elseif ('purge' === $action) { - $this->purgeAction(); + switch ($action) { + case 'delete': + $this->deleteAction(); + break; + case 'update': + $this->updateAction(); + break; + case 'purge': + $this->purgeAction(); + break; + case 'promote': + $this->promoteAction(); + break; + case 'demote': + $this->demoteAction(); + break; } } @@ -273,7 +283,6 @@ class FreshRSS_user_Controller extends Minz_ActionController { $new_user_name = Minz_Request::param('new_user_name'); $email = Minz_Request::param('new_user_email', ''); $passwordPlain = Minz_Request::param('new_user_passwordPlain', '', true); - $new_user_language = Minz_Request::param('new_user_language', FreshRSS_Context::$user_conf->language); $tos_enabled = file_exists(join_path(DATA_PATH, 'tos.html')); $accept_tos = Minz_Request::param('accept_tos', false); @@ -299,7 +308,10 @@ class FreshRSS_user_Controller extends Minz_ActionController { ); } - $ok = self::createUser($new_user_name, $email, $passwordPlain, array('language' => $new_user_language)); + $ok = self::createUser($new_user_name, $email, $passwordPlain, array( + 'language' => Minz_Request::param('new_user_language', FreshRSS_Context::$user_conf->language), + 'is_admin' => Minz_Request::paramBoolean('new_user_is_admin'), + )); Minz_Request::_param('new_user_passwordPlain'); //Discard plain-text password ASAP $_POST['new_user_passwordPlain'] = ''; invalidateHttpCache(); @@ -516,6 +528,44 @@ class FreshRSS_user_Controller extends Minz_ActionController { Minz_Request::forward($redirect_url, true); } + public function promoteAction() { + $this->switchAdminAction(true); + } + + public function demoteAction() { + $this->switchAdminAction(false); + } + + private function switchAdminAction($isAdmin) { + if (!FreshRSS_Auth::hasAccess('admin')) { + Minz_Error::error(403); + } + + if (!Minz_Request::isPost()) { + Minz_Error::error(403); + } + + $username = Minz_Request::param('username'); + if (!FreshRSS_UserDAO::exists($username)) { + Minz_Error::error(404); + } + + if (null === $userConfig = get_user_configuration($username)) { + Minz_Error::error(500); + } + + $userConfig->_param('is_admin', $isAdmin); + + $ok = $userConfig->save(); + + if ($ok) { + Minz_Request::good(_t('feedback.user.updated', $username), array('c' => 'user', 'a' => 'manage')); + } else { + Minz_Request::bad(_t('feedback.user.updated.error', $username), + array('c' => 'user', 'a' => 'manage')); + } + } + public function detailsAction() { if (!FreshRSS_Auth::hasAccess('admin')) { Minz_Error::error(403); @@ -526,6 +576,7 @@ class FreshRSS_user_Controller extends Minz_ActionController { Minz_Error::error(404); } + $this->view->isDefaultUser = $username === FreshRSS_Context::$system_conf->default_user; $this->view->username = $username; $this->view->details = $this->retrieveUserDetails($username); } @@ -543,6 +594,7 @@ class FreshRSS_user_Controller extends Minz_ActionController { 'database_size' => $databaseDAO->size(), 'language' => $userConfiguration->language, 'mail_login' => $userConfiguration->mail_login, + 'is_admin' => $userConfiguration->is_admin, ); } } diff --git a/app/Models/Auth.php b/app/Models/Auth.php index b7fb0e6d6..3eb57a877 100644 --- a/app/Models/Auth.php +++ b/app/Models/Auth.php @@ -115,14 +115,15 @@ class FreshRSS_Auth { * @return boolean true if user has corresponding access, false else. */ public static function hasAccess($scope = 'general') { - $conf = Minz_Configuration::get('system'); - $default_user = $conf->default_user; + $systemConfiguration = Minz_Configuration::get('system'); + $userConfiguration = Minz_Configuration::get('user'); + $default_user = $systemConfiguration->default_user; $ok = self::$login_ok; switch ($scope) { case 'general': break; case 'admin': - $ok &= Minz_Session::param('currentUser') === $default_user; + $ok &= $default_user === Minz_Session::param('currentUser') || $userConfiguration->is_admin; break; default: $ok = false; diff --git a/app/i18n/cz/admin.php b/app/i18n/cz/admin.php index 18f7520a7..ebf8b1a90 100644 --- a/app/i18n/cz/admin.php +++ b/app/i18n/cz/admin.php @@ -182,6 +182,7 @@ return array( '_' => 'Aktualizace systému', ), 'user' => array( + 'admin' => 'Administrator', // TODO - Translation 'articles_and_size' => '%s článků (%s)', 'article_count' => 'Articles', // TODO - Translation 'back_to_manage' => '← Return to user list', // TODO - Translation @@ -190,6 +191,7 @@ return array( 'delete_users' => 'Delete user', // TODO - Translation 'email' => 'Email address', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation + 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Jazyk', 'list' => 'User list', // TODO - Translation 'number' => 'Zatím je vytvořen %d účet', diff --git a/app/i18n/cz/gen.php b/app/i18n/cz/gen.php index c67583f5c..d21958b9c 100644 --- a/app/i18n/cz/gen.php +++ b/app/i18n/cz/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← Zpět na seznam RSS kanálů', 'cancel' => 'Zrušit', 'create' => 'Vytvořit', + 'demote' => 'Demote', // TODO - Translation 'disable' => 'Zakázat', 'empty' => 'Vyprázdnit', 'enable' => 'Povolit', @@ -16,6 +17,7 @@ return array( 'manage' => 'Spravovat', 'mark_favorite' => 'Označit jako oblíbené', 'mark_read' => 'Označit jako přečtené', + 'promote' => 'Promote', // TODO - Translation 'purge' => 'Purge', // TODO - Translation 'remove' => 'Odstranit', 'see_website' => 'Navštívit WWW stránku', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\D\\u\\b\\e\\n', 'apr' => 'dub', + 'Apr' => '\\D\\u\\b\\e\\n', 'april' => 'Dub', 'Aug' => '\\S\\r\\p\\e\\n', 'aug' => 'srp', @@ -76,11 +78,11 @@ return array( 'last_month' => 'Minulý měsíc', 'last_week' => 'Minulý týden', 'last_year' => 'Minulý rok', - 'mar' => 'bře', 'Mar' => '\\B\\ř\\e\\z\\e\\n', + 'mar' => 'bře', 'march' => 'Bře', - 'May' => '\\K\\v\\ě\\t\\e\\n', 'may' => 'Květen', + 'May' => '\\K\\v\\ě\\t\\e\\n', 'may_' => 'Kvě', 'mon' => 'Po', 'month' => 'měsíce', diff --git a/app/i18n/de/admin.php b/app/i18n/de/admin.php index 443a9b380..058661602 100644 --- a/app/i18n/de/admin.php +++ b/app/i18n/de/admin.php @@ -182,6 +182,7 @@ return array( '_' => 'System aktualisieren', ), 'user' => array( + 'admin' => 'Administrator', // TODO - Translation 'articles_and_size' => '%s Artikel (%s)', 'article_count' => 'Articles', // TODO - Translation 'back_to_manage' => '← Return to user list', // TODO - Translation @@ -190,6 +191,7 @@ return array( 'delete_users' => 'Lösche Benutzer', 'email' => 'Email address', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation + 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Sprache', 'list' => 'User list', // TODO - Translation 'number' => 'Es wurde bis jetzt %d Account erstellt', diff --git a/app/i18n/de/gen.php b/app/i18n/de/gen.php index a0e366ab7..52b2b85a7 100644 --- a/app/i18n/de/gen.php +++ b/app/i18n/de/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← Zurück zu Ihren RSS-Feeds gehen', 'cancel' => 'Abbrechen', 'create' => 'Erstellen', + 'demote' => 'Demote', // TODO - Translation 'disable' => 'Deaktivieren', 'empty' => 'Leeren', 'enable' => 'Aktivieren', @@ -16,6 +17,7 @@ return array( 'manage' => 'Verwalten', 'mark_favorite' => 'Als Favorit markieren', 'mark_read' => 'Als gelesen markieren', + 'promote' => 'Promote', // TODO - Translation 'purge' => 'Purge', // TODO - Translation 'remove' => 'Entfernen', 'see_website' => 'Webseite ansehen', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\A\\p\\r\\i\\l', // TODO - Translation 'apr' => 'Apr', + 'Apr' => '\\A\\p\\r\\i\\l', // TODO - Translation 'april' => 'April', // TODO - Translation 'Aug' => '\\A\\u\\g\\u\\s\\t', // TODO - Translation 'aug' => 'Aug', @@ -76,11 +78,11 @@ return array( 'last_month' => 'Letzter Monat', 'last_week' => 'Letzte Woche', 'last_year' => 'Letztes Jahr', - 'mar' => 'Mär', 'Mar' => '\\M\\ä\\r\\z', + 'mar' => 'Mär', 'march' => 'März', - 'May' => '\\M\\a\\i', 'may' => 'Mai', + 'May' => '\\M\\a\\i', 'may_' => 'Mai', 'mon' => 'Mo', 'month' => 'Monat(en)', diff --git a/app/i18n/en/admin.php b/app/i18n/en/admin.php index 497a7051c..02a8a8b58 100644 --- a/app/i18n/en/admin.php +++ b/app/i18n/en/admin.php @@ -182,6 +182,7 @@ return array( '_' => 'Update system', ), 'user' => array( + 'admin' => 'Administrator', 'articles_and_size' => '%s articles (%s)', 'article_count' => 'Articles', 'back_to_manage' => '← Return to user list', @@ -190,6 +191,7 @@ return array( 'delete_users' => 'Delete user', 'email' => 'Email address', 'feed_count' => 'Feeds', + 'is_admin' => 'Is admin', 'language' => 'Language', 'list' => 'User list', 'number' => 'There is %d account created', diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index ea595b5ed..1a470668f 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← Go back to your RSS feeds', 'cancel' => 'Cancel', 'create' => 'Create', + 'demote' => 'Demote', 'disable' => 'Disable', 'empty' => 'Empty', 'enable' => 'Enable', @@ -16,6 +17,7 @@ return array( 'manage' => 'Manage', 'mark_favorite' => 'Mark as favourite', 'mark_read' => 'Mark as read', + 'promote' => 'Promote', 'purge' => 'Purge', 'remove' => 'Remove', 'see_website' => 'See website', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\A\\p\\r\\i\\l', 'apr' => 'Apr.', + 'Apr' => '\\A\\p\\r\\i\\l', 'april' => 'April', 'Aug' => '\\A\\u\\g\\u\\s\\t', 'aug' => 'Aug.', @@ -76,11 +78,11 @@ return array( 'last_month' => 'Last month', 'last_week' => 'Last week', 'last_year' => 'Last year', - 'mar' => 'Mar.', 'Mar' => '\\M\\a\\r\\c\\h', + 'mar' => 'Mar.', 'march' => 'March', - 'May' => '\\M\\a\\y', 'may' => 'May', + 'May' => '\\M\\a\\y', 'may_' => 'May', 'mon' => 'Mon', 'month' => 'months', diff --git a/app/i18n/es/admin.php b/app/i18n/es/admin.php index a8dcac86e..d036f2362 100755 --- a/app/i18n/es/admin.php +++ b/app/i18n/es/admin.php @@ -182,6 +182,7 @@ return array( '_' => 'Actualizar sistema', ), 'user' => array( + 'admin' => 'Administrator', // TODO - Translation 'articles_and_size' => '%s articles (%s)', // TODO - Translation 'article_count' => 'Articles', // TODO - Translation 'back_to_manage' => '← Return to user list', // TODO - Translation @@ -190,6 +191,7 @@ return array( 'delete_users' => 'Delete user', // TODO - Translation 'email' => 'Email address', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation + 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Idioma', 'list' => 'User list', // TODO - Translation 'number' => 'Hay %d cuenta creada', diff --git a/app/i18n/es/gen.php b/app/i18n/es/gen.php index 45ba47ec1..13c8c3a86 100755 --- a/app/i18n/es/gen.php +++ b/app/i18n/es/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← regresar a tus fuentes RSS', 'cancel' => 'Cancelar', 'create' => 'Crear', + 'demote' => 'Demote', // TODO - Translation 'disable' => 'Desactivar', 'empty' => 'Vaciar', 'enable' => 'Activar', @@ -16,6 +17,7 @@ return array( 'manage' => 'Administrar', 'mark_favorite' => 'Marcar como favorita', 'mark_read' => 'Marcar como leído', + 'promote' => 'Promote', // TODO - Translation 'purge' => 'Purge', // TODO - Translation 'remove' => 'Borrar', 'see_website' => 'Ver web', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\A\\b\\r\\i\\l', 'apr' => 'abr', + 'Apr' => '\\A\\b\\r\\i\\l', 'april' => 'abril', 'Aug' => '\\A\\g\\o\\s\\t\\o', 'aug' => 'ago', @@ -76,11 +78,11 @@ return array( 'last_month' => 'Mes pasado', 'last_week' => 'Semana pasada', 'last_year' => 'Año pasado', - 'mar' => 'mar', 'Mar' => '\\M\\a\\r\\z\\o', + 'mar' => 'mar', 'march' => 'marzo', - 'May' => '\\M\\a\\y\\o', 'may' => 'mayo', + 'May' => '\\M\\a\\y\\o', 'may_' => 'may', 'mon' => 'Lun', 'month' => 'meses', diff --git a/app/i18n/fr/admin.php b/app/i18n/fr/admin.php index 2cf6adc89..25fa9fabb 100644 --- a/app/i18n/fr/admin.php +++ b/app/i18n/fr/admin.php @@ -182,6 +182,7 @@ return array( '_' => 'Système de mise à jour', ), 'user' => array( + 'admin' => 'Administrateur', 'articles_and_size' => '%s articles (%s)', 'article_count' => 'Articles', 'back_to_manage' => '← Revenir à la liste des utilisateurs', @@ -190,6 +191,7 @@ return array( 'delete_users' => 'Supprimer un utilisateur', 'email' => 'Adresse email', 'feed_count' => 'Flux', + 'is_admin' => 'Admin ?', 'language' => 'Langue', 'list' => 'Liste des utilisateurs', 'number' => '%d compte a déjà été créé', diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index 1f25220da..5ed6cef02 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← Retour à vos flux RSS', 'cancel' => 'Annuler', 'create' => 'Créer', + 'demote' => 'Rétrograder', 'disable' => 'Désactiver', 'empty' => 'Vider', 'enable' => 'Activer', @@ -16,6 +17,7 @@ return array( 'manage' => 'Gérer', 'mark_favorite' => 'Mettre en favori', 'mark_read' => 'Marquer comme lu', + 'promote' => 'Promouvoir', 'purge' => 'Purger', 'remove' => 'Supprimer', 'see_website' => 'Voir le site', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\a\\v\\r\\i\\l', 'apr' => 'avr.', + 'Apr' => '\\a\\v\\r\\i\\l', 'april' => 'avril', 'Aug' => '\\a\\o\\û\\t', 'aug' => 'août', @@ -76,11 +78,11 @@ return array( 'last_month' => 'Depuis le mois dernier', 'last_week' => 'Depuis la semaine dernière', 'last_year' => 'Depuis l’année dernière', - 'mar' => 'mars', 'Mar' => '\\m\\a\\r\\s', + 'mar' => 'mars', 'march' => 'mars', - 'May' => '\\m\\a\\i', 'may' => 'mai', + 'May' => '\\m\\a\\i', 'may_' => 'mai', 'mon' => 'lun.', 'month' => 'mois', diff --git a/app/i18n/he/admin.php b/app/i18n/he/admin.php index 55ee9fc5d..bc679bf60 100644 --- a/app/i18n/he/admin.php +++ b/app/i18n/he/admin.php @@ -182,6 +182,7 @@ return array( '_' => 'מערכת העדכון', ), 'user' => array( + 'admin' => 'Administrator', // TODO - Translation 'articles_and_size' => '%s articles (%s)', // TODO - Translation 'article_count' => 'Articles', // TODO - Translation 'back_to_manage' => '← Return to user list', // TODO - Translation @@ -190,6 +191,7 @@ return array( 'delete_users' => 'Delete user', // TODO - Translation 'email' => 'Email address', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation + 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'שפה', 'list' => 'User list', // TODO - Translation 'number' => 'There is %d account created', // TODO - Translation diff --git a/app/i18n/he/gen.php b/app/i18n/he/gen.php index 5622690e4..258799cd3 100644 --- a/app/i18n/he/gen.php +++ b/app/i18n/he/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← חזרה להזנות הRSS שלך', 'cancel' => 'ביטול', 'create' => 'יצירה', + 'demote' => 'Demote', // TODO - Translation 'disable' => 'Disable', // TODO - Translation 'empty' => 'Empty', // TODO - Translation 'enable' => 'Enable', // TODO - Translation @@ -16,6 +17,7 @@ return array( 'manage' => 'ניהול', 'mark_favorite' => 'סימון כמועדף', 'mark_read' => 'סימון כנקרא', + 'promote' => 'Promote', // TODO - Translation 'purge' => 'Purge', // TODO - Translation 'remove' => 'Remove', // TODO - Translation 'see_website' => 'ראו אתר', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\A\\p\\r\\i\\l', // TODO - Translation 'apr' => 'apr', + 'Apr' => '\\A\\p\\r\\i\\l', // TODO - Translation 'april' => 'Apr', 'Aug' => '\\A\\u\\g\\u\\s\\t', // TODO - Translation 'aug' => 'aug', @@ -76,11 +78,11 @@ return array( 'last_month' => 'בחודש שעבר', 'last_week' => 'בשבוע שעבר', 'last_year' => 'בשנה האחרונה', - 'mar' => 'mar', 'Mar' => '\\M\\a\\r\\c\\h', // TODO - Translation + 'mar' => 'mar', 'march' => 'Mar', - 'May' => '\\M\\a\\y', // TODO - Translation 'may' => 'May', // TODO - Translation + 'May' => '\\M\\a\\y', // TODO - Translation 'may_' => 'May', // TODO - Translation 'mon' => 'Mon', // TODO - Translation 'month' => 'חודשים', diff --git a/app/i18n/it/admin.php b/app/i18n/it/admin.php index 7a0f2e47e..78253d756 100644 --- a/app/i18n/it/admin.php +++ b/app/i18n/it/admin.php @@ -182,6 +182,7 @@ return array( '_' => 'Aggiornamento sistema', ), 'user' => array( + 'admin' => 'Administrator', // TODO - Translation 'articles_and_size' => '%s articoli (%s)', 'article_count' => 'Articles', // TODO - Translation 'back_to_manage' => '← Return to user list', // TODO - Translation @@ -190,6 +191,7 @@ return array( 'delete_users' => 'Delete user', // TODO - Translation 'email' => 'Email address', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation + 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Lingua', 'list' => 'User list', // TODO - Translation 'number' => ' %d profilo utente creato', diff --git a/app/i18n/it/gen.php b/app/i18n/it/gen.php index de670e44d..06b61bf08 100644 --- a/app/i18n/it/gen.php +++ b/app/i18n/it/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← Indietro', 'cancel' => 'Annulla', 'create' => 'Crea', + 'demote' => 'Demote', // TODO - Translation 'disable' => 'Disabilita', 'empty' => 'Vuoto', 'enable' => 'Abilita', @@ -16,6 +17,7 @@ return array( 'manage' => 'Gestisci', 'mark_favorite' => 'Segna come preferito', 'mark_read' => 'Segna come letto', + 'promote' => 'Promote', // TODO - Translation 'purge' => 'Purge', // TODO - Translation 'remove' => 'Rimuovi', 'see_website' => 'Vai al sito', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\A\\p\\r\\i\\l\\e', 'apr' => 'apr.', + 'Apr' => '\\A\\p\\r\\i\\l\\e', 'april' => 'aprile', 'Aug' => '\\A\\g\\o\\s\\t\\o', 'aug' => 'ag.', @@ -76,11 +78,11 @@ return array( 'last_month' => 'Ultimo mese', 'last_week' => 'Ultima settimana', 'last_year' => 'Ultimo anno', - 'mar' => 'mar.', 'Mar' => '\\M\\a\\r\\z\\o', + 'mar' => 'mar.', 'march' => 'marzo', - 'May' => '\\M\\a\\g\\g\\i\\o', 'may' => 'maggio', + 'May' => '\\M\\a\\g\\g\\i\\o', 'may_' => 'May', // TODO - Translation 'mon' => 'Mon', // TODO - Translation 'month' => 'mesi', diff --git a/app/i18n/kr/admin.php b/app/i18n/kr/admin.php index 9c41430eb..9980a5335 100644 --- a/app/i18n/kr/admin.php +++ b/app/i18n/kr/admin.php @@ -182,6 +182,7 @@ return array( '_' => '업데이트', ), 'user' => array( + 'admin' => 'Administrator', // TODO - Translation 'articles_and_size' => '%s 개의 글 (%s)', 'article_count' => 'Articles', // TODO - Translation 'back_to_manage' => '← Return to user list', // TODO - Translation @@ -190,6 +191,7 @@ return array( 'delete_users' => '사용자 삭제', 'email' => 'Email address', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation + 'is_admin' => 'Is admin', // TODO - Translation 'language' => '언어', 'list' => 'User list', // TODO - Translation 'number' => '%d 개의 계정이 생성되었습니다', diff --git a/app/i18n/kr/gen.php b/app/i18n/kr/gen.php index 45a053386..f85af4950 100644 --- a/app/i18n/kr/gen.php +++ b/app/i18n/kr/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← RSS 피드로 돌아가기', 'cancel' => '취소', 'create' => '생성', + 'demote' => 'Demote', // TODO - Translation 'disable' => '비활성화', 'empty' => '비우기', 'enable' => '활성화', @@ -16,6 +17,7 @@ return array( 'manage' => '관리', 'mark_favorite' => '즐겨찾기에 등록', 'mark_read' => '읽음으로 표시', + 'promote' => 'Promote', // TODO - Translation 'purge' => 'Purge', // TODO - Translation 'remove' => '삭제', 'see_website' => '웹사이트 열기', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\A\\p\\r\\i\\l', 'apr' => '4월', + 'Apr' => '\\A\\p\\r\\i\\l', 'april' => '4월', 'Aug' => '\\A\\u\\g\\u\\s\\t', 'aug' => '8월', @@ -76,11 +78,11 @@ return array( 'last_month' => '최근 한 달', 'last_week' => '최근 한 주', 'last_year' => '최근 일 년', - 'mar' => '3월', 'Mar' => '\\M\\a\\r\\c\\h', + 'mar' => '3월', 'march' => '3월', - 'May' => '\\M\\a\\y', 'may' => '5월', + 'May' => '\\M\\a\\y', 'may_' => '5월', 'mon' => '월', 'month' => '개월', diff --git a/app/i18n/nl/admin.php b/app/i18n/nl/admin.php index b6ffee16a..34524e566 100644 --- a/app/i18n/nl/admin.php +++ b/app/i18n/nl/admin.php @@ -182,6 +182,7 @@ return array( '_' => 'Versie controle', ), 'user' => array( + 'admin' => 'Administrator', // TODO - Translation 'articles_and_size' => '%s artikelen (%s)', 'article_count' => 'Articles', // TODO - Translation 'back_to_manage' => '← Return to user list', // TODO - Translation @@ -190,6 +191,7 @@ return array( 'delete_users' => 'Verwijder gebruiker', 'email' => 'Email address', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation + 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Taal', 'list' => 'User list', // TODO - Translation 'number' => 'Er is %d accounts gemaakt', diff --git a/app/i18n/nl/gen.php b/app/i18n/nl/gen.php index 55937b378..8fcd385a3 100644 --- a/app/i18n/nl/gen.php +++ b/app/i18n/nl/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← Ga terug naar je RSS feeds', 'cancel' => 'Annuleren', 'create' => 'Opslaan', + 'demote' => 'Demote', // TODO - Translation 'disable' => 'Uitzetten', 'empty' => 'Leeg', 'enable' => 'Aanzetten', @@ -16,6 +17,7 @@ return array( 'manage' => 'Beheren', 'mark_favorite' => 'Markeer als favoriet', 'mark_read' => 'Markeer als gelezen', + 'promote' => 'Promote', // TODO - Translation 'purge' => 'Purge', // TODO - Translation 'remove' => 'Verwijder', 'see_website' => 'Bekijk website', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\A\\p\\r\\i\\l', 'apr' => 'apr', + 'Apr' => '\\A\\p\\r\\i\\l', 'april' => 'Apr', 'Aug' => '\\A\\u\\g\\u\\s\\t\\u\\s', 'aug' => 'aug', @@ -76,11 +78,11 @@ return array( 'last_month' => 'Vorige maand', 'last_week' => 'Vorige week', 'last_year' => 'Vorig jaar', - 'mar' => 'mrt', 'Mar' => '\\M\\a\\a\\r\\t', + 'mar' => 'mrt', 'march' => 'Mrt', - 'May' => '\\M\\e\\i', 'may' => 'Mei', + 'May' => '\\M\\e\\i', 'may_' => 'Mei', 'mon' => 'Ma', 'month' => 'maanden', diff --git a/app/i18n/oc/admin.php b/app/i18n/oc/admin.php index f27014fca..d04a94e59 100644 --- a/app/i18n/oc/admin.php +++ b/app/i18n/oc/admin.php @@ -182,6 +182,7 @@ return array( '_' => 'Sistèma de mesa a jorn', ), 'user' => array( + 'admin' => 'Administrator', // TODO - Translation 'articles_and_size' => '%s articles (%s)', 'article_count' => 'Articles', // TODO - Translation 'back_to_manage' => '← Return to user list', // TODO - Translation @@ -190,6 +191,7 @@ return array( 'delete_users' => 'Suprimir un utilizaire', 'email' => 'Email address', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation + 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Lenga', 'list' => 'User list', // TODO - Translation 'number' => '%d compte ja creat', diff --git a/app/i18n/oc/gen.php b/app/i18n/oc/gen.php index 7bf851e59..bc8cc54ca 100644 --- a/app/i18n/oc/gen.php +++ b/app/i18n/oc/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← Tornar a vòstres fluxes RSS', 'cancel' => 'Anullar', 'create' => 'Crear', + 'demote' => 'Demote', // TODO - Translation 'disable' => 'Desactivar', 'empty' => 'Voidar', 'enable' => 'Activar', @@ -16,6 +17,7 @@ return array( 'manage' => 'Gerir', 'mark_favorite' => 'Ajustar als favorits', 'mark_read' => 'Marcar coma legit', + 'promote' => 'Promote', // TODO - Translation 'purge' => 'Purge', // TODO - Translation 'remove' => 'Levar', 'see_website' => 'Veire lo site', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\a\\b\\r\\i\\a\\l', 'apr' => 'abr.', + 'Apr' => '\\a\\b\\r\\i\\a\\l', 'april' => 'abrial', 'Aug' => '\\a\\g\\o\\s\\t', 'aug' => 'agost', @@ -76,11 +78,11 @@ return array( 'last_month' => 'Dempuèi lo mes passat', 'last_week' => 'Dempuèi la setmana passada', 'last_year' => 'Dempuèi l’annada passada', - 'mar' => 'març', 'Mar' => '\\m\\a\\r\\ç', + 'mar' => 'març', 'march' => 'març', - 'May' => '\\m\\a\\i', 'may' => 'mai', + 'May' => '\\m\\a\\i', 'may_' => 'mai', 'mon' => 'dl', 'month' => 'meses', diff --git a/app/i18n/pt-br/admin.php b/app/i18n/pt-br/admin.php index 83639c01b..53744ef73 100644 --- a/app/i18n/pt-br/admin.php +++ b/app/i18n/pt-br/admin.php @@ -182,6 +182,7 @@ return array( '_' => 'Atualização do sistema', ), 'user' => array( + 'admin' => 'Administrator', // TODO - Translation 'articles_and_size' => '%s artigos (%s)', 'article_count' => 'Articles', // TODO - Translation 'back_to_manage' => '← Return to user list', // TODO - Translation @@ -190,6 +191,7 @@ return array( 'delete_users' => 'Delete user', // TODO - Translation 'email' => 'Email address', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation + 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Idioma', 'list' => 'User list', // TODO - Translation 'number' => 'Há %d conta criada', diff --git a/app/i18n/pt-br/gen.php b/app/i18n/pt-br/gen.php index a65c87b6c..d064fdd6c 100644 --- a/app/i18n/pt-br/gen.php +++ b/app/i18n/pt-br/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← Volte para o seu feeds RSS', 'cancel' => 'Cancelar', 'create' => 'Criar', + 'demote' => 'Demote', // TODO - Translation 'disable' => 'Desabilitar', 'empty' => 'Vazio', 'enable' => 'Habilitar', @@ -16,6 +17,7 @@ return array( 'manage' => 'Gerenciar', 'mark_favorite' => 'Marcar como favorito', 'mark_read' => 'Marcar como lido', + 'promote' => 'Promote', // TODO - Translation 'purge' => 'Purge', // TODO - Translation 'remove' => 'Remover', 'see_website' => 'Ver o site', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\A\\b\\r\\i\\l', 'apr' => 'abr', + 'Apr' => '\\A\\b\\r\\i\\l', 'april' => 'Abr', 'Aug' => '\\A\\g\\o\\s\\t\\o', 'aug' => 'ago', @@ -76,11 +78,11 @@ return array( 'last_month' => 'Últimos mês', 'last_week' => 'Última semana', 'last_year' => 'Último ano', - 'mar' => 'mar', 'Mar' => '\\M\\a\\r\\ç\\o', + 'mar' => 'mar', 'march' => 'Mar', - 'May' => '\\M\\a\\i\\o', 'may' => 'Mai', + 'May' => '\\M\\a\\i\\o', 'may_' => 'Mai', 'mon' => 'Seg', 'month' => 'meses', diff --git a/app/i18n/ru/admin.php b/app/i18n/ru/admin.php index 3fcf151dd..ffb0b662c 100644 --- a/app/i18n/ru/admin.php +++ b/app/i18n/ru/admin.php @@ -182,6 +182,7 @@ return array( '_' => 'Обновление системы', ), 'user' => array( + 'admin' => 'Administrator', // TODO - Translation 'articles_and_size' => '%s статей (%s)', 'article_count' => 'Articles', // TODO - Translation 'back_to_manage' => '← Return to user list', // TODO - Translation @@ -190,6 +191,7 @@ return array( 'delete_users' => 'Delete user', // TODO - Translation 'email' => 'Email address', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation + 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Язык', 'list' => 'User list', // TODO - Translation 'number' => 'На данный момент создан %d аккаунт', diff --git a/app/i18n/ru/gen.php b/app/i18n/ru/gen.php index dc3baf7c5..606983db2 100644 --- a/app/i18n/ru/gen.php +++ b/app/i18n/ru/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← Go back to your RSS feeds', // TODO - Translation 'cancel' => 'Cancel', // TODO - Translation 'create' => 'Create', // TODO - Translation + 'demote' => 'Demote', // TODO - Translation 'disable' => 'Disable', // TODO - Translation 'empty' => 'Empty', // TODO - Translation 'enable' => 'Enable', // TODO - Translation @@ -16,6 +17,7 @@ return array( 'manage' => 'Manage', // TODO - Translation 'mark_favorite' => 'Mark as favourite', // TODO - Translation 'mark_read' => 'Mark as read', // TODO - Translation + 'promote' => 'Promote', // TODO - Translation 'purge' => 'Purge', // TODO - Translation 'remove' => 'Remove', // TODO - Translation 'see_website' => 'See website', // TODO - Translation @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\A\\p\\r\\i\\l', // TODO - Translation 'apr' => 'apr', + 'Apr' => '\\A\\p\\r\\i\\l', // TODO - Translation 'april' => 'Apr', 'Aug' => '\\A\\u\\g\\u\\s\\t', // TODO - Translation 'aug' => 'aug', @@ -76,11 +78,11 @@ return array( 'last_month' => 'Last month', // TODO - Translation 'last_week' => 'Last week', // TODO - Translation 'last_year' => 'Last year', // TODO - Translation - 'mar' => 'mar', 'Mar' => '\\M\\a\\r\\c\\h', // TODO - Translation + 'mar' => 'mar', 'march' => 'Mar', - 'May' => '\\M\\a\\y', // TODO - Translation 'may' => 'May', // TODO - Translation + 'May' => '\\M\\a\\y', // TODO - Translation 'may_' => 'May', // TODO - Translation 'mon' => 'Mon', // TODO - Translation 'month' => 'months', // TODO - Translation diff --git a/app/i18n/sk/admin.php b/app/i18n/sk/admin.php index 1e06c40b9..eeb2fd3d4 100644 --- a/app/i18n/sk/admin.php +++ b/app/i18n/sk/admin.php @@ -182,6 +182,7 @@ return array( '_' => 'Aktualizácia systému', ), 'user' => array( + 'admin' => 'Administrator', // TODO - Translation 'articles_and_size' => '%s článkov (%s)', 'article_count' => 'Articles', // TODO - Translation 'back_to_manage' => '← Return to user list', // TODO - Translation @@ -190,6 +191,7 @@ return array( 'delete_users' => 'Zmazať používateľa', 'email' => 'Email address', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation + 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Jazyk', 'list' => 'User list', // TODO - Translation 'number' => 'Je vytvorený používateľ: %d', diff --git a/app/i18n/sk/gen.php b/app/i18n/sk/gen.php index d6548e72a..4791901af 100644 --- a/app/i18n/sk/gen.php +++ b/app/i18n/sk/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← Späť na vaše RSS kanály', 'cancel' => 'Zrušiť', 'create' => 'Vytvoriť', + 'demote' => 'Demote', // TODO - Translation 'disable' => 'Zakázať', 'empty' => 'Vyprázdniť', 'enable' => 'Povoliť', @@ -16,6 +17,7 @@ return array( 'manage' => 'Spravovať', 'mark_favorite' => 'Označiť ako obľúbené', 'mark_read' => 'Označiť ako prečítané', + 'promote' => 'Promote', // TODO - Translation 'purge' => 'Purge', // TODO - Translation 'remove' => 'Odstrániť', 'see_website' => 'Zobraziť webovú stránku', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\A\\p\\r\\í\\l', 'apr' => 'Apr.', + 'Apr' => '\\A\\p\\r\\í\\l', 'april' => 'Apríl', 'Aug' => '\\A\\u\\g\\u\\s\\t', 'aug' => 'Aug.', @@ -76,11 +78,11 @@ return array( 'last_month' => 'Posledný mesiac', 'last_week' => 'Posledný týždeň', 'last_year' => 'Posledný rok', - 'mar' => 'Mar.', 'Mar' => '\\M\\a\\r\\e\\c', + 'mar' => 'Mar.', 'march' => 'Marec', - 'May' => '\\M\\á\\j', 'may' => 'Máj', + 'May' => '\\M\\á\\j', 'may_' => 'Máj', 'mon' => 'Po', 'month' => 'mesiace', diff --git a/app/i18n/tr/admin.php b/app/i18n/tr/admin.php index bb097d5e8..de30a0d50 100644 --- a/app/i18n/tr/admin.php +++ b/app/i18n/tr/admin.php @@ -182,6 +182,7 @@ return array( '_' => 'Sistem güncelleme', ), 'user' => array( + 'admin' => 'Administrator', // TODO - Translation 'articles_and_size' => '%s makale (%s)', 'article_count' => 'Articles', // TODO - Translation 'back_to_manage' => '← Return to user list', // TODO - Translation @@ -190,6 +191,7 @@ return array( 'delete_users' => 'Delete user', // TODO - Translation 'email' => 'Email address', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation + 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Dil', 'list' => 'User list', // TODO - Translation 'number' => 'Oluşturulmuş %d hesap var', diff --git a/app/i18n/tr/gen.php b/app/i18n/tr/gen.php index 681fd5e74..e80eb8e59 100644 --- a/app/i18n/tr/gen.php +++ b/app/i18n/tr/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← RSS akışlarınız için geri gidin', 'cancel' => 'İptal', 'create' => 'Oluştur', + 'demote' => 'Demote', // TODO - Translation 'disable' => 'Pasif', 'empty' => 'Boş', 'enable' => 'Aktif', @@ -16,6 +17,7 @@ return array( 'manage' => 'Yönet', 'mark_favorite' => 'Favoriye ekle', 'mark_read' => 'Okundu olarak işaretle', + 'promote' => 'Promote', // TODO - Translation 'purge' => 'Purge', // TODO - Translation 'remove' => 'Sil', 'see_website' => 'Siteyi gör', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\N\\i\\s\\a\\n', 'apr' => 'nis', + 'Apr' => '\\N\\i\\s\\a\\n', 'april' => 'Nis', 'Aug' => '\\A\\ğ\\u\\s\\t\\o\\s', 'aug' => 'ağu', @@ -76,11 +78,11 @@ return array( 'last_month' => 'Geçen ay', 'last_week' => 'Geçen hafta', 'last_year' => 'Geçen yıl', - 'mar' => 'mar', 'Mar' => '\\M\\a\\r\\t', + 'mar' => 'mar', 'march' => 'Mar', - 'May' => '\\M\\a\\y\\ı\\s', 'may' => 'Mayıs', + 'May' => '\\M\\a\\y\\ı\\s', 'may_' => 'May', // TODO - Translation 'mon' => 'Pzt', 'month' => 'ay', diff --git a/app/i18n/zh-cn/admin.php b/app/i18n/zh-cn/admin.php index f0b33e889..6ba32efc5 100644 --- a/app/i18n/zh-cn/admin.php +++ b/app/i18n/zh-cn/admin.php @@ -182,6 +182,7 @@ return array( '_' => '更新系统', ), 'user' => array( + 'admin' => 'Administrator', // TODO - Translation 'articles_and_size' => '%s 篇文章(%s)', 'article_count' => '文章数', 'back_to_manage' => '← 返回用户列表', @@ -190,6 +191,7 @@ return array( 'delete_users' => '删除用户', 'email' => '邮箱地址', 'feed_count' => '订阅源数', + 'is_admin' => 'Is admin', // TODO - Translation 'language' => '语言', 'list' => '用户列表', 'number' => '已有 %d 个用户', diff --git a/app/i18n/zh-cn/gen.php b/app/i18n/zh-cn/gen.php index 3043e0d0c..b3bb6273e 100644 --- a/app/i18n/zh-cn/gen.php +++ b/app/i18n/zh-cn/gen.php @@ -7,6 +7,7 @@ return array( 'back_to_rss_feeds' => '← 返回订阅源', 'cancel' => '取消', 'create' => '创建', + 'demote' => 'Demote', // TODO - Translation 'disable' => '禁用', 'empty' => '清空', 'enable' => '启用', @@ -16,6 +17,7 @@ return array( 'manage' => '管理', 'mark_favorite' => '标记收藏', 'mark_read' => '标记已读', + 'promote' => 'Promote', // TODO - Translation 'purge' => '清理', 'remove' => '删除', 'see_website' => '网站中查看', @@ -46,8 +48,8 @@ return array( ), ), 'date' => array( - 'Apr' => '\\四\\月', 'apr' => '四月', + 'Apr' => '\\四\\月', 'april' => '四月', 'Aug' => '\\八\\月', 'aug' => '八月', @@ -76,11 +78,11 @@ return array( 'last_month' => '上月', 'last_week' => '上周', 'last_year' => '去年', - 'mar' => '三月', 'Mar' => '\\三\\月', + 'mar' => '三月', 'march' => '三月', - 'May' => '\\五\\月', 'may' => '五月', + 'May' => '\\五\\月', 'may_' => '五月', 'mon' => '周一', 'month' => '个月', diff --git a/app/install.php b/app/install.php index 3158ffc6f..e5847cc5a 100644 --- a/app/install.php +++ b/app/install.php @@ -223,6 +223,7 @@ function saveStep3() { $password_plain, [ 'language' => $_SESSION['language'], + 'is_admin' => true, ] ); } catch (Exception $e) { diff --git a/app/views/user/details.phtml b/app/views/user/details.phtml index 7a4687184..e23e645ae 100644 --- a/app/views/user/details.phtml +++ b/app/views/user/details.phtml @@ -1,9 +1,11 @@ <?php $this->partial('aside_configure'); ?> +<?php $isAdmin = $this->details['is_admin']; ?> + <div class="post"> <a href="<?= _url('user', 'manage'); ?>"><?= _t('admin.user.back_to_manage'); ?></a> - <legend><?= $this->username; ?></legend> + <legend><?= $this->username ?><?php if ($isAdmin) echo ' ― ', _t('admin.user.admin'); ?></legend> <form method="post" action="<?= _url('user', 'manage', 'username', $this->username); ?>"> <input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken(); ?>" /> @@ -59,6 +61,11 @@ <button type="submit" class="btn btn-important" name="action" value="update"><?= _t('gen.action.update') ?></button> <button type="submit" class="btn btn-attention confirm" name="action" value="purge"><?= _t('gen.action.purge') ?></button> <button type="submit" class="btn btn-attention confirm" name="action" value="delete"><?= _t('gen.action.remove') ?></button> + <?php if ($isAdmin && !$this->isDefaultUser): ?> + <button type="submit" class="btn btn-attention confirm" name="action" value="demote"><?= _t('gen.action.demote') ?></button> + <?php elseif (!$isAdmin): ?> + <button type="submit" class="btn btn-attention confirm" name="action" value="promote"><?= _t('gen.action.promote') ?></button> + <?php endif; ?> <div> </div> </form> diff --git a/app/views/user/manage.phtml b/app/views/user/manage.phtml index 951544248..6ab31e6c6 100644 --- a/app/views/user/manage.phtml +++ b/app/views/user/manage.phtml @@ -26,6 +26,15 @@ </div> </div> + <div class="form-group"> + <div class="group-controls"> + <label for="new_user_is_admin" class="checkbox"> + <input type="checkbox" name="new_user_is_admin" id="new_user_is_admin"> + <?= _t('admin.user.is_admin') ?> + </label> + </div> + </div> + <?php if ($this->show_email_field) { ?> <div class="form-group"> <label class="group-name" for="new_user_email"> @@ -62,6 +71,7 @@ <thead> <tr> <th><?= _t('admin.user.username') ?></th> + <th><?= _t('admin.user.is_admin') ?></th> <th><?= _t('admin.user.email') ?></th> <th><?= _t('admin.user.language') ?></th> <th><?= _t('admin.user.feed_count') ?></th> @@ -74,6 +84,7 @@ <?php foreach ($this->users as $username => $values) : ?> <tr> <td><?= $username ?></td> + <td><?= $values['is_admin'] ? '✔' : ' ' ?></td> <td><?= $values['mail_login'] ?></td> <td><?= _t("gen.lang.{$values['language']}") ?></td> <td><?= format_number($values['feed_count']) ?></td> diff --git a/config-user.default.php b/config-user.default.php index 5b49d689a..27f330c82 100644 --- a/config-user.default.php +++ b/config-user.default.php @@ -4,6 +4,7 @@ # `./data/config-user.custom.php` file instead, containing the keys you want to # override. return array ( + 'is_admin' => false, 'language' => 'en', 'archiving' => [ 'keep_period' => 'P3M', |
