From 8a7bab3a55442f85553ab1d897084e89c10f7e05 Mon Sep 17 00:00:00 2001
From: Marien Fressinaud
Date: Mon, 20 Oct 2014 19:35:22 +0200
Subject: Refactoring of indexController
Global view has been moved to a different action (all is not working)
See https://github.com/marienfressinaud/FreshRSS/issues/634
and https://github.com/marienfressinaud/FreshRSS/issues/655
---
lib/lib_rss.php | 4 ++++
1 file changed, 4 insertions(+)
(limited to 'lib/lib_rss.php')
diff --git a/lib/lib_rss.php b/lib/lib_rss.php
index 9abdf18ce..80eb206d2 100644
--- a/lib/lib_rss.php
+++ b/lib/lib_rss.php
@@ -60,6 +60,10 @@ function formatNumber($n, $precision = 0) {
return str_replace(' ', ' ', //Espace insécable //TODO: remplacer par une espace _fine_ insécable
number_format($n, $precision, '.', ' ')); //number_format does not seem to be Unicode-compatible
}
+function format_number($n, $precision = 0) {
+ // TODO: coding style, prefer THIS function. Remove formatNumber.
+ return formatNumber($n, $precision);
+}
function formatBytes($bytes, $precision = 2, $system = 'IEC') {
if ($system === 'IEC') {
--
cgit v1.2.3
From e86a3d001745656c6ec94837ff3275d4bc93aa5a Mon Sep 17 00:00:00 2001
From: Marien Fressinaud
Date: Sun, 26 Oct 2014 12:40:42 +0100
Subject: Fix pdo checking
Show only one message for both mysql and sqlite pdo conf. If one of them is ok,
PDO is ok.
See https://github.com/marienfressinaud/FreshRSS/issues/678
---
lib/lib_rss.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'lib/lib_rss.php')
diff --git a/lib/lib_rss.php b/lib/lib_rss.php
index 80eb206d2..8ae357f02 100644
--- a/lib/lib_rss.php
+++ b/lib/lib_rss.php
@@ -257,13 +257,13 @@ function is_referer_from_same_domain() {
* @return array of tested values.
*/
function check_install_php() {
+ $pdo_mysql = extension_loaded('pdo_mysql');
+ $pdo_sqlite = extension_loaded('pdo_sqlite');
return array(
'php' => version_compare(PHP_VERSION, '5.2.1') >= 0,
'minz' => file_exists(LIB_PATH . '/Minz'),
'curl' => extension_loaded('curl'),
- 'pdo_mysql' => extension_loaded('pdo_mysql'),
- 'pdo_sqlite' => extension_loaded('pdo_sqlite'),
- 'pdo' => extension_loaded('pdo_mysql') || extension_loaded('pdo_sqlite'),
+ 'pdo' => $pdo_mysql || $pdo_sqlite,
'pcre' => extension_loaded('pcre'),
'ctype' => extension_loaded('ctype'),
'dom' => class_exists('DOMDocument'),
--
cgit v1.2.3
From 2e5d4d97c989f55c3506ceb918126eaf9c68f1d6 Mon Sep 17 00:00:00 2001
From: Alexandre Alapetite
Date: Tue, 28 Oct 2014 22:29:55 +0100
Subject: More limit options in config.php
See e.g. https://github.com/marienfressinaud/FreshRSS/issues/681
https://github.com/marienfressinaud/FreshRSS/issues/680
https://github.com/marienfressinaud/FreshRSS/issues/656
---
CHANGELOG | 6 ++++++
lib/Minz/Configuration.php | 26 ++++++++++++++++++++------
lib/lib_rss.php | 5 +++--
3 files changed, 29 insertions(+), 8 deletions(-)
(limited to 'lib/lib_rss.php')
diff --git a/CHANGELOG b/CHANGELOG
index 44d3452ae..688a286e3 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,11 @@
# Journal des modifications
+##
+
+* Configuration
+ * New options in config.php for cache duration, timeout, max number of feeds and categories per user.
+
+
## 2014-09-26 FreshRSS 0.8.0 / 0.9.0 (beta)
* UI
diff --git a/lib/Minz/Configuration.php b/lib/Minz/Configuration.php
index fe9ea6b2e..9511cb357 100644
--- a/lib/Minz/Configuration.php
+++ b/lib/Minz/Configuration.php
@@ -62,6 +62,8 @@ class Minz_Configuration {
const MAX_SMALL_INT = 16384;
private static $limits = array(
+ 'cache_duration' => 800, //SimplePie cache duration in seconds
+ 'timeout' => 10, //SimplePie timeout in seconds
'max_feeds' => Minz_Configuration::MAX_SMALL_INT,
'max_categories' => Minz_Configuration::MAX_SMALL_INT,
);
@@ -303,16 +305,28 @@ class Minz_Configuration {
if (isset($ini_array['limits'])) {
$limits = $ini_array['limits'];
+ if (isset($limits['cache_duration'])) {
+ $v = intval($limits['cache_duration']);
+ if ($v > 0) {
+ self::$limits['cache_duration'] = $v;
+ }
+ }
+ if (isset($limits['timeout'])) {
+ $v = intval($limits['timeout']);
+ if ($v > 0) {
+ self::$limits['timeout'] = $v;
+ }
+ }
if (isset($limits['max_feeds'])) {
- self::$limits['max_feeds'] = intval($limits['max_feeds']);
- if (self::$limits['max_feeds'] < 0 || self::$limits['max_feeds'] > Minz_Configuration::MAX_SMALL_INT) {
- self::$limits['max_feeds'] = Minz_Configuration::MAX_SMALL_INT;
+ $v = intval($limits['max_feeds']);
+ if ($v > 0 && $v < Minz_Configuration::MAX_SMALL_INT) {
+ self::$limits['max_feeds'] = $v;
}
}
if (isset($limits['max_categories'])) {
- self::$limits['max_categories'] = intval($limits['max_categories']);
- if (self::$limits['max_categories'] < 0 || self::$limits['max_categories'] > Minz_Configuration::MAX_SMALL_INT) {
- self::$limits['max_categories'] = Minz_Configuration::MAX_SMALL_INT;
+ $v = intval($limits['max_categories']);
+ if ($v > 0 && $v < Minz_Configuration::MAX_SMALL_INT) {
+ self::$limits['max_categories'] = $v;
}
}
}
diff --git a/lib/lib_rss.php b/lib/lib_rss.php
index 8ae357f02..3648a4582 100644
--- a/lib/lib_rss.php
+++ b/lib/lib_rss.php
@@ -110,11 +110,12 @@ function html_only_entity_decode($text) {
}
function customSimplePie() {
+ $limits = Minz_Configuration::limits();
$simplePie = new SimplePie();
$simplePie->set_useragent(_t('freshrss') . '/' . FRESHRSS_VERSION . ' (' . PHP_OS . '; ' . FRESHRSS_WEBSITE . ') ' . SIMPLEPIE_NAME . '/' . SIMPLEPIE_VERSION);
$simplePie->set_cache_location(CACHE_PATH);
- $simplePie->set_cache_duration(800);
- $simplePie->set_timeout(10); //TODO: Make a user setting
+ $simplePie->set_cache_duration($limits['cache_duration']);
+ $simplePie->set_timeout($limits['timeout']);
$simplePie->strip_htmltags(array(
'base', 'blink', 'body', 'doctype', 'embed',
'font', 'form', 'frame', 'frameset', 'html',
--
cgit v1.2.3
From 036240ab01999c8eff1b9b3a98a7313cf43f5836 Mon Sep 17 00:00:00 2001
From: Marien Fressinaud
Date: Thu, 30 Oct 2014 19:31:32 +0100
Subject: Fix coding style formatNumber and formatBytes
---
app/views/configure/archiving.phtml | 4 ++--
app/views/stats/index.phtml | 20 ++++++++++----------
app/views/user/manage.phtml | 4 ++--
lib/lib_rss.php | 14 ++++++--------
4 files changed, 20 insertions(+), 22 deletions(-)
(limited to 'lib/lib_rss.php')
diff --git a/app/views/configure/archiving.phtml b/app/views/configure/archiving.phtml
index 410434599..7c2d79343 100644
--- a/app/views/configure/archiving.phtml
+++ b/app/views/configure/archiving.phtml
@@ -60,7 +60,7 @@
@@ -68,7 +68,7 @@
diff --git a/app/views/stats/index.phtml b/app/views/stats/index.phtml
index ba4258b71..c75810850 100644
--- a/app/views/stats/index.phtml
+++ b/app/views/stats/index.phtml
@@ -18,23 +18,23 @@
|
- repartition['main_stream']['total']); ?> |
- repartition['all_feeds']['total']); ?> |
+ repartition['main_stream']['total']); ?> |
+ repartition['all_feeds']['total']); ?> |
|
- repartition['main_stream']['read']); ?> |
- repartition['all_feeds']['read']); ?> |
+ repartition['main_stream']['read']); ?> |
+ repartition['all_feeds']['read']); ?> |
|
- repartition['main_stream']['unread']); ?> |
- repartition['all_feeds']['unread']); ?> |
+ repartition['main_stream']['unread']); ?> |
+ repartition['all_feeds']['unread']); ?> |
|
- repartition['main_stream']['favorite']); ?> |
- repartition['all_feeds']['favorite']); ?> |
+ repartition['main_stream']['favorite']); ?> |
+ repartition['all_feeds']['favorite']); ?> |
@@ -56,8 +56,8 @@
|
|
- |
- repartition['all_feeds']['total'] * 100, 1);?> |
+ |
+ repartition['all_feeds']['total'] * 100, 1);?> |
diff --git a/app/views/user/manage.phtml b/app/views/user/manage.phtml
index 2bfd633a2..e46e02572 100644
--- a/app/views/user/manage.phtml
+++ b/app/views/user/manage.phtml
@@ -65,8 +65,8 @@
nb_articles),
- formatBytes($this->size_user)); ?>
+ format_number($this->nb_articles),
+ format_bytes($this->size_user)); ?>
diff --git a/lib/lib_rss.php b/lib/lib_rss.php
index 3648a4582..317c6852f 100644
--- a/lib/lib_rss.php
+++ b/lib/lib_rss.php
@@ -56,16 +56,14 @@ function checkUrl($url) {
}
}
-function formatNumber($n, $precision = 0) {
- return str_replace(' ', ' ', //Espace insécable //TODO: remplacer par une espace _fine_ insécable
- number_format($n, $precision, '.', ' ')); //number_format does not seem to be Unicode-compatible
-}
function format_number($n, $precision = 0) {
- // TODO: coding style, prefer THIS function. Remove formatNumber.
- return formatNumber($n, $precision);
+ // number_format does not seem to be Unicode-compatible
+ return str_replace(' ', ' ', //Espace insécable //TODO: remplacer par une espace _fine_ insécable
+ number_format($n, $precision, '.', ' ')
+ );
}
-function formatBytes($bytes, $precision = 2, $system = 'IEC') {
+function format_bytes($bytes, $precision = 2, $system = 'IEC') {
if ($system === 'IEC') {
$base = 1024;
$units = array('B', 'KiB', 'MiB', 'GiB', 'TiB');
@@ -77,7 +75,7 @@ function formatBytes($bytes, $precision = 2, $system = 'IEC') {
$pow = $bytes === 0 ? 0 : floor(log($bytes) / log($base));
$pow = min($pow, count($units) - 1);
$bytes /= pow($base, $pow);
- return formatNumber($bytes, $precision) . ' ' . $units[$pow];
+ return format_number($bytes, $precision) . ' ' . $units[$pow];
}
function timestamptodate ($t, $hour = true) {
--
cgit v1.2.3
From ba832bef4de4a02df46023b389f752b01d43c98b Mon Sep 17 00:00:00 2001
From: Marien Fressinaud
Date: Thu, 30 Oct 2014 19:34:36 +0100
Subject: Fix TODO in format_number()
---
lib/lib_rss.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'lib/lib_rss.php')
diff --git a/lib/lib_rss.php b/lib/lib_rss.php
index 317c6852f..e7ca95aba 100644
--- a/lib/lib_rss.php
+++ b/lib/lib_rss.php
@@ -58,7 +58,7 @@ function checkUrl($url) {
function format_number($n, $precision = 0) {
// number_format does not seem to be Unicode-compatible
- return str_replace(' ', ' ', //Espace insécable //TODO: remplacer par une espace _fine_ insécable
+ return str_replace(' ', ' ', //Espace fine insécable
number_format($n, $precision, '.', ' ')
);
}
--
cgit v1.2.3
From ba7d63e5cac1c98e28dc831112bc21dbd76aebbb Mon Sep 17 00:00:00 2001
From: Alexandre Alapetite
Date: Tue, 4 Nov 2014 08:47:23 +0100
Subject: Temporarily remove scheme check in referer
If needed, we may re-introduce the check for scheme with proper support
for proxy
https://github.com/FreshRSS/FreshRSS/issues/565#issuecomment-61602425
---
lib/lib_rss.php | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
(limited to 'lib/lib_rss.php')
diff --git a/lib/lib_rss.php b/lib/lib_rss.php
index e7ca95aba..8170c7fd9 100644
--- a/lib/lib_rss.php
+++ b/lib/lib_rss.php
@@ -242,11 +242,14 @@ function is_referer_from_same_domain() {
$host = parse_url(((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? 'https://' : 'http://') .
(empty($_SERVER['HTTP_HOST']) ? $_SERVER['SERVER_NAME'] : $_SERVER['HTTP_HOST']));
$referer = parse_url($_SERVER['HTTP_REFERER']);
- if (empty($host['scheme']) || empty($referer['scheme']) || $host['scheme'] !== $referer['scheme'] ||
- empty($host['host']) || empty($referer['host']) || $host['host'] !== $referer['host']) {
+ if (empty($host['host']) || empty($referer['host']) || $host['host'] !== $referer['host']) {
return false;
}
- return (isset($host['port']) ? $host['port'] : 0) === (isset($referer['port']) ? $referer['port'] : 0);
+ //TODO: check 'scheme', taking into account the case of a proxy
+ if ((isset($host['port']) ? $host['port'] : 0) !== (isset($referer['port']) ? $referer['port'] : 0)) {
+ return false;
+ }
+ return true;
}
--
cgit v1.2.3
From 76358846abe2eba95668d66d3847cbdfe3f8bcdc Mon Sep 17 00:00:00 2001
From: Marien Fressinaud
Date: Mon, 8 Dec 2014 13:36:08 +0100
Subject: Implement extension deletion
See https://github.com/FreshRSS/FreshRSS/issues/252
---
app/Controllers/extensionController.php | 22 +++++++++++++++++++++-
lib/lib_rss.php | 26 ++++++++++++++++++++++++++
2 files changed, 47 insertions(+), 1 deletion(-)
(limited to 'lib/lib_rss.php')
diff --git a/app/Controllers/extensionController.php b/app/Controllers/extensionController.php
index cd56de9eb..adb3e1864 100644
--- a/app/Controllers/extensionController.php
+++ b/app/Controllers/extensionController.php
@@ -172,6 +172,26 @@ class FreshRSS_extension_Controller extends Minz_ActionController {
}
$url_redirect = array('c' => 'extension', 'a' => 'index');
- Minz_Request::bad('not implemented yet!', $url_redirect);
+
+ if (Minz_Request::isPost()) {
+ $ext_name = urldecode(Minz_Request::param('e'));
+ $ext = Minz_ExtensionManager::find_extension($ext_name);
+
+ if (is_null($ext)) {
+ Minz_Request::bad(_t('feedback.extensions.not_found', $ext_name),
+ $url_redirect);
+ }
+
+ $res = recursive_unlink($ext->getPath());
+ if ($res) {
+ Minz_Request::good(_t('feedback.extensions.removed', $ext_name),
+ $url_redirect);
+ } else {
+ Minz_Request::bad(_t('feedback.extensions.cannot_delete', $ext_name),
+ $url_redirect);
+ }
+ }
+
+ Minz_Request::forward($url_redirect, true);
}
}
diff --git a/lib/lib_rss.php b/lib/lib_rss.php
index 8170c7fd9..e466bcb15 100644
--- a/lib/lib_rss.php
+++ b/lib/lib_rss.php
@@ -319,3 +319,29 @@ function check_install_database() {
return $status;
}
+
+/**
+ * Remove a directory recursively.
+ *
+ * From http://php.net/rmdir#110489
+ *
+ * @param $dir the directory to remove
+ */
+function recursive_unlink($dir) {
+ if (!is_dir($dir)) {
+ return true;
+ }
+
+ $files = array_diff(scandir($dir), array('.', '..'));
+ foreach ($files as $filename) {
+ $filename = $dir . '/' . $filename;
+ if (is_dir($filename)) {
+ @chmod($filename, 0777);
+ recursive_unlink($filename);
+ } else {
+ unlink($filename);
+ }
+ }
+
+ return rmdir($dir);
+}
--
cgit v1.2.3
From d455837c6d6e3ad3d64d06f40c947c93fc4e2086 Mon Sep 17 00:00:00 2001
From: Marien Fressinaud
Date: Thu, 11 Dec 2014 00:00:15 +0100
Subject: Fix i18n for normal view
---
app/Controllers/indexController.php | 2 +-
app/Models/Context.php | 4 +--
app/i18n/en/gen.php | 62 +++++++++++++++----------------------
app/i18n/en/index.php | 25 ++++++++++++++-
app/i18n/fr/gen.php | 62 +++++++++++++++----------------------
app/i18n/fr/index.php | 25 ++++++++++++++-
app/layout/header.phtml | 2 +-
app/views/helpers/pagination.phtml | 8 ++---
app/views/index/logs.phtml | 6 ++--
app/views/index/normal.phtml | 16 +++++-----
lib/lib_rss.php | 8 ++---
11 files changed, 121 insertions(+), 99 deletions(-)
(limited to 'lib/lib_rss.php')
diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php
index eff47ed58..2759ab289 100755
--- a/app/Controllers/indexController.php
+++ b/app/Controllers/indexController.php
@@ -217,7 +217,7 @@ class FreshRSS_index_Controller extends Minz_ActionController {
Minz_Error::error(403);
}
- Minz_View::prependTitle(_t('index.logs.title') . ' · ');
+ Minz_View::prependTitle(_t('index.log.title') . ' · ');
if (Minz_Request::isPost()) {
FreshRSS_LogDAO::truncate();
diff --git a/app/Models/Context.php b/app/Models/Context.php
index 3dc5349ad..c8a65063a 100644
--- a/app/Models/Context.php
+++ b/app/Models/Context.php
@@ -138,12 +138,12 @@ class FreshRSS_Context {
switch($type) {
case 'a':
self::$current_get['all'] = true;
- self::$name = _t('your_rss_feeds');
+ self::$name = _t('index.feed.title');
self::$get_unread = self::$total_unread;
break;
case 's':
self::$current_get['starred'] = true;
- self::$name = _t('your_favorites');
+ self::$name = _t('index.feed.title_fav');
self::$get_unread = self::$total_starred['unread'];
// Update state if favorite is not yet enabled.
diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php
index 28659cccb..a9045c299 100644
--- a/app/i18n/en/gen.php
+++ b/app/i18n/en/gen.php
@@ -12,10 +12,30 @@ return array(
'login' => 'Login',
'logout' => 'Logout',
),
+ 'date' => array(
+ 'Apr' => '\\A\\p\\r\\i\\l',
+ 'Aug' => '\\A\\u\\g\\u\\s\\t',
+ 'Dec' => '\\D\\e\\c\\e\\m\\b\\e\\r',
+ 'Feb' => '\\F\\e\\b\\r\\u\\a\\r\\y',
+ 'Jan' => '\\J\\a\\n\\u\\a\\r\\y',
+ 'Jul' => '\\J\\u\\l\\y',
+ 'Jun' => '\\J\\u\\n\\e',
+ 'Mar' => '\\M\\a\\r\\c\\h',
+ 'May' => '\\M\\a\\y',
+ 'Nov' => '\\N\\o\\v\\e\\m\\b\\e\\r',
+ 'Oct' => '\\O\\c\\t\\o\\b\\e\\r',
+ 'Sep' => '\\S\\e\\p\\t\\e\\m\\b\\e\\r',
+ 'before_yesterday' => 'Before yesterday',
+ 'format_date' => '%s j\\<\\s\\u\\p\\>S\\<\\/\\s\\u\\p\\> Y',
+ 'format_date_hour' => '%s j\\<\\s\\u\\p\\>S\\<\\/\\s\\u\\p\\> Y \\a\\t H\\:i',
+ 'today' => 'Today',
+ 'yesterday' => 'Yesterday',
+ ),
'js' => array(
'category_empty' => 'Empty category',
'confirm_action' => 'Are you sure you want to perform this action? It cannot be cancelled!',
'confirm_action_feed_cat' => 'Are you sure you want to perform this action? You will lose related favorites and user queries. It cannot be cancelled!',
+ '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!',
),
@@ -30,6 +50,7 @@ return array(
'logs' => 'Logs',
'queries' => 'User queries',
'reading' => 'Reading',
+ 'search' => 'Search words or #tags',
'sharing' => 'Sharing',
'shortcuts' => 'Shortcuts',
'stats' => 'Statistics',
@@ -40,7 +61,10 @@ return array(
'pagination' => array(
'first' => 'First',
'last' => 'Last',
+ 'load_more' => 'Load more articles',
+ 'mark_all_read' => 'Mark all as read',
'next' => 'Next',
+ 'nothing_to_load' => 'There are no more articles',
'previous' => 'Previous',
),
'title' => array(
@@ -51,18 +75,7 @@ return array(
'user_management' => 'Manage users',
'user_profile' => 'Profile',
),
- 'Apr' => '\\A\\p\\r\\i\\l',
- 'Aug' => '\\A\\u\\g\\u\\s\\t',
- 'Dec' => '\\D\\e\\c\\e\\m\\b\\e\\r',
- 'Feb' => '\\F\\e\\b\\r\\u\\a\\r\\y',
- 'Jan' => '\\J\\a\\n\\u\\a\\r\\y',
- 'Jul' => '\\J\\u\\l\\y',
- 'Jun' => '\\J\\u\\n\\e',
- 'Mar' => '\\M\\a\\r\\c\\h',
- 'May' => '\\M\\a\\y',
- 'Nov' => '\\N\\o\\v\\e\\m\\b\\e\\r',
- 'Oct' => '\\O\\c\\t\\o\\b\\e\\r',
- 'Sep' => '\\S\\e\\p\\t\\e\\m\\b\\e\\r',
+ 'freshrss' => 'FreshRSS',
'access_denied' => 'You don’t have permission to access this page',
'access_protected_feeds' => 'Connection allows to access HTTP protected RSS feeds',
'activate_sharing' => 'Activate sharing',
@@ -117,13 +130,10 @@ return array(
'bdd_conf_is_ok' => 'Database configuration has been saved.',
'bdd_configuration' => 'Database configuration',
'bdd_type' => 'Type of database',
- 'before_yesterday' => 'Before yesterday',
'blank_to_disable' => 'Leave blank to disable',
- 'blogotext' => 'Blogotext',
'bottom_line' => 'Bottom line',
'bugs_reports' => 'Bugs reports',
'by' => 'by',
- 'by_author' => 'By %s',
'by_default' => 'By default',
'by_email' => 'By email',
'by_feed' => 'by feed',
@@ -171,14 +181,12 @@ return array(
'default_view' => 'Default view',
'delete' => 'Delete',
'delete_articles_every' => 'Remove articles after',
- 'diaspora' => 'Diaspora*',
'display_articles_unfolded' => 'Show articles unfolded by default',
'display_categories_unfolded' => 'Show categories folded by default',
'display_configuration' => 'Display',
'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',
- 'email' => 'Email',
'error_occurred' => 'An error occurred',
'error_occurred_update' => 'Nothing was changed',
'explain_token' => 'Allows to access RSS output of the default user without authentication.
%s?output=rss&token=%s',
@@ -186,7 +194,6 @@ return array(
'export_no_zip_extension' => 'Zip extension is not present on your server. Please try to export files one by one.',
'export_opml' => 'Export list of feeds (OPML)',
'export_starred' => 'Export your favourites',
- 'facebook' => 'Facebook',
'favicons_is_ok' => 'Permissions on favicons directory are good',
'feb' => 'feb',
'february' => 'Feb',
@@ -216,13 +223,9 @@ 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',
- 'format_date' => '%s j\\<\\s\\u\\p\\>S\\<\\/\\s\\u\\p\\> Y',
- 'format_date_hour' => '%s j\\<\\s\\u\\p\\>S\\<\\/\\s\\u\\p\\> Y \\a\\t H\\:i',
- 'freshrss' => 'FreshRSS',
'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',
- 'g+' => 'Google+',
'general_conf_is_ok' => 'General configuration has been saved.',
'general_configuration' => 'General configuration',
'github_or_email' => 'on Github or by mail',
@@ -268,7 +271,6 @@ return array(
'last_year' => 'Last year',
'lead_developer' => 'Lead developer',
'license' => 'License',
- 'load_more' => 'Load more articles',
'log_is_ok' => 'Permissions on logs directory are good',
'login_configuration' => 'Login',
'login_persona_problem' => 'Connection problem with Persona?',
@@ -287,7 +289,6 @@ return array(
'more_information' => 'More information',
'n_entries_deleted' => '%d articles have been deleted',
'n_feeds_actualized' => '%d feeds have been updated',
- 'new_article' => 'There are new available articles, click to refresh the page.',
'new_category' => 'New category',
'next_article' => 'Skip to the next article',
'next_page' => 'Skip to the next page',
@@ -305,7 +306,6 @@ return array(
'not_read' => '%d unread',
'not_reads' => '%d unread',
'not_yet_implemented' => 'Not yet implemented',
- 'nothing_to_load' => 'There are no more articles',
'nov' => 'nov',
'november' => 'Nov',
'number_articles' => '%d articles',
@@ -334,7 +334,6 @@ return array(
'prefix' => 'Table prefix',
'previous_article' => 'Skip to the previous article',
'previous_page' => 'Skip to the previous page',
- 'print' => 'Print',
'project_website' => 'Project website',
'public' => 'Public',
'publication_date' => 'Date of publication',
@@ -370,21 +369,16 @@ return array(
'random_string' => 'Random string',
'reading_confirm' => 'Display a confirmation dialog on “mark all as read” actions',
'refresh' => 'Refresh',
- 'related_tags' => 'Related tags',
'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',
- 'search' => 'Search words or #tags',
- 'search_short' => 'Search',
'seconds_(0_means_no_timeout)' => 'seconds (0 means no timeout)',
'see_on_website' => 'See on original website',
'sep' => 'sep',
'september' => 'Sep',
- 'shaarli' => 'Shaarli',
- 'share' => 'Share',
'share_name' => 'Share name to display',
'share_url' => 'Share URL to use',
'sharing_management' => 'Sharing options management',
@@ -422,12 +416,10 @@ return array(
'think_to_add' => 'You may add some feeds.',
'this_is_the_end' => 'This is the end',
'thu' => 'Thu',
- 'today' => 'Today',
'top_line' => 'Top line',
'truncate' => 'Delete all articles',
'ttl' => 'Do not automatically refresh more often than',
'tue' => 'Tue',
- 'twitter' => 'Twitter',
'unsafe_autologin' => 'Allow unsafe automatic login using the format: ',
'update_apply' => 'Apply',
'update_can_apply' => 'An update is available.',
@@ -452,7 +444,6 @@ return array(
'users_list' => 'List of users',
'version' => 'Version',
'version_update' => 'Update',
- 'wallabag' => 'wallabag',
'website' => 'Website',
'website_url' => 'Website URL',
'wed' => 'Wed',
@@ -461,10 +452,7 @@ return array(
'width_no_limit' => 'No limit',
'width_thin' => 'Thin',
'yes' => 'Yes',
- 'yesterday' => 'Yesterday',
'your_diaspora_pod' => 'Your Diaspora* pod',
- 'your_favorites' => 'Your favourites',
- 'your_rss_feeds' => 'Your RSS feeds',
'your_shaarli' => 'Your Shaarli',
'your_wallabag' => 'Your wallabag',
'zip_error' => 'An error occured during Zip import.',
diff --git a/app/i18n/en/index.php b/app/i18n/en/index.php
index 97df646c4..723feefd7 100644
--- a/app/i18n/en/index.php
+++ b/app/i18n/en/index.php
@@ -1,7 +1,14 @@
array(
+ 'entry' => array(
+ 'by_author' => 'By %s',
+ ),
+ 'feed' => array(
+ 'title' => 'Your RSS feeds',
+ 'title_fav' => 'Your favourites',
+ ),
+ 'log' => array(
'_' => 'Logs',
'clear' => 'Clear the logs',
'empty' => 'Log file is empty',
@@ -28,10 +35,26 @@ return array(
'read' => 'Show only unread',
'reader_view' => 'Reading view',
'rss_view' => 'RSS feed',
+ 'search_short' => 'Search',
'see_website' => 'See website',
'starred' => 'Show only favorites',
'stats' => 'Statistics',
'subscription' => 'Subscriptions management',
'unread' => 'Show only read',
),
+ 'share' => array(
+ '_' => 'Share',
+ 'blogotext' => 'Blogotext',
+ 'diaspora' => 'Diaspora*',
+ 'email' => 'Email',
+ 'facebook' => 'Facebook',
+ 'g+' => 'Google+',
+ 'print' => 'Print',
+ 'shaarli' => 'Shaarli',
+ 'twitter' => 'Twitter',
+ 'wallabag' => 'wallabag',
+ ),
+ 'tag' => array(
+ 'related' => 'Related tags',
+ ),
);
diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php
index 3d3878eb1..b999b130c 100644
--- a/app/i18n/fr/gen.php
+++ b/app/i18n/fr/gen.php
@@ -12,10 +12,30 @@ return array(
'login' => 'Connexion',
'logout' => 'Déconnexion',
),
+ 'date' => array(
+ 'Apr' => '\\a\\v\\r\\i\\l',
+ 'Aug' => '\\a\\o\\û\\t',
+ 'Dec' => '\\d\\é\\c\\e\\m\\b\\r\\e',
+ 'Feb' => '\\f\\é\\v\\r\\i\\e\\r',
+ 'Jan' => '\\j\\a\\n\\v\\i\\e\\r',
+ 'Jul' => '\\j\\u\\i\\l\\l\\e\\t',
+ 'Jun' => '\\j\\u\\i\\n',
+ 'Mar' => '\\m\\a\\r\\s',
+ 'May' => '\\m\\a\\i',
+ 'Nov' => '\\n\\o\\v\\e\\m\\b\\r\\e',
+ 'Oct' => '\\o\\c\\t\\o\\b\\r\\e',
+ 'Sep' => '\\s\\e\\p\\t\\e\\m\\b\\r\\e',
+ 'before_yesterday' => 'À partir d’avant-hier',
+ 'format_date' => 'j %s Y',
+ 'format_date_hour' => 'j %s Y \\à H\\:i',
+ 'today' => 'Aujourd’hui',
+ 'yesterday' => 'Hier',
+ ),
'js' => array(
'category_empty' => 'Catégorie vide',
'confirm_action' => 'Êtes-vous sûr(e) de vouloir continuer ? Cette action ne peut être annulée !',
'confirm_action_feed_cat' => 'Êtes-vous sûr(e) de vouloir continuer ? Vous perdrez les favoris et les filtres associés. Cette action ne peut être annulée !',
+ '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 !',
),
@@ -30,6 +50,7 @@ return array(
'logs' => 'Logs',
'queries' => 'Filtres utilisateurs',
'reading' => 'Lecture',
+ 'search' => 'Rechercher des mots ou des #tags',
'sharing' => 'Partage',
'shortcuts' => 'Raccourcis',
'stats' => 'Statistiques',
@@ -40,7 +61,10 @@ return array(
'pagination' => array(
'first' => 'Début',
'last' => 'Fin',
+ 'load_more' => 'Charger plus d’articles',
+ 'mark_all_read' => 'Tout marquer comme lu',
'next' => 'Suivant',
+ 'nothing_to_load' => 'Fin des articles',
'previous' => 'Précédent',
),
'title' => array(
@@ -51,18 +75,7 @@ return array(
'user_management' => 'Gestion des utilisateurs',
'user_profile' => 'Profil',
),
- 'Apr' => '\\a\\v\\r\\i\\l',
- 'Aug' => '\\a\\o\\û\\t',
- 'Dec' => '\\d\\é\\c\\e\\m\\b\\r\\e',
- 'Feb' => '\\f\\é\\v\\r\\i\\e\\r',
- 'Jan' => '\\j\\a\\n\\v\\i\\e\\r',
- 'Jul' => '\\j\\u\\i\\l\\l\\e\\t',
- 'Jun' => '\\j\\u\\i\\n',
- 'Mar' => '\\m\\a\\r\\s',
- 'May' => '\\m\\a\\i',
- 'Nov' => '\\n\\o\\v\\e\\m\\b\\r\\e',
- 'Oct' => '\\o\\c\\t\\o\\b\\r\\e',
- 'Sep' => '\\s\\e\\p\\t\\e\\m\\b\\r\\e',
+ 'freshrss' => 'FreshRSS',
'access_denied' => 'Vous n’avez pas le droit d’accéder à cette page !',
'access_protected_feeds' => 'La connexion permet d’accéder aux flux protégés par une authentification HTTP.',
'activate_sharing' => 'Activer le partage',
@@ -117,13 +130,10 @@ 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',
- 'before_yesterday' => 'À partir d’avant-hier',
'blank_to_disable' => 'Laissez vide pour désactiver',
- 'blogotext' => 'Blogotext',
'bottom_line' => 'Ligne du bas',
'bugs_reports' => 'Rapports de bugs',
'by' => 'par',
- 'by_author' => 'Par %s',
'by_default' => 'Par défaut',
'by_email' => 'Par courriel',
'by_feed' => 'par flux',
@@ -171,14 +181,12 @@ return array(
'default_view' => 'Vue par défaut',
'delete' => 'Supprimer',
'delete_articles_every' => 'Supprimer les articles après',
- 'diaspora' => 'Diaspora*',
'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',
- 'email' => 'Courriel',
'error_occurred' => 'Une erreur est survenue !',
'error_occurred_update' => 'Rien n’a été modifié !',
'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',
@@ -186,7 +194,6 @@ return array(
'export_no_zip_extension' => 'L’extension Zip n’est pas présente sur votre serveur. Veuillez essayer d’exporter les fichiers un par un.',
'export_opml' => 'Exporter la liste des flux (OPML)',
'export_starred' => 'Exporter les favoris',
- 'facebook' => 'Facebook',
'favicons_is_ok' => 'Les droits sur le répertoire des favicons sont bons',
'feb' => 'fév.',
'february' => 'février',
@@ -216,13 +223,9 @@ 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',
- 'format_date' => 'j %s Y',
- 'format_date_hour' => 'j %s Y \\à H\\:i',
- 'freshrss' => 'FreshRSS',
'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.',
- 'g+' => 'Google+',
'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',
@@ -268,7 +271,6 @@ return array(
'last_year' => 'Depuis l’année dernière',
'lead_developer' => 'Développeur principal',
'license' => 'Licence',
- 'load_more' => 'Charger plus d’articles',
'log_is_ok' => 'Les droits sur le répertoire des logs sont bons',
'login_configuration' => 'Identification',
'login_persona_problem' => 'Problème de connexion à Persona ?',
@@ -287,7 +289,6 @@ return array(
'more_information' => 'Plus d’informations',
'n_entries_deleted' => '%d articles ont été supprimés.',
'n_feeds_actualized' => '%d flux ont été mis à jour.',
- 'new_article' => 'Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.',
'new_category' => 'Nouvelle catégorie',
'next_article' => 'Passer à l’article suivant',
'next_page' => 'Passer à la page suivante',
@@ -305,7 +306,6 @@ return array(
'not_read' => '%d non lu',
'not_reads' => '%d non lus',
'not_yet_implemented' => 'Pas encore implémenté',
- 'nothing_to_load' => 'Fin des articles',
'nov' => 'nov.',
'november' => 'novembre',
'number_articles' => '%d articles',
@@ -334,7 +334,6 @@ return array(
'prefix' => 'Préfixe des tables',
'previous_article' => 'Passer à l’article précédent',
'previous_page' => 'Passer à la page précédente',
- 'print' => 'Imprimer',
'project_website' => 'Site du projet',
'public' => 'Public',
'publication_date' => 'Date de publication',
@@ -370,21 +369,16 @@ return array(
'random_string' => 'Chaîne aléatoire',
'reading_confirm' => 'Afficher une confirmation lors des actions “marquer tout comme lu”',
'refresh' => 'Actualisation',
- 'related_tags' => 'Tags associés',
'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',
- 'search' => 'Rechercher des mots ou des #tags',
- 'search_short' => 'Rechercher',
'seconds_(0_means_no_timeout)' => 'secondes (0 signifie aucun timeout ) ',
'see_on_website' => 'Voir sur le site d’origine',
'sep' => 'sep.',
'september' => 'septembre',
- 'shaarli' => 'Shaarli',
- 'share' => 'Partager',
'share_name' => 'Nom du partage à afficher',
'share_url' => 'URL du partage à utiliser',
'sharing_management' => 'Gestion des options de partage',
@@ -422,12 +416,10 @@ return array(
'think_to_add' => 'Vous pouvez ajouter des flux.',
'this_is_the_end' => 'This is the end',
'thu' => 'jeu.',
- 'today' => 'Aujourd’hui',
'top_line' => 'Ligne du haut',
'truncate' => 'Supprimer tous les articles',
'ttl' => 'Ne pas automatiquement rafraîchir plus souvent que',
'tue' => 'mar.',
- 'twitter' => 'Twitter',
'unsafe_autologin' => 'Autoriser les connexions automatiques non-sûres au format : ',
'update_apply' => 'Appliquer la mise à jour',
'update_can_apply' => 'Une mise à jour est disponible.',
@@ -452,7 +444,6 @@ return array(
'users_list' => 'Liste des utilisateurs',
'version' => 'Version',
'version_update' => 'Mise à jour',
- 'wallabag' => 'wallabag',
'website' => 'Site Internet',
'website_url' => 'URL du site',
'wed' => 'mer.',
@@ -461,10 +452,7 @@ return array(
'width_no_limit' => 'Pas de limite',
'width_thin' => 'Fine',
'yes' => 'Oui',
- 'yesterday' => 'Hier',
'your_diaspora_pod' => 'Votre pod Diaspora*',
- 'your_favorites' => 'Vos favoris',
- 'your_rss_feeds' => 'Vos flux RSS',
'your_shaarli' => 'Votre Shaarli',
'your_wallabag' => 'Votre wallabag',
'zip_error' => 'Une erreur est survenue durant l’import du fichier Zip.',
diff --git a/app/i18n/fr/index.php b/app/i18n/fr/index.php
index 4b8c85033..e21cc4410 100644
--- a/app/i18n/fr/index.php
+++ b/app/i18n/fr/index.php
@@ -1,7 +1,14 @@
array(
+ 'entry' => array(
+ 'by_author' => 'Par %s',
+ ),
+ 'feed' => array(
+ 'title' => 'Vos flux RSS',
+ 'title_fav' => 'Vos favoris',
+ ),
+ 'log' => array(
'_' => 'Logs',
'clear' => 'Effacer les logs',
'empty' => 'Les logs sont vides.',
@@ -28,10 +35,26 @@ return array(
'read' => 'Afficher les non lus',
'reader_view' => 'Vue lecture',
'rss_view' => 'Flux RSS',
+ 'search_short' => 'Rechercher',
'see_website' => 'Voir le site',
'starred' => 'Afficher les favoris',
'stats' => 'Statistiques',
'subscription' => 'Gestion des abonnements',
'unread' => 'Afficher les lus',
),
+ 'share' => array(
+ '_' => 'Partager',
+ 'blogotext' => 'Blogotext',
+ 'diaspora' => 'Diaspora*',
+ 'email' => 'Courriel',
+ 'facebook' => 'Facebook',
+ 'g+' => 'Google+',
+ 'print' => 'Imprimer',
+ 'shaarli' => 'Shaarli',
+ 'twitter' => 'Twitter',
+ 'wallabag' => 'wallabag',
+ ),
+ 'tag' => array(
+ 'related' => 'Tags associés',
+ ),
);
diff --git a/app/layout/header.phtml b/app/layout/header.phtml
index 429cfc1d2..ba13c2a45 100644
--- a/app/layout/header.phtml
+++ b/app/layout/header.phtml
@@ -25,7 +25,7 @@ if (Minz_Configuration::canLogIn()) {