diff options
| author | 2020-05-18 18:45:47 +0200 | |
|---|---|---|
| committer | 2020-05-18 18:45:47 +0200 | |
| commit | 0442243037fc7fb80228790a871328629a1aa882 (patch) | |
| tree | 690cde0ab388a341d22e436032d329d46dd07284 | |
| parent | fa56f90223ce44c34b2919567d163ca4f2e81f65 (diff) | |
Fix nav_menu mark-as-read (#2909)
* Fix nav_menu mark-as-read
#Fix https://github.com/FreshRSS/FreshRSS/issues/2905
Fix regression from https://github.com/FreshRSS/FreshRSS/pull/2588
We need info about the first item (id_max) before being able to output
nav_menu. Before https://github.com/FreshRSS/FreshRSS/pull/2588 we used
to output everything in memory before starting to produce an output. Now
that we stream the output, we need a temporary buffer until we have
received the first item/article.
* Repair loading page
* Simplify CSS
Make it work in Chrome as well
* Lint
* Partial revert
* Base max_id solely on current time
| -rwxr-xr-x | app/Controllers/indexController.php | 15 | ||||
| -rw-r--r-- | app/layout/aside_feed.phtml | 3 | ||||
| -rw-r--r-- | app/layout/nav_menu.phtml | 3 | ||||
| -rw-r--r-- | app/views/index/normal.phtml | 7 | ||||
| -rw-r--r-- | app/views/index/reader.phtml | 6 | ||||
| -rw-r--r-- | p/themes/Alternative-Dark/template.css | 8 | ||||
| -rw-r--r-- | p/themes/Alternative-Dark/template.rtl.css | 8 | ||||
| -rw-r--r-- | p/themes/base-theme/template.css | 8 | ||||
| -rw-r--r-- | p/themes/base-theme/template.rtl.css | 8 |
9 files changed, 17 insertions, 49 deletions
diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php index ddd51455d..ff746f4bf 100755 --- a/app/Controllers/indexController.php +++ b/app/Controllers/indexController.php @@ -48,6 +48,8 @@ class FreshRSS_index_Controller extends Minz_ActionController { } Minz_View::prependTitle($title . ' · '); + FreshRSS_Context::$id_max = time() . '000000'; + $this->view->callbackBeforeFeeds = function ($view) { try { $tagDAO = FreshRSS_Factory::createTagDao(); @@ -66,29 +68,20 @@ class FreshRSS_index_Controller extends Minz_ActionController { FreshRSS_Context::$number++; //+1 for pagination $view->entries = FreshRSS_index_Controller::listEntriesByContext(); FreshRSS_Context::$number--; - ob_start(); + ob_start(); //Buffer "one entry at a time" } catch (FreshRSS_EntriesGetter_Exception $e) { Minz_Log::notice($e->getMessage()); Minz_Error::error(404); } }; - $this->view->callbackBeforePagination = function ($view, $nbEntries, $firstEntry, $lastEntry) { + $this->view->callbackBeforePagination = function ($view, $nbEntries, $lastEntry) { if ($nbEntries >= FreshRSS_Context::$number) { //We have enough entries: we discard the last one to use it for the next pagination ob_clean(); FreshRSS_Context::$next_id = $lastEntry->id(); } ob_end_flush(); - - FreshRSS_Context::$id_max = $firstEntry === null ? (time() - 1) . '000000' : $firstEntry->id(); - if (FreshRSS_Context::$order === 'ASC') { - // In this case we do not know but we guess id_max - $id_max = (time() - 1) . '000000'; - if (strcmp($id_max, FreshRSS_Context::$id_max) > 0) { - FreshRSS_Context::$id_max = $id_max; - } - } }; } diff --git a/app/layout/aside_feed.phtml b/app/layout/aside_feed.phtml index 191413184..6c1f934cb 100644 --- a/app/layout/aside_feed.phtml +++ b/app/layout/aside_feed.phtml @@ -109,6 +109,9 @@ </form> </div> +<div id="first_load" class="loading"></div> +<?php flush(); ?> + <script id="tag_config_template" type="text/html"> <ul class="dropdown-menu"> <li class="dropdown-close"><a href="#close">❌</a></li> diff --git a/app/layout/nav_menu.phtml b/app/layout/nav_menu.phtml index 63b032e47..d76eb776d 100644 --- a/app/layout/nav_menu.phtml +++ b/app/layout/nav_menu.phtml @@ -1,8 +1,5 @@ -<div id="first_load" class="loading"></div> - <?php $actual_view = Minz_Request::actionName(); - flush(); ?> <div class="nav_menu"> diff --git a/app/views/index/normal.phtml b/app/views/index/normal.phtml index 50574ee4d..e56e99561 100644 --- a/app/views/index/normal.phtml +++ b/app/views/index/normal.phtml @@ -1,5 +1,4 @@ <?php - $this->partial('aside_feed'); $this->partial('nav_menu'); @@ -19,13 +18,9 @@ $today = @strtotime('today'); <div id="new-article"> <a href="<?= Minz_Url::display(Minz_Request::currentRequest()) ?>"><?= _t('gen.js.new_article'); /* TODO: move string in JS*/ ?></a> </div><?php - $firstEntry = null; $lastEntry = null; $nbEntries = 0; foreach ($this->entries as $item): - if ($nbEntries === 0) { - $firstEntry = $item; - } $lastEntry = $item; $nbEntries++; ob_flush(); @@ -100,7 +95,7 @@ $today = @strtotime('today'); endforeach; if ($nbEntries > 0): - call_user_func($this->callbackBeforePagination, $this, $nbEntries, $firstEntry, $lastEntry); + call_user_func($this->callbackBeforePagination, $this, $nbEntries, $lastEntry); $this->renderHelper('pagination'); ?></div><?php else: diff --git a/app/views/index/reader.phtml b/app/views/index/reader.phtml index 289c62662..c21fdb7f3 100644 --- a/app/views/index/reader.phtml +++ b/app/views/index/reader.phtml @@ -12,13 +12,9 @@ $content_width = FreshRSS_Context::$user_conf->content_width; <div id="new-article"> <a href="<?= Minz_Url::display(Minz_Request::currentRequest()) ?>"><?= _t('gen.js.new_article'); /* TODO: move string in JS*/ ?></a> </div><?php - $firstEntry = null; $lastEntry = null; $nbEntries = 0; foreach ($this->entries as $item): - if ($nbEntries === 0) { - $firstEntry = $item; - } $lastEntry = $item; $nbEntries++; ob_flush(); @@ -76,7 +72,7 @@ $content_width = FreshRSS_Context::$user_conf->content_width; endforeach; if ($nbEntries > 0): - call_user_func($this->callbackBeforePagination, $this, $nbEntries, $firstEntry, $lastEntry); + call_user_func($this->callbackBeforePagination, $this, $nbEntries, $lastEntry); $this->renderHelper('pagination'); ?></div><?php else: diff --git a/p/themes/Alternative-Dark/template.css b/p/themes/Alternative-Dark/template.css index 46e289372..cf9c84cca 100644 --- a/p/themes/Alternative-Dark/template.css +++ b/p/themes/Alternative-Dark/template.css @@ -883,13 +883,9 @@ br { } /*=== "Load" parts */ - -/* Only matches while waiting for div#stream to be received */ -#first_load:nth-last-of-type(1), #first_load:nth-last-of-type(2) { - margin: -40px auto 0 auto; +#first_load { + margin: 130px auto -170px auto; height: 40px; - position: relative; - top: 290px; } #load_more { diff --git a/p/themes/Alternative-Dark/template.rtl.css b/p/themes/Alternative-Dark/template.rtl.css index 371934324..6ee7af766 100644 --- a/p/themes/Alternative-Dark/template.rtl.css +++ b/p/themes/Alternative-Dark/template.rtl.css @@ -883,13 +883,9 @@ br { } /*=== "Load" parts */ - -/* Only matches while waiting for div#stream to be received */ -#first_load:nth-last-of-type(1), #first_load:nth-last-of-type(2) { - margin: -40px auto 0 auto; +#first_load { + margin: 130px auto -170px auto; height: 40px; - position: relative; - top: 290px; } #load_more { diff --git a/p/themes/base-theme/template.css b/p/themes/base-theme/template.css index 7c4e73b3d..fefc57650 100644 --- a/p/themes/base-theme/template.css +++ b/p/themes/base-theme/template.css @@ -891,13 +891,9 @@ br { } /*=== "Load" parts */ - -/* Only matches while waiting for div#stream to be received */ -#first_load:nth-last-of-type(1), #first_load:nth-last-of-type(2) { - margin: -40px auto 0 auto; +#first_load { + margin: 130px auto -170px auto; height: 40px; - position: relative; - top: 290px; } #load_more { diff --git a/p/themes/base-theme/template.rtl.css b/p/themes/base-theme/template.rtl.css index fac75c97b..0e4936f22 100644 --- a/p/themes/base-theme/template.rtl.css +++ b/p/themes/base-theme/template.rtl.css @@ -891,13 +891,9 @@ br { } /*=== "Load" parts */ - -/* Only matches while waiting for div#stream to be received */ -#first_load:nth-last-of-type(1), #first_load:nth-last-of-type(2) { - margin: -40px auto 0 auto; +#first_load { + margin: 130px auto -170px auto; height: 40px; - position: relative; - top: 290px; } #load_more { |
