From 75632e70f0d49048f4ce72a0fa8bbcbcd7b2d312 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Thu, 29 Aug 2019 12:02:05 +0200 Subject: Provide email address verification feature (#2481) * Add an email field to the profile page I reuse the `mail_login` from the configuration. I'm not sure if it's useful today (I would say it was used when Persona login was available). A good improvement would be to rename `mail_login` into `email` so it would be more intuitive to use. * Add boolean to the conf to force email validation This commit only adds a configuration item. * Add email during registration if email must be validated * Set email token to validate when email changes * Block access to FreshRSS if email is not validated * Send email when address is changed * Allow to resend the validation email * Allow the user to change its email while blocked * Document the email validation feature * fixup! Allow the user to change its email while blocked * tec: Autoload PHPMailer lib * Validate email address format * Add feedback on validation email resend action * Allow to logout when user is blocked * fix: Change default email "from" * Reorganize i18n keys * Complete all the locales with default english * Hide sidebar (profile page) if email is not validated * Check email requirements on registration * Allow admin to specify email when creating users * Don't check email format if value is empty * Remove trailing comma in userController Co-Authored-By: Alexandre Alapetite * Set PHPMailer validator to html5 before sending email * fixup! Remove trailing comma in userController --- app/views/auth/register.phtml | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'app/views/auth') diff --git a/app/views/auth/register.phtml b/app/views/auth/register.phtml index 19e11ef76..87582a2d0 100644 --- a/app/views/auth/register.phtml +++ b/app/views/auth/register.phtml @@ -8,6 +8,15 @@ + show_email_field) { ?> +
+ + +
+ +
-- cgit v1.2.3 From a2ed6626c2f4e85878f775abcac897a1fd3a1f42 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Fri, 13 Sep 2019 17:33:18 +0200 Subject: Add support for terms of service This feature is optional. It is based on the presence of a `data/tos.html` file that an administrator can create. If this file exists, FreshRSS will automatically add a "ToS" checkbox on the registration page that users must check to be able to create their account. --- app/Controllers/authController.php | 1 + app/Controllers/indexController.php | 17 +++++++++++ app/Controllers/userController.php | 10 +++++++ app/i18n/cz/gen.php | 1 + app/i18n/cz/index.php | 3 ++ app/i18n/cz/user.php | 5 ++++ app/i18n/de/gen.php | 1 + app/i18n/de/index.php | 3 ++ app/i18n/de/user.php | 5 ++++ app/i18n/en/gen.php | 1 + app/i18n/en/index.php | 3 ++ app/i18n/en/user.php | 5 ++++ app/i18n/es/gen.php | 1 + app/i18n/es/index.php | 3 ++ app/i18n/es/user.php | 5 ++++ app/i18n/fr/gen.php | 1 + app/i18n/fr/index.php | 3 ++ app/i18n/fr/user.php | 5 ++++ app/i18n/he/gen.php | 1 + app/i18n/he/index.php | 3 ++ app/i18n/he/user.php | 5 ++++ app/i18n/it/gen.php | 1 + app/i18n/it/index.php | 3 ++ app/i18n/it/user.php | 5 ++++ app/i18n/kr/gen.php | 1 + app/i18n/kr/index.php | 3 ++ app/i18n/kr/user.php | 5 ++++ app/i18n/nl/gen.php | 1 + app/i18n/nl/index.php | 3 ++ app/i18n/nl/user.php | 5 ++++ app/i18n/oc/gen.php | 1 + app/i18n/oc/index.php | 3 ++ app/i18n/oc/user.php | 5 ++++ app/i18n/pt-br/gen.php | 1 + app/i18n/pt-br/index.php | 3 ++ app/i18n/pt-br/user.php | 5 ++++ app/i18n/ru/gen.php | 1 + app/i18n/ru/index.php | 3 ++ app/i18n/ru/user.php | 5 ++++ app/i18n/sk/gen.php | 1 + app/i18n/sk/index.php | 3 ++ app/i18n/sk/user.php | 37 ++++++++++++++++++++++++ app/i18n/tr/gen.php | 1 + app/i18n/tr/index.php | 3 ++ app/i18n/tr/user.php | 5 ++++ app/i18n/zh-cn/gen.php | 1 + app/i18n/zh-cn/index.php | 3 ++ app/i18n/zh-cn/user.php | 5 ++++ app/views/auth/register.phtml | 9 ++++++ app/views/index/tos.phtml | 13 +++++++++ data/.gitignore | 1 + data/tos.example.html | 56 +++++++++++++++++++++++++++++++++++++ 52 files changed, 274 insertions(+) create mode 100644 app/i18n/sk/user.php create mode 100644 app/views/index/tos.phtml create mode 100644 data/tos.example.html (limited to 'app/views/auth') diff --git a/app/Controllers/authController.php b/app/Controllers/authController.php index a8b21b886..70adaa5d3 100644 --- a/app/Controllers/authController.php +++ b/app/Controllers/authController.php @@ -205,6 +205,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController { Minz_Error::error(403); } + $this->view->show_tos_checkbox = file_exists(join_path(DATA_PATH, 'tos.html')); $this->view->show_email_field = FreshRSS_Context::$system_conf->force_email_validation; Minz_View::prependTitle(_t('gen.auth.registration.title') . ' · '); } diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php index 4023492d2..2d791ce1d 100755 --- a/app/Controllers/indexController.php +++ b/app/Controllers/indexController.php @@ -259,6 +259,23 @@ class FreshRSS_index_Controller extends Minz_ActionController { Minz_View::prependTitle(_t('index.about.title') . ' · '); } + /** + * This action displays the EULA page of FreshRSS. + * This page is enabled only if admin created a data/tos.html file. + * The content of the page is the content of data/tos.html. + * It returns 404 if there is no EULA. + */ + public function tosAction() { + $terms_of_service = file_get_contents(join_path(DATA_PATH, 'tos.html')); + if (!$terms_of_service) { + Minz_Error::error(404); + } + + $this->view->terms_of_service = $terms_of_service; + $this->view->can_register = !max_registrations_reached(); + Minz_View::prependTitle(_t('index.tos.title') . ' · '); + } + /** * This action displays logs of FreshRSS for the current user. */ diff --git a/app/Controllers/userController.php b/app/Controllers/userController.php index 69c1820e5..ab8dfb0b2 100644 --- a/app/Controllers/userController.php +++ b/app/Controllers/userController.php @@ -281,6 +281,9 @@ class FreshRSS_user_Controller extends Minz_ActionController { $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); + if ($system_conf->force_email_validation && empty($email)) { Minz_Request::bad( _t('user.email.feedback.required'), @@ -295,6 +298,13 @@ class FreshRSS_user_Controller extends Minz_ActionController { ); } + if ($tos_enabled && !$accept_tos) { + Minz_Request::bad( + _t('user.tos.feedback.invalid'), + array('c' => 'auth', 'a' => 'register') + ); + } + $ok = self::createUser($new_user_name, $email, $passwordPlain, '', array('language' => $new_user_language)); Minz_Request::_param('new_user_passwordPlain'); //Discard plain-text password ASAP $_POST['new_user_passwordPlain'] = ''; diff --git a/app/i18n/cz/gen.php b/app/i18n/cz/gen.php index 78229afaa..c6dabd555 100644 --- a/app/i18n/cz/gen.php +++ b/app/i18n/cz/gen.php @@ -23,6 +23,7 @@ return array( 'update' => 'Update', //TODO - Translation ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', // TODO - Translation 'email' => 'Email', 'keep_logged_in' => 'Zapamatovat přihlášení (%s dny)', 'login' => 'Login', diff --git a/app/i18n/cz/index.php b/app/i18n/cz/index.php index 00f424fe8..b20a75c79 100644 --- a/app/i18n/cz/index.php +++ b/app/i18n/cz/index.php @@ -15,6 +15,9 @@ return array( 'version' => 'Verze', 'website' => 'Webové stránka', ), + 'tos' => array( + 'title' => 'Terms of Service', // TODO - Translation + ), 'feed' => array( 'add' => 'Můžete přidat kanály.', 'empty' => 'Žádné články k zobrazení.', diff --git a/app/i18n/cz/user.php b/app/i18n/cz/user.php index 4f2cfcda2..3a8343c11 100644 --- a/app/i18n/cz/user.php +++ b/app/i18n/cz/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Email address validation', //TODO - Translation ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', // TODO - Translation + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'You need to validate your account', //TODO - Translation diff --git a/app/i18n/de/gen.php b/app/i18n/de/gen.php index a4108775d..6cc791d5e 100644 --- a/app/i18n/de/gen.php +++ b/app/i18n/de/gen.php @@ -23,6 +23,7 @@ return array( 'update' => 'Aktualisieren', ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', // TODO - Translation 'email' => 'E-Mail-Adresse', 'keep_logged_in' => 'Eingeloggt bleiben (%s Tage)', 'login' => 'Anmelden', diff --git a/app/i18n/de/index.php b/app/i18n/de/index.php index 10172e6f5..11fa370a3 100644 --- a/app/i18n/de/index.php +++ b/app/i18n/de/index.php @@ -15,6 +15,9 @@ return array( 'version' => 'Version', 'website' => 'Webseite', ), + 'tos' => array( + 'title' => 'Terms of Service', // TODO - Translation + ), 'feed' => array( 'add' => 'Sie können Feeds hinzufügen.', 'empty' => 'Es gibt keinen Artikel zum Anzeigen.', diff --git a/app/i18n/de/user.php b/app/i18n/de/user.php index 4f2cfcda2..3a8343c11 100644 --- a/app/i18n/de/user.php +++ b/app/i18n/de/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Email address validation', //TODO - Translation ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', // TODO - Translation + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'You need to validate your account', //TODO - Translation diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index 8f1d8d19e..a6ddcbb60 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -23,6 +23,7 @@ return array( 'update' => 'Update', ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', 'email' => 'Email address', 'keep_logged_in' => 'Keep me logged in (%s days)', 'login' => 'Login', diff --git a/app/i18n/en/index.php b/app/i18n/en/index.php index 46c415816..ea2c6620b 100644 --- a/app/i18n/en/index.php +++ b/app/i18n/en/index.php @@ -15,6 +15,9 @@ return array( 'version' => 'Version', 'website' => 'Website', ), + 'tos' => array( + 'title' => 'Terms of Service', + ), 'feed' => array( 'add' => 'You may add some feeds.', 'empty' => 'There is no article to show.', diff --git a/app/i18n/en/user.php b/app/i18n/en/user.php index 5b4cd4fcb..54d8dfa4d 100644 --- a/app/i18n/en/user.php +++ b/app/i18n/en/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Email address validation', ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'You need to validate your account', diff --git a/app/i18n/es/gen.php b/app/i18n/es/gen.php index b394d292e..4affecc51 100755 --- a/app/i18n/es/gen.php +++ b/app/i18n/es/gen.php @@ -23,6 +23,7 @@ return array( 'update' => 'Update', //TODO - Translation ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', // TODO - Translation 'email' => 'Correo electrónico', 'keep_logged_in' => 'Mantenerme identificado (%s días)', 'login' => 'Conectar', diff --git a/app/i18n/es/index.php b/app/i18n/es/index.php index d7a42537b..5142ae1f5 100755 --- a/app/i18n/es/index.php +++ b/app/i18n/es/index.php @@ -15,6 +15,9 @@ return array( 'version' => 'Versión', 'website' => 'Web', ), + 'tos' => array( + 'title' => 'Terms of Service', // TODO - Translation + ), 'feed' => array( 'add' => 'Puedes añadir fuentes.', 'empty' => 'No hay artículos a mostrar.', diff --git a/app/i18n/es/user.php b/app/i18n/es/user.php index 4f2cfcda2..3a8343c11 100644 --- a/app/i18n/es/user.php +++ b/app/i18n/es/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Email address validation', //TODO - Translation ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', // TODO - Translation + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'You need to validate your account', //TODO - Translation diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index 4c4070685..01b66d316 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -23,6 +23,7 @@ return array( 'update' => 'Mettre à jour', ), 'auth' => array( + 'accept_tos' => 'Accepter les Conditions Générales d’Utilisation.', 'email' => 'Adresse courriel', 'keep_logged_in' => 'Rester connecté (%s jours)', 'login' => 'Connexion', diff --git a/app/i18n/fr/index.php b/app/i18n/fr/index.php index c9595e449..f8f451473 100644 --- a/app/i18n/fr/index.php +++ b/app/i18n/fr/index.php @@ -15,6 +15,9 @@ return array( 'version' => 'Version', 'website' => 'Site Internet', ), + 'tos' => array( + 'title' => 'Conditions Générales d’Utilisation', + ), 'feed' => array( 'add' => 'Vous pouvez ajouter des flux.', 'empty' => 'Il n’y a aucun article à afficher.', diff --git a/app/i18n/fr/user.php b/app/i18n/fr/user.php index 01d3ad1af..7b531c749 100644 --- a/app/i18n/fr/user.php +++ b/app/i18n/fr/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Validation de l’adresse email', ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'Vous devez accepter les conditions générales d’utilisation pour pouvoir vous inscrire.', + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'Vous devez valider votre compte', diff --git a/app/i18n/he/gen.php b/app/i18n/he/gen.php index 1aee24742..158f11e5b 100644 --- a/app/i18n/he/gen.php +++ b/app/i18n/he/gen.php @@ -23,6 +23,7 @@ return array( 'update' => 'Update', //TODO - Translation ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', // TODO - Translation 'email' => 'Email address', //TODO - Translation 'keep_logged_in' => 'השאר מחובר חודש', 'login' => 'כניסה לחשבון', diff --git a/app/i18n/he/index.php b/app/i18n/he/index.php index e01a02773..b4b99e583 100644 --- a/app/i18n/he/index.php +++ b/app/i18n/he/index.php @@ -15,6 +15,9 @@ return array( 'version' => 'גרסה', 'website' => 'אתר', ), + 'tos' => array( + 'title' => 'Terms of Service', // TODO - Translation + ), 'feed' => array( 'add' => 'ניתן להוסיף הזנות חדשות.', 'empty' => 'אין מאמר להצגה.', diff --git a/app/i18n/he/user.php b/app/i18n/he/user.php index 4f2cfcda2..3a8343c11 100644 --- a/app/i18n/he/user.php +++ b/app/i18n/he/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Email address validation', //TODO - Translation ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', // TODO - Translation + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'You need to validate your account', //TODO - Translation diff --git a/app/i18n/it/gen.php b/app/i18n/it/gen.php index 1d4fa4cdc..604cc6941 100644 --- a/app/i18n/it/gen.php +++ b/app/i18n/it/gen.php @@ -23,6 +23,7 @@ return array( 'update' => 'Update', // TODO ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', // TODO - Translation 'email' => 'Indirizzo email', 'keep_logged_in' => 'Ricorda i dati (%s giorni)', 'login' => 'Accedi', diff --git a/app/i18n/it/index.php b/app/i18n/it/index.php index 8162b1639..b4f7bc8d7 100644 --- a/app/i18n/it/index.php +++ b/app/i18n/it/index.php @@ -15,6 +15,9 @@ return array( 'version' => 'Versione', 'website' => 'Sito', ), + 'tos' => array( + 'title' => 'Terms of Service', // TODO - Translation + ), 'feed' => array( 'add' => 'Aggiungi un Feed RSS', 'empty' => 'Non ci sono articoli da mostrare.', diff --git a/app/i18n/it/user.php b/app/i18n/it/user.php index 4f2cfcda2..3a8343c11 100644 --- a/app/i18n/it/user.php +++ b/app/i18n/it/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Email address validation', //TODO - Translation ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', // TODO - Translation + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'You need to validate your account', //TODO - Translation diff --git a/app/i18n/kr/gen.php b/app/i18n/kr/gen.php index cd38bc9f8..55fea3d66 100644 --- a/app/i18n/kr/gen.php +++ b/app/i18n/kr/gen.php @@ -23,6 +23,7 @@ return array( 'update' => '변경', ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', // TODO - Translation 'email' => '메일 주소', 'keep_logged_in' => '로그인 유지 (%s 일)', 'login' => '로그인', diff --git a/app/i18n/kr/index.php b/app/i18n/kr/index.php index bebc8bdec..cc8df32f6 100644 --- a/app/i18n/kr/index.php +++ b/app/i18n/kr/index.php @@ -15,6 +15,9 @@ return array( 'version' => '버전', 'website' => '웹사이트', ), + 'tos' => array( + 'title' => 'Terms of Service', // TODO - Translation + ), 'feed' => array( 'add' => '피드를 추가하세요.', 'empty' => '글이 없습니다.', diff --git a/app/i18n/kr/user.php b/app/i18n/kr/user.php index 4f2cfcda2..3a8343c11 100644 --- a/app/i18n/kr/user.php +++ b/app/i18n/kr/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Email address validation', //TODO - Translation ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', // TODO - Translation + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'You need to validate your account', //TODO - Translation diff --git a/app/i18n/nl/gen.php b/app/i18n/nl/gen.php index 419d8b36c..0dcb3010a 100644 --- a/app/i18n/nl/gen.php +++ b/app/i18n/nl/gen.php @@ -23,6 +23,7 @@ return array( 'update' => 'Updaten', ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', // TODO - Translation 'email' => 'Email adres', 'keep_logged_in' => 'Ingelogd blijven voor (%s dagen)', 'login' => 'Log in', diff --git a/app/i18n/nl/index.php b/app/i18n/nl/index.php index 5f71a180f..115e31b5d 100644 --- a/app/i18n/nl/index.php +++ b/app/i18n/nl/index.php @@ -15,6 +15,9 @@ return array( 'version' => 'Versie', 'website' => 'Website', ), + 'tos' => array( + 'title' => 'Terms of Service', // TODO - Translation + ), 'feed' => array( 'add' => 'U kunt wat feeds toevoegen.', 'empty' => 'Er is geen artikel om te laten zien.', diff --git a/app/i18n/nl/user.php b/app/i18n/nl/user.php index 4f2cfcda2..3a8343c11 100644 --- a/app/i18n/nl/user.php +++ b/app/i18n/nl/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Email address validation', //TODO - Translation ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', // TODO - Translation + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'You need to validate your account', //TODO - Translation diff --git a/app/i18n/oc/gen.php b/app/i18n/oc/gen.php index 8bbe04aec..57e783395 100644 --- a/app/i18n/oc/gen.php +++ b/app/i18n/oc/gen.php @@ -23,6 +23,7 @@ return array( 'update' => 'Actualizar', ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', // TODO - Translation 'email' => 'Adreça de corrièl', 'keep_logged_in' => 'Demorar connectat (%s jorns) ', 'login' => 'Connexion', diff --git a/app/i18n/oc/index.php b/app/i18n/oc/index.php index 5cc71c9a9..338d13a8e 100644 --- a/app/i18n/oc/index.php +++ b/app/i18n/oc/index.php @@ -15,6 +15,9 @@ return array( 'website' => 'Site internet', 'version' => 'Version', ), + 'tos' => array( + 'title' => 'Terms of Service', // TODO - Translation + ), 'feed' => array( 'add' => 'Podètz ajustar de fluxes.', 'empty' => 'I a pas cap de flux de mostrar.', diff --git a/app/i18n/oc/user.php b/app/i18n/oc/user.php index 4bcfebaf9..8f948e61d 100644 --- a/app/i18n/oc/user.php +++ b/app/i18n/oc/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Validacion de l’adreça electronica', ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', // TODO - Translation + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'Vos cal validar vòstra adreça electronica', diff --git a/app/i18n/pt-br/gen.php b/app/i18n/pt-br/gen.php index d6d0d9b33..b327937d5 100644 --- a/app/i18n/pt-br/gen.php +++ b/app/i18n/pt-br/gen.php @@ -23,6 +23,7 @@ return array( 'update' => 'Update', //TODO - Translation ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', // TODO - Translation 'email' => 'Endereço de e-mail', 'keep_logged_in' => 'Mantenha logado por (%s days)', 'login' => 'Login', diff --git a/app/i18n/pt-br/index.php b/app/i18n/pt-br/index.php index e5807ed95..17c80f4fc 100644 --- a/app/i18n/pt-br/index.php +++ b/app/i18n/pt-br/index.php @@ -15,6 +15,9 @@ return array( 'version' => 'Versão', 'website' => 'Site', ), + 'tos' => array( + 'title' => 'Terms of Service', // TODO - Translation + ), 'feed' => array( 'add' => 'Você pode adicionar alguns feeds.', 'empty' => 'Não há nenhum artigo para mostrar.', diff --git a/app/i18n/pt-br/user.php b/app/i18n/pt-br/user.php index 4f2cfcda2..3a8343c11 100644 --- a/app/i18n/pt-br/user.php +++ b/app/i18n/pt-br/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Email address validation', //TODO - Translation ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', // TODO - Translation + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'You need to validate your account', //TODO - Translation diff --git a/app/i18n/ru/gen.php b/app/i18n/ru/gen.php index dec454eae..cc1d7e00e 100644 --- a/app/i18n/ru/gen.php +++ b/app/i18n/ru/gen.php @@ -23,6 +23,7 @@ return array( 'update' => 'Update', //TODO - Translation ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', // TODO - Translation 'email' => 'Email address', //TODO - Translation 'keep_logged_in' => 'Keep me logged in (%s дней)', //TODO - Translation 'login' => 'Login', //TODO - Translation diff --git a/app/i18n/ru/index.php b/app/i18n/ru/index.php index 977777178..185350432 100644 --- a/app/i18n/ru/index.php +++ b/app/i18n/ru/index.php @@ -15,6 +15,9 @@ return array( 'version' => 'Version', //TODO - Translation 'website' => 'Website', //TODO - Translation ), + 'tos' => array( + 'title' => 'Terms of Service', // TODO - Translation + ), 'feed' => array( 'add' => 'You may add some feeds.', //TODO - Translation 'empty' => 'There is no article to show.', //TODO - Translation diff --git a/app/i18n/ru/user.php b/app/i18n/ru/user.php index 4f2cfcda2..3a8343c11 100644 --- a/app/i18n/ru/user.php +++ b/app/i18n/ru/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Email address validation', //TODO - Translation ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', // TODO - Translation + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'You need to validate your account', //TODO - Translation diff --git a/app/i18n/sk/gen.php b/app/i18n/sk/gen.php index 00a03736e..7303ffa9f 100644 --- a/app/i18n/sk/gen.php +++ b/app/i18n/sk/gen.php @@ -22,6 +22,7 @@ return array( 'update' => 'Aktualizovať', ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', // TODO - Translation 'email' => 'E-mailová adresa', 'keep_logged_in' => 'Zostať prihlásený (počet dní: %s)', 'login' => 'Prihlásiť', diff --git a/app/i18n/sk/index.php b/app/i18n/sk/index.php index 19e63e720..5bbcbdc21 100644 --- a/app/i18n/sk/index.php +++ b/app/i18n/sk/index.php @@ -15,6 +15,9 @@ return array( 'version' => 'Verzia', 'website' => 'Webová stránka', ), + 'tos' => array( + 'title' => 'Terms of Service', // TODO - Translation + ), 'feed' => array( 'add' => 'Môžete pridať kanály.', 'empty' => 'Žiadne články.', diff --git a/app/i18n/sk/user.php b/app/i18n/sk/user.php new file mode 100644 index 000000000..3a8343c11 --- /dev/null +++ b/app/i18n/sk/user.php @@ -0,0 +1,37 @@ + array( + 'feedback' => array( + 'invalid' => 'The email address is invalid.', //TODO - Translation + 'required' => 'The email address is required.', //TODO - Translation + ), + 'validation' => array( + 'change_email' => 'You can change your email address on the profile page.', //TODO - Translation + 'email_sent_to' => 'We sent you an email at %s, please follow its indications to validate your address.', //TODO - Translation + 'feedback' => array( + 'email_failed' => 'We couldn’t send you an email because of a misconfiguration of the server.', //TODO - Translation + 'email_sent' => 'An email has been sent to your address.', //TODO - Translation + 'error' => 'The email address failed to be validated.', //TODO - Translation + 'ok' => 'The email address has been validated.', //TODO - Translation + 'unneccessary' => 'The email address was already validated.', //TODO - Translation + 'wrong_token' => 'The email address failed to be validated due to a wrong token.', //TODO - Translation + ), + 'need_to' => 'You need to validate your email address before being able to use %s.', //TODO - Translation + 'resend_email' => 'Resend the email', //TODO - Translation + 'title' => 'Email address validation', //TODO - Translation + ), + ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', // TODO - Translation + ), + ), + 'mailer' => array( + 'email_need_validation' => array( + 'title' => 'You need to validate your account', //TODO - Translation + 'welcome' => 'Welcome %s,', //TODO - Translation + 'body' => 'You’ve just registered on %s but you still need to validate your email. For that, just follow the link:', //TODO - Translation + ), + ), +); diff --git a/app/i18n/tr/gen.php b/app/i18n/tr/gen.php index 561cee7cd..5e361affb 100644 --- a/app/i18n/tr/gen.php +++ b/app/i18n/tr/gen.php @@ -23,6 +23,7 @@ return array( 'update' => 'Update', //TODO - Translation ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', // TODO - Translation 'email' => 'Email adresleri', 'keep_logged_in' => '(%s günler) oturumu açık tut', 'login' => 'Giriş', diff --git a/app/i18n/tr/index.php b/app/i18n/tr/index.php index d6db514dd..6f1b596cf 100644 --- a/app/i18n/tr/index.php +++ b/app/i18n/tr/index.php @@ -15,6 +15,9 @@ return array( 'version' => 'Versiyon', 'website' => 'Website', ), + 'tos' => array( + 'title' => 'Terms of Service', // TODO - Translation + ), 'feed' => array( 'add' => 'Akış ekleyebilirsin.', 'empty' => 'Gösterilecek makale yok.', diff --git a/app/i18n/tr/user.php b/app/i18n/tr/user.php index 4f2cfcda2..3a8343c11 100644 --- a/app/i18n/tr/user.php +++ b/app/i18n/tr/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Email address validation', //TODO - Translation ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', // TODO - Translation + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'You need to validate your account', //TODO - Translation diff --git a/app/i18n/zh-cn/gen.php b/app/i18n/zh-cn/gen.php index 863917f54..7ae156573 100644 --- a/app/i18n/zh-cn/gen.php +++ b/app/i18n/zh-cn/gen.php @@ -23,6 +23,7 @@ return array( 'update' => '更新', //TODO - Translation ), 'auth' => array( + 'accept_tos' => 'I accept the Terms of Service.', // TODO - Translation 'email' => 'Email 地址', 'keep_logged_in' => '自动登录(%s 天)', 'login' => '登录', diff --git a/app/i18n/zh-cn/index.php b/app/i18n/zh-cn/index.php index 018813c3e..659f16b7c 100644 --- a/app/i18n/zh-cn/index.php +++ b/app/i18n/zh-cn/index.php @@ -15,6 +15,9 @@ return array( 'version' => '版本', 'website' => '网站', ), + 'tos' => array( + 'title' => 'Terms of Service', // TODO - Translation + ), 'feed' => array( 'add' => '你可以添加一些 RSS 源。', 'empty' => '暂时没有文章可显示。', diff --git a/app/i18n/zh-cn/user.php b/app/i18n/zh-cn/user.php index 4f2cfcda2..3a8343c11 100644 --- a/app/i18n/zh-cn/user.php +++ b/app/i18n/zh-cn/user.php @@ -22,6 +22,11 @@ return array( 'title' => 'Email address validation', //TODO - Translation ), ), + 'tos' => array( + 'feedback' => array( + 'invalid' => 'You must accept the Terms of Service to be able to register.', // TODO - Translation + ), + ), 'mailer' => array( 'email_need_validation' => array( 'title' => 'You need to validate your account', //TODO - Translation diff --git a/app/views/auth/register.phtml b/app/views/auth/register.phtml index 87582a2d0..b90950510 100644 --- a/app/views/auth/register.phtml +++ b/app/views/auth/register.phtml @@ -26,6 +26,15 @@
+ show_tos_checkbox) { ?> +
+ +
+ +
+ can_register) { ?> + + + + + + + + + + terms_of_service; ?> +
diff --git a/data/.gitignore b/data/.gitignore index 1d2d8db89..862bf4ad1 100644 --- a/data/.gitignore +++ b/data/.gitignore @@ -6,3 +6,4 @@ force-https.txt last_update.txt no-cache.txt update.php +tos.html diff --git a/data/tos.example.html b/data/tos.example.html new file mode 100644 index 000000000..370302b16 --- /dev/null +++ b/data/tos.example.html @@ -0,0 +1,56 @@ +

Terms of Service

+ +

Article 1: Lorem ipsum

+ +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed fringilla, + magna non luctus lobortis, ipsum quam bibendum ipsum, ac rhoncus ipsum + velit in dolor. Vivamus quis ultrices sapien. Maecenas imperdiet massa + felis, ut ullamcorper arcu fermentum at. Mauris vitae tempor mi. Nullam ut + fermentum tortor, a luctus neque. Aenean imperdiet, leo vel blandit + molestie, lorem risus suscipit sem, et facilisis tellus elit ut magna. Ut + mattis blandit quam vitae interdum. Vestibulum quis pharetra ex, nec + efficitur erat. Vivamus hendrerit quam non facilisis lacinia. Sed tincidunt + consectetur maximus. Quisque eleifend risus vel felis hendrerit vulputate. + Nulla quis dapibus sapien, eget egestas quam. Nulla facilisi. Pellentesque + tincidunt elementum ultricies. Praesent mauris ante, ultrices quis dui ut, + ornare lacinia lectus. Etiam neque massa, congue in gravida et, mollis + egestas eros. +

+ +

Article 2: Nunc Vel Diam

+ +

+ Nunc vel diam sollicitudin turpis pharetra lobortis. Donec id mattis ipsum, + non porta sem. Maecenas fermentum velit quis sem lacinia egestas. Praesent + vulputate nulla in lectus tempus, maximus suscipit felis molestie. Sed ac + suscipit mi. Maecenas at pretium nibh, a elementum elit. Ut pretium turpis + tempor maximus ullamcorper. Vivamus ipsum velit, volutpat vitae varius ut, + dignissim eget mi. Nunc id erat facilisis, vestibulum lacus in, ultricies + purus. Mauris id ligula tempor, venenatis dolor at, mattis magna. Duis + luctus dui ut est porttitor, id pulvinar enim tempus. +

+ +

Article 3: Ut Non Leo Commodo

+ +

+ Ut non leo commodo, tempus mauris ac, pulvinar nunc. Fusce facilisis purus + et est ornare, eget tempor purus porttitor. Donec ut leo in diam sodales + ullamcorper. Sed efficitur nisl sit amet ante euismod, id dapibus dui + mollis. In sagittis eget dolor id pharetra. Suspendisse pellentesque + ultricies volutpat. Pellentesque pretium quam quis ligula lobortis + convallis. Donec vel erat elementum, varius metus a, egestas turpis. + Aliquam porttitor ut dolor et volutpat. Aliquam pretium, enim quis suscipit + bibendum, risus diam convallis tellus, et cursus odio felis quis nibh. + Vivamus fringilla hendrerit massa, eget varius odio ultrices vestibulum. Ut + vehicula eget tortor quis sodales. +

+ +

+ Pellentesque pulvinar ex vel metus volutpat, a pretium libero aliquet. In + fringilla nisi ac lorem hendrerit, non volutpat elit condimentum. + Pellentesque congue luctus purus id porta. Suspendisse nec elementum urna. + Maecenas sollicitudin a tortor nec finibus. Donec malesuada, lectus + blandit sodales egestas, tortor ipsum cursus eros, eget pellentesque erat + nunc ut nulla. Vivamus porttitor consectetur felis at luctus. +

-- cgit v1.2.3 From 7a5236de3f13f08b8c51eb183c0dcf1c8c85beca Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Wed, 23 Oct 2019 11:18:20 +0200 Subject: Take advantage of PHP 5.4+ short echo (#2585) * Take advantage of PHP 5.4+ short echo https://php.net/migration54.new-features thanks to https://github.com/FreshRSS/FreshRSS/pull/2495 Use `` instead of `` 10kB of code saved :-) Done with regular expression: ``` <\?php echo (.+?);? *\?> ``` * Try Travis fix https://github.com/squizlabs/PHP_CodeSniffer/issues/2045#issuecomment-395238272 --- app/install.php | 190 +++++++++++----------- app/layout/aside_configure.phtml | 52 +++--- app/layout/aside_feed.phtml | 68 ++++---- app/layout/aside_stats.phtml | 14 +- app/layout/aside_subscription.phtml | 14 +- app/layout/header.phtml | 72 ++++---- app/layout/layout.phtml | 28 ++-- app/layout/nav_entries.phtml | 6 +- app/layout/nav_menu.phtml | 80 ++++----- app/layout/simple.phtml | 34 ++-- app/views/auth/formLogin.phtml | 22 +-- app/views/auth/index.phtml | 40 ++--- app/views/auth/register.phtml | 28 ++-- app/views/configure/archiving.phtml | 46 +++--- app/views/configure/display.phtml | 104 ++++++------ app/views/configure/queries.phtml | 60 +++---- app/views/configure/reading.phtml | 126 +++++++------- app/views/configure/sharing.phtml | 50 +++--- app/views/configure/shortcut.phtml | 114 ++++++------- app/views/configure/system.phtml | 46 +++--- app/views/error/index.phtml | 6 +- app/views/extension/index.phtml | 38 ++--- app/views/feed/add.phtml | 58 +++---- app/views/helpers/category/update.phtml | 32 ++-- app/views/helpers/extension/configure.phtml | 8 +- app/views/helpers/extension/details.phtml | 12 +- app/views/helpers/feed/update.phtml | 160 +++++++++--------- app/views/helpers/index/normal/entry_bottom.phtml | 38 ++--- app/views/helpers/index/normal/entry_header.phtml | 12 +- app/views/helpers/logs_pagination.phtml | 12 +- app/views/helpers/pagination.phtml | 16 +- app/views/importExport/index.phtml | 36 ++-- app/views/index/about.phtml | 26 +-- app/views/index/global.phtml | 16 +- app/views/index/logs.phtml | 14 +- app/views/index/normal.phtml | 24 +-- app/views/index/reader.phtml | 28 ++-- app/views/index/rss.phtml | 22 +-- app/views/index/tos.phtml | 10 +- app/views/stats/idle.phtml | 18 +- app/views/stats/index.phtml | 60 +++---- app/views/stats/repartition.phtml | 34 ++-- app/views/subscription/bookmarklet.phtml | 20 +-- app/views/subscription/feed.phtml | 4 +- app/views/subscription/index.phtml | 70 ++++---- app/views/update/apply.phtml | 4 +- app/views/update/checkInstall.phtml | 18 +- app/views/update/index.phtml | 18 +- app/views/user/manage.phtml | 66 ++++---- app/views/user/profile.phtml | 68 ++++---- app/views/user/validateEmail.phtml | 12 +- app/views/user_mailer/email_need_validation.txt | 6 +- docs/en/developers/03_Backend/05_Extensions.md | 6 +- docs/fr/developers/03_Backend/05_Extensions.md | 6 +- phpcs.xml | 4 +- 55 files changed, 1089 insertions(+), 1087 deletions(-) (limited to 'app/views/auth') diff --git a/app/install.php b/app/install.php index f8bc6dd4e..96bee34a1 100644 --- a/app/install.php +++ b/app/install.php @@ -334,18 +334,18 @@ function printStep0() { $languages = Minz_Translate::availableLanguages(); ?> -

+

- +
- +
@@ -354,10 +354,10 @@ function printStep0() {
- - + + - +
@@ -369,118 +369,118 @@ function printStep0() { function printStep1() { $res = checkRequirements(); ?> - + -

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

-

+

- - + + - + -

+

-

+

-

+

- +
- +
+
- +
- +
- +
- +
- +
- +
- +
- +
- - + + - +
@@ -576,23 +576,23 @@ function printStep3() { $user_default_config = Minz_Configuration::get('default_user'); ?> -

+

-

+

- +
- +
- +
- +
- +
- tabindex="5" /> - + tabindex="5" /> +
- - + +
- - + + - +
@@ -635,14 +635,14 @@ function printStep3() { function printStep4() { ?> -

- +

+ -

+

- <?php echo _t('install.title'); ?> - - + <?= _t('install.title') ?> + +
-

-

+

+

@@ -729,6 +729,6 @@ case 5: ?>
- + diff --git a/app/layout/aside_configure.phtml b/app/layout/aside_configure.phtml index 747858f4e..1267f747c 100644 --- a/app/layout/aside_configure.phtml +++ b/app/layout/aside_configure.phtml @@ -1,54 +1,54 @@ diff --git a/app/layout/aside_feed.phtml b/app/layout/aside_feed.phtml index 637acf4a4..4d5682001 100644 --- a/app/layout/aside_feed.phtml +++ b/app/layout/aside_feed.phtml @@ -8,30 +8,30 @@ } ?> -
- +
+
- - + +
- + - +
- - + +
diff --git a/app/views/auth/register.phtml b/app/views/auth/register.phtml index b90950510..4233f7fd4 100644 --- a/app/views/auth/register.phtml +++ b/app/views/auth/register.phtml @@ -1,36 +1,36 @@
-

+

-
- + +
- - + +
show_email_field) { ?>
- +
- +
- +
show_tos_checkbox) { ?>
@@ -42,11 +42,11 @@ 'php', true )); ?> - - - + + +
-

+

diff --git a/app/views/configure/archiving.phtml b/app/views/configure/archiving.phtml index 0387a2b96..7d76e4dcc 100644 --- a/app/views/configure/archiving.phtml +++ b/app/views/configure/archiving.phtml @@ -1,17 +1,17 @@ partial('aside_configure'); ?>
- + -
- - -

+ + + +

- +
- () + ?> ()
@@ -94,7 +94,7 @@
-
@@ -102,46 +102,46 @@
- - + +
- -
- + + +
- +
- nb_total), format_bytes($this->size_user)); ?> + nb_total), format_bytes($this->size_user)) ?>
- +
-
- + +
- - + +
- +
- size_total); ?> + size_total) ?>
diff --git a/app/views/configure/display.phtml b/app/views/configure/display.phtml index 60b7748c5..c1cfecc2a 100644 --- a/app/views/configure/display.phtml +++ b/app/views/configure/display.phtml @@ -1,47 +1,47 @@ partial('aside_configure'); ?>
- + -
- - + + +
- +
- - +
- +
    themes); $i = 1; ?> themes as $theme) { ?> - theme === $theme['id']) {echo "checked";}?> value="" data-leave-validation="theme === $theme['id']) ? 1 : 0; ?>"/> + theme === $theme['id']) {echo "checked";}?> value="" data-leave-validation="theme === $theme['id']) ? 1 : 0 ?>"/>
  • - +
    -
    -
    -
    +
    +
    +
  • @@ -52,84 +52,84 @@ content_width; ?>
    - +
    - + - - -
    - + - - - - - - - + + + + + + + - - - + + + - - - + + + - - - - - + + + + + - - + +
     
    topline_read ? ' checked="checked"' : ''; ?> data-leave-validation="topline_read; ?>"/>topline_favorite ? ' checked="checked"' : ''; ?> data-leave-validation="topline_favorite; ?>"/>topline_read ? ' checked="checked"' : '' ?> data-leave-validation="topline_read ?>"/>topline_favorite ? ' checked="checked"' : '' ?> data-leave-validation="topline_favorite ?>"/> topline_display_authors ? ' checked="checked"' : ''; ?> data-leave-validation="topline_display_authors; ?>"/>topline_date ? ' checked="checked"' : ''; ?> data-leave-validation="topline_date; ?>"/>topline_link ? ' checked="checked"' : ''; ?> data-leave-validation="topline_link; ?>"/>topline_display_authors ? ' checked="checked"' : '' ?> data-leave-validation="topline_display_authors ?>"/>topline_date ? ' checked="checked"' : '' ?> data-leave-validation="topline_date ?>"/>topline_link ? ' checked="checked"' : '' ?> data-leave-validation="topline_link ?>"/>
    bottomline_read ? ' checked="checked"' : ''; ?> data-leave-validation="bottomline_read; ?>"/>bottomline_favorite ? ' checked="checked"' : ''; ?> data-leave-validation="bottomline_favorite; ?>"/>bottomline_tags ? ' checked="checked"' : ''; ?> data-leave-validation="bottomline_tags; ?>"/>bottomline_sharing ? ' checked="checked"' : ''; ?> data-leave-validation="bottomline_sharing; ?>"/>bottomline_read ? ' checked="checked"' : '' ?> data-leave-validation="bottomline_read ?>"/>bottomline_favorite ? ' checked="checked"' : '' ?> data-leave-validation="bottomline_favorite ?>"/>bottomline_tags ? ' checked="checked"' : '' ?> data-leave-validation="bottomline_tags ?>"/>bottomline_sharing ? ' checked="checked"' : '' ?> data-leave-validation="bottomline_sharing ?>"/> bottomline_date ? ' checked="checked"' : ''; ?> data-leave-validation="bottomline_date; ?>"/>bottomline_link ? ' checked="checked"' : ''; ?> data-leave-validation="bottomline_link; ?>"/>bottomline_date ? ' checked="checked"' : '' ?> data-leave-validation="bottomline_date ?>"/>bottomline_link ? ' checked="checked"' : '' ?> data-leave-validation="bottomline_link ?>"/>

    - +
    - +
    - - + +
    diff --git a/app/views/configure/queries.phtml b/app/views/configure/queries.phtml index baaf74954..a0f600b5d 100644 --- a/app/views/configure/queries.phtml +++ b/app/views/configure/queries.phtml @@ -1,70 +1,70 @@ partial('aside_configure'); ?>
    - + -
    - - + + + queries as $key => $query) { ?> -
    -
    '> - - + + sharing as $key => $share_options) { $share = FreshRSS_Share::get($share_options['type']); $share->update($share_options); ?> -
    +
    - - - + + +
    - + formType() === 'advanced') { ?> - + - + - +
    formType() === 'advanced') { ?> - +
    @@ -52,19 +52,19 @@
    - +
    - - + +
    diff --git a/app/views/configure/shortcut.phtml b/app/views/configure/shortcut.phtml index 412ea676d..4412266cc 100644 --- a/app/views/configure/shortcut.phtml +++ b/app/views/configure/shortcut.phtml @@ -1,181 +1,181 @@ partial('aside_configure'); ?>
    - + list_keys as $key) { ?> - shortcuts; ?> -
    - - + + + - + - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - + -

    +

    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    -

    +

    - +
    - +
    - +
    - +
    - +
    - +
    - - + +
    - +
    - +
    - +
    - +
    - +
    - - + +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - - + +
    - +
    - +
    - +
    - +
    - - + +
    diff --git a/app/views/configure/system.phtml b/app/views/configure/system.phtml index eb0e68dfc..1a718e20f 100644 --- a/app/views/configure/system.phtml +++ b/app/views/configure/system.phtml @@ -1,31 +1,31 @@ partial('aside_configure'); ?>
    - + -
    - - + + +
    - +
    - +
    - +
    - +
    - +
    - - + +
    @@ -47,41 +47,41 @@ name="force-email-validation" id="force-email-validation" value="1" - force_email_validation ? 'checked="checked"' : ''; ?> - data-leave-validation="force_email_validation; ?>" + force_email_validation ? 'checked="checked"' : '' ?> + data-leave-validation="force_email_validation ?>" /> - +
    - +
    - +
    - +
    - +
    - +
    - - + +
    - - + +
    diff --git a/app/views/error/index.phtml b/app/views/error/index.phtml index 8fd74e8bf..d5618d54c 100644 --- a/app/views/error/index.phtml +++ b/app/views/error/index.phtml @@ -1,9 +1,9 @@
    -

    code; ?>

    +

    code ?>

    - errorMessage, ENT_NOQUOTES, 'UTF-8'); ?>
    - + errorMessage, ENT_NOQUOTES, 'UTF-8') ?>
    +

    diff --git a/app/views/extension/index.phtml b/app/views/extension/index.phtml index 6439a0333..f5c5bf032 100644 --- a/app/views/extension/index.phtml +++ b/app/views/extension/index.phtml @@ -1,14 +1,14 @@ partial('aside_configure'); ?>
    - + -

    +

    - + extension_list['system'])) { ?> -

    +

    extension_list['system'] as $ext) { $this->ext_details = $ext; @@ -18,7 +18,7 @@ extension_list['user'])) { ?> -

    +

    extension_list['user'] as $ext) { $this->ext_details = $ext; @@ -30,34 +30,34 @@ if (empty($this->extension_list['system']) && empty($this->extension_list['user'])) { ?> -

    +

    available_extensions)) { ?> -

    +

    - - - - + + + + available_extensions as $ext) { ?> - - - + + +
    - + extensions_installed[$ext['name']])) { ?> extensions_installed[$ext['name']], $ext['version']) >= 0) { ?> - + extensions_installed[$ext['name']] != $ext['version']) { ?> - + @@ -69,8 +69,8 @@ extension) ? ' class="active"' : ''; ?> -> -
    > +> +
    > extension)) { $this->renderHelper('extension/configure'); diff --git a/app/views/feed/add.phtml b/app/views/feed/add.phtml index 340970b25..e39f45a86 100644 --- a/app/views/feed/add.phtml +++ b/app/views/feed/add.phtml @@ -1,90 +1,90 @@ feed) { ?>
    -

    +

    load_ok) { ?> -

    +

    -
    - - + + + load_ok) { ?>
    - +
    - +
    feed->description(); if ($desc != '') { ?>
    - +
    - +
    - +
    - feed->website(); ?> - + feed->website() ?> +
    - +
    - - + +
    - +
    - +
    - + feed->httpAuth(false); ?>
    - +
    - +
    - +
    - +
    - +
    - - + +
    diff --git a/app/views/helpers/category/update.phtml b/app/views/helpers/category/update.phtml index 31482f163..6a4c041ba 100644 --- a/app/views/helpers/category/update.phtml +++ b/app/views/helpers/category/update.phtml @@ -1,17 +1,17 @@
    -

    category->name(); ?>

    +

    category->name() ?>

    - +
    -
    - - + + +
    - +
    - category->id() == FreshRSS_CategoryDAO::DEFAULTCATEGORYID ? 'disabled="disabled"' : ''; ?> /> @@ -20,21 +20,21 @@
    - + + data-str-confirm="" + formaction="category->id()) ?>" + formmethod="post"> category->isDefault()): ?> + data-str-confirm="" + formaction="category->id()) ?>" + formmethod="post">
    - + category->attributes('archiving'); if (empty($archiving)) { @@ -138,7 +138,7 @@