From 348028a29043b7d1d0f80544c44f0454b2c375c3 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Wed, 8 Nov 2023 20:23:54 +0100 Subject: New feature important feeds (#5782) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * New feature important feeds * Fix PHPStan * Initial style for important feeds + keep unread * Change UI order * Count important unread * Never mark as read important feeds during scroll * Fix i18n conf.iew.normal regression * Fix reader view * More fix reader view * Create important.svg * Fix title * Fix counter * Account for important during mark-all-as-read * Fix underline colour * 📌 * Changelog --------- Co-authored-by: math-gh <> Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com> --- CHANGELOG.md | 8 ++++--- app/Controllers/entryController.php | 12 ++++++++--- app/Models/CategoryDAO.php | 4 ++-- app/Models/Context.php | 28 +++++++++++++++++++----- app/Models/EntryDAO.php | 43 ++++++++++++++++++++++++------------- app/Models/Feed.php | 3 ++- app/Models/Themes.php | 1 + app/i18n/cz/conf.php | 2 +- app/i18n/cz/index.php | 1 + app/i18n/cz/sub.php | 3 ++- app/i18n/de/conf.php | 2 +- app/i18n/de/index.php | 1 + app/i18n/de/sub.php | 3 ++- app/i18n/el/conf.php | 2 +- app/i18n/el/index.php | 1 + app/i18n/el/sub.php | 3 ++- app/i18n/en-us/conf.php | 2 +- app/i18n/en-us/index.php | 1 + app/i18n/en-us/sub.php | 3 ++- app/i18n/en/conf.php | 2 +- app/i18n/en/index.php | 1 + app/i18n/en/sub.php | 3 ++- app/i18n/es/conf.php | 2 +- app/i18n/es/index.php | 1 + app/i18n/es/sub.php | 3 ++- app/i18n/fa/conf.php | 2 +- app/i18n/fa/index.php | 1 + app/i18n/fa/sub.php | 3 ++- app/i18n/fr/conf.php | 2 +- app/i18n/fr/index.php | 5 +++-- app/i18n/fr/sub.php | 5 +++-- app/i18n/he/conf.php | 2 +- app/i18n/he/index.php | 1 + app/i18n/he/sub.php | 3 ++- app/i18n/hu/conf.php | 2 +- app/i18n/hu/index.php | 1 + app/i18n/hu/sub.php | 3 ++- app/i18n/id/conf.php | 2 +- app/i18n/id/index.php | 1 + app/i18n/id/sub.php | 3 ++- app/i18n/it/conf.php | 2 +- app/i18n/it/index.php | 1 + app/i18n/it/sub.php | 3 ++- app/i18n/ja/conf.php | 2 +- app/i18n/ja/index.php | 1 + app/i18n/ja/sub.php | 3 ++- app/i18n/ko/conf.php | 2 +- app/i18n/ko/index.php | 1 + app/i18n/ko/sub.php | 3 ++- app/i18n/lv/conf.php | 2 +- app/i18n/lv/index.php | 1 + app/i18n/lv/sub.php | 3 ++- app/i18n/nl/conf.php | 2 +- app/i18n/nl/index.php | 1 + app/i18n/nl/sub.php | 3 ++- app/i18n/oc/conf.php | 2 +- app/i18n/oc/index.php | 1 + app/i18n/oc/sub.php | 3 ++- app/i18n/pl/conf.php | 2 +- app/i18n/pl/index.php | 1 + app/i18n/pl/sub.php | 3 ++- app/i18n/pt-br/conf.php | 2 +- app/i18n/pt-br/index.php | 1 + app/i18n/pt-br/sub.php | 3 ++- app/i18n/ru/conf.php | 2 +- app/i18n/ru/index.php | 1 + app/i18n/ru/sub.php | 3 ++- app/i18n/sk/conf.php | 2 +- app/i18n/sk/index.php | 1 + app/i18n/sk/sub.php | 3 ++- app/i18n/tr/conf.php | 2 +- app/i18n/tr/index.php | 1 + app/i18n/tr/sub.php | 3 ++- app/i18n/zh-cn/conf.php | 2 +- app/i18n/zh-cn/index.php | 1 + app/i18n/zh-cn/sub.php | 3 ++- app/i18n/zh-tw/conf.php | 2 +- app/i18n/zh-tw/index.php | 1 + app/i18n/zh-tw/sub.php | 3 ++- app/layout/aside_feed.phtml | 8 +++++++ app/views/helpers/feed/update.phtml | 7 ++++-- app/views/index/normal.phtml | 13 +++++------ app/views/index/reader.phtml | 8 +++---- app/views/subscription/index.phtml | 2 +- p/api/greader.php | 2 +- p/scripts/main.js | 9 ++++++++ p/themes/base-theme/frss.css | 5 +++++ p/themes/base-theme/frss.rtl.css | 5 +++++ p/themes/icons/important.svg | 16 ++++++++++++++ 89 files changed, 228 insertions(+), 96 deletions(-) create mode 100644 p/themes/icons/important.svg diff --git a/CHANGELOG.md b/CHANGELOG.md index 2916e7ce4..4b966b497 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,13 +2,15 @@ ## 202X-XX-XX FreshRSS 1.22.2-dev -* Compatibility - * Require PHP 7.4+, and implement *typed properties* [#5720](https://github.com/FreshRSS/FreshRSS/pull/5720) - * Require Apache 2.4+ (but repair minimal compatibility with Apache 2.2) [#5791](https://github.com/FreshRSS/FreshRSS/pull/5791), [#5804](https://github.com/FreshRSS/FreshRSS/pull/5804) * Features + * New *Important feeds* group in the main view, with corresponding new priority level for feeds [#5782](https://github.com/FreshRSS/FreshRSS/pull/5782) + * Entries from important feeds are not marked as read during scroll, nor during *Mark all as read* * Add support for more thumbnail types [#5806](https://github.com/FreshRSS/FreshRSS/pull/5806) * Increase SQL (`VARCHAR`) text fields length to maximum possible [#5788](https://github.com/FreshRSS/FreshRSS/pull/5788) * Increase SQL date fields to 64-bit to be ready for year 2038+ [#5570](https://github.com/FreshRSS/FreshRSS/pull/5570) +* Compatibility + * Require PHP 7.4+, and implement *typed properties* [#5720](https://github.com/FreshRSS/FreshRSS/pull/5720) + * Require Apache 2.4+ (but repair minimal compatibility with Apache 2.2) [#5791](https://github.com/FreshRSS/FreshRSS/pull/5791), [#5804](https://github.com/FreshRSS/FreshRSS/pull/5804) * Bug fixing * Fix regression in Docker `CRON_MIN` if any environment variable contains a single quote [#5795](https://github.com/FreshRSS/FreshRSS/pull/5795) * Fix JavaScript regression in label dropdown [#5785](https://github.com/FreshRSS/FreshRSS/pull/5785) diff --git a/app/Controllers/entryController.php b/app/Controllers/entryController.php index 820075f27..b62214970 100644 --- a/app/Controllers/entryController.php +++ b/app/Controllers/entryController.php @@ -71,7 +71,7 @@ class FreshRSS_entry_Controller extends FreshRSS_ActionController { if (!$get) { // No get? Mark all entries as read (from $id_max) - $entryDAO->markReadEntries($id_max, false, 0, null, 0, $is_read); + $entryDAO->markReadEntries($id_max, false, FreshRSS_Feed::PRIORITY_MAIN_STREAM, FreshRSS_Feed::PRIORITY_IMPORTANT, null, 0, $is_read); } else { $type_get = $get[0]; $get = (int)substr($get, 2); @@ -83,10 +83,16 @@ class FreshRSS_entry_Controller extends FreshRSS_ActionController { $entryDAO->markReadFeed($get, $id_max, FreshRSS_Context::$search, FreshRSS_Context::$state, $is_read); break; case 's': - $entryDAO->markReadEntries($id_max, true, 0, FreshRSS_Context::$search, FreshRSS_Context::$state, $is_read); + $entryDAO->markReadEntries($id_max, true, null, FreshRSS_Feed::PRIORITY_IMPORTANT, + FreshRSS_Context::$search, FreshRSS_Context::$state, $is_read); break; case 'a': - $entryDAO->markReadEntries($id_max, false, 0, FreshRSS_Context::$search, FreshRSS_Context::$state, $is_read); + $entryDAO->markReadEntries($id_max, false, FreshRSS_Feed::PRIORITY_MAIN_STREAM, FreshRSS_Feed::PRIORITY_IMPORTANT, + FreshRSS_Context::$search, FreshRSS_Context::$state, $is_read); + break; + case 'i': + $entryDAO->markReadEntries($id_max, false, FreshRSS_Feed::PRIORITY_IMPORTANT, null, + FreshRSS_Context::$search, FreshRSS_Context::$state, $is_read); break; case 't': $entryDAO->markReadTag($get, $id_max, FreshRSS_Context::$search, FreshRSS_Context::$state, $is_read); diff --git a/app/Models/CategoryDAO.php b/app/Models/CategoryDAO.php index eeb3e9843..72971f44b 100644 --- a/app/Models/CategoryDAO.php +++ b/app/Models/CategoryDAO.php @@ -284,11 +284,11 @@ SQL; . ($details ? 'f.* ' : 'f.id, f.name, f.url, f.kind, f.website, f.priority, f.error, f.`cache_nbEntries`, f.`cache_nbUnreads`, f.ttl ') . 'FROM `_category` c ' . 'LEFT OUTER JOIN `_feed` f ON f.category=c.id ' - . 'WHERE f.priority >= :priority_normal ' + . 'WHERE f.priority >= :priority ' . 'GROUP BY f.id, c_id ' . 'ORDER BY c.name, f.name'; $stm = $this->pdo->prepare($sql); - $values = [ ':priority_normal' => FreshRSS_Feed::PRIORITY_NORMAL ]; + $values = [ ':priority' => FreshRSS_Feed::PRIORITY_CATEGORY ]; if ($stm !== false && $stm->execute($values)) { $res = $stm->fetchAll(PDO::FETCH_ASSOC) ?: []; /** @var array false, 'starred' => false, + 'important' => false, 'feed' => false, 'category' => false, 'tag' => false, @@ -154,9 +156,8 @@ final class FreshRSS_Context { // Update number of read / unread variables. $entryDAO = FreshRSS_Factory::createEntryDao(); self::$total_starred = $entryDAO->countUnreadReadFavorites(); - self::$total_unread = FreshRSS_CategoryDAO::countUnread( - self::$categories, 1 - ); + self::$total_unread = FreshRSS_CategoryDAO::countUnread(self::$categories, FreshRSS_Feed::PRIORITY_MAIN_STREAM); + self::$total_important_unread = FreshRSS_CategoryDAO::countUnread(self::$categories, FreshRSS_Feed::PRIORITY_IMPORTANT); self::_get(Minz_Request::paramString('get') ?: 'a'); @@ -208,12 +209,14 @@ final class FreshRSS_Context { * Return the current get as a string or an array. * * If $array is true, the first item of the returned value is 'f' or 'c' or 't' and the second is the id. - * @phpstan-return ($asArray is true ? array{'a'|'c'|'f'|'s'|'t'|'T',bool|int} : string) + * @phpstan-return ($asArray is true ? array{'a'|'c'|'f'|'i'|'s'|'t'|'T',bool|int} : string) * @return string|array{string,bool|int} */ public static function currentGet(bool $asArray = false) { if (self::$current_get['all']) { return $asArray ? ['a', true] : 'a'; + } elseif (self::$current_get['important']) { + return $asArray ? ['i', true] : 'i'; } elseif (self::$current_get['starred']) { return $asArray ? ['s', true] : 's'; } elseif (self::$current_get['feed']) { @@ -247,6 +250,13 @@ final class FreshRSS_Context { return self::$current_get['all'] != false; } + /** + * @return bool true if the current request targets important feeds, false otherwise. + */ + public static function isImportant(): bool { + return self::$current_get['important'] != false; + } + /** * @return bool true if the current request targets a category, false otherwise. */ @@ -278,6 +288,8 @@ final class FreshRSS_Context { switch($type) { case 'a': return self::$current_get['all']; + case 'i': + return self::$current_get['important']; case 's': return self::$current_get['starred']; case 'f': @@ -325,6 +337,12 @@ final class FreshRSS_Context { self::$description = self::$system_conf->meta_description; self::$get_unread = self::$total_unread; break; + case 'i': + self::$current_get['important'] = true; + self::$name = _t('index.menu.important'); + self::$description = self::$system_conf->meta_description; + self::$get_unread = self::$total_unread; + break; case 's': self::$current_get['starred'] = true; self::$name = _t('index.feed.title_fav'); diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php index 017754e04..f2711d448 100644 --- a/app/Models/EntryDAO.php +++ b/app/Models/EntryDAO.php @@ -425,7 +425,7 @@ SQL; * @param string $idMax fail safe article ID * @return int|false affected rows */ - public function markReadEntries(string $idMax = '0', bool $onlyFavorites = false, int $priorityMin = 0, + public function markReadEntries(string $idMax = '0', bool $onlyFavorites = false, ?int $priorityMin = null, ?int $prioritMax = null, ?FreshRSS_BooleanSearch $filters = null, int $state = 0, bool $is_read = true) { FreshRSS_UserDAO::touch(); if ($idMax == '0') { @@ -434,12 +434,22 @@ SQL; } $sql = 'UPDATE `_entry` SET is_read = ? WHERE is_read <> ? AND id <= ?'; + $values = [$is_read ? 1 : 0, $is_read ? 1 : 0, $idMax]; if ($onlyFavorites) { $sql .= ' AND is_favorite=1'; - } elseif ($priorityMin >= 0) { - $sql .= ' AND id_feed IN (SELECT f.id FROM `_feed` f WHERE f.priority > ' . intval($priorityMin) . ')'; } - $values = [$is_read ? 1 : 0, $is_read ? 1 : 0, $idMax]; + if ($priorityMin !== null || $prioritMax !== null) { + $sql .= ' AND id_feed IN (SELECT f.id FROM `_feed` f WHERE 1=1'; + if ($priorityMin !== null) { + $sql .= ' AND f.priority >= ?'; + $values[] = $priorityMin; + } + if ($prioritMax !== null) { + $sql .= ' AND f.priority < ?'; + $values[] = $prioritMax; + } + $sql .= ')'; + } [$searchValues, $search] = $this->sqlListEntriesWhere('', $filters, $state); @@ -1019,7 +1029,7 @@ SQL; } /** - * @phpstan-param 'a'|'A'|'s'|'S'|'c'|'f'|'t'|'T'|'ST' $type + * @phpstan-param 'a'|'A'|'i'|'s'|'S'|'c'|'f'|'t'|'T'|'ST' $type * @param int $id category/feed/tag ID * @param 'ASC'|'DESC' $order * @return array{0:array,1:string} @@ -1034,20 +1044,23 @@ SQL; $values = []; switch ($type) { case 'a': //All PRIORITY_MAIN_STREAM - $where .= 'f.priority > ' . FreshRSS_Feed::PRIORITY_NORMAL . ' '; + $where .= 'f.priority >= ' . FreshRSS_Feed::PRIORITY_MAIN_STREAM . ' '; break; case 'A': //All except PRIORITY_ARCHIVED - $where .= 'f.priority >= ' . FreshRSS_Feed::PRIORITY_NORMAL . ' '; + $where .= 'f.priority > ' . FreshRSS_Feed::PRIORITY_ARCHIVED . ' '; + break; + case 'i': //Priority important feeds + $where .= 'f.priority >= ' . FreshRSS_Feed::PRIORITY_IMPORTANT . ' '; break; case 's': //Starred. Deprecated: use $state instead - $where .= 'f.priority >= ' . FreshRSS_Feed::PRIORITY_NORMAL . ' '; + $where .= 'f.priority > ' . FreshRSS_Feed::PRIORITY_ARCHIVED . ' '; $where .= 'AND e.is_favorite=1 '; break; case 'S': //Starred $where .= 'e.is_favorite=1 '; break; case 'c': //Category - $where .= 'f.priority >= ' . FreshRSS_Feed::PRIORITY_NORMAL . ' '; + $where .= 'f.priority >= ' . FreshRSS_Feed::PRIORITY_CATEGORY . ' '; $where .= 'AND f.category=? '; $values[] = $id; break; @@ -1083,7 +1096,7 @@ SQL; } /** - * @phpstan-param 'a'|'A'|'s'|'S'|'c'|'f'|'t'|'T'|'ST' $type + * @phpstan-param 'a'|'A'|'s'|'S'|'i'|'c'|'f'|'t'|'T'|'ST' $type * @param 'ASC'|'DESC' $order * @param int $id category/feed/tag ID * @return PDOStatement|false @@ -1118,7 +1131,7 @@ SQL; } /** - * @phpstan-param 'a'|'A'|'s'|'S'|'c'|'f'|'t'|'T'|'ST' $type + * @phpstan-param 'a'|'A'|'s'|'S'|'i'|'c'|'f'|'t'|'T'|'ST' $type * @param int $id category/feed/tag ID * @param 'ASC'|'DESC' $order * @return Traversable @@ -1360,20 +1373,20 @@ SELECT c FROM ( FROM `_entry` AS e1 JOIN `_feed` AS f1 ON e1.id_feed = f1.id WHERE e1.is_favorite = 1 - AND f1.priority >= :priority_normal1 + AND f1.priority >= :priority1 UNION SELECT COUNT(e2.id) AS c, 2 AS o FROM `_entry` AS e2 JOIN `_feed` AS f2 ON e2.id_feed = f2.id WHERE e2.is_favorite = 1 - AND e2.is_read = 0 AND f2.priority >= :priority_normal2 + AND e2.is_read = 0 AND f2.priority >= :priority2 ) u ORDER BY o SQL; //Binding a value more than once is not standard and does not work with native prepared statements (e.g. MySQL) https://bugs.php.net/bug.php?id=40417 $res = $this->fetchColumn($sql, 0, [ - ':priority_normal1' => FreshRSS_Feed::PRIORITY_NORMAL, - ':priority_normal2' => FreshRSS_Feed::PRIORITY_NORMAL, + ':priority1' => FreshRSS_Feed::PRIORITY_CATEGORY, + ':priority2' => FreshRSS_Feed::PRIORITY_CATEGORY, ]); if ($res === null) { return ['all' => -1, 'unread' => -1, 'read' => -1]; diff --git a/app/Models/Feed.php b/app/Models/Feed.php index 405327ceb..b75d12b4e 100644 --- a/app/Models/Feed.php +++ b/app/Models/Feed.php @@ -28,8 +28,9 @@ class FreshRSS_Feed extends Minz_Model { */ public const KIND_JSON_XPATH = 20; + public const PRIORITY_IMPORTANT = 20; public const PRIORITY_MAIN_STREAM = 10; - public const PRIORITY_NORMAL = 0; + public const PRIORITY_CATEGORY = 0; public const PRIORITY_ARCHIVED = -10; public const TTL_DEFAULT = 0; diff --git a/app/Models/Themes.php b/app/Models/Themes.php index ab99ea63c..902d3c94b 100644 --- a/app/Models/Themes.php +++ b/app/Models/Themes.php @@ -101,6 +101,7 @@ class FreshRSS_Themes extends Minz_Model { 'FreshRSS-logo' => '⊚', 'help' => 'ℹ️', //ⓘ 'icon' => '⊚', + 'important' => '📌', 'key' => '🔑', //⚿ 'label' => '🏷️', 'link' => '↗️', //↗ diff --git a/app/i18n/cz/conf.php b/app/i18n/cz/conf.php index 0d6d5893f..ae5dd83aa 100644 --- a/app/i18n/cz/conf.php +++ b/app/i18n/cz/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'když je článek otevřen na své původní webové stránce', 'article_viewed' => 'když je článek zobrazen', 'keep_max_n_unread' => 'Maximální počet článků, které ponechat jako nepřečtené', - 'scroll' => 'během posouvání', + 'scroll' => 'během posouvání (except for important feeds)', // DIRTY 'upon_gone' => 'když se již nenachází v upstreamu zpráv.', 'upon_reception' => 'po obdržení článku', 'when' => 'Označit článek jako přečtený…', diff --git a/app/i18n/cz/index.php b/app/i18n/cz/index.php index 71e1b385e..2f298a2c2 100644 --- a/app/i18n/cz/index.php +++ b/app/i18n/cz/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Uložit aktuální dotaz do záložek', 'favorites' => 'Oblíbené (%s)', 'global_view' => 'Zobrazení přehledu', + 'important' => 'Important feeds', // TODO 'main_stream' => 'Hlavní kanál', 'mark_all_read' => 'Označit vše jako přečtené', 'mark_cat_read' => 'Označit kategorii jako přečtenou', diff --git a/app/i18n/cz/sub.php b/app/i18n/cz/sub.php index 9da084b31..75381cf53 100644 --- a/app/i18n/cz/sub.php +++ b/app/i18n/cz/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Viditelnost', 'archived' => 'Nezobrazovat (archivováno)', + 'category' => 'Zobrazit v jeho kategorii', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Zobrazit ve hlavním kanálu', - 'normal' => 'Zobrazit v jeho kategorii', ), 'proxy' => 'Nastavete proxy pro načítání tohoto kanálu', 'proxy_help' => 'Vyberte protokol (např.: SOCKS5) a zadejte adresu proxy (např.: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/de/conf.php b/app/i18n/de/conf.php index 98eae619b..9152d2bdf 100644 --- a/app/i18n/de/conf.php +++ b/app/i18n/de/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'wenn der Artikel auf der Original-Webseite geöffnet wird', 'article_viewed' => 'wenn der Artikel angesehen wird', 'keep_max_n_unread' => 'Max. Anzahl von ungelesenen Artikeln', - 'scroll' => 'beim Scrollen bzw. Überspringen', + 'scroll' => 'beim Scrollen bzw. Überspringen (except for important feeds)', // DIRTY 'upon_gone' => 'wenn der Artikel nicht mehr im Feed enthalten ist', 'upon_reception' => 'beim Empfang des Artikels', 'when' => 'Artikel als gelesen markieren…', diff --git a/app/i18n/de/index.php b/app/i18n/de/index.php index 0e158199b..98c853014 100644 --- a/app/i18n/de/index.php +++ b/app/i18n/de/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Aktuelle Abfrage speichern', 'favorites' => 'Favoriten (%s)', 'global_view' => 'Globale Ansicht', + 'important' => 'Important feeds', // TODO 'main_stream' => 'Haupt-Feeds', 'mark_all_read' => 'Alle als gelesen markieren', 'mark_cat_read' => 'Kategorie als gelesen markieren', diff --git a/app/i18n/de/sub.php b/app/i18n/de/sub.php index bb166076e..e2247a97e 100644 --- a/app/i18n/de/sub.php +++ b/app/i18n/de/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Sichtbarkeit', 'archived' => 'Nicht anzeigen (archiviert)', + 'category' => 'Zeige in eigener Kategorie', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'In Haupt-Feeds zeigen', - 'normal' => 'Zeige in eigener Kategorie', ), 'proxy' => 'Verwende einen Proxy, um den Feed abzuholen', 'proxy_help' => 'Wähle ein Protokoll (z.B. SOCKS5) und einen Proxy mit Port (z.B. 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/el/conf.php b/app/i18n/el/conf.php index 9f55b3f5c..ea4c28457 100644 --- a/app/i18n/el/conf.php +++ b/app/i18n/el/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'when the article is opened on its original website', // TODO 'article_viewed' => 'when the article is viewed', // TODO 'keep_max_n_unread' => 'Max number of articles to keep unread', // TODO - 'scroll' => 'while scrolling', // TODO + 'scroll' => 'while scrolling (except for important feeds)', // TODO 'upon_gone' => 'when it is no longer in the upstream news feed', // TODO 'upon_reception' => 'upon receiving the article', // TODO 'when' => 'Mark an article as read…', // TODO diff --git a/app/i18n/el/index.php b/app/i18n/el/index.php index f9d84d49a..acee104e3 100644 --- a/app/i18n/el/index.php +++ b/app/i18n/el/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Bookmark current query', // TODO 'favorites' => 'Favourites (%s)', // TODO 'global_view' => 'Global view', // TODO + 'important' => 'Important feeds', // TODO 'main_stream' => 'Main stream', // TODO 'mark_all_read' => 'Mark all as read', // TODO 'mark_cat_read' => 'Mark category as read', // TODO diff --git a/app/i18n/el/sub.php b/app/i18n/el/sub.php index 5353307b3..6b7867149 100644 --- a/app/i18n/el/sub.php +++ b/app/i18n/el/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Visibility', // TODO 'archived' => 'Do not show (archived)', // TODO + 'category' => 'Show in its category', // TODO + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Show in main stream', // TODO - 'normal' => 'Show in its category', // TODO ), 'proxy' => 'Set a proxy for fetching this feed', // TODO 'proxy_help' => 'Select a protocol (e.g: SOCKS5) and enter the proxy address (e.g: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // TODO diff --git a/app/i18n/en-us/conf.php b/app/i18n/en-us/conf.php index 7e0232c04..4736812f4 100644 --- a/app/i18n/en-us/conf.php +++ b/app/i18n/en-us/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'when the article is opened on its original website', // IGNORE 'article_viewed' => 'when the article is viewed', // IGNORE 'keep_max_n_unread' => 'Max number of articles to keep unread', // IGNORE - 'scroll' => 'while scrolling', // IGNORE + 'scroll' => 'while scrolling (except for important feeds)', // IGNORE 'upon_gone' => 'when it is no longer in the upstream news feed', // IGNORE 'upon_reception' => 'upon receiving the article', // IGNORE 'when' => 'Mark an article as read…', // IGNORE diff --git a/app/i18n/en-us/index.php b/app/i18n/en-us/index.php index 0ebdb9c57..2496fb159 100644 --- a/app/i18n/en-us/index.php +++ b/app/i18n/en-us/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Bookmark current query', // IGNORE 'favorites' => 'Favorites (%s)', 'global_view' => 'Global view', // IGNORE + 'important' => 'Important feeds', // IGNORE 'main_stream' => 'Main stream', // IGNORE 'mark_all_read' => 'Mark all as read', // IGNORE 'mark_cat_read' => 'Mark category as read', // IGNORE diff --git a/app/i18n/en-us/sub.php b/app/i18n/en-us/sub.php index f6e5308a1..848b929dc 100644 --- a/app/i18n/en-us/sub.php +++ b/app/i18n/en-us/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Visibility', // IGNORE 'archived' => 'Do not show (archived)', // IGNORE + 'category' => 'Show in its category', // IGNORE + 'important' => 'Show in important feeds', // IGNORE 'main_stream' => 'Show in main stream', // IGNORE - 'normal' => 'Show in its category', // IGNORE ), 'proxy' => 'Set a proxy for fetching this feed', // IGNORE 'proxy_help' => 'Select a protocol (e.g: SOCKS5) and enter the proxy address (e.g: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // IGNORE diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php index 6f1805f9e..5cb8af04f 100644 --- a/app/i18n/en/conf.php +++ b/app/i18n/en/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'when the article is opened on its original website', 'article_viewed' => 'when the article is viewed', 'keep_max_n_unread' => 'Max number of articles to keep unread', - 'scroll' => 'while scrolling', + 'scroll' => 'while scrolling (except for important feeds)', 'upon_gone' => 'when it is no longer in the upstream news feed', 'upon_reception' => 'upon receiving the article', 'when' => 'Mark an article as read…', diff --git a/app/i18n/en/index.php b/app/i18n/en/index.php index 0d0af728e..ac72b983d 100644 --- a/app/i18n/en/index.php +++ b/app/i18n/en/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Bookmark current query', 'favorites' => 'Favourites (%s)', 'global_view' => 'Global view', + 'important' => 'Important feeds', 'main_stream' => 'Main stream', 'mark_all_read' => 'Mark all as read', 'mark_cat_read' => 'Mark category as read', diff --git a/app/i18n/en/sub.php b/app/i18n/en/sub.php index 7ebdfed57..f57e91537 100644 --- a/app/i18n/en/sub.php +++ b/app/i18n/en/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Visibility', 'archived' => 'Do not show (archived)', + 'category' => 'Show in its category', + 'important' => 'Show in important feeds', 'main_stream' => 'Show in main stream', - 'normal' => 'Show in its category', ), 'proxy' => 'Set a proxy for fetching this feed', 'proxy_help' => 'Select a protocol (e.g: SOCKS5) and enter the proxy address (e.g: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', diff --git a/app/i18n/es/conf.php b/app/i18n/es/conf.php index b6d414d03..e8f8fc4a3 100644 --- a/app/i18n/es/conf.php +++ b/app/i18n/es/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'cuando el artículo se abra en su web original', 'article_viewed' => 'cuando se muestre el artículo', 'keep_max_n_unread' => 'Número máximo de artículos para mantener sin leer', - 'scroll' => 'durante el desplazamiento', + 'scroll' => 'durante el desplazamiento (except for important feeds)', // DIRTY 'upon_gone' => 'cuando ya no está disponible en el feed de noticias previo', 'upon_reception' => 'al recibir el artículo', 'when' => 'Marcar el artículo como leído…', diff --git a/app/i18n/es/index.php b/app/i18n/es/index.php index dd773c88d..c27809389 100644 --- a/app/i18n/es/index.php +++ b/app/i18n/es/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Marcar consulta actual', 'favorites' => 'Favoritos (%s)', 'global_view' => 'Vista Global', + 'important' => 'Important feeds', // TODO 'main_stream' => 'Salida Principal', 'mark_all_read' => 'Marcar todo como leído', 'mark_cat_read' => 'Marcar categoría como leída', diff --git a/app/i18n/es/sub.php b/app/i18n/es/sub.php index 7016a35ff..ef19f5ad3 100644 --- a/app/i18n/es/sub.php +++ b/app/i18n/es/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Visibilidad', 'archived' => 'No mostrar (archivado)', + 'category' => 'Mostrar en su categoría', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Mostrar en salida principal', - 'normal' => 'Mostrar en su categoría', ), 'proxy' => 'Establecer un proxy para obtener esta fuente', 'proxy_help' => 'Seleccione un protocolo (e.g: SOCKS5) e introduzca la dirección del proxy (e.g: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/fa/conf.php b/app/i18n/fa/conf.php index a2c7291a1..898f68385 100644 --- a/app/i18n/fa/conf.php +++ b/app/i18n/fa/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => ' هنگامی که مقاله در وب سایت اصلی خود باز می شود', 'article_viewed' => ' هنگام مشاهده مقاله', 'keep_max_n_unread' => ' حداکثر تعداد مقالات خوانده نشده', - 'scroll' => ' در حین پیمایش', + 'scroll' => '(except for important feeds) در حین پیمایش', // DIRTY 'upon_gone' => ' زمانی که دیگر در فید اخبار بالادستی نیست', 'upon_reception' => ' پس از دریافت مقاله', 'when' => ' علامت گذاری یک مقاله به عنوان خوانده شده…', diff --git a/app/i18n/fa/index.php b/app/i18n/fa/index.php index 518ab4dfa..310cf02fa 100644 --- a/app/i18n/fa/index.php +++ b/app/i18n/fa/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => ' درخواست فعلی را نشانک‌گذاری کنید', 'favorites' => ' موارد دلخواه (%s)', 'global_view' => ' نمای جهانی', + 'important' => 'Important feeds', // TODO 'main_stream' => ' جریان اصلی', 'mark_all_read' => ' همه را به عنوان خوانده شده علامت گذاری کنید', 'mark_cat_read' => ' دسته را به عنوان خوانده شده علامت گذاری کنید', diff --git a/app/i18n/fa/sub.php b/app/i18n/fa/sub.php index 29a41245b..9f89ff675 100644 --- a/app/i18n/fa/sub.php +++ b/app/i18n/fa/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => ' دید', 'archived' => ' نشان داده نشود (بایگانی شده)', + 'category' => ' نمایش در دسته بندی خود', + 'important' => 'Show in important feeds', // TODO 'main_stream' => ' نمایش در جریان اصلی', - 'normal' => ' نمایش در دسته بندی خود', ), 'proxy' => ' یک پروکسی برای واکشی این فید تنظیم کنید', 'proxy_help' => ' یک پروتکل (به عنوان مثال: SOCKS5) انتخاب کنید و آدرس پراکسی را وارد کنید (به عنوان مثال: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php index ac4cebc4a..37ca60117 100644 --- a/app/i18n/fr/conf.php +++ b/app/i18n/fr/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'lorsque l’article est ouvert sur le site d’origine', 'article_viewed' => 'lorsque l’article est affiché', 'keep_max_n_unread' => 'Nombre maximum d’articles conservés non lus', - 'scroll' => 'au défilement de la page', + 'scroll' => 'au défilement de la page (sauf pour les flux importants)', 'upon_gone' => 'lorsqu’il n’est plus dans le flux d’actualités en amont', 'upon_reception' => 'dès la réception du nouvel article', 'when' => 'Marquer un article comme lu…', diff --git a/app/i18n/fr/index.php b/app/i18n/fr/index.php index 75131452a..76631edc7 100644 --- a/app/i18n/fr/index.php +++ b/app/i18n/fr/index.php @@ -43,9 +43,10 @@ return array( 'before_one_day' => 'Antérieurs à 1 jour', 'before_one_week' => 'Antérieurs à 1 semaine', 'bookmark_query' => 'Enregistrer la recherche courante', - 'favorites' => 'Favoris (%s)', + 'favorites' => 'Articles favoris (%s)', 'global_view' => 'Vue globale', - 'main_stream' => 'Flux principal', + 'important' => 'Flux importants', // DIRTY + 'main_stream' => 'Flux principaux', 'mark_all_read' => 'Tout marquer comme lu', 'mark_cat_read' => 'Marquer la catégorie comme lue', 'mark_feed_read' => 'Marquer le flux comme lu', diff --git a/app/i18n/fr/sub.php b/app/i18n/fr/sub.php index 893678168..9ec9ad5f7 100644 --- a/app/i18n/fr/sub.php +++ b/app/i18n/fr/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Visibilité', 'archived' => 'Ne pas afficher (archivé)', - 'main_stream' => 'Afficher dans le flux principal', - 'normal' => 'Afficher dans sa catégorie', + 'category' => 'Afficher dans sa catégorie', + 'important' => 'Afficher dans les flux importants', + 'main_stream' => 'Afficher dans les flux principaux', ), 'proxy' => 'Utiliser un proxy pour télécharger ce flux', 'proxy_help' => 'Sélectionner un protocole (ex : SOCKS5) et entrer l’adresse du proxy (ex. : 127.0.0.1:1080 ou utilisateur:mot-de-passe@127.0.0.1:1080)', diff --git a/app/i18n/he/conf.php b/app/i18n/he/conf.php index 96def73f2..eb40f1862 100644 --- a/app/i18n/he/conf.php +++ b/app/i18n/he/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'כאשר מאמר נפתח באתר המקורי', 'article_viewed' => 'כאשר מאמר נצפה', 'keep_max_n_unread' => 'Max number of articles to keep unread', // TODO - 'scroll' => 'כאשר גוללים', + 'scroll' => '(except for important feeds) כאשר גוללים', // DIRTY 'upon_gone' => 'when it is no longer in the upstream news feed', // TODO 'upon_reception' => 'כאשר המאמר מתקבל', 'when' => 'סימון מאמרים כנקראו…', diff --git a/app/i18n/he/index.php b/app/i18n/he/index.php index 452426dd1..78ee180f1 100644 --- a/app/i18n/he/index.php +++ b/app/i18n/he/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Bookmark current query', // TODO 'favorites' => 'מועדפים (%s)', 'global_view' => 'תצוגה גלובלית', + 'important' => 'Important feeds', // TODO 'main_stream' => 'הזנה ראשית', 'mark_all_read' => 'סימון הכל כנקרא', 'mark_cat_read' => 'סימון קטגוריה כנקראה', diff --git a/app/i18n/he/sub.php b/app/i18n/he/sub.php index b91fcea4b..3c1b65b87 100644 --- a/app/i18n/he/sub.php +++ b/app/i18n/he/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Visibility', // TODO 'archived' => 'Do not show (archived)', // TODO + 'category' => 'Show in its category', // TODO + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'הצגה בזרם המרכזי', - 'normal' => 'Show in its category', // TODO ), 'proxy' => 'Set a proxy for fetching this feed', // TODO 'proxy_help' => 'Select a protocol (e.g: SOCKS5) and enter the proxy address (e.g: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // TODO diff --git a/app/i18n/hu/conf.php b/app/i18n/hu/conf.php index 058322fe3..83adcb76b 100644 --- a/app/i18n/hu/conf.php +++ b/app/i18n/hu/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'ha a cikk megnyitásra került az eredeti weblapon', 'article_viewed' => 'ha a cikk megtekintésre került', 'keep_max_n_unread' => 'Cikkek maximális száma olvasatlanként tartva', - 'scroll' => 'görgetés közben', + 'scroll' => 'görgetés közben (except for important feeds)', // DIRTY 'upon_gone' => 'ha már nincs benne a hírforrásban', 'upon_reception' => 'a cikk beérkezésekor', 'when' => 'Jelölje a cikket olvasottként…', diff --git a/app/i18n/hu/index.php b/app/i18n/hu/index.php index 7b33c52d9..9e2854b58 100644 --- a/app/i18n/hu/index.php +++ b/app/i18n/hu/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Jelenlegi lekérdezés könyvjelzőzése', 'favorites' => 'Kedvencek (%s)', 'global_view' => 'Globális nézet', + 'important' => 'Important feeds', // TODO 'main_stream' => 'Minden cikk', 'mark_all_read' => 'Legyen mind olvasott', 'mark_cat_read' => 'Kategória megjelölése olvasottként', diff --git a/app/i18n/hu/sub.php b/app/i18n/hu/sub.php index fc332ed79..1ad060a4a 100644 --- a/app/i18n/hu/sub.php +++ b/app/i18n/hu/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Láthatóság', 'archived' => 'Ne jelenjen meg (archivált)', + 'category' => 'Jelenjen meg a saját kategóriájában', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Megjelenítés a Minden cikk között', - 'normal' => 'Jelenjen meg a saját kategóriájában', ), 'proxy' => 'Állíts be egy proxy-t a hírforráshoz ', 'proxy_help' => 'Válassz egy protokolt (pl: SOCKS5) és add meg a proxy címét (pl: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/id/conf.php b/app/i18n/id/conf.php index abf2da35d..c875407b7 100644 --- a/app/i18n/id/conf.php +++ b/app/i18n/id/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'when the article is opened on its original website', // TODO 'article_viewed' => 'when the article is viewed', // TODO 'keep_max_n_unread' => 'Max number of articles to keep unread', // TODO - 'scroll' => 'while scrolling', // TODO + 'scroll' => 'while scrolling (except for important feeds)', // TODO 'upon_gone' => 'when it is no longer in the upstream news feed', // TODO 'upon_reception' => 'upon receiving the article', // TODO 'when' => 'Mark an article as read…', // TODO diff --git a/app/i18n/id/index.php b/app/i18n/id/index.php index 82aded9cf..2bb9d2d3d 100644 --- a/app/i18n/id/index.php +++ b/app/i18n/id/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Bookmark current query', // TODO 'favorites' => 'Favorites (%s)', 'global_view' => 'Global view', // TODO + 'important' => 'Important feeds', // TODO 'main_stream' => 'Main stream', // TODO 'mark_all_read' => 'Mark all as read', // TODO 'mark_cat_read' => 'Mark category as read', // TODO diff --git a/app/i18n/id/sub.php b/app/i18n/id/sub.php index ba55176b1..bc71e086e 100644 --- a/app/i18n/id/sub.php +++ b/app/i18n/id/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Visibility', // TODO 'archived' => 'Do not show (archived)', // TODO + 'category' => 'Show in its category', // TODO + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Show in main stream', // TODO - 'normal' => 'Show in its category', // TODO ), 'proxy' => 'Set a proxy for fetching this feed', // TODO 'proxy_help' => 'Select a protocol (e.g: SOCKS5) and enter the proxy address (e.g: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // TODO diff --git a/app/i18n/it/conf.php b/app/i18n/it/conf.php index 80dc31f92..c00e9056e 100644 --- a/app/i18n/it/conf.php +++ b/app/i18n/it/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'Quando un articolo è aperto nel suo sito di origine', 'article_viewed' => 'Quando un articolo viene letto', 'keep_max_n_unread' => 'Massimo numero di articoli da mantenere come non letti', - 'scroll' => 'Scorrendo la pagina', + 'scroll' => 'Scorrendo la pagina (except for important feeds)', // DIRTY 'upon_gone' => 'quando non si trova più nel feed di notizie in alto', 'upon_reception' => 'Alla ricezione del contenuto', 'when' => 'Segna articoli come letti…', diff --git a/app/i18n/it/index.php b/app/i18n/it/index.php index ee7db8d3b..4143c3310 100644 --- a/app/i18n/it/index.php +++ b/app/i18n/it/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Inserisci la ricerca corrente nei segnalibri', 'favorites' => 'Preferiti (%s)', 'global_view' => 'Vista globale per categorie', + 'important' => 'Important feeds', // TODO 'main_stream' => 'Flusso principale', 'mark_all_read' => 'Segna tutto come letto', 'mark_cat_read' => 'Segna la categoria come letta', diff --git a/app/i18n/it/sub.php b/app/i18n/it/sub.php index 335ff2e3c..1860b9894 100644 --- a/app/i18n/it/sub.php +++ b/app/i18n/it/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Visibilità', 'archived' => 'Non mostrare (archiviato)', + 'category' => 'Mostra nella sua categoria', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Mostra in homepage', - 'normal' => 'Mostra nella sua categoria', ), 'proxy' => 'Imposta un proxy per recuperare questo feed', 'proxy_help' => 'Seleziona un protocollo (e.g: SOCKS5) ed inserisci l’indirizzo del proxy (e.g: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/ja/conf.php b/app/i18n/ja/conf.php index c48b7b7f1..b76444ebc 100644 --- a/app/i18n/ja/conf.php +++ b/app/i18n/ja/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => '記事を元のwebサイトで開いたとき', 'article_viewed' => '記事を読んだとき', 'keep_max_n_unread' => '未読の記事として残す最大数', - 'scroll' => 'スクロールしているとき', + 'scroll' => 'スクロールしているとき (except for important feeds)', // DIRTY 'upon_gone' => 'ニュースフィードの提供元がなくなったとき', 'upon_reception' => '記事を受け取ったとき', 'when' => '記事を既読にする…', diff --git a/app/i18n/ja/index.php b/app/i18n/ja/index.php index a5f3daf7d..3d1a84ff7 100644 --- a/app/i18n/ja/index.php +++ b/app/i18n/ja/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => '現在のブックマーククエリ', 'favorites' => 'お気に入り (%s)', 'global_view' => 'グローバルビュー', + 'important' => 'Important feeds', // TODO 'main_stream' => 'メイン', 'mark_all_read' => 'すべての記事に既読をつける', 'mark_cat_read' => 'カテゴリーに既読をつける', diff --git a/app/i18n/ja/sub.php b/app/i18n/ja/sub.php index 623b08902..f2752be95 100644 --- a/app/i18n/ja/sub.php +++ b/app/i18n/ja/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => '表示する場所', 'archived' => '非表示にする(アーカイブ)', + 'category' => 'カテゴリで表示する', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'メインストリームで表示する', - 'normal' => 'カテゴリで表示する', ), 'proxy' => 'フィードを読み込み時にproxyを設定してください', 'proxy_help' => 'プロトコルを選択し (例: SOCKS5) proxyアドレスを入力してください (例: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/ko/conf.php b/app/i18n/ko/conf.php index c666b0035..bba75096f 100644 --- a/app/i18n/ko/conf.php +++ b/app/i18n/ko/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => '글이 게재된 웹사이트를 방문했을 때', 'article_viewed' => '글을 읽었을 때', 'keep_max_n_unread' => '읽지 않은 상태로 유지할 최대 글 개수', - 'scroll' => '스크롤을 하며 지나갈 때', + 'scroll' => '스크롤을 하며 지나갈 때 (except for important feeds)', // DIRTY 'upon_gone' => '원본 뉴스 피드에서 글 삭제 되었을 때', 'upon_reception' => '글을 가져오자마자', 'when' => '읽음으로 표시…', diff --git a/app/i18n/ko/index.php b/app/i18n/ko/index.php index a95eebf09..356258f4f 100644 --- a/app/i18n/ko/index.php +++ b/app/i18n/ko/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => '현재 쿼리 북마크', 'favorites' => '즐겨찾기 (%s)', 'global_view' => '전체 모드', + 'important' => 'Important feeds', // TODO 'main_stream' => '메인 스트림', 'mark_all_read' => '모두 읽음으로 표시', 'mark_cat_read' => '카테고리를 읽음으로 표시', diff --git a/app/i18n/ko/sub.php b/app/i18n/ko/sub.php index 74bbc75d5..f4661de28 100644 --- a/app/i18n/ko/sub.php +++ b/app/i18n/ko/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => '표시', 'archived' => '표시하지 않음 (보관됨)', + 'category' => '피드가 속한 카테고리에만 표시하기', + 'important' => 'Show in important feeds', // TODO 'main_stream' => '메인 스트림에 표시하기', - 'normal' => '피드가 속한 카테고리에만 표시하기', ), 'proxy' => '이 피드를 가져올 때 사용할 프록시 설정', 'proxy_help' => '프로토콜 선택 (예: SOCKS5) 그리고 프록시 주소 입력 (예: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/lv/conf.php b/app/i18n/lv/conf.php index 993667d8a..1c98bb52a 100644 --- a/app/i18n/lv/conf.php +++ b/app/i18n/lv/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'kad raksts tiek atvērts tā sākotnējā mājaslapā', 'article_viewed' => 'kad raksts tiek skatīts', 'keep_max_n_unread' => 'Maksimālais nelasīto rakstu skaits', - 'scroll' => 'ritināšanas laikā', + 'scroll' => 'ritināšanas laikā (except for important feeds)', // DIRTY 'upon_gone' => 'kad tas vairs nav augšupējā ziņu barotnē', 'upon_reception' => 'pēc raksta saņemšanas', 'when' => 'Atzīmēt rakstu kā izlasītu…', diff --git a/app/i18n/lv/index.php b/app/i18n/lv/index.php index ff9639882..7e786c32a 100644 --- a/app/i18n/lv/index.php +++ b/app/i18n/lv/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Pievienot grāmatzīmi pašreizējam pieprasījumam', 'favorites' => 'Mīļākie (%s)', 'global_view' => 'Globālais skats', + 'important' => 'Important feeds', // TODO 'main_stream' => 'Galvenā plūsma', 'mark_all_read' => 'Atzīmēt visus kā izlasītus', 'mark_cat_read' => 'Atzīmēt kategoriju kā izlasītu', diff --git a/app/i18n/lv/sub.php b/app/i18n/lv/sub.php index cdd4668e5..3f0f0e36c 100644 --- a/app/i18n/lv/sub.php +++ b/app/i18n/lv/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Prioritāte', 'archived' => 'Nerādīt (arhivēts)', + 'category' => 'Rādīt kategorijā', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Rādīt galvenajā plūsmā', - 'normal' => 'Rādīt kategorijā', ), 'proxy' => 'Iestatīt starpniekserveri šīs plūsmas iegūšanai', 'proxy_help' => 'Izvēlieties protokolu (piemēram, SOCKS5) un ievadiet starpniekservera adresi (piemēram, 127.0.0.0.1:1080).', diff --git a/app/i18n/nl/conf.php b/app/i18n/nl/conf.php index 8feea1ee6..31291fe54 100644 --- a/app/i18n/nl/conf.php +++ b/app/i18n/nl/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'als het artikel wordt geopend op de originele website', 'article_viewed' => 'als het artikel wordt bekeken', 'keep_max_n_unread' => 'Max aantal artikelen ongelezen houden', - 'scroll' => 'tijdens het scrollen', + 'scroll' => 'tijdens het scrollen (except for important feeds)', // DIRTY 'upon_gone' => 'als het niet langer in de nieuwsfeed staat', 'upon_reception' => 'bij ontvangst van het artikel', 'when' => 'Markeer artikel als gelezen…', diff --git a/app/i18n/nl/index.php b/app/i18n/nl/index.php index 573447d1c..264298916 100644 --- a/app/i18n/nl/index.php +++ b/app/i18n/nl/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Huidige query opslaan', 'favorites' => 'Favorieten (%s)', 'global_view' => 'Globale weergave', + 'important' => 'Important feeds', // TODO 'main_stream' => 'Overzicht', 'mark_all_read' => 'Markeer alles als gelezen', 'mark_cat_read' => 'Markeer categorie als gelezen', diff --git a/app/i18n/nl/sub.php b/app/i18n/nl/sub.php index 84b76dcaf..1cb7e546f 100644 --- a/app/i18n/nl/sub.php +++ b/app/i18n/nl/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Zichtbaarheid', 'archived' => 'Niet weergeven (gearchiveerd)', + 'category' => 'Toon in categorie', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Zichtbaar in het overzicht', - 'normal' => 'Toon in categorie', ), 'proxy' => 'Proxy instellen om deze feed op te halen', 'proxy_help' => 'Selecteer een protocol (bv. SOCKS5) en voer een proxy-adres in (b.v. 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/oc/conf.php b/app/i18n/oc/conf.php index 28207dc6a..a06697459 100644 --- a/app/i18n/oc/conf.php +++ b/app/i18n/oc/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'quand l’article es dobèrt sul site d’origina', 'article_viewed' => 'quand l’article es mostrat', 'keep_max_n_unread' => 'Nombre max d’articles a gardar pas legits', - 'scroll' => 'en davalant la pagina', + 'scroll' => 'en davalant la pagina (except for important feeds)', // DIRTY 'upon_gone' => 'quand es pas mai dins lo flux de novèla font', 'upon_reception' => 'en recebre un article novèl', 'when' => 'Marcar un article coma legit…', diff --git a/app/i18n/oc/index.php b/app/i18n/oc/index.php index 7d0a5a29f..ef37cb177 100644 --- a/app/i18n/oc/index.php +++ b/app/i18n/oc/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Marcar aquesta requèsta', 'favorites' => 'Favorits (%s)', 'global_view' => 'Vista generala', + 'important' => 'Important feeds', // TODO 'main_stream' => 'Flux màger', 'mark_all_read' => 'O marcar tot coma legit', 'mark_cat_read' => 'Marcar la categoria coma legida', diff --git a/app/i18n/oc/sub.php b/app/i18n/oc/sub.php index 78dbe9724..e4c3ce07f 100644 --- a/app/i18n/oc/sub.php +++ b/app/i18n/oc/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Visibilitat', 'archived' => 'Mostrar pas (archivat)', + 'category' => 'Mostar dins sa categoria', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Mostar al flux màger', - 'normal' => 'Mostar dins sa categoria', ), 'proxy' => 'Definir un servidor proxy per trapar aqueste flux', 'proxy_help' => 'Seleccionatz un protocòl (ex : SOCKS5) e picatz l’adreça del proxy (ex : 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/pl/conf.php b/app/i18n/pl/conf.php index 3a05933c6..9485d91fc 100644 --- a/app/i18n/pl/conf.php +++ b/app/i18n/pl/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'gdy wiadomość jest otworzona na pierwotnej stronie', 'article_viewed' => 'gdy wiadomość jest otworzona', 'keep_max_n_unread' => 'Maksymalna liczba nieprzeczytanych wiadomości', - 'scroll' => 'podczas przewijania', + 'scroll' => 'podczas przewijania (except for important feeds)', // DIRTY 'upon_gone' => 'gdy nie jest już listowana w źródle kanału', 'upon_reception' => 'po otrzymaniu wiadomości', 'when' => 'Oznacz wiadomość jako przeczytaną…', diff --git a/app/i18n/pl/index.php b/app/i18n/pl/index.php index 22f0297ce..b97a36172 100644 --- a/app/i18n/pl/index.php +++ b/app/i18n/pl/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Zapisz bieżące zapytanie', 'favorites' => 'Ulubione (%s)', 'global_view' => 'Widok globalny', + 'important' => 'Important feeds', // TODO 'main_stream' => 'Kanał główny', 'mark_all_read' => 'Oznacz wszystkie jako przeczytane', 'mark_cat_read' => 'Oznacz kategorię jako przeczytaną', diff --git a/app/i18n/pl/sub.php b/app/i18n/pl/sub.php index 1af46fa65..00019c17a 100644 --- a/app/i18n/pl/sub.php +++ b/app/i18n/pl/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Widoczność', 'archived' => 'Nie pokazuj (zarchiwizowany)', + 'category' => 'Pokaż w kategorii kanału', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Pokaż w kanale głównym', - 'normal' => 'Pokaż w kategorii kanału', ), 'proxy' => 'Użyj mechanizmu proxy podczas pobierania kanału', 'proxy_help' => 'Wybierz protokół (np. SOCKS5) i podaj adres serwera proxy (np. 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/pt-br/conf.php b/app/i18n/pt-br/conf.php index 019fe8744..c115c80dc 100644 --- a/app/i18n/pt-br/conf.php +++ b/app/i18n/pt-br/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'quando o artigo é aberto no site original', 'article_viewed' => 'Quando o artigo é visualizado', 'keep_max_n_unread' => 'Número máximo de artigos para manter como não lido', - 'scroll' => 'enquanto scrolling', + 'scroll' => 'enquanto scrolling (except for important feeds)', // DIRTY 'upon_gone' => 'QUuando não estiver mais no feed de noticiais principais', 'upon_reception' => 'ao receber um artigo', 'when' => 'Marcar artigo como lido…', diff --git a/app/i18n/pt-br/index.php b/app/i18n/pt-br/index.php index d22446ab7..f26abaf97 100644 --- a/app/i18n/pt-br/index.php +++ b/app/i18n/pt-br/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Salvar pesquisa atual', 'favorites' => 'Favoritos (%s)', 'global_view' => 'Visualização global', + 'important' => 'Important feeds', // TODO 'main_stream' => 'Stream principal', 'mark_all_read' => 'Marcar todos como lidos', 'mark_cat_read' => 'Marcar categoria como lida', diff --git a/app/i18n/pt-br/sub.php b/app/i18n/pt-br/sub.php index 93732452f..528e2cfbd 100644 --- a/app/i18n/pt-br/sub.php +++ b/app/i18n/pt-br/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Visibilidade', 'archived' => 'Não exibir (arquivado)', + 'category' => 'Mostrar na sua categoria', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Mostrar na tela principal', - 'normal' => 'Mostrar na sua categoria', ), 'proxy' => 'Defina um proxy para buscar esse feed', 'proxy_help' => 'Selecione um protocolo (e.g: SOCKS5) e digite o endereço do proxy (e.g: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/ru/conf.php b/app/i18n/ru/conf.php index a5bdf1605..dd7849f40 100644 --- a/app/i18n/ru/conf.php +++ b/app/i18n/ru/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'когда статья открывается на её сайте', 'article_viewed' => 'когда статья просматривается', 'keep_max_n_unread' => 'Максимальное количество непрочитанных статей', - 'scroll' => 'во время прокрутки', + 'scroll' => 'во время прокрутки (except for important feeds)', // DIRTY 'upon_gone' => 'когда это больше не в новостной ленте', 'upon_reception' => 'по получении статьи', 'when' => 'Отмечать статью прочитанной…', diff --git a/app/i18n/ru/index.php b/app/i18n/ru/index.php index 6c1d0b560..2bf6802de 100644 --- a/app/i18n/ru/index.php +++ b/app/i18n/ru/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Сохранить текущий запрос', 'favorites' => 'Избранное (%s)', 'global_view' => 'Глобальный вид', + 'important' => 'Important feeds', // TODO 'main_stream' => 'Основной поток', 'mark_all_read' => 'Отметить всё прочитанным', 'mark_cat_read' => 'Отметить категорию прочитанной', diff --git a/app/i18n/ru/sub.php b/app/i18n/ru/sub.php index 8c38b3ce1..a675583cb 100644 --- a/app/i18n/ru/sub.php +++ b/app/i18n/ru/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Видимость', 'archived' => 'Не показывать (архивировано)', + 'category' => 'Показывать в категории ленты', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Показывать в основном потоке', - 'normal' => 'Показывать в категории ленты', ), 'proxy' => 'Указать прокси для извлечения этой ленты', 'proxy_help' => 'Выберите протокол (например, SOCKS5) и введите адрес прокси (например, 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/sk/conf.php b/app/i18n/sk/conf.php index 14a501e6c..9835591d4 100644 --- a/app/i18n/sk/conf.php +++ b/app/i18n/sk/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'keď je článok otvorený na svojej webovej stránke', 'article_viewed' => 'keď je článok zobrazený', 'keep_max_n_unread' => 'Maximálny počet článkov ponechať ako neprečítané', - 'scroll' => 'počas skrolovania', + 'scroll' => 'počas skrolovania (except for important feeds)', // DIRTY 'upon_gone' => 'keď už nie je v hlavnom kanály noviniek', 'upon_reception' => 'po načítaní článku', 'when' => 'Označiť článok ako prečítaný…', diff --git a/app/i18n/sk/index.php b/app/i18n/sk/index.php index 56684bd26..07eb40364 100644 --- a/app/i18n/sk/index.php +++ b/app/i18n/sk/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Pridať aktuálny dopyt do obľúbených', 'favorites' => 'Obľúbené (%s)', 'global_view' => 'Prehľad', + 'important' => 'Important feeds', // TODO 'main_stream' => 'Všetky kanály', 'mark_all_read' => 'Označiť všetko ako prečítané', 'mark_cat_read' => 'Označiť kategóriu ako prečítanú', diff --git a/app/i18n/sk/sub.php b/app/i18n/sk/sub.php index 9f90e81a1..339e12aa2 100644 --- a/app/i18n/sk/sub.php +++ b/app/i18n/sk/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Viditeľnosť', 'archived' => 'Nezobrazovať (archivované)', + 'category' => 'Zobraziť vo svojej kategórii', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Zobraziť v prehľade kanálov', - 'normal' => 'Zobraziť vo svojej kategórii', ), 'proxy' => 'Na sťahovanie tohto kanálu nastaviť proxy', 'proxy_help' => 'Vyberte protokol (napr.: SOCKS5) a zadajte adresu proxy servera (napr.: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/tr/conf.php b/app/i18n/tr/conf.php index 15569faed..e34f8b02f 100644 --- a/app/i18n/tr/conf.php +++ b/app/i18n/tr/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => 'orijinal makale sitesi açıldığında', 'article_viewed' => 'makale görüntülendiğinde', 'keep_max_n_unread' => 'Okunmadı tutulacak maksimum metin sayısı', - 'scroll' => 'kaydırma yapılırken', + 'scroll' => 'kaydırma yapılırken (except for important feeds)', // DIRTY 'upon_gone' => 'Yeni akışta üst sıralarda değilken', 'upon_reception' => 'makale üzerinde gelince', 'when' => 'Makaleyi okundu olarak işaretle…', diff --git a/app/i18n/tr/index.php b/app/i18n/tr/index.php index b53ca5893..de7c36fc5 100644 --- a/app/i18n/tr/index.php +++ b/app/i18n/tr/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => 'Şuana ait yer imi sorgusu', 'favorites' => 'Favoriler (%s)', 'global_view' => 'Evrensel görünüm', + 'important' => 'Important feeds', // TODO 'main_stream' => 'Ana akış', 'mark_all_read' => 'Hepsini okundu olarak işaretle', 'mark_cat_read' => 'Kategoriyi okundu olarak işaretle', diff --git a/app/i18n/tr/sub.php b/app/i18n/tr/sub.php index 54eedee40..640117a65 100644 --- a/app/i18n/tr/sub.php +++ b/app/i18n/tr/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => 'Görünürlük', 'archived' => 'Gösterme (arşivlenmiş)', + 'category' => 'Kendi kategorisinde göster', + 'important' => 'Show in important feeds', // TODO 'main_stream' => 'Ana akışda göster', - 'normal' => 'Kendi kategorisinde göster', ), 'proxy' => 'Bu akışı güncellemek için vekil sunucu kullan', 'proxy_help' => 'Bir protokol seçin (ör: SOCKS5) vekil sunucu adresini girin (e.g: 127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/zh-cn/conf.php b/app/i18n/zh-cn/conf.php index 6bf3324fa..4f98fc90f 100644 --- a/app/i18n/zh-cn/conf.php +++ b/app/i18n/zh-cn/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => '在打开原文章后', 'article_viewed' => '在文章被浏览后', 'keep_max_n_unread' => '未读最多保留 n 条', - 'scroll' => '在滚动浏览后', + 'scroll' => '在滚动浏览后 (except for important feeds)', // DIRTY 'upon_gone' => '在被原订阅源被移除后', 'upon_reception' => '在接收文章后', 'when' => '何时将文章标记为已读', diff --git a/app/i18n/zh-cn/index.php b/app/i18n/zh-cn/index.php index 405c3f562..e42d37d5f 100644 --- a/app/i18n/zh-cn/index.php +++ b/app/i18n/zh-cn/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => '收藏当前查询', 'favorites' => '收藏(%s)', 'global_view' => '全局视图', + 'important' => 'Important feeds', // TODO 'main_stream' => '首页', 'mark_all_read' => '全部设为已读', 'mark_cat_read' => '此分类设为已读', diff --git a/app/i18n/zh-cn/sub.php b/app/i18n/zh-cn/sub.php index 88876f86c..d293cb833 100644 --- a/app/i18n/zh-cn/sub.php +++ b/app/i18n/zh-cn/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => '可见性', 'archived' => '不显示(归档)', + 'category' => '在分类中显示', + 'important' => 'Show in important feeds', // TODO 'main_stream' => '在首页中显示', - 'normal' => '在分类中显示', ), 'proxy' => '获取订阅源时的代理', 'proxy_help' => '选择协议(例:SOCKS5)和代理地址(例:127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/i18n/zh-tw/conf.php b/app/i18n/zh-tw/conf.php index 8b26fee80..440fe499f 100644 --- a/app/i18n/zh-tw/conf.php +++ b/app/i18n/zh-tw/conf.php @@ -205,7 +205,7 @@ return array( 'article_open_on_website' => '在打開原文章後', 'article_viewed' => '在文章被瀏覽後', 'keep_max_n_unread' => '未讀最多保留 n 條', - 'scroll' => '在滾動瀏覽後', + 'scroll' => '在滾動瀏覽後 (except for important feeds)', // DIRTY 'upon_gone' => '在被原訂閱源移除後', 'upon_reception' => '在接收文章後', 'when' => '何時將文章標記為已讀', diff --git a/app/i18n/zh-tw/index.php b/app/i18n/zh-tw/index.php index ee8eda20f..a63b833b8 100644 --- a/app/i18n/zh-tw/index.php +++ b/app/i18n/zh-tw/index.php @@ -45,6 +45,7 @@ return array( 'bookmark_query' => '收藏當前查詢', 'favorites' => '收藏(%s)', 'global_view' => '全局視圖', + 'important' => 'Important feeds', // TODO 'main_stream' => '首頁', 'mark_all_read' => '全部設為已讀', 'mark_cat_read' => '此分類設為已讀', diff --git a/app/i18n/zh-tw/sub.php b/app/i18n/zh-tw/sub.php index 461fb12e1..0485e12da 100644 --- a/app/i18n/zh-tw/sub.php +++ b/app/i18n/zh-tw/sub.php @@ -140,8 +140,9 @@ return array( 'priority' => array( '_' => '可見性', 'archived' => '不顯示(歸檔)', + 'category' => '在分類中顯示', + 'important' => 'Show in important feeds', // TODO 'main_stream' => '在首頁中顯示', - 'normal' => '在分類中顯示', ), 'proxy' => '獲取訂閱源時的代理', 'proxy_help' => '選擇協議(例:SOCKS5)和代理地址(例:127.0.0.1:1080 or username:password@127.0.0.1:1080)', // DIRTY diff --git a/app/layout/aside_feed.phtml b/app/layout/aside_feed.phtml index a70b680d2..1d23a66d3 100644 --- a/app/layout/aside_feed.phtml +++ b/app/layout/aside_feed.phtml @@ -35,6 +35,14 @@ +
  • +
    + + + +
    +
  • +
  • diff --git a/app/views/index/normal.phtml b/app/views/index/normal.phtml index c99cf07e7..aee2ea2a2 100644 --- a/app/views/index/normal.phtml +++ b/app/views/index/normal.phtml @@ -37,14 +37,9 @@ $today = @strtotime('today'); } $this->entry = $item; - // We most likely already have the feed object in cache - $this->feed = FreshRSS_CategoryDAO::findFeed($this->categories, $this->entry->feedId()); - if ($this->feed == null) { - $this->feed = $this->entry->feed() ?: null; - if ($this->feed == null) { - $this->feed = FreshRSS_Feed::example(); - } - } + // We most likely already have the feed object in cache, otherwise make a request + $this->feed = FreshRSS_CategoryDAO::findFeed($this->categories, $this->entry->feedId()) ?? + $this->entry->feed() ?? FreshRSS_Feed::example(); if ($display_today && $this->entry->isDay(FreshRSS_Days::TODAY, $today)) { ?>
    renderHelper('index/normal/entry_header'); diff --git a/app/views/index/reader.phtml b/app/views/index/reader.phtml index af5caccdc..014b1ab42 100644 --- a/app/views/index/reader.phtml +++ b/app/views/index/reader.phtml @@ -45,15 +45,15 @@ $MAX_TAGS_DISPLAYED = FreshRSS_Context::$user_conf->show_tags_max; } } } - ?>
    + + //We most likely already have the feed object in cache, otherwise make a request + $feed = FreshRSS_CategoryDAO::findFeed($this->categories, $item->feedId()) ?? $item->feed() ?? FreshRSS_Feed::example(); + ?>
    categories, $item->feedId()); //We most likely already have the feed object in cache - if ($feed == null) $feed = $item->feed(); - if ($feed == null) continue; $favoriteUrl = array('c' => 'entry', 'a' => 'bookmark', 'params' => array('id' => $item->id())); if ($item->isFavorite()) { $favoriteUrl['params']['is_favorite'] = 0; diff --git a/app/views/subscription/index.phtml b/app/views/subscription/index.phtml index 7ee7a3188..6881d0a8d 100644 --- a/app/views/subscription/index.phtml +++ b/app/views/subscription/index.phtml @@ -61,7 +61,7 @@ $mute_class = $feed->mute() ? ' mute' : ''; ?>
  • + draggable="true" data-feed-id="id() ?>" data-priority="priority() ?>"> show_favicons): ?>✇ name() ?> diff --git a/p/api/greader.php b/p/api/greader.php index a014a4db1..a93bad52e 100644 --- a/p/api/greader.php +++ b/p/api/greader.php @@ -963,7 +963,7 @@ final class GReaderAPI { } } } elseif ($streamId === 'user/-/state/com.google/reading-list') { - $entryDAO->markReadEntries($olderThanId, false, -1); + $entryDAO->markReadEntries($olderThanId, false); } else { self::badRequest(); } diff --git a/p/scripts/main.js b/p/scripts/main.js index 4ddafb2bd..b3876f628 100644 --- a/p/scripts/main.js +++ b/p/scripts/main.js @@ -135,6 +135,15 @@ function incUnreadsFeed(article, feed_id, nb) { } } + // Update unread: important + if (feed_priority >= 20) { + elem = document.querySelector('#aside_feed .important .title'); + if (elem) { + feed_unreads = elem ? str2int(elem.getAttribute('data-unread')) : 0; + elem.setAttribute('data-unread', numberFormat(feed_unreads + nb)); + } + } + // Update unread: favourites if (article && article.closest('div').classList.contains('favorite')) { elem = document.querySelector('#aside_feed .favorites .title'); diff --git a/p/themes/base-theme/frss.css b/p/themes/base-theme/frss.css index 49188f888..219a78dce 100644 --- a/p/themes/base-theme/frss.css +++ b/p/themes/base-theme/frss.css @@ -1978,6 +1978,11 @@ html.slider-active { color: var(--frss-font-color-light); } +.feed[data-priority="20"] .item-title, +.flux[data-priority="20"] .website > a { + text-decoration: underline double; +} + .aside .category .title:not([data-unread="0"])::after, .aside .feed .item-title:not([data-unread="0"])::after { margin: calc(0.125rem + var(--frss-padding-top-bottom)) 0 0 0; diff --git a/p/themes/base-theme/frss.rtl.css b/p/themes/base-theme/frss.rtl.css index 1452b1f7c..3bb38e88b 100644 --- a/p/themes/base-theme/frss.rtl.css +++ b/p/themes/base-theme/frss.rtl.css @@ -1978,6 +1978,11 @@ html.slider-active { color: var(--frss-font-color-light); } +.feed[data-priority="20"] .item-title, +.flux[data-priority="20"] .website > a { + text-decoration: underline double; +} + .aside .category .title:not([data-unread="0"])::after, .aside .feed .item-title:not([data-unread="0"])::after { margin: calc(0.125rem + var(--frss-padding-top-bottom)) 0 0 0; diff --git a/p/themes/icons/important.svg b/p/themes/icons/important.svg new file mode 100644 index 000000000..6c354bef1 --- /dev/null +++ b/p/themes/icons/important.svg @@ -0,0 +1,16 @@ + + -- cgit v1.2.3