Browse Source

Merge branch 'dev' into Alkarex-NbUnread

Marien Fressinaud 12 years ago
parent
commit
9db14d1cd3

+ 59 - 0
CHANGELOG

@@ -0,0 +1,59 @@
+# Changelog
+## 2013-07-02 changes with FreshRSS 0.4.0
+
+* Correction bug et ajout notification lors de la phase d'installation
+* Affichage d'erreur si fichier OPML invalide
+* Les tags sont maintenant cliquables pour filtrer dessus
+* Amélioration vue mobile (boutons plus gros et ajout d'une barre de navigation)
+* Possibilité d'ajouter directement un flux dans une catégorie dès son ajout
+* Affichage des flux en erreur (injoignable par exemple) en rouge pour les différencier
+* Possiblité de changer les noms des flux
+* Ajout d'une option (désactivable donc) pour charger les images en lazyload permettant de ne pas charger toutes les images d'un coup
+* Le framework Minz est maintenant directement inclus dans l'archive (plus besoin de passer par ./build.sh)
+* Amélioration des performances pour la récupération des flux tronqués
+* Possibilité d'importer des flux sans catégorie lors de l'import OPML
+* Suppression de "l'API" (qui était de toutes façons très basique) et de la fonctionnalité de "notes"
+* Amélioration de la recherche (garde en mémoire si l'on a sélectionné une catégorie) par exemple
+* Modification apparence des balises hr et pre
+* Meilleure vérification des champs de formulaire
+* Remise en place du mode "endless" (permettant de simplement charger les articles qui suivent plutôt que de charger une nouvelle page)
+* Ajout d'une page de visualisation des logs
+* Ajout d'une option pour optimiser la BDD (diminue sa taille)
+* Ajout des vues lecture et globale (assez basique)
+* Les vidéos Youtube ne débordent plus du cadre sur les petits écrans
+* Ajout d'une option pour marquer les articles comme lus lors du défilement (et suppression de celle au chargement de la page)
+
+## 2013-05-05 changes with FreshRSS 0.3.0
+
+* Fallback pour les icônes SVG (utilisation de PNG à la place)
+* Fallback pour les propriétés CSS3 (utilisation de préfixes)
+* Affichage des tags associés aux articles
+* Internationalisation de l'application (gestion des langues anglaise et française)
+* Gestion des flux protégés par authentification HTTP
+* Mise en cache des favicons
+* Création d'un logo *temporaire*
+* Affichage des vidéos dans les articles
+* Gestion de la recherche et filtre par tags pleinement fonctionnels
+* Création d'un vrai script CRON permettant de mettre tous les flux à jour
+* Correction bugs divers
+
+## 2013-04-17 changes with FreshRSS 0.2.0
+
+* Création d'un installateur
+* Actualisation des flux en Ajax
+* Partage par mail et Shaarli ajouté
+* Export par flux RSS
+* Possibilité de vider une catégorie
+* Possibilité de sélectionner les catégories en vue mobile
+* Les flux peuvent être sortis du flux principal (système de priorité)
+* Amélioration ajout / import / export des flux
+* Amélioration actualisation (meilleure gestion des erreurs)
+* Améliorations CSS
+* Changements dans la base de données
+* Màj de la librairie SimplePie
+* Flux sans auteurs gérés normalement
+* Correction bugs divers
+
+## 2013-04-08 changes with FreshRSS 0.1.0
+
+* "Première" version

+ 0 - 60
README.md

@@ -40,63 +40,3 @@ Privilégiez pour cela des demandes sur GitHub
 ```
 0 * * * * php /chemin/vers/freshrss/actualize_script.php >/dev/null 2>&1
 ```
-
-# Changelog
-## 2013-07-02 changes with FreshRSS 0.4.0
-
-* Correction bug et ajout notification lors de la phase d'installation
-* Affichage d'erreur si fichier OPML invalide
-* Les tags sont maintenant cliquables pour filtrer dessus
-* Amélioration vue mobile (boutons plus gros et ajout d'une barre de navigation)
-* Possibilité d'ajouter directement un flux dans une catégorie dès son ajout
-* Affichage des flux en erreur (injoignable par exemple) en rouge pour les différencier
-* Possiblité de changer les noms des flux
-* Ajout d'une option (désactivable donc) pour charger les images en lazyload permettant de ne pas charger toutes les images d'un coup
-* Le framework Minz est maintenant directement inclus dans l'archive (plus besoin de passer par ./build.sh)
-* Amélioration des performances pour la récupération des flux tronqués
-* Possibilité d'importer des flux sans catégorie lors de l'import OPML
-* Suppression de "l'API" (qui était de toutes façons très basique) et de la fonctionnalité de "notes"
-* Amélioration de la recherche (garde en mémoire si l'on a sélectionné une catégorie) par exemple
-* Modification apparence des balises hr et pre
-* Meilleure vérification des champs de formulaire
-* Remise en place du mode "endless" (permettant de simplement charger les articles qui suivent plutôt que de charger une nouvelle page)
-* Ajout d'une page de visualisation des logs
-* Ajout d'une option pour optimiser la BDD (diminue sa taille)
-* Ajout des vues lecture et globale (assez basique)
-* Les vidéos Youtube ne débordent plus du cadre sur les petits écrans
-* Ajout d'une option pour marquer les articles comme lus lors du défilement (et suppression de celle au chargement de la page)
-
-## 2013-05-05 changes with FreshRSS 0.3.0
-
-* Fallback pour les icônes SVG (utilisation de PNG à la place)
-* Fallback pour les propriétés CSS3 (utilisation de préfixes)
-* Affichage des tags associés aux articles
-* Internationalisation de l'application (gestion des langues anglaise et française)
-* Gestion des flux protégés par authentification HTTP
-* Mise en cache des favicons
-* Création d'un logo *temporaire*
-* Affichage des vidéos dans les articles
-* Gestion de la recherche et filtre par tags pleinement fonctionnels
-* Création d'un vrai script CRON permettant de mettre tous les flux à jour
-* Correction bugs divers
-
-## 2013-04-17 changes with FreshRSS 0.2.0
-
-* Création d'un installateur
-* Actualisation des flux en Ajax
-* Partage par mail et Shaarli ajouté
-* Export par flux RSS
-* Possibilité de vider une catégorie
-* Possibilité de sélectionner les catégories en vue mobile
-* Les flux peuvent être sortis du flux principal (système de priorité)
-* Amélioration ajout / import / export des flux
-* Amélioration actualisation (meilleure gestion des erreurs)
-* Améliorations CSS
-* Changements dans la base de données
-* Màj de la librairie SimplePie
-* Flux sans auteurs gérés normalement
-* Correction bugs divers
-
-## 2013-04-08 changes with FreshRSS 0.1.0
-
-* "Première" version

+ 10 - 10
app/i18n/en.php

@@ -55,8 +55,8 @@ return array (
 	'article_published_on'		=> 'This article originally appeared on <a href="%s">%s</a>',
 	'article_published_on_author'	=> 'This article originally appeared on <a href="%s">%s</a> by %s',
 
-	'access_denied'			=> 'You don\'t have permission to access this page',
-	'page_not_found'		=> 'You are looking for a page which doesn\'t exist',
+	'access_denied'			=> 'You dont have permission to access this page',
+	'page_not_found'		=> 'You are looking for a page which doesnt exist',
 	'error_occurred'		=> 'An error occured',
 	'error_occurred_update'		=> 'An error occured during update',
 
@@ -206,7 +206,7 @@ return array (
 	'agpl3'				=> '<a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL 3</a>',
 	'freshrss_description'		=> 'FreshRSS is a RSS feeds aggregator to self-host like <a href="http://rsslounge.aditu.de/">RSSLounge</a>, <a href="http://tt-rss.org/redmine/projects/tt-rss/wiki">TinyTinyRSS</a> or <a href="http://projet.idleman.fr/leed/">Leed</a>. It is light and easy to take in hand while being powerful and configurable tool. Objective is to provide a serious alternative to Google Reader.',
 	'credits'			=> 'Credits',
-	'credits_content'		=> 'Some design elements come from <a href="http://twitter.github.io/bootstrap/">Bootstrap</a> although FreshRSS doesn\'t use this framework. <a href="https://git.gnome.org/browse/gnome-icon-theme-symbolic">Icons</a> come from <a href="https://www.gnome.org/">GNOME project</a>. <em>Open Sans</em> font police used has been created by <a href="https://www.google.com/webfonts/specimen/Open+Sans">Steve Matteson</a>. Favicons are collected with <a href="https://getfavicon.appspot.com/">getFavicon API</a>. FreshRSS is based on <a href="https://github.com/marienfressinaud/MINZ">Minz</a>, a PHP framework.',
+	'credits_content'		=> 'Some design elements come from <a href="http://twitter.github.io/bootstrap/">Bootstrap</a> although FreshRSS doesnt use this framework. <a href="https://git.gnome.org/browse/gnome-icon-theme-symbolic">Icons</a> come from <a href="https://www.gnome.org/">GNOME project</a>. <em>Open Sans</em> font police used has been created by <a href="https://www.google.com/webfonts/specimen/Open+Sans">Steve Matteson</a>. Favicons are collected with <a href="https://getfavicon.appspot.com/">getFavicon API</a>. FreshRSS is based on <a href="https://github.com/marienfressinaud/MINZ">Minz</a>, a PHP framework.',
 
 	'logs'				=> 'Logs',
 	'logs_empty'			=> 'Log file is empty',
@@ -264,16 +264,16 @@ return array (
 	'choose_language'		=> 'Choose a language for FreshRSS',
 
 	'javascript_is_better'		=> 'FreshRSS is more pleasant with Javascript enabled',
-	'php_is_ok'			=> 'Your PHP version is %s and it\'s compatible with FreshRSS',
+	'php_is_ok'			=> 'Your PHP version is %s and its compatible with FreshRSS',
 	'php_is_nok'			=> 'Your PHP version is %s. You must have at least version %s',
 	'minz_is_ok'			=> 'You have Minz framework',
-	'minz_is_nok'			=> 'You haven\'t Minz framework. You should execute <em>build.sh</em> script or <a href="https://github.com/marienfressinaud/MINZ">download it on Github</a> and install in <em>%s</em> directory the content of its <em>/lib</em> directory.',
+	'minz_is_nok'			=> 'You havent Minz framework. You should execute <em>build.sh</em> script or <a href="https://github.com/marienfressinaud/MINZ">download it on Github</a> and install in <em>%s</em> directory the content of its <em>/lib</em> directory.',
 	'curl_is_ok'			=> 'You have version %s of cURL',
-	'curl_is_nok'			=> 'You haven\'t cURL',
+	'curl_is_nok'			=> 'You havent cURL',
 	'pdomysql_is_ok'		=> 'You have PDO and its driver for MySQL',
-	'pdomysql_is_nok'		=> 'You haven\'t PDO or its driver for MySQL',
+	'pdomysql_is_nok'		=> 'You havent PDO or its driver for MySQL',
 	'dom_is_ok'			=> 'You have the necessary to browse the DOM',
-	'dom_is_nok'			=> 'You haven\'t the necessary to browse the DOM (php-xml package can be useful)',
+	'dom_is_nok'			=> 'You havent the necessary to browse the DOM (php-xml package can be useful)',
 	'cache_is_ok'			=> 'Permissions on cache directory are good',
 	'log_is_ok'			=> 'Permissions on logs directory are good',
 	'conf_is_ok'			=> 'Permissions on configuration directory are good',
@@ -285,7 +285,7 @@ return array (
 	'random_string'			=> 'Random string',
 	'change_value'			=> 'You should change this value by any other',
 	'base_url'			=> 'Base URL',
-	'do_not_change_if_doubt'	=> 'Don\'t change if you doubt about it',
+	'do_not_change_if_doubt'	=> 'Dont change if you doubt about it',
 
 	'bdd_conf_is_ok'		=> 'Database configuration has been saved.',
 	'bdd_conf_is_ko'		=> 'Verify your database information.',
@@ -295,7 +295,7 @@ return array (
 	'bdd'				=> 'Database',
 	'prefix'			=> 'Table prefix',
 
-	'installation_is_ok'		=> 'Installation process is finished. You must delete <em>install.php</em> file to access FreshRSS... or simply click on following button :)',
+	'installation_is_ok'		=> 'Installation process is finished. You must delete <em>install.php</em> file to access FreshRSS or simply click on following button :)',
 	'finish_installation'		=> 'Finish installation',
 	'install_not_deleted'		=> 'Something was going wrong, you muste delete <em>%s</em> file manually.',
 );

+ 40 - 40
app/i18n/fr.php

@@ -55,8 +55,8 @@ return array (
 	'article_published_on'		=> 'Article publié initialement sur <a href="%s">%s</a>',
 	'article_published_on_author'	=> 'Article publié initialement sur <a href="%s">%s</a> par %s',
 
-	'access_denied'			=> 'Vous n\'avez pas le droit d\'accéder à cette page',
-	'page_not_found'		=> 'La page que vous cherchez n\'existe pas',
+	'access_denied'			=> 'Vous n’avez pas le droit d’accéder à cette page',
+	'page_not_found'		=> 'La page que vous cherchez nexiste pas',
 	'error_occurred'		=> 'Une erreur est survenue',
 	'error_occurred_update'		=> 'Une erreur est survenue lors de la mise à jour',
 
@@ -67,7 +67,7 @@ return array (
 	'rss_feed_management'		=> 'Gestion des flux RSS',
 	'configuration_updated'		=> 'La configuration a été mise à jour',
 	'general_and_reading_management'=> 'Gestion générale et affichage',
-	'bad_opml_file'			=> 'Votre fichier OPML n\'est pas valide',
+	'bad_opml_file'			=> 'Votre fichier OPML nest pas valide',
 	'shortcuts_updated'		=> 'Les raccourcis ont été mis à jour',
 	'shortcuts_management'		=> 'Gestion des raccourcis',
 	'feeds_marked_read'		=> 'Les flux ont été marqués comme lu',
@@ -75,13 +75,13 @@ return array (
 
 	'already_subscribed'		=> 'Vous êtes déjà abonné à <em>%s</em>',
 	'feed_added'			=> 'Le flux <em>%s</em> a bien été ajouté',
-	'feed_not_added'		=> '<em>%s</em> n\' a pas pu être ajouté',
-	'internal_problem_feed'		=> 'Un problème interne a été rencontré, le flux n\'a pas pu être ajouté',
-	'invalid_url'			=> 'L\'url <em>%s</em> est invalide',
+	'feed_not_added'		=> '<em>%s</em> n a pas pu être ajouté',
+	'internal_problem_feed'		=> 'Un problème interne a été rencontré, le flux na pas pu être ajouté',
+	'invalid_url'			=> 'Lurl <em>%s</em> est invalide',
 	'feed_actualized'		=> '<em>%s</em> a été mis à jour',
 	'n_feeds_actualized'		=> '%d flux ont été mis à jour',
 	'feeds_actualized'		=> 'Les flux ont été mis à jour',
-	'no_feed_actualized'		=> 'Aucun flux n\'a pu être mis à jour',
+	'no_feed_actualized'		=> 'Aucun flux na pu être mis à jour',
 	'feeds_imported_with_errors'	=> 'Les flux ont été importés mais des erreurs sont survenues',
 	'feeds_imported'		=> 'Les flux ont été importés',
 	'category_emptied'		=> 'La catégorie a été vidée',
@@ -92,7 +92,7 @@ return array (
 	'your_rss_feeds'		=> 'Vos flux RSS',
 	'your_favorites'		=> 'Vos favoris',
 	'public'			=> 'Public',
-	'invalid_login'			=> 'L\'identifiant est invalide',
+	'invalid_login'			=> 'Lidentifiant est invalide',
 
 	// VIEWS
 	'save'				=> 'Enregistrer',
@@ -100,7 +100,7 @@ return array (
 	'cancel'			=> 'Annuler',
 
 	'back_to_rss_feeds'		=> '← Retour à vos flux RSS',
-	'feeds_moved_category_deleted'	=> 'Lors de la suppression d\'une catégorie, ses flux seront automatiquement classés dans <em>%s</em>.',
+	'feeds_moved_category_deleted'	=> 'Lors de la suppression dune catégorie, ses flux seront automatiquement classés dans <em>%s</em>.',
 	'category_number'		=> 'Catégorie n°%d',
 	'ask_empty'			=> 'Vider ?',
 	'number_feeds'			=> '%d flux',
@@ -111,10 +111,10 @@ return array (
 	'javascript_for_shortcuts'	=> 'Le javascript doit être activé pour pouvoir profiter des raccourcis',
 	'javascript_should_be_activated'=> 'Le javascript doit être activé',
 	'shift_for_all_read'		=> '+ <code>shift</code> pour marquer tous les articles comme lus',
-	'see_on_website'		=> 'Voir l\'article sur le site d\'origine',
-	'next_article'			=> 'Passer à l\'article suivant',
+	'see_on_website'		=> 'Voir l’article sur le site d’origine',
+	'next_article'			=> 'Passer à larticle suivant',
 	'shift_for_last'		=> '+ <code>shift</code> pour passer au dernier article de la page',
-	'previous_article'		=> 'Passer à l\'article précédent',
+	'previous_article'		=> 'Passer à larticle précédent',
 	'shift_for_first'		=> '+ <code>shift</code> pour passer au premier article de la page',
 	'next_page'			=> 'Passer à la page suivante',
 	'previous_page'			=> 'Passer à la page précédente',
@@ -125,24 +125,24 @@ return array (
 	'or'				=> 'ou',
 
 	'informations'			=> 'Informations',
-	'feed_in_error'			=> 'Ce flux a rencontré un problème. Veuillez vérifier qu\'il est toujours accessible puis actualisez-le.',
+	'feed_in_error'			=> 'Ce flux a rencontré un problème. Veuillez vérifier quil est toujours accessible puis actualisez-le.',
 	'website_url'			=> 'URL du site',
 	'feed_url'			=> 'URL du flux',
-	'number_articles'		=> 'Nombre d\'articles',
-	'keep_history'			=> 'Garder l\'historique ?',
+	'number_articles'		=> 'Nombre darticles',
+	'keep_history'			=> 'Garder lhistorique ?',
 	'categorize'			=> 'Ranger dans une catégorie',
 	'advanced'			=> 'Avancé',
 	'show_in_all_flux'		=> 'Afficher dans le flux principal',
 	'yes'				=> 'Oui',
 	'no'				=> 'Non',
-	'css_path_on_website'		=> 'Chemin CSS des articles sur le site d\'origine',
+	'css_path_on_website'		=> 'Chemin CSS des articles sur le site dorigine',
 	'retrieve_truncated_feeds'	=> 'Permet de récupérer les flux tronqués (attention, demande plus de temps !)',
 	'http_authentication'		=> 'Authentification HTTP',
 	'http_username'			=> 'Identifiant HTTP',
 	'http_password'			=> 'Mot de passe HTTP',
 	'blank_to_disable'		=> 'Laissez vide pour désactiver',
 	'not_yet_implemented'		=> 'Pas encore implémenté',
-	'access_protected_feeds'	=> 'La connexion permet d\'accéder aux flux protégés par une authentification HTTP',
+	'access_protected_feeds'	=> 'La connexion permet daccéder aux flux protégés par une authentification HTTP',
 	'no_selected_feed'		=> 'Aucun flux sélectionné.',
 	'think_to_add'			=> 'Pensez à en ajouter !',
 
@@ -152,10 +152,10 @@ return array (
 	'month'				=> 'mois',
 	'persona_connection_email'	=> 'Adresse mail de connexion (utilise <a href="https://persona.org/">Persona</a>)',
 	'allow_anonymous'		=> 'Autoriser la lecture anonyme',
-	'auth_token'			=> 'Jeton d\'identification',
-	'explain_token'			=> 'Ce jeton permet de s\'affranchir d\'authentification en l\'ajoutant à l\'URL (ex. %s?token=&lt;votre_token&gt;). Seul la sortie RSS est concernée.',
+	'auth_token'			=> 'Jeton didentification',
+	'explain_token'			=> 'Ce jeton permet de s’affranchir d’authentification en l’ajoutant à l’URL (ex. %s?token=&lt;votre_token&gt;). Seul la sortie RSS est concernée.',
 	'reading_configuration'		=> 'Configuration de lecture',
-	'articles_per_page'		=> 'Nombre d\'articles par page',
+	'articles_per_page'		=> 'Nombre darticles par page',
 	'default_view'			=> 'Vue par défaut',
 	'sort_order'			=> 'Ordre de tri',
 	'auto_load_more'		=> 'Charger les articles suivants en bas de page',
@@ -164,8 +164,8 @@ return array (
 	'jump_next'			=> 'sauter au prochain voisin non lu',
 	'img_with_lazyload'		=> 'Utiliser le mode "lazy load" pour charger les images',
 	'auto_read_when'		=> 'Marquer comme lu lorsque',
-	'article_selected'		=> 'l\'article est sélectionné',
-	'article_open_on_website'	=> 'l\'article est ouvert sur le site d\'origine',
+	'article_selected'		=> 'larticle est sélectionné',
+	'article_open_on_website'	=> 'l’article est ouvert sur le site d’origine',
 	'scroll'			=> 'au défilement de la page',
 	'your_shaarli'			=> 'Votre Shaarli',
 	'sharing'			=> 'Partage',
@@ -182,19 +182,19 @@ return array (
 	'publication_date'		=> 'Date de publication',
 	'by'				=> 'par',
 
-	'load_more'			=> 'Charger plus d\'articles',
-	'nothing_to_load'		=> 'Il n\'y a pas plus d\'article',
+	'load_more'			=> 'Charger plus darticles',
+	'nothing_to_load'		=> 'Il n’y a pas plus d’article',
 
 	'rss_feeds_of'			=> 'Flux RSS de %s',
 
 	'refresh'			=> 'Actualisation',
 
-	'today'				=> 'Aujourd\'hui',
+	'today'				=> 'Aujourdhui',
 	'yesterday'			=> 'Hier',
-	'before_yesterday'		=> 'À partir d\'avant-hier',
+	'before_yesterday'		=> 'À partir davant-hier',
 	'by_author'			=> 'Par <em>%s</em>',
 	'related_tags'			=> 'Tags associés',
-	'no_feed_to_display'		=> 'Il n\'y a aucun flux à afficher.',
+	'no_feed_to_display'		=> 'Il ny a aucun flux à afficher.',
 
 	'about_freshrss'		=> 'À propos de FreshRSS',
 	'project_website'		=> 'Site du projet',
@@ -204,15 +204,15 @@ return array (
 	'github_or_email'		=> '<a href="https://github.com/marienfressinaud/FreshRSS/issues">sur Github</a> ou <a href="mailto:dev@marienfressinaud.fr">par mail</a>',
 	'license'			=> 'Licence',
 	'agpl3'				=> '<a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL 3</a>',
-	'freshrss_description'		=> 'FreshRSS est un agrégateur de flux RSS à auto-héberger à l\'image de <a href="http://rsslounge.aditu.de/">RSSLounge</a>, <a href="http://tt-rss.org/redmine/projects/tt-rss/wiki">TinyTinyRSS</a> ou <a href="http://projet.idleman.fr/leed/">Leed</a>. Il se veut léger et facile à prendre en main tout en étant un outil puissant et paramétrable. L\'objectif étant d\'offrir une alternative sérieuse au futur feu-Google Reader.',
+	'freshrss_description'		=> 'FreshRSS est un agrégateur de flux RSS à auto-héberger à limage de <a href="http://rsslounge.aditu.de/">RSSLounge</a>, <a href="http://tt-rss.org/redmine/projects/tt-rss/wiki">TinyTinyRSS</a> ou <a href="http://projet.idleman.fr/leed/">Leed</a>. Il se veut léger et facile à prendre en main tout en étant un outil puissant et paramétrable. L’objectif étant d’offrir une alternative sérieuse au futur feu-Google Reader.',
 	'credits'			=> 'Crédits',
-	'credits_content'		=> 'Des éléments de design sont issus du <a href="http://twitter.github.io/bootstrap/">projet Bootstrap</a> bien que FreshRSS n\'utilise pas ce framework. Les <a href="https://git.gnome.org/browse/gnome-icon-theme-symbolic">icônes</a> sont issues du <a href="https://www.gnome.org/">projet GNOME</a>. La police <em>Open Sans</em> utilisée a été créée par <a href="https://www.google.com/webfonts/specimen/Open+Sans">Steve Matteson</a>. Les favicons sont récupérés grâce au site <a href="https://getfavicon.appspot.com/">getFavicon</a>. FreshRSS repose sur <a href="https://github.com/marienfressinaud/MINZ">Minz</a>, un framework PHP.',
+	'credits_content'		=> 'Des éléments de design sont issus du <a href="http://twitter.github.io/bootstrap/">projet Bootstrap</a> bien que FreshRSS nutilise pas ce framework. Les <a href="https://git.gnome.org/browse/gnome-icon-theme-symbolic">icônes</a> sont issues du <a href="https://www.gnome.org/">projet GNOME</a>. La police <em>Open Sans</em> utilisée a été créée par <a href="https://www.google.com/webfonts/specimen/Open+Sans">Steve Matteson</a>. Les favicons sont récupérés grâce au site <a href="https://getfavicon.appspot.com/">getFavicon</a>. FreshRSS repose sur <a href="https://github.com/marienfressinaud/MINZ">Minz</a>, un framework PHP.',
 
 	'logs'				=> 'Logs',
 	'logs_empty'			=> 'Les logs sont vides',
 
 	'forbidden_access'		=> 'Accès interdit',
-	'forbidden_access_description'	=> 'L\'accès est protégé par un mot de passe, veuillez <a class="signin" href="#">vous connecter</a> pour accéder aux flux.',
+	'forbidden_access_description'	=> 'Laccès est protégé par un mot de passe, veuillez <a class="signin" href="#">vous connecter</a> pour accéder aux flux.',
 
 	// DATE
 	'january'			=> 'janvier',
@@ -258,12 +258,12 @@ return array (
 	'attention'			=> 'Attention !',
 	'damn'				=> 'Arf !',
 	'oops'				=> 'Oups !',
-	'next_step'			=> 'Passer à l\'étape suivante',
+	'next_step'			=> 'Passer à létape suivante',
 
 	'language_defined'		=> 'La langue a bien été définie.',
 	'choose_language'		=> 'Choisissez la langue pour FreshRSS',
 
-	'javascript_is_better'		=> 'FreshRSS est plus agréable à utiliser avec le Javascript d\'activé',
+	'javascript_is_better'		=> 'FreshRSS est plus agréable à utiliser avec le Javascript dactivé',
 	'php_is_ok'			=> 'Votre version de PHP est la %s et est compatible avec FreshRSS',
 	'php_is_nok'			=> 'Votre version de PHP est la %s. Vous devriez avoir au moins la version %s',
 	'minz_is_ok'			=> 'Vous disposez du framework Minz',
@@ -278,24 +278,24 @@ return array (
 	'log_is_ok'			=> 'Les droits sur le répertoire des logs sont bons',
 	'conf_is_ok'			=> 'Les droits sur le répertoire de configuration sont bons',
 	'data_is_ok'			=> 'Les droits sur le répertoire de data sont bons',
-	'file_is_nok'			=> 'Veuillez vérifier les droits sur le répertoire <em>%s</em>. Le serveur HTTP doit être capable d\'écrire dedans',
-	'fix_errors_before'		=> 'Veuillez corriger les erreurs avant de passer à l\'étape suivante.',
+	'file_is_nok'			=> 'Veuillez vérifier les droits sur le répertoire <em>%s</em>. Le serveur HTTP doit être capable décrire dedans',
+	'fix_errors_before'		=> 'Veuillez corriger les erreurs avant de passer à létape suivante.',
 
 	'general_conf_is_ok'		=> 'La configuration générale a été enregistrée.',
 	'random_string'			=> 'Chaîne aléatoire',
-	'change_value'			=> 'Vous devriez changer cette valeur par n\'importe quelle autre',
-	'base_url'			=> 'Base de l\'url',
+	'change_value'			=> 'Vous devriez changer cette valeur par nimporte quelle autre',
+	'base_url'			=> 'Base de lurl',
 	'do_not_change_if_doubt'	=> 'Laissez tel quel dans le doute',
 
 	'bdd_conf_is_ok'		=> 'La configuration de la base de données a été enregistrée.',
-	'bdd_conf_is_ko'		=> 'Vérifiez les informations d\'accès à la base de données.',
+	'bdd_conf_is_ko'		=> 'Vérifiez les informations daccès à la base de données.',
 	'host'				=> 'Hôte',
 	'username'			=> 'Nom utilisateur',
 	'password'			=> 'Mot de passe',
 	'bdd'				=> 'Base de données',
 	'prefix'			=> 'Préfixe des tables',
 
-	'installation_is_ok'		=> 'L\'installation s\'est bien passée. Il faut maintenant supprimer le fichier <em>install.php</em> pour pouvoir accéder à FreshRSS... ou simplement cliquer sur le bouton ci-dessous :)',
-	'finish_installation'		=> 'Terminer l\'installation',
-	'install_not_deleted'		=> 'Quelque chose s\'est mal passé, vous devez supprimer le fichier <em>%s</em> à la main.',
+	'installation_is_ok'		=> 'L’installation s’est bien passée. Il faut maintenant supprimer le fichier <em>install.php</em> pour pouvoir accéder à FreshRSS ou simplement cliquer sur le bouton ci-dessous :)',
+	'finish_installation'		=> 'Terminer linstallation',
+	'install_not_deleted'		=> 'Quelque chose sest mal passé, vous devez supprimer le fichier <em>%s</em> à la main.',
 );

+ 1 - 1
app/models/Feed.php

@@ -172,7 +172,7 @@ class Feed extends Model {
 				);
 			} else {
 				$feed = new SimplePie ();
-				$url = preg_replace ('/&amp;/', '&', $this->url);
+				$url = str_replace ('&amp;', '&', $this->url);
 				if ($this->httpAuth != '') {
 					$url = preg_replace ('#((.+)://)(.+)#', '${1}' . $this->httpAuth . '@${3}', $url);
 				}

+ 1 - 1
app/views/entry/bookmark.phtml

@@ -12,4 +12,4 @@ $url = Url::display (array (
 	'params' => Request::params (),
 ));
 
-echo json_encode (array ('url' => preg_replace ('#&amp;#i', '&', $url)));
+echo json_encode (array ('url' => str_ireplace ('&amp;', '&', $url)));

+ 1 - 1
app/views/entry/read.phtml

@@ -12,4 +12,4 @@ $url = Url::display (array (
 	'params' => Request::params (),
 ));
 
-echo json_encode (array ('url' => preg_replace ('#&amp;#i', '&', $url)));
+echo json_encode (array ('url' => str_ireplace ('&amp;', '&', $url)));

+ 1 - 1
app/views/helpers/view/normal_view.phtml

@@ -44,7 +44,7 @@ if (isset ($this->entryPaginator) && !$this->entryPaginator->isEmpty ()) {
 			<?php } ?>
 			<?php $feed = $item->feed (true); ?>
 			<li class="item website"><a href="<?php echo _url ('index', 'index', 'get', 'f_' . $feed->id ()); ?>"><img class="favicon" src="<?php echo $feed->favicon (); ?>" alt="" /> <span><?php echo $feed->name (); ?></span></a></li>
-			<li class="item title"><?php echo $item->title (); ?></li>
+			<li class="item title"><a target="_blank" href="<?php echo $item->link (); ?>"><?php echo $item->title (); ?></a></li>
 			<li class="item date"><?php echo $item->date (); ?></li>
 			<li class="item link"><a target="_blank" href="<?php echo $item->link (); ?>">&nbsp;</a></li>
 		</ul>

+ 1 - 0
lib/SimplePie/SimplePie/Sanitize.php

@@ -379,6 +379,7 @@ class SimplePie_Sanitize
 	protected function preprocess($html, $type)
 	{
 		$ret = '';
+		$html = preg_replace('%</?(?:html|body)[^>]*?'.'>%is', '', $html);
 		if ($type & ~SIMPLEPIE_CONSTRUCT_XHTML)
 		{
 			// Atom XHTML constructs are wrapped with a div by default

+ 13 - 8
public/themes/default/freshrss.css

@@ -275,6 +275,12 @@
 			text-overflow: ellipsis;
 			cursor: pointer;
 		}
+			.flux_header .item.title a {
+				color: #000;
+			}
+				.flux_header .item.title a:hover {
+					text-decoration: none
+				}
 			.flux.not_read .flux_header .item.title {
 				font-weight: bold;
 			}
@@ -504,18 +510,17 @@
 }
 
 .bigMarkAsRead {
-	background:#CCC;
-	color:#FFF;
-	cursor:pointer;
-	height:32em;
-	text-shadow: 0 -1px 0 #AAA;
+	cursor: pointer;
+	height: 300px;
+	text-shadow: 0 -1px 0 #aaa;
 }
 .bigMarkAsRead:hover {
-	background:#06C;
+	background: #333;
+	color: #fff;
 }
 .bigTick {
-	font-size:72pt;
-	margin:32px 0 8px 0;
+	font-size: 72pt;
+	margin: 75px 0 10px 0;
 }
 
 /*** NOTIFICATION ***/

+ 14 - 8
public/themes/flat-design/freshrss.css

@@ -269,6 +269,12 @@ body {
 			text-overflow: ellipsis;
 			cursor: pointer;
 		}
+			.flux_header .item.title a {
+				color: #333;
+			}
+				.flux_header .item.title a:hover {
+					text-decoration: none
+				}
 			.flux.not_read .flux_header .item.title {
 				font-weight: bold;
 			}
@@ -507,18 +513,18 @@ body {
 }
 
 .bigMarkAsRead {
-	background:#34495E;
-	color:#FFF;
-	cursor:pointer;
-	height:32em;
-	text-shadow: 0 -1px 0 #AAA;
+	background: #ecf0f1;
+	cursor: pointer;
+	height: 300px;
+	text-shadow: 0 -1px 0 #aaa;
 }
 .bigMarkAsRead:hover {
-	background:#3498db;
+	background: #34495e;
+	color: #fff;
 }
 .bigTick {
-	font-size:72pt;
-	margin:32px 0 8px 0;
+	font-size: 72pt;
+	margin: 75px 0 10px 0;
 }
 
 /*** NOTIFICATION ***/