diff options
author | ArthurHoaro <arthur@hoa.ro> | 2020-10-15 11:46:24 +0200 |
---|---|---|
committer | ArthurHoaro <arthur@hoa.ro> | 2020-10-20 10:15:18 +0200 |
commit | 21e72da9ee34cec56b10c83ae0c75b4bf320dfcb (patch) | |
tree | b6c0b8208f004e1b2b37b1af54e8d4c40310d56e /application/front | |
parent | 9b3c1270bcbe4f8e30e0160da8badd43dd94871a (diff) | |
download | Shaarli-21e72da9ee34cec56b10c83ae0c75b4bf320dfcb.tar.gz Shaarli-21e72da9ee34cec56b10c83ae0c75b4bf320dfcb.tar.zst Shaarli-21e72da9ee34cec56b10c83ae0c75b4bf320dfcb.zip |
Asynchronous retrieval of bookmark's thumbnails
This feature is based general.enable_async_metadata setting and works with existing metadata.js file.
The script is compatible with any template:
- the thumbnail div bloc must have attribute
- the bookmark bloc must have attribute with the bookmark ID as value
Fixes #1564
Diffstat (limited to 'application/front')
-rw-r--r-- | application/front/controller/admin/ManageShaareController.php | 3 | ||||
-rw-r--r-- | application/front/controller/visitor/BookmarkListController.php | 10 |
2 files changed, 6 insertions, 7 deletions
diff --git a/application/front/controller/admin/ManageShaareController.php b/application/front/controller/admin/ManageShaareController.php index df2f1631..908ebae3 100644 --- a/application/front/controller/admin/ManageShaareController.php +++ b/application/front/controller/admin/ManageShaareController.php | |||
@@ -129,7 +129,8 @@ class ManageShaareController extends ShaarliAdminController | |||
129 | $bookmark->setTagsString($request->getParam('lf_tags')); | 129 | $bookmark->setTagsString($request->getParam('lf_tags')); |
130 | 130 | ||
131 | if ($this->container->conf->get('thumbnails.mode', Thumbnailer::MODE_NONE) !== Thumbnailer::MODE_NONE | 131 | if ($this->container->conf->get('thumbnails.mode', Thumbnailer::MODE_NONE) !== Thumbnailer::MODE_NONE |
132 | && false === $bookmark->isNote() | 132 | && true !== $this->container->conf->get('general.enable_async_metadata', true) |
133 | && $bookmark->shouldUpdateThumbnail() | ||
133 | ) { | 134 | ) { |
134 | $bookmark->setThumbnail($this->container->thumbnailer->get($bookmark->getUrl())); | 135 | $bookmark->setThumbnail($this->container->thumbnailer->get($bookmark->getUrl())); |
135 | } | 136 | } |
diff --git a/application/front/controller/visitor/BookmarkListController.php b/application/front/controller/visitor/BookmarkListController.php index 18368751..a8019ead 100644 --- a/application/front/controller/visitor/BookmarkListController.php +++ b/application/front/controller/visitor/BookmarkListController.php | |||
@@ -169,14 +169,11 @@ class BookmarkListController extends ShaarliVisitorController | |||
169 | */ | 169 | */ |
170 | protected function updateThumbnail(Bookmark $bookmark, bool $writeDatastore = true): bool | 170 | protected function updateThumbnail(Bookmark $bookmark, bool $writeDatastore = true): bool |
171 | { | 171 | { |
172 | // Logged in, thumbnails enabled, not a note, is HTTP | 172 | // Logged in, not async retrieval, thumbnails enabled, and thumbnail should be updated |
173 | // and (never retrieved yet or no valid cache file) | ||
174 | if ($this->container->loginManager->isLoggedIn() | 173 | if ($this->container->loginManager->isLoggedIn() |
174 | && true !== $this->container->conf->get('general.enable_async_metadata', true) | ||
175 | && $this->container->conf->get('thumbnails.mode', Thumbnailer::MODE_NONE) !== Thumbnailer::MODE_NONE | 175 | && $this->container->conf->get('thumbnails.mode', Thumbnailer::MODE_NONE) !== Thumbnailer::MODE_NONE |
176 | && false !== $bookmark->getThumbnail() | 176 | && $bookmark->shouldUpdateThumbnail() |
177 | && !$bookmark->isNote() | ||
178 | && (null === $bookmark->getThumbnail() || !is_file($bookmark->getThumbnail())) | ||
179 | && startsWith(strtolower($bookmark->getUrl()), 'http') | ||
180 | ) { | 177 | ) { |
181 | $bookmark->setThumbnail($this->container->thumbnailer->get($bookmark->getUrl())); | 178 | $bookmark->setThumbnail($this->container->thumbnailer->get($bookmark->getUrl())); |
182 | $this->container->bookmarkService->set($bookmark, $writeDatastore); | 179 | $this->container->bookmarkService->set($bookmark, $writeDatastore); |
@@ -198,6 +195,7 @@ class BookmarkListController extends ShaarliVisitorController | |||
198 | 'page_max' => '', | 195 | 'page_max' => '', |
199 | 'search_tags' => '', | 196 | 'search_tags' => '', |
200 | 'result_count' => '', | 197 | 'result_count' => '', |
198 | 'async_metadata' => $this->container->conf->get('general.enable_async_metadata', true) | ||
201 | ]; | 199 | ]; |
202 | } | 200 | } |
203 | 201 | ||