From 0d6993fe08cf57121eadb2aa0e4208420756165a Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Fri, 24 Oct 2014 12:51:17 +0200 Subject: Reader view comes back! See https://github.com/marienfressinaud/FreshRSS/issues/634 --- app/views/index/reader.phtml | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 app/views/index/reader.phtml (limited to 'app/views/index/reader.phtml') diff --git a/app/views/index/reader.phtml b/app/views/index/reader.phtml new file mode 100644 index 000000000..f07868488 --- /dev/null +++ b/app/views/index/reader.phtml @@ -0,0 +1,44 @@ +partial('nav_menu'); + +if (!empty($this->entries)) { + $lazyload = FreshRSS_Context::$conf->lazyload; + $content_width = FreshRSS_Context::$conf->content_width; +?> + +
+ entries as $item) { ?> + +
+
+
+ categories, $item->feed()); //We most likely already have the feed object in cache + if (empty($feed)) $feed = $item->feed(true); + ?> + + ✇ name(); ?> + +

title(); ?>

+ +
author(); + echo $author != '' ? _t('by_author', $author) . ' — ' : '', + $item->date(); + ?>
+ + content(); ?> +
+
+
+ + + renderHelper('pagination'); ?> +
+ + +
+

+

+
+ -- cgit v1.2.3 From 5932c3427b060d4f0aeab92d7ed17c8e8d4fd1d7 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sun, 7 Dec 2014 14:31:50 +0100 Subject: Add entry_before_display hook See https://github.com/FreshRSS/FreshRSS/issues/252 --- app/views/index/normal.phtml | 5 +++++ app/views/index/reader.phtml | 11 +++++++---- lib/Minz/ExtensionManager.php | 6 ++++-- 3 files changed, 16 insertions(+), 6 deletions(-) (limited to 'app/views/index/reader.phtml') diff --git a/app/views/index/normal.phtml b/app/views/index/normal.phtml index 02d621bd0..9cbd367d0 100644 --- a/app/views/index/normal.phtml +++ b/app/views/index/normal.phtml @@ -35,6 +35,11 @@ if (!empty($this->entries)) { entries as $item) { + $item = Minz_ExtensionManager::callHook('entry_before_display', $item); + if (is_null($item)) { + continue; + } + if ($display_today && $item->isDay(FreshRSS_Days::TODAY, $today)) { ?>
entries)) { $content_width = FreshRSS_Context::$conf->content_width; ?> -
- entries as $item) { ?> - -
+
entries as $item) { + $item = Minz_ExtensionManager::callHook('entry_before_display', $item); + if (is_null($item)) { + continue; + } + ?>
array(), // function($entry) + 'entry_before_display' => array(), // function($entry) -> Entry | null + 'entry_before_insert' => array(), // function($entry) -> Entry | null ); private static $ext_to_hooks = array(); @@ -230,7 +232,7 @@ class Minz_ExtensionManager { $args = func_get_args(); unset($args[0]); - $result = $args; + $result = $args[1]; foreach (self::$hook_list[$hook_name] as $function) { $result = call_user_func_array($function, $args); -- cgit v1.2.3 From 57bffe83eb396580d08633af93d6cd10a443bf09 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Thu, 11 Dec 2014 00:25:02 +0100 Subject: Fix i18n for index Controller Fix strings for: - about page - rss and reader views - fix title of global view --- app/Controllers/indexController.php | 4 ++-- app/i18n/en/gen.php | 15 --------------- app/i18n/en/index.php | 19 +++++++++++++++++++ app/i18n/fr/gen.php | 14 -------------- app/i18n/fr/index.php | 19 +++++++++++++++++++ app/views/index/about.phtml | 26 +++++++++++++------------- app/views/index/normal.phtml | 4 ++-- app/views/index/reader.phtml | 6 +++--- app/views/index/rss.phtml | 2 +- 9 files changed, 59 insertions(+), 50 deletions(-) (limited to 'app/views/index/reader.phtml') diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php index 2759ab289..33cd2843c 100755 --- a/app/Controllers/indexController.php +++ b/app/Controllers/indexController.php @@ -98,7 +98,7 @@ class FreshRSS_index_Controller extends Minz_ActionController { $this->view->categories = FreshRSS_Context::$categories; $this->view->rss_title = FreshRSS_Context::$name . ' | ' . Minz_View::title(); - $title = _t('gen.title.global_view'); + $title = _t('index.feed.title_global'); if (FreshRSS_Context::$get_unread > 0) { $title = '(' . FreshRSS_Context::$get_unread . ') ' . $title; } @@ -206,7 +206,7 @@ class FreshRSS_index_Controller extends Minz_ActionController { * This action displays the about page of FreshRSS. */ public function aboutAction() { - Minz_View::prependTitle(_t('about') . ' · '); + Minz_View::prependTitle(_t('index.about.title') . ' · '); } /** diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index a9045c299..18e63a335 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -71,7 +71,6 @@ return array( '_' => 'Title', 'authentication' => 'Authentication', 'check_install' => 'Installation checking', - 'global_view' => 'Global view', 'user_management' => 'Manage users', 'user_profile' => 'Profile', ), @@ -84,7 +83,6 @@ return array( 'administration' => 'Manage', 'advanced' => 'Advanced', 'after_onread' => 'After “mark all as read”,', - 'agpl3' => 'AGPL 3', 'all_feeds' => 'All feeds', 'allow_anonymous' => 'Allow anonymous reading of the articles of the default user (%s)', 'allow_anonymous_refresh' => 'Allow anonymous refresh of the articles', @@ -132,7 +130,6 @@ return array( 'bdd_type' => 'Type of database', 'blank_to_disable' => 'Leave blank to disable', 'bottom_line' => 'Bottom line', - 'bugs_reports' => 'Bugs reports', 'by' => 'by', 'by_default' => 'By default', 'by_email' => 'By email', @@ -164,8 +161,6 @@ return array( 'content_width' => 'Content width', 'create' => 'Create', 'create_user' => 'Create new user', - 'credits' => 'Credits', - 'credits_content' => 'Some design elements come from Bootstrap although FreshRSS doesn’t use this framework. Icons come from GNOME project. Open Sans font police has been created by Steve Matteson. Favicons are collected with getFavicon API. FreshRSS is based on Minz, a PHP framework.', 'css_path_on_website' => 'Articles CSS path on original website', 'ctype_is_nok' => 'You lack a required library for character type checking (php-ctype)', 'ctype_is_ok' => 'You have the required library for character type checking (ctype)', @@ -223,12 +218,10 @@ return array( 'first_article' => 'Skip to the first article', 'fix_errors_before' => 'Fix errors before skip to the next step.', 'focus_search' => 'Access search box', - 'freshrss_description' => 'FreshRSS is a RSS feeds aggregator to self-host like Kriss Feed or Leed. It is light and easy to take in hand while being powerful and configurable tool.', 'freshrss_installation' => 'Installation · FreshRSS', 'fri' => 'Fri', 'general_conf_is_ok' => 'General configuration has been saved.', 'general_configuration' => 'General configuration', - 'github_or_email' => 'on Github or by mail', 'help' => 'Display documentation', 'hide_read_feeds' => 'Hide categories & feeds with no unread article (does not work with “Show all articles” configuration)', 'host' => 'Host', @@ -269,8 +262,6 @@ return array( 'last_month' => 'Last month', 'last_week' => 'Last week', 'last_year' => 'Last year', - 'lead_developer' => 'Lead developer', - 'license' => 'License', 'log_is_ok' => 'Permissions on logs directory are good', 'login_configuration' => 'Login', 'login_persona_problem' => 'Connection problem with Persona?', @@ -295,7 +286,6 @@ return array( 'next_step' => 'Go to the next step', 'no' => 'No', 'no_feed_actualized' => 'No RSS feed has been updated', - 'no_feed_to_display' => 'There is no article to show.', 'no_feed_to_refresh' => 'There is no feed to refresh…', 'no_query' => 'You haven’t created any user query yet.', 'no_query_filter' => 'No filter', @@ -334,7 +324,6 @@ return array( 'prefix' => 'Table prefix', 'previous_article' => 'Skip to the previous article', 'previous_page' => 'Skip to the previous page', - 'project_website' => 'Project website', 'public' => 'Public', 'publication_date' => 'Date of publication', 'purge_completed' => 'Purge completed (%d articles deleted)', @@ -371,7 +360,6 @@ return array( 'refresh' => 'Refresh', 'retrieve_truncated_feeds' => 'Retrieves truncated RSS feeds (attention, requires more time!)', 'rss_feed_management' => 'RSS feeds management', - 'rss_feeds_of' => 'RSS feed of %s', 'sat' => 'Sat', 'save' => 'Save', 'scroll' => 'while scrolling', @@ -413,7 +401,6 @@ return array( 'submit' => 'Submit', 'sun' => 'Sun', 'theme' => 'Theme', - 'think_to_add' => 'You may add some feeds.', 'this_is_the_end' => 'This is the end', 'thu' => 'Thu', 'top_line' => 'Top line', @@ -442,9 +429,7 @@ return array( 'username_admin' => 'Administrator username', 'users' => 'Users', 'users_list' => 'List of users', - 'version' => 'Version', 'version_update' => 'Update', - 'website' => 'Website', 'website_url' => 'Website URL', 'wed' => 'Wed', 'width_large' => 'Large', diff --git a/app/i18n/en/index.php b/app/i18n/en/index.php index 723feefd7..338f589ed 100644 --- a/app/i18n/en/index.php +++ b/app/i18n/en/index.php @@ -1,11 +1,30 @@ array( + '_' => 'About', + 'agpl3' => 'AGPL 3', + 'bugs_reports' => 'Bugs reports', + 'credits' => 'Credits', + 'credits_content' => 'Some design elements come from Bootstrap although FreshRSS doesn’t use this framework. Icons come from GNOME project. Open Sans font police has been created by Steve Matteson. Favicons are collected with getFavicon API. FreshRSS is based on Minz, a PHP framework.', + 'freshrss_description' => 'FreshRSS is a RSS feeds aggregator to self-host like Kriss Feed or Leed. It is light and easy to take in hand while being powerful and configurable tool.', + 'github_or_email' => 'on Github or by mail', + 'lead_developer' => 'Lead developer', + 'license' => 'License', + 'project_website' => 'Project website', + 'title' => 'About', + 'version' => 'Version', + 'website' => 'Website', + ), 'entry' => array( 'by_author' => 'By %s', ), 'feed' => array( + 'add' => 'You may add some feeds.', + 'empty' => 'There is no article to show.', + 'rss_of' => 'RSS feed of %s', 'title' => 'Your RSS feeds', + 'title_global' => 'Global view', 'title_fav' => 'Your favourites', ), 'log' => array( diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index b999b130c..e7c1c0d09 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -84,7 +84,6 @@ return array( 'administration' => 'Gérer', 'advanced' => 'Avancé', 'after_onread' => 'Après “marquer tout comme lu”,', - 'agpl3' => 'AGPL 3', 'all_feeds' => 'Tous les flux', 'allow_anonymous' => 'Autoriser la lecture anonyme des articles de l’utilisateur par défaut (%s)', 'allow_anonymous_refresh' => 'Autoriser le rafraîchissement anonyme des flux', @@ -132,7 +131,6 @@ return array( 'bdd_type' => 'Type de base de données', 'blank_to_disable' => 'Laissez vide pour désactiver', 'bottom_line' => 'Ligne du bas', - 'bugs_reports' => 'Rapports de bugs', 'by' => 'par', 'by_default' => 'Par défaut', 'by_email' => 'Par courriel', @@ -164,8 +162,6 @@ return array( 'content_width' => 'Largeur du contenu', 'create' => 'Créer', 'create_user' => 'Créer un nouvel utilisateur', - 'credits' => 'Crédits', - 'credits_content' => 'Des éléments de design sont issus du projet Bootstrap bien que FreshRSS n’utilise pas ce framework. Les icônes sont issues du projet GNOME. La police Open Sans utilisée a été créée par Steve Matteson. Les favicons sont récupérés grâce au site getFavicon. FreshRSS repose sur Minz, un framework PHP.', 'css_path_on_website' => 'Sélecteur CSS des articles sur le site d’origine', 'ctype_is_nok' => 'Il manque une librairie pour la vérification des types de caractères (php-ctype)', 'ctype_is_ok' => 'Vous disposez du nécessaire pour la vérification des types de caractères (ctype)', @@ -223,12 +219,10 @@ return array( 'first_article' => 'Passer au premier article', 'fix_errors_before' => 'Veuillez corriger les erreurs avant de passer à l’étape suivante.', 'focus_search' => 'Accéder à la recherche', - 'freshrss_description' => 'FreshRSS est un agrégateur de flux RSS à auto-héberger à l’image de Kriss Feed ou Leed. Il se veut léger et facile à prendre en main tout en étant un outil puissant et paramétrable.', 'freshrss_installation' => 'Installation · FreshRSS', 'fri' => 'ven.', 'general_conf_is_ok' => 'La configuration générale a été enregistrée.', 'general_configuration' => 'Configuration générale', - 'github_or_email' => 'sur Github ou par courriel', 'help' => 'Afficher la documentation', 'hide_read_feeds' => 'Cacher les catégories & flux sans article non-lu (ne fonctionne pas avec la configuration “Afficher tous les articles”)', 'host' => 'Hôte', @@ -269,8 +263,6 @@ return array( 'last_month' => 'Depuis le mois dernier', 'last_week' => 'Depuis la semaine dernière', 'last_year' => 'Depuis l’année dernière', - 'lead_developer' => 'Développeur principal', - 'license' => 'Licence', 'log_is_ok' => 'Les droits sur le répertoire des logs sont bons', 'login_configuration' => 'Identification', 'login_persona_problem' => 'Problème de connexion à Persona ?', @@ -295,7 +287,6 @@ return array( 'next_step' => 'Passer à l’étape suivante', 'no' => 'Non', 'no_feed_actualized' => 'Aucun flux n’a pu être mis à jour.', - 'no_feed_to_display' => 'Il n’y a aucun article à afficher.', 'no_feed_to_refresh' => 'Il n’y a aucun flux à actualiser…', 'no_query' => 'Vous n’avez pas encore créé de filtre.', 'no_query_filter' => 'Aucun filtre appliqué', @@ -334,7 +325,6 @@ return array( 'prefix' => 'Préfixe des tables', 'previous_article' => 'Passer à l’article précédent', 'previous_page' => 'Passer à la page précédente', - 'project_website' => 'Site du projet', 'public' => 'Public', 'publication_date' => 'Date de publication', 'purge_completed' => 'Purge effectuée (%d articles supprimés).', @@ -371,7 +361,6 @@ return array( 'refresh' => 'Actualisation', 'retrieve_truncated_feeds' => 'Permet de récupérer les flux tronqués (attention, demande plus de temps !)', 'rss_feed_management' => 'Gestion des flux RSS', - 'rss_feeds_of' => 'Flux RSS de %s', 'sat' => 'sam.', 'save' => 'Enregistrer', 'scroll' => 'au défilement de la page', @@ -413,7 +402,6 @@ return array( 'submit' => 'Valider', 'sun' => 'dim.', 'theme' => 'Thème', - 'think_to_add' => 'Vous pouvez ajouter des flux.', 'this_is_the_end' => 'This is the end', 'thu' => 'jeu.', 'top_line' => 'Ligne du haut', @@ -442,9 +430,7 @@ return array( 'username_admin' => 'Nom d’utilisateur administrateur', 'users' => 'Utilisateurs', 'users_list' => 'Liste des utilisateurs', - 'version' => 'Version', 'version_update' => 'Mise à jour', - 'website' => 'Site Internet', 'website_url' => 'URL du site', 'wed' => 'mer.', 'width_large' => 'Large', diff --git a/app/i18n/fr/index.php b/app/i18n/fr/index.php index e21cc4410..bcc95a72f 100644 --- a/app/i18n/fr/index.php +++ b/app/i18n/fr/index.php @@ -1,11 +1,30 @@ array( + '_' => 'À propos', + 'agpl3' => 'AGPL 3', + 'bugs_reports' => 'Rapports de bugs', + 'credits' => 'Crédits', + 'credits_content' => 'Des éléments de design sont issus du projet Bootstrap bien que FreshRSS n’utilise pas ce framework. Les icônes sont issues du projet GNOME. La police Open Sans utilisée a été créée par Steve Matteson. Les favicons sont récupérés grâce au site getFavicon. FreshRSS repose sur Minz, un framework PHP.', + 'freshrss_description' => 'FreshRSS est un agrégateur de flux RSS à auto-héberger à l’image de Kriss Feed ou Leed. Il se veut léger et facile à prendre en main tout en étant un outil puissant et paramétrable.', + 'github_or_email' => 'sur Github ou par courriel', + 'lead_developer' => 'Développeur principal', + 'license' => 'Licence', + 'project_website' => 'Site du projet', + 'title' => 'À propos', + 'version' => 'Version', + 'website' => 'Site Internet', + ), 'entry' => array( 'by_author' => 'Par %s', ), 'feed' => array( + 'add' => 'Vous pouvez ajouter des flux.', + 'empty' => 'Il n’y a aucun article à afficher.', + 'rss_of' => 'Flux RSS de %s', 'title' => 'Vos flux RSS', + 'title_global' => 'Vue globale', 'title_fav' => 'Vos favoris', ), 'log' => array( diff --git a/app/views/index/about.phtml b/app/views/index/about.phtml index 407d13ae9..ff2c538a2 100644 --- a/app/views/index/about.phtml +++ b/app/views/index/about.phtml @@ -1,27 +1,27 @@
- + -

+

-
+
-
-
Marien Fressinaud
+
+
Marien Fressinaud
-
-
+
+
-
-
+
+
-
+
-

+

-

-

+

+

diff --git a/app/views/index/normal.phtml b/app/views/index/normal.phtml index 62fb68931..e2963a9cc 100644 --- a/app/views/index/normal.phtml +++ b/app/views/index/normal.phtml @@ -187,7 +187,7 @@ if (!empty($this->entries)) {
-

-

+

+

diff --git a/app/views/index/reader.phtml b/app/views/index/reader.phtml index f07868488..d87550f77 100644 --- a/app/views/index/reader.phtml +++ b/app/views/index/reader.phtml @@ -23,7 +23,7 @@ if (!empty($this->entries)) {
author(); - echo $author != '' ? _t('by_author', $author) . ' — ' : '', + echo $author != '' ? _t('index.entry.by_author', $author) . ' — ' : '', $item->date(); ?>
@@ -38,7 +38,7 @@ if (!empty($this->entries)) {
-

-

+

+

diff --git a/app/views/index/rss.phtml b/app/views/index/rss.phtml index e34b15ab1..86074517c 100755 --- a/app/views/index/rss.phtml +++ b/app/views/index/rss.phtml @@ -3,7 +3,7 @@ <?php echo $this->rss_title; ?> - rss_title); ?> + rss_title); ?> GMT -- cgit v1.2.3 From a84e9e50bfe17ab1c84ff22ec7accdfd0b9a76db Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Thu, 11 Dec 2014 21:15:01 +0100 Subject: Fix french i18n for auth and configure views --- app/i18n/en/admin.php | 11 +++ app/i18n/en/gen.php | 34 ++++----- app/i18n/en/index.php | 4 +- app/i18n/fr/admin.php | 11 +++ app/i18n/fr/conf.php | 133 ++++++++++++++++++++++++++++++++++++ app/i18n/fr/gen.php | 130 +++++------------------------------ app/i18n/fr/index.php | 9 ++- app/views/auth/formLogin.phtml | 14 ++-- app/views/auth/index.phtml | 32 ++++----- app/views/auth/personaLogin.phtml | 8 +-- app/views/auth/reset.phtml | 14 ++-- app/views/configure/archiving.phtml | 36 +++++----- app/views/configure/display.phtml | 44 ++++++------ app/views/configure/queries.phtml | 26 +++---- app/views/configure/reading.phtml | 78 ++++++++++----------- app/views/configure/sharing.phtml | 24 +++---- app/views/configure/shortcut.phtml | 52 +++++++------- app/views/index/normal.phtml | 2 +- app/views/index/reader.phtml | 2 +- 19 files changed, 358 insertions(+), 306 deletions(-) (limited to 'app/views/index/reader.phtml') diff --git a/app/i18n/en/admin.php b/app/i18n/en/admin.php index 7778c56a7..b79b17bc4 100644 --- a/app/i18n/en/admin.php +++ b/app/i18n/en/admin.php @@ -2,8 +2,19 @@ return array( 'auth' => array( + 'allow_anonymous' => 'Allow anonymous reading of the articles of the default user (%s)', + 'allow_anonymous_refresh' => 'Allow anonymous refresh of the articles', + 'api_enabled' => 'Allow API access (required for mobile apps)', + 'form' => 'Web form (traditional, requires JavaScript)', + 'http' => 'HTTP (for advanced users with HTTPS)', + 'none' => 'None (dangerous)', + 'persona' => 'Mozilla Persona (modern, requires JavaScript)', 'title' => 'Authentication', 'title_reset' => 'Authentication reset', + 'token' => 'Authentication token', + 'token_help' => 'Allows to access RSS output of the default user without authentication.
%s?output=rss&token=%s', + 'type' => 'Authentication method', + 'unsafe_autologin' => 'Allow unsafe automatic login using the format: ', ), 'check_install' => array( 'cache' => array( diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index 761d566bf..a460910bd 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -19,8 +19,16 @@ return array( 'truncate' => 'Delete all articles', ), 'auth' => array( + 'keep_logged_in' => 'Keep me logged in (1 month)', 'login' => 'Login', + 'login_persona' => 'Login with Persona', + 'login_persona_problem' => 'Connection problem with Persona?', 'logout' => 'Logout', + 'password' => 'Password', + 'reset' => 'Authentication reset', + 'username' => 'Username', + 'username_admin' => 'Administrator username', + 'will_reset' => 'Authentication system will be reset: a form will be used instead of Persona.', ), 'date' => array( 'Apr' => '\\A\\p\\r\\i\\l', @@ -76,6 +84,10 @@ return array( 'wed' => 'Wed', 'yesterday' => 'Yesterday', ), + 'freshrss' => array( + '_' => 'FreshRSS', + 'about' => 'About FreshRSS', + ), 'js' => array( 'category_empty' => 'Empty category', 'confirm_action' => 'Are you sure you want to perform this action? It cannot be cancelled!', @@ -83,6 +95,7 @@ return array( 'new_article' => 'There are new available articles, click to refresh the page.', 'notif_body_new_articles' => 'There are \\d new articles to read on FreshRSS.', 'notif_title_new_articles' => 'FreshRSS: new articles!', + 'should_be_activated' => 'JavaScript must be enabled', ), 'menu' => array( 'about' => 'About', @@ -123,12 +136,9 @@ return array( 'or' => 'or', 'yes' => 'Yes', ), - 'freshrss' => 'FreshRSS', + 'activate_sharing' => 'Activate sharing', 'after_onread' => 'After “mark all as read”,', - 'allow_anonymous' => 'Allow anonymous reading of the articles of the default user (%s)', - 'allow_anonymous_refresh' => 'Allow anonymous refresh of the articles', - 'api_enabled' => 'Allow API access (required for mobile apps)', 'archiving_configuration_help' => 'More options are available in the individual stream settings', 'article' => 'Article', 'article_icons' => 'Article icons', @@ -139,12 +149,6 @@ return array( 'articles' => 'articles', 'articles_per_page' => 'Number of articles per page', 'articles_to_display' => 'Articles to display', - 'auth_form' => 'Web form (traditional, requires JavaScript)', - 'auth_none' => 'None (dangerous)', - 'auth_persona' => 'Mozilla Persona (modern, requires JavaScript)', - 'auth_token' => 'Authentication token', - 'auth_type' => 'Authentication method', - 'auth_will_reset' => 'Authentication system will be reset: a form will be used instead of Persona.', 'author' => 'Author', 'auto_load_more' => 'Load next articles at the page bottom', 'auto_read_when' => 'Mark article as read…', @@ -193,7 +197,6 @@ return array( 'do_not_change_if_doubt' => 'Don’t change if you doubt about it', 'dom_is_nok' => 'You lack a required library to browse the DOM (php-xml package)', 'dom_is_ok' => 'You have the required library to browse the DOM', - 'explain_token' => 'Allows to access RSS output of the default user without authentication.
%s?output=rss&token=%s', 'favicons_is_ok' => 'Permissions on favicons directory are good', 'feed' => 'Feed', 'feeds' => 'Feeds', @@ -208,7 +211,6 @@ return array( 'hide_read_feeds' => 'Hide categories & feeds with no unread article (does not work with “Show all articles” configuration)', 'host' => 'Host', 'html5_notif_timeout' => 'HTML5 notification timeout', - 'http_auth' => 'HTTP (for advanced users with HTTPS)', 'http_referer_is_nok' => 'Please check that you are not altering your HTTP REFERER.', 'http_referer_is_ok' => 'Your HTTP REFERER is known and corresponds to your server.', 'img_with_lazyload' => 'Use "lazy load" mode to load pictures', @@ -218,16 +220,12 @@ return array( 'is_admin' => 'is administrator', 'javascript_for_shortcuts' => 'JavaScript must be enabled in order to use shortcuts', 'javascript_is_better' => 'FreshRSS is more pleasant with JavaScript enabled', - 'javascript_should_be_activated' => 'JavaScript must be enabled', 'jump_next' => 'jump to next unread sibling (feed or category)', - 'keep_logged_in' => 'Keep me logged in (1 month)', 'language' => 'Language', 'language_defined' => 'Language has been defined.', 'last_article' => 'Skip to the last article', 'log_is_ok' => 'Permissions on logs directory are good', - 'login_persona_problem' => 'Connection problem with Persona?', 'login_required' => 'Login required:', - 'login_with_persona' => 'Login with Persona', 'mark_cat_read' => 'Mark category as read', 'mark_favorite' => 'Mark as favourite', 'mark_feed_read' => 'Mark feed as read', @@ -250,7 +248,6 @@ return array( 'number_feeds' => '%d feeds', 'optimize_bdd' => 'Optimize database', 'optimize_todo_sometimes' => 'To do occasionally to reduce the size of the database', - 'password' => 'Password', 'password_api' => 'Password API
(e.g., for mobile apps)', 'password_form' => 'Password
(for the Web-form login method)', 'pcre_is_nok' => 'You lack a required library for regular expressions (php-pcre)', @@ -313,7 +310,6 @@ return array( 'theme' => 'Theme', 'this_is_the_end' => 'This is the end', 'top_line' => 'Top line', - 'unsafe_autologin' => 'Allow unsafe automatic login using the format: ', 'update_apply' => 'Apply', 'update_check' => 'Check for new updates', 'update_end' => 'Update process is completed, now you can go to the final step.', @@ -324,8 +320,6 @@ return array( 'upon_reception' => 'upon reception of the article', 'user_filter' => 'Access user filters', 'user_filter_help' => 'If there is only one user filter, it is used. Else filters are accessible by their number.', - 'username' => 'Username', - 'username_admin' => 'Administrator username', 'users' => 'Users', 'users_list' => 'List of users', 'version_update' => 'Update', diff --git a/app/i18n/en/index.php b/app/i18n/en/index.php index a1a276feb..b4d48ca73 100644 --- a/app/i18n/en/index.php +++ b/app/i18n/en/index.php @@ -47,14 +47,14 @@ return array( 'normal_view' => 'Normal view', 'older_first' => 'Oldest first', 'queries' => 'User queries', - 'read' => 'Show only unread', + 'read' => 'Show only read', 'reader_view' => 'Reading view', 'rss_view' => 'RSS feed', 'search_short' => 'Search', 'starred' => 'Show only favorites', 'stats' => 'Statistics', 'subscription' => 'Subscriptions management', - 'unread' => 'Show only read', + 'unread' => 'Show only unread', ), 'share' => array( '_' => 'Share', diff --git a/app/i18n/fr/admin.php b/app/i18n/fr/admin.php index ffb390876..2268a8a38 100644 --- a/app/i18n/fr/admin.php +++ b/app/i18n/fr/admin.php @@ -2,8 +2,19 @@ return array( 'auth' => array( + 'allow_anonymous' => 'Autoriser la lecture anonyme des articles de l’utilisateur par défaut (%s)', + 'allow_anonymous_refresh' => 'Autoriser le rafraîchissement anonyme des flux', + 'api_enabled' => 'Autoriser l’accès par API (nécessaire pour les applis mobiles)', + 'form' => 'Formulaire (traditionnel, requiert JavaScript)', + 'http' => 'HTTP (pour utilisateurs avancés avec HTTPS)', + 'none' => 'Aucune (dangereux)', + 'persona' => 'Mozilla Persona (moderne, requiert JavaScript)', 'title' => 'Authentification', 'title_reset' => 'Réinitialisation de l’authentification', + 'token' => 'Jeton d’identification', + 'token_help' => 'Permet d’accéder à la sortie RSS de l’utilisateur par défaut sans besoin de s’authentifier.
%s?output=rss&token=%s', + 'type' => 'Méthode d’authentification', + 'unsafe_autologin' => 'Autoriser les connexions automatiques non-sûres au format : ', ), 'check_install' => array( 'cache' => array( diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php index 9f78fde87..1c8ad6d9e 100644 --- a/app/i18n/fr/conf.php +++ b/app/i18n/fr/conf.php @@ -2,28 +2,161 @@ return array( 'archiving' => array( + '_' => 'Archivage', + 'advanced' => 'Avancé', + 'delete_after' => 'Supprimer les articles après', + 'help' => 'D’autres options sont disponibles dans la configuration individuelle des flux.', + 'keep_history_by_feed' => 'Nombre minimum d’articles à conserver', + 'optimize' => 'Optimiser la base de données', + 'optimize_help' => 'À faire de temps en temps pour réduire la taille de la BDD', + 'purge_now' => 'Purger maintenant', 'title' => 'Archivage', + 'ttl' => 'Ne pas automatiquement rafraîchir plus souvent que', ), 'display' => array( + '_' => 'Affichage', + 'icon' => array( + 'bottom_line' => 'Ligne du bas', + 'entry' => 'Icônes d’article', + 'publication_date' => 'Date de publication', + 'related_tags' => 'Tags associés', + 'sharing' => 'Partage', + 'top_line' => 'Ligne du haut', + ), + 'language' => 'Langue', 'title' => 'Affichage', + 'notif_html5' => array( + 'seconds' => 'secondes (0 signifie aucun timeout)', + 'timeout' => 'Temps d’affichage de la notification HTML5', + ), + 'theme' => 'Thème', + 'width' => array( + 'content' => 'Largeur du contenu', + 'large' => 'Large', + 'medium' => 'Moyenne', + 'no_limit' => 'Pas de limite', + 'thin' => 'Fine', + ), ), 'query' => array( + '_' => 'Filtres utilisateurs', + 'deprecated' => 'Ce filtre n’est plus valide. La catégorie ou le flux concerné a été supprimé.', + 'filter' => 'Filtres appliqués :', + 'get_all' => 'Afficher tous les articles', + 'get_category' => 'Afficher la catégorie "%s"', + 'get_favorite' => 'Afficher les articles favoris', + 'get_feed' => 'Afficher le flux "%s"', 'number' => 'Filtre n°%d', + 'no_filter' => 'Aucun filtre appliqué', + 'none' => 'Vous n’avez pas encore créé de filtre.', + 'order_asc' => 'Afficher les articles les plus anciens en premier', + 'order_desc' => 'Afficher les articles les plus récents en premier', + 'search' => 'Recherche de "%s"', + 'state_0' => 'Afficher tous les articles', + 'state_1' => 'Afficher les articles lus', + 'state_2' => 'Afficher les articles non lus', + 'state_3' => 'Afficher tous les articles', + 'state_4' => 'Afficher les articles favoris', + 'state_5' => 'Afficher les articles lus et favoris', + 'state_6' => 'Afficher les articles non lus et favoris', + 'state_7' => 'Afficher les articles favoris', + 'state_8' => 'Afficher les articles non favoris', + 'state_9' => 'Afficher les articles lus et non favoris', + 'state_10' => 'Afficher les articles non lus et non favoris', + 'state_11' => 'Afficher les articles non favoris', + 'state_12' => 'Afficher tous les articles', + 'state_13' => 'Afficher les articles lus', + 'state_14' => 'Afficher les articles non lus', + 'state_15' => 'Afficher tous les articles', 'title' => 'Filtres utilisateurs', ), 'profile' => array( 'title' => 'Profil', ), 'reading' => array( + '_' => 'Lecture', + 'after_onread' => 'Après “marquer tout comme lu”,', + 'articles_per_page' => 'Nombre d’articles par page', + 'auto_load_more' => 'Charger les articles suivants en bas de page', + 'auto_remove_article' => 'Cacher les articles après lecture', + 'confirm_enabled' => 'Afficher une confirmation lors des actions “marquer tout comme lu”', + 'display_articles_unfolded' => 'Afficher les articles dépliés par défaut', + 'display_categories_unfolded' => 'Afficher les catégories pliées par défaut', + 'hide_read_feeds' => 'Cacher les catégories & flux sans article non-lu (ne fonctionne pas avec la configuration “Afficher tous les articles”)', + 'img_with_lazyload' => 'Utiliser le mode “chargement différé” pour les images', + 'jump_next' => 'sauter au prochain voisin non lu (flux ou catégorie)', + 'number_divided_when_reader' => 'Divisé par 2 dans la vue de lecture.', + 'read' => array( + 'article_open_on_website' => 'lorsque l’article est ouvert sur le site d’origine', + 'article_viewed' => 'lorsque l’article est affiché', + 'scroll' => 'au défilement de la page', + 'upon_reception' => 'dès la réception du nouvel article', + 'when' => 'Marquer un article comme lu…', + ), + 'show' => array( + '_' => 'Articles à afficher', + 'adaptive' => 'Adapter l’affichage', + 'all_articles' => 'Afficher tous les articles', + 'unread' => 'Afficher les non lus', + ), + 'sort' => array( + '_' => 'Ordre de tri', + 'newer_first' => 'Plus récents en premier', + 'older_first' => 'Plus anciens en premier', + ), + 'sticky_post' => 'Aligner l’article en haut quand il est ouvert', 'title' => 'Lecture', + 'view' => array( + 'default' => 'Vue par défaut', + 'global' => 'Vue globale', + 'normal' => 'Vue normale', + 'reader' => 'Vue lecture', + ), ), 'sharing' => array( + '_' => 'Partage', + 'blogotext' => 'Blogotext', + 'diaspora' => 'Diaspora*', + 'email' => 'Email', + 'facebook' => 'Facebook', + 'g+' => 'Google+', + 'more_information' => 'Plus d’informations', + 'print' => 'Print', + 'shaarli' => 'Shaarli', + 'share_name' => 'Nom du partage à afficher', + 'share_url' => 'URL du partage à utiliser', 'title' => 'Partage', + 'twitter' => 'Twitter', + 'wallabag' => 'wallabag', ), 'shortcut' => array( + '_' => 'Raccourcis', + 'article_action' => 'Actions associées à l’article courant', + 'auto_share' => 'Partager', + 'auto_share_help' => 'S’il n’y a qu’un mode de partage, celui-ci est utilisé automatiquement. Sinon ils sont accessibles par leur numéro.', + 'close_dropdown' => 'Fermer les menus', + 'collapse_article' => 'Refermer', + 'first_article' => 'Passer au premier article', + 'focus_search' => 'Accéder à la recherche', + 'help' => 'Afficher la documentation', + 'last_article' => 'Passer au dernier article', + 'load_more' => 'Charger plus d’articles', + 'mark_read' => 'Marquer comme lu', + 'mark_favorite' => 'Mettre en favori', + 'navigation' => 'Navigation', + 'navigation_help' => 'Avec le modificateur "Shift", les raccourcis de navigation s’appliquent aux flux.
Avec le modificateur "Alt", les raccourcis de navigation s’appliquent aux catégories.', + 'next_article' => 'Passer à l’article suivant', + 'other_action' => 'Autres actions', + 'previous_article' => 'Passer à l’article précédent', + 'see_on_website' => 'Voir sur le site d’origine', + 'shift_for_all_read' => '+ shift pour marquer tous les articles comme lus', 'title' => 'Raccourcis', + 'user_filter' => 'Accéder aux filtres utilisateur', + 'user_filter_help' => 'S’il n’y a qu’un filtre utilisateur, celui-ci est utilisé automatiquement. Sinon ils sont accessibles par leur numéro.', ), 'user' => array( 'articles_and_size' => '%s articles (%s)', + 'current' => 'Utilisateur actuel', + 'users' => 'Utilisateurs', ), ); diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index 1866f8e22..c2eb0e394 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -13,14 +13,23 @@ return array( 'import' => 'Importer', 'manage' => 'Gérer', 'mark_read' => 'Marquer comme lu', + 'mark_favorite' => 'Mettre en favori', 'remove' => 'Supprimer', 'see_website' => 'Voir le site', 'submit' => 'Valider', 'truncate' => 'Supprimer tous les articles', ), 'auth' => array( + 'keep_logged_in' => 'Rester connecté (1 mois)', 'login' => 'Connexion', + 'login_persona' => 'Connexion avec Persona', + 'login_persona_problem' => 'Problème de connexion à Persona ?', 'logout' => 'Déconnexion', + 'password' => 'Mot de passe', + 'reset' => 'Réinitialisation de l’authentification', + 'username' => 'Nom d’utilisateur', + 'username_admin' => 'Nom d’utilisateur administrateur', + 'will_reset' => 'Le système d’authentification va être réinitialisé : un formulaire sera utilisé à la place de Persona.', ), 'date' => array( 'Apr' => '\\a\\v\\r\\i\\l', @@ -62,6 +71,7 @@ return array( 'march' => 'mars', 'may' => 'mai.', 'mon' => 'lun.', + 'month' => 'mois', 'nov' => 'nov.', 'november' => 'novembre', 'oct' => 'oct.', @@ -76,6 +86,10 @@ return array( 'wed' => 'mer.', 'yesterday' => 'Hier', ), + 'freshrss' => array( + '_' => 'FreshRSS', + 'about' => 'À propos de FreshRSS', + ), 'js' => array( 'category_empty' => 'Catégorie vide', 'confirm_action' => 'Êtes-vous sûr(e) de vouloir continuer ? Cette action ne peut être annulée !', @@ -83,6 +97,7 @@ return array( 'new_article' => 'Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.', 'notif_body_new_articles' => 'Il y a \\d nouveaux articles à lire sur FreshRSS.', 'notif_title_new_articles' => 'FreshRSS : nouveaux articles !', + 'should_be_activated' => 'Le JavaScript doit être activé.', ), 'menu' => array( 'about' => 'À propos', @@ -115,6 +130,7 @@ return array( 'short' => array( 'attention' => 'Attention !', 'blank_to_disable' => 'Laissez vide pour désactiver', + 'by_author' => 'Par %s', 'by_default' => 'Par défaut', 'damn' => 'Arf !', 'no' => 'Non', @@ -123,34 +139,13 @@ return array( 'or' => 'ou', 'yes' => 'Oui', ), - 'freshrss' => 'FreshRSS', + 'activate_sharing' => 'Activer le partage', - 'after_onread' => 'Après “marquer tout comme lu”,', - 'allow_anonymous' => 'Autoriser la lecture anonyme des articles de l’utilisateur par défaut (%s)', - 'allow_anonymous_refresh' => 'Autoriser le rafraîchissement anonyme des flux', - 'api_enabled' => 'Autoriser l’accès par API (nécessaire pour les applis mobiles)', - 'archiving_configuration_help' => 'D’autres options sont disponibles dans la configuration individuelle des flux.', 'article' => 'Article', - 'article_icons' => 'Icônes d’article', - 'article_open_on_website' => 'lorsque l’article est ouvert sur le site d’origine', 'article_published_on' => 'Article publié initialement sur %s', 'article_published_on_author' => 'Article publié initialement sur %s par %s', - 'article_viewed' => 'lorsque l’article est affiché', 'articles' => 'articles', - 'articles_per_page' => 'Nombre d’articles par page', - 'articles_to_display' => 'Articles à afficher', - 'auth_form' => 'Formulaire (traditionnel, requiert JavaScript)', - 'auth_none' => 'Aucune (dangereux)', - 'auth_persona' => 'Mozilla Persona (moderne, requiert JavaScript)', - 'auth_token' => 'Jeton d’identification', - 'auth_type' => 'Méthode d’authentification', - 'auth_will_reset' => 'Le système d’authentification va être réinitialisé : un formulaire sera utilisé à la place de Persona.', 'author' => 'Auteur', - 'auto_load_more' => 'Charger les articles suivants en bas de page', - 'auto_read_when' => 'Marquer un article comme lu…', - 'auto_remove_article' => 'Cacher les articles après lecture', - 'auto_share' => 'Partager', - 'auto_share_help' => 'S’il n’y a qu’un mode de partage, celui-ci est utilisé automatiquement. Sinon ils sont accessibles par leur numéro.', 'bad_opml_file' => 'Votre fichier OPML n’est pas valide.', 'base_url' => 'Base de l’URL', 'bdd' => 'Base de données', @@ -158,7 +153,6 @@ return array( 'bdd_conf_is_ok' => 'La configuration de la base de données a été enregistrée.', 'bdd_configuration' => 'Base de données', 'bdd_type' => 'Type de base de données', - 'bottom_line' => 'Ligne du bas', 'by' => 'par', 'by_email' => 'Par courriel', 'by_feed' => 'par flux', @@ -172,85 +166,51 @@ return array( 'change_value' => 'Vous devriez changer cette valeur par n’importe quelle autre', 'checks' => 'Vérifications', 'choose_language' => 'Choisissez la langue pour FreshRSS', - 'collapse_article' => 'Refermer', 'congratulations' => 'Félicitations !', - 'content_width' => 'Largeur du contenu', 'create' => 'Créer', 'create_user' => 'Créer un nouvel utilisateur', 'ctype_is_nok' => 'Il manque une librairie pour la vérification des types de caractères (php-ctype)', 'ctype_is_ok' => 'Vous disposez du nécessaire pour la vérification des types de caractères (ctype)', 'curl_is_nok' => 'Vous ne disposez pas de cURL (paquet php5-curl)', 'curl_is_ok' => 'Vous disposez de cURL dans sa version %s', - 'current_user' => 'Utilisateur actuel', 'data_is_ok' => 'Les droits sur le répertoire de data sont bons', 'default_category' => 'Sans catégorie', 'default_user' => 'Nom de l’utilisateur par défaut (16 caractères alphanumériques maximum)', - 'default_view' => 'Vue par défaut', - 'delete_articles_every' => 'Supprimer les articles après', 'display' => 'Affichage', - 'display_articles_unfolded' => 'Afficher les articles dépliés par défaut', - 'display_categories_unfolded' => 'Afficher les catégories pliées par défaut', 'do_not_change_if_doubt' => 'Laissez tel quel dans le doute', 'dom_is_nok' => 'Il manque une librairie pour parcourir le DOM (paquet php-xml)', 'dom_is_ok' => 'Vous disposez du nécessaire pour parcourir le DOM', - 'explain_token' => 'Permet d’accéder à la sortie RSS de l’utilisateur par défaut sans besoin de s’authentifier.
%s?output=rss&token=%s', 'favicons_is_ok' => 'Les droits sur le répertoire des favicons sont bons', 'feed' => 'Flux', 'feeds' => 'Flux', 'finish_installation' => 'Terminer l’installation', - 'first_article' => 'Passer au premier article', 'fix_errors_before' => 'Veuillez corriger les erreurs avant de passer à l’étape suivante.', - 'focus_search' => 'Accéder à la recherche', 'freshrss_installation' => 'Installation · FreshRSS', 'general_conf_is_ok' => 'La configuration générale a été enregistrée.', 'general_configuration' => 'Configuration générale', - 'help' => 'Afficher la documentation', - 'hide_read_feeds' => 'Cacher les catégories & flux sans article non-lu (ne fonctionne pas avec la configuration “Afficher tous les articles”)', 'host' => 'Hôte', - 'html5_notif_timeout' => 'Temps d’affichage de la notification HTML5', - 'http_auth' => 'HTTP (pour utilisateurs avancés avec HTTPS)', 'http_referer_is_nok' => 'Veuillez vérifier que vous ne modifiez pas votre HTTP REFERER.', 'http_referer_is_ok' => 'Le HTTP REFERER est connu et semble correspondre à votre serveur.', - 'img_with_lazyload' => 'Utiliser le mode “chargement différé” pour les images', 'install_not_deleted' => 'Quelque chose s’est mal passé, vous devez supprimer le fichier %s à la main.', 'installation_is_ok' => 'L’installation s’est bien passée.
La dernière étape va maintenant tenter de supprimer les fichiers ainsi que d’éventuelles copies de base de données créés durant le processus de mise à jour.
Vous pouvez choisir de sauter cette étape en supprimant ./data/do-install.txt manuellement.', 'installation_step' => 'Installation — étape %d · FreshRSS', 'is_admin' => 'est administrateur', 'javascript_for_shortcuts' => 'Le JavaScript doit être activé pour pouvoir profiter des raccourcis.', 'javascript_is_better' => 'FreshRSS est plus agréable à utiliser avec JavaScript activé', - 'javascript_should_be_activated' => 'Le JavaScript doit être activé.', - 'jump_next' => 'sauter au prochain voisin non lu (flux ou catégorie)', - 'keep_logged_in' => 'Rester connecté (1 mois)', - 'language' => 'Langue', 'language_defined' => 'La langue a bien été définie.', - 'last_article' => 'Passer au dernier article', 'log_is_ok' => 'Les droits sur le répertoire des logs sont bons', - 'login_persona_problem' => 'Problème de connexion à Persona ?', 'login_required' => 'Accès protégé par mot de passe :', - 'login_with_persona' => 'Connexion avec Persona', - 'mark_cat_read' => 'Marquer la catégorie comme lue', - 'mark_favorite' => 'Mettre en favori', - 'mark_feed_read' => 'Marquer le flux comme lu', 'minz_is_nok' => 'Vous ne disposez pas de la librairie Minz. Vous devriez exécuter le script build.sh ou bien la télécharger sur Github et installer dans le répertoire %s le contenu de son répertoire /lib.', 'minz_is_ok' => 'Vous disposez du framework Minz', - 'month' => 'mois', - 'more_information' => 'Plus d’informations', - 'next_article' => 'Passer à l’article suivant', 'next_page' => 'Passer à la page suivante', 'next_step' => 'Passer à l’étape suivante', 'no_feed_actualized' => 'Aucun flux n’a pu être mis à jour.', - 'no_query' => 'Vous n’avez pas encore créé de filtre.', - 'no_query_filter' => 'Aucun filtre appliqué', 'no_rss_feed' => 'Aucun flux RSS', 'no_selected_feed' => 'Aucun flux sélectionné.', 'not_read' => '%d non lu', 'not_reads' => '%d non lus', 'not_yet_implemented' => 'Pas encore implémenté', - 'number_divided_when_reader' => 'Divisé par 2 dans la vue de lecture.', 'number_feeds' => '%d flux', - 'optimize_bdd' => 'Optimiser la base de données', - 'optimize_todo_sometimes' => 'À faire de temps en temps pour réduire la taille de la BDD', - 'password' => 'Mot de passe', 'password_api' => 'Mot de passe API
(ex. : pour applis mobiles)', 'password_form' => 'Mot de passe
(pour connexion par formulaire)', 'pcre_is_nok' => 'Il manque une librairie pour les expressions régulières (php-pcre)', @@ -262,58 +222,12 @@ return array( 'php_is_nok' => 'Votre version de PHP est la %s mais FreshRSS requiert au moins la version %s', 'php_is_ok' => 'Votre version de PHP est la %s, qui est compatible avec FreshRSS', 'prefix' => 'Préfixe des tables', - 'previous_article' => 'Passer à l’article précédent', 'previous_page' => 'Passer à la page précédente', 'public' => 'Public', - 'publication_date' => 'Date de publication', - 'purge_now' => 'Purger maintenant', - 'query_deprecated' => 'Ce filtre n’est plus valide. La catégorie ou le flux concerné a été supprimé.', - 'query_filter' => 'Filtres appliqués :', - 'query_get_all' => 'Afficher tous les articles', - 'query_get_category' => 'Afficher la catégorie "%s"', - 'query_get_favorite' => 'Afficher les articles favoris', - 'query_get_feed' => 'Afficher le flux "%s"', - 'query_order_asc' => 'Afficher les articles les plus anciens en premier', - 'query_order_desc' => 'Afficher les articles les plus récents en premier', - 'query_search' => 'Recherche de "%s"', - 'query_state_0' => 'Afficher tous les articles', - 'query_state_1' => 'Afficher les articles lus', - 'query_state_2' => 'Afficher les articles non lus', - 'query_state_3' => 'Afficher tous les articles', - 'query_state_4' => 'Afficher les articles favoris', - 'query_state_5' => 'Afficher les articles lus et favoris', - 'query_state_6' => 'Afficher les articles non lus et favoris', - 'query_state_7' => 'Afficher les articles favoris', - 'query_state_8' => 'Afficher les articles non favoris', - 'query_state_9' => 'Afficher les articles lus et non favoris', - 'query_state_10' => 'Afficher les articles non lus et non favoris', - 'query_state_11' => 'Afficher les articles non favoris', - 'query_state_12' => 'Afficher tous les articles', - 'query_state_13' => 'Afficher les articles lus', - 'query_state_14' => 'Afficher les articles non lus', - 'query_state_15' => 'Afficher tous les articles', 'random_string' => 'Chaîne aléatoire', - 'reading_confirm' => 'Afficher une confirmation lors des actions “marquer tout comme lu”', - 'scroll' => 'au défilement de la page', - 'seconds_(0_means_no_timeout)' => 'secondes (0 signifie aucun timeout ) ', - 'see_on_website' => 'Voir sur le site d’origine', - 'share_name' => 'Nom du partage à afficher', - 'share_url' => 'URL du partage à utiliser', 'sharing_management' => 'Gestion des options de partage', - 'shift_for_all_read' => '+ shift pour marquer tous les articles comme lus', - 'shortcuts_article_action' => 'Actions associées à l’article courant', - 'shortcuts_navigation' => 'Navigation', - 'shortcuts_navigation_help' => 'Avec le modificateur "Shift", les raccourcis de navigation s’appliquent aux flux.
Avec le modificateur "Alt", les raccourcis de navigation s’appliquent aux catégories.', - 'shortcuts_other_action' => 'Autres actions', - 'show_adaptive' => 'Adapter l’affichage', - 'show_all_articles' => 'Afficher tous les articles', - 'sort_order' => 'Ordre de tri', 'steps' => 'Étapes', - 'sticky_post' => 'Aligner l’article en haut quand il est ouvert', - 'theme' => 'Thème', 'this_is_the_end' => 'This is the end', - 'top_line' => 'Ligne du haut', - 'unsafe_autologin' => 'Autoriser les connexions automatiques non-sûres au format : ', 'update_apply' => 'Appliquer la mise à jour', 'update_check' => 'Vérifier les mises à jour', 'update_end' => 'La mise à jour est terminée, vous pouvez maintenant passer à l’étape finale.', @@ -321,18 +235,8 @@ return array( 'update_long' => 'Ce processus peut prendre longtemps, selon la taille de votre base de données. Vous aurez peut-être à attendre que cette page dépasse son temps maximum d’exécution (~5 minutes) puis à la recharger.', 'update_start' => 'Lancer la mise à jour', 'updated' => 'Modifications enregistrées.', - 'upon_reception' => 'dès la réception du nouvel article', - 'user_filter' => 'Accéder aux filtres utilisateur', - 'user_filter_help' => 'S’il n’y a qu’un filtre utilisateur, celui-ci est utilisé automatiquement. Sinon ils sont accessibles par leur numéro.', - 'username' => 'Nom d’utilisateur', - 'username_admin' => 'Nom d’utilisateur administrateur', - 'users' => 'Utilisateurs', 'users_list' => 'Liste des utilisateurs', 'version_update' => 'Mise à jour', - 'width_large' => 'Large', - 'width_medium' => 'Moyenne', - 'width_no_limit' => 'Pas de limite', - 'width_thin' => 'Fine', 'your_diaspora_pod' => 'Votre pod Diaspora*', 'your_shaarli' => 'Votre Shaarli', 'your_wallabag' => 'Votre wallabag', diff --git a/app/i18n/fr/index.php b/app/i18n/fr/index.php index 0156d4cae..3279543bd 100644 --- a/app/i18n/fr/index.php +++ b/app/i18n/fr/index.php @@ -16,9 +16,6 @@ return array( 'version' => 'Version', 'website' => 'Site Internet', ), - 'entry' => array( - 'by_author' => 'Par %s', - ), 'feed' => array( 'add' => 'Vous pouvez ajouter des flux.', 'empty' => 'Il n’y a aucun article à afficher.', @@ -42,19 +39,21 @@ return array( 'global_view' => 'Vue globale', 'main_stream' => 'Flux principal', 'mark_all_read' => 'Tout marquer comme lu', + 'mark_cat_read' => 'Marquer la catégorie comme lue', + 'mark_feed_read' => 'Marquer le flux comme lu', 'newer_first' => 'Plus récents en premier', 'non-starred' => 'Afficher tout sauf les favoris', 'normal_view' => 'Vue normale', 'older_first' => 'Plus anciens en premier', 'queries' => 'Filtres utilisateurs', - 'read' => 'Afficher les non lus', + 'read' => 'Afficher les lus', 'reader_view' => 'Vue lecture', 'rss_view' => 'Flux RSS', 'search_short' => 'Rechercher', 'starred' => 'Afficher les favoris', 'stats' => 'Statistiques', 'subscription' => 'Gestion des abonnements', - 'unread' => 'Afficher les lus', + 'unread' => 'Afficher les non lus', ), 'share' => array( '_' => 'Partager', diff --git a/app/views/auth/formLogin.phtml b/app/views/auth/formLogin.phtml index 0194a11a5..979e17349 100644 --- a/app/views/auth/formLogin.phtml +++ b/app/views/auth/formLogin.phtml @@ -1,28 +1,28 @@
-

+

- +
- +
- +

- +
-

+

diff --git a/app/views/auth/index.phtml b/app/views/auth/index.phtml index 17a81f08b..420937042 100644 --- a/app/views/auth/index.phtml +++ b/app/views/auth/index.phtml @@ -1,22 +1,22 @@ partial('aside_configure'); ?>
- +
- +
- +
@@ -26,7 +26,7 @@
@@ -36,7 +36,7 @@
@@ -46,7 +46,7 @@
@@ -54,12 +54,12 @@
- + token; ?>
- /> - +
@@ -69,15 +69,15 @@
- - + +
diff --git a/app/views/auth/personaLogin.phtml b/app/views/auth/personaLogin.phtml index dd3e22b52..545ed2eac 100644 --- a/app/views/auth/personaLogin.phtml +++ b/app/views/auth/personaLogin.phtml @@ -1,21 +1,21 @@ res === false) { ?>
-

+



- +

-

+

-

+

message)) { ?>

@@ -11,22 +11,22 @@ no_form) { ?>

-
- +
+

- +
- +
- +
- +
diff --git a/app/views/configure/archiving.phtml b/app/views/configure/archiving.phtml index 7c2d79343..4e8dfd385 100644 --- a/app/views/configure/archiving.phtml +++ b/app/views/configure/archiving.phtml @@ -1,31 +1,31 @@ partial('aside_configure'); ?>
- +
- -

+ +

- +
- -   + +  
- +
() + ?> ()
- +
() + ?> ()
- - + +
- +
- +
- nb_total), format_bytes($this->size_user)); ?> + nb_total), format_bytes($this->size_user)); ?>
- +
size_total); ?>
@@ -75,8 +75,8 @@
- - + +
diff --git a/app/views/configure/display.phtml b/app/views/configure/display.phtml index 1c925a5ca..a245c8f5e 100644 --- a/app/views/configure/display.phtml +++ b/app/views/configure/display.phtml @@ -1,13 +1,13 @@ partial('aside_configure'); ?>
- + - +
- +
- + - - - - - + + + + + - + @@ -94,7 +94,7 @@ - + @@ -107,16 +107,16 @@
- +
- +
- - + +
diff --git a/app/views/configure/queries.phtml b/app/views/configure/queries.phtml index 994dfc11b..1b3a08c91 100644 --- a/app/views/configure/queries.phtml +++ b/app/views/configure/queries.phtml @@ -1,15 +1,15 @@ partial('aside_configure'); ?>
- +
- + queries as $key => $query) { ?>
@@ -49,31 +49,31 @@
-
+
-
+
-
+
    -
  • +
  • -
  • +
  • -
  • +
  • -
  • query_get[$key]['type'], $this->query_get[$key]['name']); ?>
  • +
  • query_get[$key]['type'], $this->query_get[$key]['name']); ?>
@@ -85,12 +85,12 @@ queries) > 0) { ?>
- - + +
-

+

diff --git a/app/views/configure/reading.phtml b/app/views/configure/reading.phtml index 0f7a3347a..440ad1df8 100644 --- a/app/views/configure/reading.phtml +++ b/app/views/configure/reading.phtml @@ -1,47 +1,47 @@ partial('aside_configure'); ?>
- +
- +
- +
- +
- +
- +
- +
@@ -50,7 +50,7 @@
@@ -59,8 +59,8 @@
@@ -69,8 +69,8 @@
@@ -79,8 +79,8 @@
@@ -89,8 +89,8 @@
@@ -99,8 +99,8 @@
@@ -109,8 +109,8 @@
@@ -119,48 +119,48 @@
- +
- +
- - + +
diff --git a/app/views/configure/sharing.phtml b/app/views/configure/sharing.phtml index ef5e85a0c..b42825382 100644 --- a/app/views/configure/sharing.phtml +++ b/app/views/configure/sharing.phtml @@ -1,7 +1,7 @@ partial('aside_configure'); ?>
- + @@ -9,28 +9,28 @@ data-advanced='
- - + +
- +
'> - + sharing as $key => $sharing): ?> shares[$sharing['type']]; ?>
' />
- - + +
- + @@ -42,7 +42,7 @@
@@ -51,8 +51,8 @@
- - + +
diff --git a/app/views/configure/shortcut.phtml b/app/views/configure/shortcut.phtml index 66a23877e..dca8b6ef8 100644 --- a/app/views/configure/shortcut.phtml +++ b/app/views/configure/shortcut.phtml @@ -1,7 +1,7 @@ partial('aside_configure'); ?>
- + list_keys as $key) { ?> @@ -12,114 +12,114 @@ shortcuts; ?>
- + - + - + -

+

- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
@@ -127,8 +127,8 @@
- - + +
diff --git a/app/views/index/normal.phtml b/app/views/index/normal.phtml index e2963a9cc..3a27a702b 100644 --- a/app/views/index/normal.phtml +++ b/app/views/index/normal.phtml @@ -100,7 +100,7 @@ if (!empty($this->entries)) {

title(); ?>

author(); - echo $author != '' ? '
' . _t('index.entry.by_author', $author) . '
' : '', + echo $author != '' ? '
' . _t('gen.short.by_author', $author) . '
' : '', $lazyload && $hidePosts ? lazyimg($item->content()) : $item->content(); ?>
diff --git a/app/views/index/reader.phtml b/app/views/index/reader.phtml index d87550f77..1eab86dd2 100644 --- a/app/views/index/reader.phtml +++ b/app/views/index/reader.phtml @@ -23,7 +23,7 @@ if (!empty($this->entries)) {
author(); - echo $author != '' ? _t('index.entry.by_author', $author) . ' — ' : '', + echo $author != '' ? _t('gen.short.by_author', $author) . ' — ' : '', $item->date(); ?>
-- cgit v1.2.3 From 7cca47d1ab5838f5440b1a1e08fa4c0d43989664 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Mon, 5 Jan 2015 22:43:15 +0100 Subject: Change name of user configuration var in Context - FreshRSS_Context::$conf is replaced by FreshRSS_Context::$user_conf - Introduce FreshRSS_Context::$system_conf - Remove FreshRSS_Configuration object See https://github.com/FreshRSS/FreshRSS/issues/730 --- app/Controllers/authController.php | 24 +- app/Controllers/categoryController.php | 10 +- app/Controllers/configureController.php | 94 ++++---- app/Controllers/entryController.php | 4 +- app/Controllers/feedController.php | 18 +- app/Controllers/importExportController.php | 4 +- app/Controllers/indexController.php | 12 +- app/Controllers/javascriptController.php | 2 +- app/Controllers/userController.php | 18 +- app/FreshRSS.php | 7 +- app/Models/Configuration.php | 345 ----------------------------- app/Models/Context.php | 20 +- app/layout/aside_feed.phtml | 6 +- app/layout/layout.phtml | 2 +- app/layout/nav_menu.phtml | 10 +- app/views/auth/index.phtml | 4 +- app/views/configure/archiving.phtml | 10 +- app/views/configure/display.phtml | 30 +-- app/views/configure/queries.phtml | 4 +- app/views/configure/reading.phtml | 44 ++-- app/views/configure/sharing.phtml | 6 +- app/views/configure/shortcut.phtml | 2 +- app/views/helpers/javascript_vars.phtml | 14 +- app/views/helpers/pagination.phtml | 2 +- app/views/index/global.phtml | 4 +- app/views/index/normal.phtml | 32 +-- app/views/index/reader.phtml | 4 +- app/views/user/manage.phtml | 6 +- app/views/user/profile.phtml | 2 +- 29 files changed, 196 insertions(+), 544 deletions(-) delete mode 100644 app/Models/Configuration.php (limited to 'app/views/index/reader.phtml') diff --git a/app/Controllers/authController.php b/app/Controllers/authController.php index f68ea8da5..3a1ad4605 100644 --- a/app/Controllers/authController.php +++ b/app/Controllers/authController.php @@ -27,12 +27,11 @@ class FreshRSS_auth_Controller extends Minz_ActionController { if (Minz_Request::isPost()) { $ok = true; - $system_conf = Minz_Configuration::get('system'); - $general = $system_conf->general; - $current_token = FreshRSS_Context::$conf->token; + $general = FreshRSS_Context::$system_conf->general; + $current_token = FreshRSS_Context::$user_conf->token; $token = Minz_Request::param('token', $current_token); - FreshRSS_Context::$conf->_token($token); - $ok &= FreshRSS_Context::$conf->save(); + FreshRSS_Context::$user_conf->_token($token); + $ok &= FreshRSS_Context::$user_conf->save(); $anon = Minz_Request::param('anon_access', false); $anon = ((bool)$anon) && ($anon !== 'no'); @@ -81,8 +80,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController { Minz_Request::forward(array('c' => 'index', 'a' => 'index'), true); } - $conf = Minz_Configuration::get('system'); - $auth_type = $conf->general['auth_type']; + $auth_type = FreshRSS_Context::$system_conf->general['auth_type']; switch ($auth_type) { case 'form': Minz_Request::forward(array('c' => 'auth', 'a' => 'formLogin')); @@ -120,12 +118,12 @@ class FreshRSS_auth_Controller extends Minz_ActionController { $file_mtime = @filemtime(PUBLIC_PATH . '/scripts/bcrypt.min.js'); Minz_View::appendScript(Minz_Url::display('/scripts/bcrypt.min.js?' . $file_mtime)); - $conf = Minz_Configuration::get('system'); - if (Minz_Request::isPost()) { $nonce = Minz_Session::param('nonce'); $username = Minz_Request::param('username', ''); $challenge = Minz_Request::param('challenge', ''); + + // TODO #730: change the way to get the configuration try { $conf = new FreshRSS_Configuration($username); } catch(Minz_Exception $e) { @@ -162,7 +160,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController { Minz_Request::bad(_t('feedback.auth.login.invalid'), array('c' => 'auth', 'a' => 'login')); } - } elseif ($conf->general['unsafe_autologin_enabled']) { + } elseif (FreshRSS_Context::$system_conf->general['unsafe_autologin_enabled']) { $username = Minz_Request::param('u', ''); $password = Minz_Request::param('p', ''); Minz_Request::_param('p'); @@ -171,6 +169,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController { return; } + // TODO #730: change the way to get the configuration try { $conf = new FreshRSS_Configuration($username); } catch(Minz_Exception $e) { @@ -243,6 +242,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController { $persona_file = DATA_PATH . '/persona/' . $email . '.txt'; if (($current_user = @file_get_contents($persona_file)) !== false) { $current_user = trim($current_user); + // TODO #730: change the way to get the configuration try { $conf = new FreshRSS_Configuration($current_user); $login_ok = strcasecmp($email, $conf->mail_login) === 0; @@ -301,7 +301,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController { $this->view->no_form = false; // Enable changement of auth only if Persona! - if (Minz_Configuration::authType() != 'persona') { + if (FreshRSS_Context::$system_conf->general['auth_type'] != 'persona') { $this->view->message = array( 'status' => 'bad', 'title' => _t('gen.short.damn'), @@ -311,6 +311,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController { return; } + // TODO #730 $conf = new FreshRSS_Configuration(Minz_Configuration::defaultUser()); // Admin user must have set its master password. if (!$conf->passwordHash) { @@ -335,6 +336,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController { ); if ($ok) { + // TODO #730 Minz_Configuration::_authType('form'); $ok = Minz_Configuration::writeFile(); diff --git a/app/Controllers/categoryController.php b/app/Controllers/categoryController.php index 5f1beae90..c90e55ea7 100644 --- a/app/Controllers/categoryController.php +++ b/app/Controllers/categoryController.php @@ -30,7 +30,7 @@ class FreshRSS_category_Controller extends Minz_ActionController { $catDAO = new FreshRSS_CategoryDAO(); $url_redirect = array('c' => 'subscription', 'a' => 'index'); - $limits = Minz_Configuration::limits(); + $limits = FreshRSS_Context::$system_conf->limits; $this->view->categories = $catDAO->listCategories(false); if (count($this->view->categories) >= $limits['max_categories']) { @@ -141,8 +141,8 @@ class FreshRSS_category_Controller extends Minz_ActionController { } // Remove related queries. - FreshRSS_Context::$conf->remove_query_by_get('c_' . $id); - FreshRSS_Context::$conf->save(); + FreshRSS_Context::$user_conf->remove_query_by_get('c_' . $id); + FreshRSS_Context::$user_conf->save(); Minz_Request::good(_t('feedback.sub.category.deleted'), $url_redirect); } @@ -177,9 +177,9 @@ class FreshRSS_category_Controller extends Minz_ActionController { // Remove related queries foreach ($feeds as $feed) { - FreshRSS_Context::$conf->remove_query_by_get('f_' . $feed->id()); + FreshRSS_Context::$user_conf->remove_query_by_get('f_' . $feed->id()); } - FreshRSS_Context::$conf->save(); + FreshRSS_Context::$user_conf->save(); Minz_Request::good(_t('feedback.sub.category.emptied'), $url_redirect); } else { diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php index feb5483fb..6e7a40ea6 100755 --- a/app/Controllers/configureController.php +++ b/app/Controllers/configureController.php @@ -41,23 +41,23 @@ class FreshRSS_configure_Controller extends Minz_ActionController { */ public function displayAction() { if (Minz_Request::isPost()) { - FreshRSS_Context::$conf->_language(Minz_Request::param('language', 'en')); - FreshRSS_Context::$conf->_theme(Minz_Request::param('theme', FreshRSS_Themes::$defaultTheme)); - FreshRSS_Context::$conf->_content_width(Minz_Request::param('content_width', 'thin')); - FreshRSS_Context::$conf->_topline_read(Minz_Request::param('topline_read', false)); - FreshRSS_Context::$conf->_topline_favorite(Minz_Request::param('topline_favorite', false)); - FreshRSS_Context::$conf->_topline_date(Minz_Request::param('topline_date', false)); - FreshRSS_Context::$conf->_topline_link(Minz_Request::param('topline_link', false)); - FreshRSS_Context::$conf->_bottomline_read(Minz_Request::param('bottomline_read', false)); - FreshRSS_Context::$conf->_bottomline_favorite(Minz_Request::param('bottomline_favorite', false)); - FreshRSS_Context::$conf->_bottomline_sharing(Minz_Request::param('bottomline_sharing', false)); - FreshRSS_Context::$conf->_bottomline_tags(Minz_Request::param('bottomline_tags', false)); - FreshRSS_Context::$conf->_bottomline_date(Minz_Request::param('bottomline_date', false)); - FreshRSS_Context::$conf->_bottomline_link(Minz_Request::param('bottomline_link', false)); - FreshRSS_Context::$conf->_html5_notif_timeout(Minz_Request::param('html5_notif_timeout', 0)); - FreshRSS_Context::$conf->save(); - - Minz_Session::_param('language', FreshRSS_Context::$conf->language); + FreshRSS_Context::$user_conf->_language(Minz_Request::param('language', 'en')); + FreshRSS_Context::$user_conf->_theme(Minz_Request::param('theme', FreshRSS_Themes::$defaultTheme)); + FreshRSS_Context::$user_conf->_content_width(Minz_Request::param('content_width', 'thin')); + FreshRSS_Context::$user_conf->_topline_read(Minz_Request::param('topline_read', false)); + FreshRSS_Context::$user_conf->_topline_favorite(Minz_Request::param('topline_favorite', false)); + FreshRSS_Context::$user_conf->_topline_date(Minz_Request::param('topline_date', false)); + FreshRSS_Context::$user_conf->_topline_link(Minz_Request::param('topline_link', false)); + FreshRSS_Context::$user_conf->_bottomline_read(Minz_Request::param('bottomline_read', false)); + FreshRSS_Context::$user_conf->_bottomline_favorite(Minz_Request::param('bottomline_favorite', false)); + FreshRSS_Context::$user_conf->_bottomline_sharing(Minz_Request::param('bottomline_sharing', false)); + FreshRSS_Context::$user_conf->_bottomline_tags(Minz_Request::param('bottomline_tags', false)); + FreshRSS_Context::$user_conf->_bottomline_date(Minz_Request::param('bottomline_date', false)); + FreshRSS_Context::$user_conf->_bottomline_link(Minz_Request::param('bottomline_link', false)); + FreshRSS_Context::$user_conf->_html5_notif_timeout(Minz_Request::param('html5_notif_timeout', 0)); + FreshRSS_Context::$user_conf->save(); + + Minz_Session::_param('language', FreshRSS_Context::$user_conf->language); Minz_Translate::reset(); invalidateHttpCache(); @@ -100,28 +100,28 @@ class FreshRSS_configure_Controller extends Minz_ActionController { */ public function readingAction() { if (Minz_Request::isPost()) { - FreshRSS_Context::$conf->_posts_per_page(Minz_Request::param('posts_per_page', 10)); - FreshRSS_Context::$conf->_view_mode(Minz_Request::param('view_mode', 'normal')); - FreshRSS_Context::$conf->_default_view(Minz_Request::param('default_view', 'adaptive')); - FreshRSS_Context::$conf->_auto_load_more(Minz_Request::param('auto_load_more', false)); - FreshRSS_Context::$conf->_display_posts(Minz_Request::param('display_posts', false)); - FreshRSS_Context::$conf->_display_categories(Minz_Request::param('display_categories', false)); - FreshRSS_Context::$conf->_hide_read_feeds(Minz_Request::param('hide_read_feeds', false)); - FreshRSS_Context::$conf->_onread_jump_next(Minz_Request::param('onread_jump_next', false)); - FreshRSS_Context::$conf->_lazyload(Minz_Request::param('lazyload', false)); - FreshRSS_Context::$conf->_sticky_post(Minz_Request::param('sticky_post', false)); - FreshRSS_Context::$conf->_reading_confirm(Minz_Request::param('reading_confirm', false)); - FreshRSS_Context::$conf->_auto_remove_article(Minz_Request::param('auto_remove_article', false)); - FreshRSS_Context::$conf->_sort_order(Minz_Request::param('sort_order', 'DESC')); - FreshRSS_Context::$conf->_mark_when(array( + FreshRSS_Context::$user_conf->_posts_per_page(Minz_Request::param('posts_per_page', 10)); + FreshRSS_Context::$user_conf->_view_mode(Minz_Request::param('view_mode', 'normal')); + FreshRSS_Context::$user_conf->_default_view(Minz_Request::param('default_view', 'adaptive')); + FreshRSS_Context::$user_conf->_auto_load_more(Minz_Request::param('auto_load_more', false)); + FreshRSS_Context::$user_conf->_display_posts(Minz_Request::param('display_posts', false)); + FreshRSS_Context::$user_conf->_display_categories(Minz_Request::param('display_categories', false)); + FreshRSS_Context::$user_conf->_hide_read_feeds(Minz_Request::param('hide_read_feeds', false)); + FreshRSS_Context::$user_conf->_onread_jump_next(Minz_Request::param('onread_jump_next', false)); + FreshRSS_Context::$user_conf->_lazyload(Minz_Request::param('lazyload', false)); + FreshRSS_Context::$user_conf->_sticky_post(Minz_Request::param('sticky_post', false)); + FreshRSS_Context::$user_conf->_reading_confirm(Minz_Request::param('reading_confirm', false)); + FreshRSS_Context::$user_conf->_auto_remove_article(Minz_Request::param('auto_remove_article', false)); + FreshRSS_Context::$user_conf->_sort_order(Minz_Request::param('sort_order', 'DESC')); + FreshRSS_Context::$user_conf->_mark_when(array( 'article' => Minz_Request::param('mark_open_article', false), 'site' => Minz_Request::param('mark_open_site', false), 'scroll' => Minz_Request::param('mark_scroll', false), 'reception' => Minz_Request::param('mark_upon_reception', false), )); - FreshRSS_Context::$conf->save(); + FreshRSS_Context::$user_conf->save(); - Minz_Session::_param('language', FreshRSS_Context::$conf->language); + Minz_Session::_param('language', FreshRSS_Context::$user_conf->language); Minz_Translate::reset(); invalidateHttpCache(); @@ -142,8 +142,8 @@ class FreshRSS_configure_Controller extends Minz_ActionController { public function sharingAction() { if (Minz_Request::isPost()) { $params = Minz_Request::params(); - FreshRSS_Context::$conf->_sharing($params['share']); - FreshRSS_Context::$conf->save(); + FreshRSS_Context::$user_conf->_sharing($params['share']); + FreshRSS_Context::$user_conf->save(); invalidateHttpCache(); Minz_Request::good(_t('feedback.conf.updated'), @@ -184,8 +184,8 @@ class FreshRSS_configure_Controller extends Minz_ActionController { } } - FreshRSS_Context::$conf->_shortcuts($shortcuts_ok); - FreshRSS_Context::$conf->save(); + FreshRSS_Context::$user_conf->_shortcuts($shortcuts_ok); + FreshRSS_Context::$user_conf->save(); invalidateHttpCache(); Minz_Request::good(_t('feedback.conf.shortcuts_updated'), @@ -212,10 +212,10 @@ class FreshRSS_configure_Controller extends Minz_ActionController { */ public function archivingAction() { if (Minz_Request::isPost()) { - FreshRSS_Context::$conf->_old_entries(Minz_Request::param('old_entries', 3)); - FreshRSS_Context::$conf->_keep_history_default(Minz_Request::param('keep_history_default', 0)); - FreshRSS_Context::$conf->_ttl_default(Minz_Request::param('ttl_default', -2)); - FreshRSS_Context::$conf->save(); + FreshRSS_Context::$user_conf->_old_entries(Minz_Request::param('old_entries', 3)); + FreshRSS_Context::$user_conf->_keep_history_default(Minz_Request::param('keep_history_default', 0)); + FreshRSS_Context::$user_conf->_ttl_default(Minz_Request::param('ttl_default', -2)); + FreshRSS_Context::$user_conf->save(); invalidateHttpCache(); Minz_Request::good(_t('feedback.conf.updated'), @@ -252,8 +252,8 @@ class FreshRSS_configure_Controller extends Minz_ActionController { $query['name'] = _t('conf.query.number', $key + 1); } } - FreshRSS_Context::$conf->_queries($queries); - FreshRSS_Context::$conf->save(); + FreshRSS_Context::$user_conf->_queries($queries); + FreshRSS_Context::$user_conf->save(); Minz_Request::good(_t('feedback.conf.updated'), array('c' => 'configure', 'a' => 'queries')); @@ -261,7 +261,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController { $this->view->query_get = array(); $cat_dao = new FreshRSS_CategoryDAO(); $feed_dao = FreshRSS_Factory::createFeedDao(); - foreach (FreshRSS_Context::$conf->queries as $key => $query) { + foreach (FreshRSS_Context::$user_conf->queries as $key => $query) { if (!isset($query['get'])) { continue; } @@ -329,7 +329,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController { */ public function addQueryAction() { $whitelist = array('get', 'order', 'name', 'search', 'state'); - $queries = FreshRSS_Context::$conf->queries; + $queries = FreshRSS_Context::$user_conf->queries; $query = Minz_Request::params(); $query['name'] = _t('conf.query.number', count($queries) + 1); foreach ($query as $key => $value) { @@ -338,8 +338,8 @@ class FreshRSS_configure_Controller extends Minz_ActionController { } } $queries[] = $query; - FreshRSS_Context::$conf->_queries($queries); - FreshRSS_Context::$conf->save(); + FreshRSS_Context::$user_conf->_queries($queries); + FreshRSS_Context::$user_conf->save(); Minz_Request::good(_t('feedback.conf.query_created', $query['name']), array('c' => 'configure', 'a' => 'queries')); diff --git a/app/Controllers/entryController.php b/app/Controllers/entryController.php index aae08c413..1d9989f40 100755 --- a/app/Controllers/entryController.php +++ b/app/Controllers/entryController.php @@ -154,7 +154,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController { public function purgeAction() { @set_time_limit(300); - $nb_month_old = max(FreshRSS_Context::$conf->old_entries, 1); + $nb_month_old = max(FreshRSS_Context::$user_conf->old_entries, 1); $date_min = time() - (3600 * 24 * 30 * $nb_month_old); $feedDAO = FreshRSS_Factory::createFeedDao(); @@ -168,7 +168,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController { if ($feed_history == -2) { // TODO: -2 must be a constant! // -2 means we take the default value from configuration - $feed_history = FreshRSS_Context::$conf->keep_history_default; + $feed_history = FreshRSS_Context::$user_conf->keep_history_default; } if ($feed_history >= 0) { diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php index 121cb8921..92a1e3bf8 100755 --- a/app/Controllers/feedController.php +++ b/app/Controllers/feedController.php @@ -14,7 +14,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { // Token is useful in the case that anonymous refresh is forbidden // and CRON task cannot be used with php command so the user can // set a CRON task to refresh his feeds by using token inside url - $token = FreshRSS_Context::$conf->token; + $token = FreshRSS_Context::$user_conf->token; $token_param = Minz_Request::param('token', ''); $token_is_ok = ($token != '' && $token == $token_param); $action = Minz_Request::actionName(); @@ -161,14 +161,14 @@ class FreshRSS_feed_Controller extends Minz_ActionController { $feed->_id($id); $feed->faviconPrepare(); - $is_read = FreshRSS_Context::$conf->mark_when['reception'] ? 1 : 0; + $is_read = FreshRSS_Context::$user_conf->mark_when['reception'] ? 1 : 0; $entryDAO = FreshRSS_Factory::createEntryDao(); // We want chronological order and SimplePie uses reverse order. $entries = array_reverse($feed->entries()); // Calculate date of oldest entries we accept in DB. - $nb_month_old = FreshRSS_Context::$conf->old_entries; + $nb_month_old = FreshRSS_Context::$user_conf->old_entries; $date_min = time() - (3600 * 24 * 30 * $nb_month_old); // Use a shared statement and a transaction to improve a LOT the @@ -272,15 +272,15 @@ class FreshRSS_feed_Controller extends Minz_ActionController { $feeds[] = $feed; } } else { - $feeds = $feedDAO->listFeedsOrderUpdate(FreshRSS_Context::$conf->ttl_default); + $feeds = $feedDAO->listFeedsOrderUpdate(FreshRSS_Context::$user_conf->ttl_default); } // Calculate date of oldest entries we accept in DB. - $nb_month_old = max(FreshRSS_Context::$conf->old_entries, 1); + $nb_month_old = max(FreshRSS_Context::$user_conf->old_entries, 1); $date_min = time() - (3600 * 24 * 30 * $nb_month_old); $updated_feeds = 0; - $is_read = FreshRSS_Context::$conf->mark_when['reception'] ? 1 : 0; + $is_read = FreshRSS_Context::$user_conf->mark_when['reception'] ? 1 : 0; foreach ($feeds as $feed) { if (!$feed->lock()) { Minz_Log::notice('Feed already being actualized: ' . $feed->url()); @@ -302,7 +302,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { if ($feed_history == -2) { // TODO: -2 must be a constant! // -2 means we take the default value from configuration - $feed_history = FreshRSS_Context::$conf->keep_history_default; + $feed_history = FreshRSS_Context::$user_conf->keep_history_default; } // We want chronological order and SimplePie uses reverse order. @@ -476,8 +476,8 @@ class FreshRSS_feed_Controller extends Minz_ActionController { // TODO: Delete old favicon // Remove related queries - FreshRSS_Context::$conf->remove_query_by_get('f_' . $id); - FreshRSS_Context::$conf->save(); + FreshRSS_Context::$user_conf->remove_query_by_get('f_' . $id); + FreshRSS_Context::$user_conf->save(); Minz_Request::good(_t('feedback.sub.feed.deleted'), $redirect_url); } else { diff --git a/app/Controllers/importExportController.php b/app/Controllers/importExportController.php index 6eefa0f6f..334f33d6a 100644 --- a/app/Controllers/importExportController.php +++ b/app/Controllers/importExportController.php @@ -315,7 +315,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { return true; } - $is_read = FreshRSS_Context::$conf->mark_when['reception'] ? 1 : 0; + $is_read = FreshRSS_Context::$user_conf->mark_when['reception'] ? 1 : 0; $google_compliant = strpos($article_object['id'], 'com.google') !== false; @@ -532,7 +532,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { $this->view->type = 'feed/' . $feed->id(); $this->view->entries = $this->entryDAO->listWhere( 'f', $feed->id(), FreshRSS_Entry::STATE_ALL, 'ASC', - FreshRSS_Context::$conf->posts_per_page + FreshRSS_Context::$user_conf->posts_per_page ); $this->view->feed = $feed; } diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php index 33cd2843c..14f3f4f4b 100755 --- a/app/Controllers/indexController.php +++ b/app/Controllers/indexController.php @@ -9,7 +9,7 @@ class FreshRSS_index_Controller extends Minz_ActionController { * This action only redirect on the default view mode (normal or global) */ public function indexAction() { - $prefered_output = FreshRSS_Context::$conf->view_mode; + $prefered_output = FreshRSS_Context::$user_conf->view_mode; Minz_Request::forward(array( 'c' => 'index', 'a' => $prefered_output @@ -109,7 +109,7 @@ class FreshRSS_index_Controller extends Minz_ActionController { * This action displays the RSS feed of FreshRSS. */ public function rssAction() { - $token = FreshRSS_Context::$conf->token; + $token = FreshRSS_Context::$user_conf->token; $token_param = Minz_Request::param('token', ''); $token_is_ok = ($token != '' && $token === $token_param); @@ -160,10 +160,10 @@ class FreshRSS_index_Controller extends Minz_ActionController { FreshRSS_Context::_get(Minz_Request::param('get', 'a')); FreshRSS_Context::$state = Minz_Request::param( - 'state', FreshRSS_Context::$conf->default_state + 'state', FreshRSS_Context::$user_conf->default_state ); $state_forced_by_user = Minz_Request::param('state', false) !== false; - if (FreshRSS_Context::$conf->default_view === 'adaptive' && + if (FreshRSS_Context::$user_conf->default_view === 'adaptive' && FreshRSS_Context::$get_unread <= 0 && !FreshRSS_Context::isStateEnabled(FreshRSS_Entry::STATE_READ) && !$state_forced_by_user) { @@ -172,10 +172,10 @@ class FreshRSS_index_Controller extends Minz_ActionController { FreshRSS_Context::$search = Minz_Request::param('search', ''); FreshRSS_Context::$order = Minz_Request::param( - 'order', FreshRSS_Context::$conf->sort_order + 'order', FreshRSS_Context::$user_conf->sort_order ); FreshRSS_Context::$number = Minz_Request::param( - 'nb', FreshRSS_Context::$conf->posts_per_page + 'nb', FreshRSS_Context::$user_conf->posts_per_page ); FreshRSS_Context::$first_id = Minz_Request::param('next', ''); } diff --git a/app/Controllers/javascriptController.php b/app/Controllers/javascriptController.php index 113f58ea9..b178801d4 100755 --- a/app/Controllers/javascriptController.php +++ b/app/Controllers/javascriptController.php @@ -8,7 +8,7 @@ class FreshRSS_javascript_Controller extends Minz_ActionController { public function actualizeAction() { header('Content-Type: text/javascript; charset=UTF-8'); $feedDAO = FreshRSS_Factory::createFeedDao(); - $this->view->feeds = $feedDAO->listFeedsOrderUpdate(FreshRSS_Context::$conf->ttl_default); + $this->view->feeds = $feedDAO->listFeedsOrderUpdate(FreshRSS_Context::$user_conf->ttl_default); } public function nbUnreadsPerFeedAction() { diff --git a/app/Controllers/userController.php b/app/Controllers/userController.php index 1b1ccaac9..58181bfb0 100644 --- a/app/Controllers/userController.php +++ b/app/Controllers/userController.php @@ -39,9 +39,9 @@ class FreshRSS_user_Controller extends Minz_ActionController { $passwordPlain = ''; $passwordHash = preg_replace('/^\$2[xy]\$/', '\$2a\$', $passwordHash); //Compatibility with bcrypt.js $ok &= ($passwordHash != ''); - FreshRSS_Context::$conf->_passwordHash($passwordHash); + FreshRSS_Context::$user_conf->_passwordHash($passwordHash); } - Minz_Session::_param('passwordHash', FreshRSS_Context::$conf->passwordHash); + Minz_Session::_param('passwordHash', FreshRSS_Context::$user_conf->passwordHash); $passwordPlain = Minz_Request::param('apiPasswordPlain', '', true); if ($passwordPlain != '') { @@ -52,17 +52,17 @@ class FreshRSS_user_Controller extends Minz_ActionController { $passwordPlain = ''; $passwordHash = preg_replace('/^\$2[xy]\$/', '\$2a\$', $passwordHash); //Compatibility with bcrypt.js $ok &= ($passwordHash != ''); - FreshRSS_Context::$conf->_apiPasswordHash($passwordHash); + FreshRSS_Context::$user_conf->_apiPasswordHash($passwordHash); } // TODO: why do we need of hasAccess here? if (FreshRSS_Auth::hasAccess('admin')) { - FreshRSS_Context::$conf->_mail_login(Minz_Request::param('mail_login', '', true)); + FreshRSS_Context::$user_conf->_mail_login(Minz_Request::param('mail_login', '', true)); } - $email = FreshRSS_Context::$conf->mail_login; + $email = FreshRSS_Context::$user_conf->mail_login; Minz_Session::_param('mail', $email); - $ok &= FreshRSS_Context::$conf->save(); + $ok &= FreshRSS_Context::$user_conf->save(); if ($email != '') { $personaFile = DATA_PATH . '/persona/' . $email . '.txt'; @@ -108,10 +108,10 @@ class FreshRSS_user_Controller extends Minz_ActionController { $db = Minz_Configuration::dataBase(); require_once(APP_PATH . '/SQL/install.sql.' . $db['type'] . '.php'); - $new_user_language = Minz_Request::param('new_user_language', FreshRSS_Context::$conf->language); - $languages = FreshRSS_Context::$conf->availableLanguages(); + $new_user_language = Minz_Request::param('new_user_language', FreshRSS_Context::$user_conf->language); + $languages = FreshRSS_Context::$user_conf->availableLanguages(); if (!isset($languages[$new_user_language])) { - $new_user_language = FreshRSS_Context::$conf->language; + $new_user_language = FreshRSS_Context::$user_conf->language; } $new_user_name = Minz_Request::param('new_user_name'); diff --git a/app/FreshRSS.php b/app/FreshRSS.php index 455f2fefd..b22bfdb4b 100644 --- a/app/FreshRSS.php +++ b/app/FreshRSS.php @@ -32,7 +32,7 @@ class FreshRSS extends Minz_FrontController { FreshRSS_Context::init(); // Init i18n. - Minz_Session::_param('language', FreshRSS_Context::$conf->language); + Minz_Session::_param('language', FreshRSS_Context::$user_conf->language); Minz_Translate::init(); $this->loadStylesAndScripts(); @@ -41,7 +41,7 @@ class FreshRSS extends Minz_FrontController { } private function loadStylesAndScripts() { - $theme = FreshRSS_Themes::load(FreshRSS_Context::$conf->theme); + $theme = FreshRSS_Themes::load(FreshRSS_Context::$user_conf->theme); if ($theme) { foreach($theme['files'] as $file) { if ($file[0] === '_') { @@ -62,8 +62,7 @@ class FreshRSS extends Minz_FrontController { Minz_View::appendScript(Minz_Url::display('/scripts/shortcut.js?' . @filemtime(PUBLIC_PATH . '/scripts/shortcut.js'))); Minz_View::appendScript(Minz_Url::display('/scripts/main.js?' . @filemtime(PUBLIC_PATH . '/scripts/main.js'))); - $conf = Minz_Configuration::get('system'); - if ($conf->general['auth_type'] === 'persona') { + if (FreshRSS_Context::$system_conf->general['auth_type'] === 'persona') { // TODO move it in a plugin // Needed for login AND logout with Persona. Minz_View::appendScript('https://login.persona.org/include.js'); diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php deleted file mode 100644 index 8bba8f777..000000000 --- a/app/Models/Configuration.php +++ /dev/null @@ -1,345 +0,0 @@ - 'en', - 'old_entries' => 3, - 'keep_history_default' => 0, - 'ttl_default' => 3600, - 'mail_login' => '', - 'token' => '', - 'passwordHash' => '', //CRYPT_BLOWFISH - 'apiPasswordHash' => '', //CRYPT_BLOWFISH - 'posts_per_page' => 20, - 'view_mode' => 'normal', - 'default_view' => 'adaptive', - 'default_state' => FreshRSS_Entry::STATE_NOT_READ, - 'auto_load_more' => true, - 'display_posts' => false, - 'display_categories' => false, - 'hide_read_feeds' => true, - 'onread_jump_next' => true, - 'lazyload' => true, - 'sticky_post' => true, - 'reading_confirm' => false, - 'auto_remove_article' => false, - 'sort_order' => 'DESC', - 'anon_access' => false, - 'mark_when' => array( - 'article' => true, - 'site' => true, - 'scroll' => false, - 'reception' => false, - ), - 'theme' => 'Origine', - 'content_width' => 'thin', - 'shortcuts' => array( - 'mark_read' => 'r', - 'mark_favorite' => 'f', - 'go_website' => 'space', - 'next_entry' => 'j', - 'prev_entry' => 'k', - 'first_entry' => 'home', - 'last_entry' => 'end', - 'collapse_entry' => 'c', - 'load_more' => 'm', - 'auto_share' => 's', - 'focus_search' => 'a', - 'user_filter' => 'u', - 'help' => 'f1', - 'close_dropdown' => 'escape', - ), - 'topline_read' => true, - 'topline_favorite' => true, - 'topline_date' => true, - 'topline_link' => true, - 'bottomline_read' => true, - 'bottomline_favorite' => true, - 'bottomline_sharing' => true, - 'bottomline_tags' => true, - 'bottomline_date' => true, - 'bottomline_link' => true, - 'sharing' => array(), - 'queries' => array(), - 'html5_notif_timeout' => 0, - ); - - private $available_languages = array( - 'en' => 'English', - 'fr' => 'Français', - ); - - private $shares; - - public function __construct($user) { - $this->filename = join_path(DATA_PATH, 'users', $user, 'config.php'); - - $data = @include($this->filename); - if (!is_array($data)) { - throw new Minz_PermissionDeniedException($this->filename); - } - - foreach ($data as $key => $value) { - if (isset($this->data[$key])) { - $function = '_' . $key; - $this->$function($value); - } - } - $this->data['user'] = $user; - - $this->shares = join_path(DATA_PATH, 'shares.php'); - - $shares = @include($this->shares); - if (!is_array($shares)) { - throw new Minz_PermissionDeniedException($this->shares); - } - - $this->data['shares'] = $shares; - } - - public function save() { - @rename($this->filename, $this->filename . '.bak.php'); - unset($this->data['shares']); // Remove shares because it is not intended to be stored in user configuration - if (file_put_contents($this->filename, "data, true) . ';', LOCK_EX) === false) { - throw new Minz_PermissionDeniedException($this->filename); - } - if (function_exists('opcache_invalidate')) { - opcache_invalidate($this->filename); //Clear PHP 5.5+ cache for include - } - invalidateHttpCache(); - return true; - } - - public function __get($name) { - if (array_key_exists($name, $this->data)) { - return $this->data[$name]; - } else { - $trace = debug_backtrace(); - trigger_error('Undefined FreshRSS_Configuration->' . $name . 'in ' . $trace[0]['file'] . ' line ' . $trace[0]['line'], E_USER_NOTICE); //TODO: Use Minz exceptions - return null; - } - } - - public function availableLanguages() { - return $this->available_languages; - } - - public function remove_query_by_get($get) { - $final_queries = array(); - foreach ($this->queries as $key => $query) { - if (empty($query['get']) || $query['get'] !== $get) { - $final_queries[$key] = $query; - } - } - $this->_queries($final_queries); - } - - public function _language($value) { - if (!isset($this->available_languages[$value])) { - $value = 'en'; - } - $this->data['language'] = $value; - } - public function _posts_per_page($value) { - $value = intval($value); - $this->data['posts_per_page'] = $value > 0 ? $value : 10; - } - public function _view_mode($value) { - if ($value === 'global' || $value === 'reader') { - $this->data['view_mode'] = $value; - } else { - $this->data['view_mode'] = 'normal'; - } - } - public function _default_view($value) { - switch ($value) { - case 'all': - $this->data['default_view'] = $value; - $this->data['default_state'] = (FreshRSS_Entry::STATE_READ + - FreshRSS_Entry::STATE_NOT_READ); - break; - case 'adaptive': - case 'unread': - default: - $this->data['default_view'] = $value; - $this->data['default_state'] = FreshRSS_Entry::STATE_NOT_READ; - } - } - public function _default_state($value) { - $this->data['default_state'] = (int)$value; - } - - public function _display_posts($value) { - $this->data['display_posts'] = ((bool)$value) && $value !== 'no'; - } - public function _display_categories($value) { - $this->data['display_categories'] = ((bool)$value) && $value !== 'no'; - } - public function _hide_read_feeds($value) { - $this->data['hide_read_feeds'] = (bool)$value; - } - public function _onread_jump_next($value) { - $this->data['onread_jump_next'] = ((bool)$value) && $value !== 'no'; - } - public function _lazyload($value) { - $this->data['lazyload'] = ((bool)$value) && $value !== 'no'; - } - public function _sticky_post($value) { - $this->data['sticky_post'] = ((bool)$value) && $value !== 'no'; - } - public function _reading_confirm($value) { - $this->data['reading_confirm'] = ((bool)$value) && $value !== 'no'; - } - public function _auto_remove_article($value) { - $this->data['auto_remove_article'] = ((bool)$value) && $value !== 'no'; - } - public function _sort_order($value) { - $this->data['sort_order'] = $value === 'ASC' ? 'ASC' : 'DESC'; - } - public function _old_entries($value) { - $value = intval($value); - $this->data['old_entries'] = $value > 0 ? $value : 3; - } - public function _keep_history_default($value) { - $value = intval($value); - $this->data['keep_history_default'] = $value >= -1 ? $value : 0; - } - public function _ttl_default($value) { - $value = intval($value); - $this->data['ttl_default'] = $value >= -1 ? $value : 3600; - } - public function _shortcuts($values) { - foreach ($values as $key => $value) { - if (isset($this->data['shortcuts'][$key])) { - $this->data['shortcuts'][$key] = $value; - } - } - } - public function _passwordHash($value) { - $this->data['passwordHash'] = ctype_graph($value) && (strlen($value) >= 60) ? $value : ''; - } - public function _apiPasswordHash($value) { - $this->data['apiPasswordHash'] = ctype_graph($value) && (strlen($value) >= 60) ? $value : ''; - } - public function _mail_login($value) { - $value = filter_var($value, FILTER_VALIDATE_EMAIL); - if ($value) { - $this->data['mail_login'] = $value; - } else { - $this->data['mail_login'] = ''; - } - } - public function _anon_access($value) { - $this->data['anon_access'] = ((bool)$value) && $value !== 'no'; - } - public function _mark_when($values) { - foreach ($values as $key => $value) { - if (isset($this->data['mark_when'][$key])) { - $this->data['mark_when'][$key] = ((bool)$value) && $value !== 'no'; - } - } - } - public function _sharing($values) { - $this->data['sharing'] = array(); - $unique = array(); - foreach ($values as $value) { - if (!is_array($value)) { - continue; - } - - // Verify URL and add default value when needed - if (isset($value['url'])) { - $is_url = ( - filter_var($value['url'], FILTER_VALIDATE_URL) || - (version_compare(PHP_VERSION, '5.3.3', '<') && - (strpos($value, '-') > 0) && - ($value === filter_var($value, FILTER_SANITIZE_URL))) - ); //PHP bug #51192 - if (!$is_url) { - continue; - } - } else { - $value['url'] = null; - } - - // Add a default name - if (empty($value['name'])) { - $value['name'] = $value['type']; - } - - $json_value = json_encode($value); - if (!in_array($json_value, $unique)) { - $unique[] = $json_value; - $this->data['sharing'][] = $value; - } - } - } - public function _queries($values) { - $this->data['queries'] = array(); - foreach ($values as $value) { - $value = array_filter($value); - $params = $value; - unset($params['name']); - unset($params['url']); - $value['url'] = Minz_Url::display(array('params' => $params)); - - $this->data['queries'][] = $value; - } - } - public function _theme($value) { - $this->data['theme'] = $value; - } - public function _content_width($value) { - if ($value === 'medium' || - $value === 'large' || - $value === 'no_limit') { - $this->data['content_width'] = $value; - } else { - $this->data['content_width'] = 'thin'; - } - } - - public function _html5_notif_timeout($value) { - $value = intval($value); - $this->data['html5_notif_timeout'] = $value >= 0 ? $value : 0; - } - - public function _token($value) { - $this->data['token'] = $value; - } - public function _auto_load_more($value) { - $this->data['auto_load_more'] = ((bool)$value) && $value !== 'no'; - } - public function _topline_read($value) { - $this->data['topline_read'] = ((bool)$value) && $value !== 'no'; - } - public function _topline_favorite($value) { - $this->data['topline_favorite'] = ((bool)$value) && $value !== 'no'; - } - public function _topline_date($value) { - $this->data['topline_date'] = ((bool)$value) && $value !== 'no'; - } - public function _topline_link($value) { - $this->data['topline_link'] = ((bool)$value) && $value !== 'no'; - } - public function _bottomline_read($value) { - $this->data['bottomline_read'] = ((bool)$value) && $value !== 'no'; - } - public function _bottomline_favorite($value) { - $this->data['bottomline_favorite'] = ((bool)$value) && $value !== 'no'; - } - public function _bottomline_sharing($value) { - $this->data['bottomline_sharing'] = ((bool)$value) && $value !== 'no'; - } - public function _bottomline_tags($value) { - $this->data['bottomline_tags'] = ((bool)$value) && $value !== 'no'; - } - public function _bottomline_date($value) { - $this->data['bottomline_date'] = ((bool)$value) && $value !== 'no'; - } - public function _bottomline_link($value) { - $this->data['bottomline_link'] = ((bool)$value) && $value !== 'no'; - } -} diff --git a/app/Models/Context.php b/app/Models/Context.php index 9bbad9857..1c770c756 100644 --- a/app/Models/Context.php +++ b/app/Models/Context.php @@ -5,7 +5,8 @@ * useful functions associated to the current view state. */ class FreshRSS_Context { - public static $conf = null; + public static $user_conf = null; + public static $system_conf = null; public static $categories = array(); public static $name = ''; @@ -37,17 +38,12 @@ class FreshRSS_Context { /** * Initialize the context. * - * Set the correct $conf and $categories variables. + * Set the correct configurations and $categories variables. */ public static function init() { // Init configuration. - try { - self::$conf = Minz_Configuration::get('user'); - } catch(Minz_Exception $e) { - $current_user = Minz_Session::param('currentUser', '_'); - Minz_Log::error('Cannot load configuration file of user `' . $current_user . '`'); - die($e->getMessage()); - } + self::$system_conf = Minz_Configuration::get('system'); + self::$user_conf = Minz_Configuration::get('user'); $catDAO = new FreshRSS_CategoryDAO(); self::$categories = $catDAO->listCategories(); @@ -198,7 +194,7 @@ class FreshRSS_Context { // By default, $next_get == $get self::$next_get = $get; - if (self::$conf->onread_jump_next && strlen($get) > 2) { + if (self::$user_conf->onread_jump_next && strlen($get) > 2) { $another_unread_id = ''; $found_current_get = false; switch ($get[0]) { @@ -276,7 +272,7 @@ class FreshRSS_Context { * @return boolean */ public static function isAutoRemoveAvailable() { - if (!self::$conf->auto_remove_article) { + if (!self::$user_conf->auto_remove_article) { return false; } if (self::isStateEnabled(FreshRSS_Entry::STATE_READ)) { @@ -297,7 +293,7 @@ class FreshRSS_Context { * @return boolean */ public static function isStickyPostEnabled() { - if (self::$conf->sticky_post) { + if (self::$user_conf->sticky_post) { return true; } if (self::isAutoRemoveAvailable()) { diff --git a/app/layout/aside_feed.phtml b/app/layout/aside_feed.phtml index a39aea327..a384455b4 100644 --- a/app/layout/aside_feed.phtml +++ b/app/layout/aside_feed.phtml @@ -1,6 +1,6 @@ hide_read_feeds && + if (FreshRSS_Context::$user_conf->hide_read_feeds && FreshRSS_Context::isStateEnabled(FreshRSS_Entry::STATE_NOT_READ) && !FreshRSS_Context::isStateEnabled(FreshRSS_Entry::STATE_READ)) { $class = ' state_unread'; @@ -39,7 +39,7 @@ $feeds = $cat->feeds(); if (!empty($feeds)) { $c_active = FreshRSS_Context::isCurrentGet('c_' . $cat->id()); - $c_show = $c_active && (!FreshRSS_Context::$conf->display_categories || + $c_show = $c_active && (!FreshRSS_Context::$user_conf->display_categories || FreshRSS_Context::$current_get['feed']); ?>
  • @@ -84,7 +84,7 @@
  • - reading_confirm ? 'confirm' : ''; ?> + reading_confirm ? 'confirm' : ''; ?>
  • - queries as $query) { ?> + queries as $query) { ?>
  • - queries) > 0) { ?> + queries) > 0) { ?>
  • @@ -82,7 +82,7 @@
    - - + + - - + + - - - - - - + + + + + +
     
    topline_read ? ' checked="checked"' : ''; ?> /> topline_favorite ? ' checked="checked"' : ''; ?> /> topline_date ? ' checked="checked"' : ''; ?> /> topline_link ? ' checked="checked"' : ''; ?> />
    bottomline_read ? ' checked="checked"' : ''; ?> /> bottomline_favorite ? ' checked="checked"' : ''; ?> /> bottomline_sharing ? ' checked="checked"' : ''; ?> />
    topline_read ? ' checked="checked"' : ''; ?> />topline_favorite ? ' checked="checked"' : ''; ?> />topline_read ? ' checked="checked"' : ''; ?> />topline_favorite ? ' checked="checked"' : ''; ?> /> topline_date ? ' checked="checked"' : ''; ?> />topline_link ? ' checked="checked"' : ''; ?> />topline_date ? ' checked="checked"' : ''; ?> />topline_link ? ' checked="checked"' : ''; ?> />
    bottomline_read ? ' checked="checked"' : ''; ?> />bottomline_favorite ? ' checked="checked"' : ''; ?> />bottomline_sharing ? ' checked="checked"' : ''; ?> />bottomline_tags ? ' checked="checked"' : ''; ?> />bottomline_date ? ' checked="checked"' : ''; ?> />bottomline_link ? ' checked="checked"' : ''; ?> />bottomline_read ? ' checked="checked"' : ''; ?> />bottomline_favorite ? ' checked="checked"' : ''; ?> />bottomline_sharing ? ' checked="checked"' : ''; ?> />bottomline_tags ? ' checked="checked"' : ''; ?> />bottomline_date ? ' checked="checked"' : ''; ?> />bottomline_link ? ' checked="checked"' : ''; ?> />

    @@ -109,7 +109,7 @@
    - +
    diff --git a/app/views/configure/queries.phtml b/app/views/configure/queries.phtml index 1b3a08c91..5f449deb3 100644 --- a/app/views/configure/queries.phtml +++ b/app/views/configure/queries.phtml @@ -6,7 +6,7 @@
    - queries as $key => $query) { ?> + queries as $key => $query) { ?>
    - queries) > 0) { ?> + queries) > 0) { ?>
    diff --git a/app/views/configure/reading.phtml b/app/views/configure/reading.phtml index 440ad1df8..636671f14 100644 --- a/app/views/configure/reading.phtml +++ b/app/views/configure/reading.phtml @@ -9,7 +9,7 @@
    - +
    @@ -18,8 +18,8 @@
    @@ -28,9 +28,9 @@
    @@ -39,9 +39,9 @@
    @@ -49,7 +49,7 @@
    @@ -58,7 +58,7 @@
    @@ -68,7 +68,7 @@
    @@ -78,7 +78,7 @@
    @@ -88,7 +88,7 @@
    @@ -98,7 +98,7 @@
    @@ -108,7 +108,7 @@
    @@ -118,7 +118,7 @@
    @@ -129,19 +129,19 @@
    @@ -151,7 +151,7 @@
    diff --git a/app/views/configure/sharing.phtml b/app/views/configure/sharing.phtml index ffe3c039b..f5c133f07 100644 --- a/app/views/configure/sharing.phtml +++ b/app/views/configure/sharing.phtml @@ -15,8 +15,8 @@
    '> - sharing as $key => $sharing) { ?> - shares[$sharing['type']]; ?> + sharing as $key => $sharing) { ?> + shares[$sharing['type']]; ?>