aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--application/Thumbnailer.php1
-rw-r--r--application/feed/FeedBuilder.php2
-rw-r--r--doc/md/Community-&-Related-software.md3
-rw-r--r--doc/md/Continuous-integration-tools.md3
-rw-r--r--doc/md/Server-configuration.md2
-rw-r--r--doc/md/Theming.md2
-rw-r--r--doc/md/Troubleshooting.md79
-rw-r--r--doc/md/docker/shaarli-images.md8
-rw-r--r--doc/md/guides/various-hacks.md1
-rw-r--r--plugins/demo_plugin/demo_plugin.php23
-rw-r--r--tpl/default/includes.html4
-rw-r--r--tpl/vintage/includes.html4
-rw-r--r--yarn.lock12
13 files changed, 43 insertions, 101 deletions
diff --git a/application/Thumbnailer.php b/application/Thumbnailer.php
index d5f5ac28..314baf0d 100644
--- a/application/Thumbnailer.php
+++ b/application/Thumbnailer.php
@@ -27,6 +27,7 @@ class Thumbnailer
27 'instagram.com', 27 'instagram.com',
28 'pinterest.com', 28 'pinterest.com',
29 'pinterest.fr', 29 'pinterest.fr',
30 'soundcloud.com',
30 'tumblr.com', 31 'tumblr.com',
31 'deviantart.com', 32 'deviantart.com',
32 ]; 33 ];
diff --git a/application/feed/FeedBuilder.php b/application/feed/FeedBuilder.php
index 7c859474..957c8273 100644
--- a/application/feed/FeedBuilder.php
+++ b/application/feed/FeedBuilder.php
@@ -157,7 +157,7 @@ class FeedBuilder
157 $permalink = '<a href="' . $link['guid'] . '" title="' . t('Permalink') . '">' . t('Permalink') . '</a>'; 157 $permalink = '<a href="' . $link['guid'] . '" title="' . t('Permalink') . '">' . t('Permalink') . '</a>';
158 } 158 }
159 $link['description'] = format_description($link['description'], $pageaddr); 159 $link['description'] = format_description($link['description'], $pageaddr);
160 $link['description'] .= PHP_EOL . '<br>&#8212; ' . $permalink; 160 $link['description'] .= PHP_EOL . PHP_EOL . '<br>&#8212; ' . $permalink;
161 161
162 $pubDate = $link['created']; 162 $pubDate = $link['created'];
163 $link['pub_iso_date'] = $this->getIsoDate($pubDate); 163 $link['pub_iso_date'] = $this->getIsoDate($pubDate);
diff --git a/doc/md/Community-&-Related-software.md b/doc/md/Community-&-Related-software.md
index c66d1c70..4193c045 100644
--- a/doc/md/Community-&-Related-software.md
+++ b/doc/md/Community-&-Related-software.md
@@ -12,8 +12,6 @@ See [REST API](REST-API) for a list of official and community clients.
12- [autosave](https://github.com/kalvn/shaarli-plugin-autosave) by [@kalvn](https://github.com/kalvn): Automatically saves data when editing a link to avoid any loss in case of crash or unexpected shutdown. 12- [autosave](https://github.com/kalvn/shaarli-plugin-autosave) by [@kalvn](https://github.com/kalvn): Automatically saves data when editing a link to avoid any loss in case of crash or unexpected shutdown.
13- [Code Coloration](https://github.com/ArthurHoaro/code-coloration) by [@ArthurHoaro](https://github.com/ArthurHoaro): client side code syntax highlighter. 13- [Code Coloration](https://github.com/ArthurHoaro/code-coloration) by [@ArthurHoaro](https://github.com/ArthurHoaro): client side code syntax highlighter.
14- [Disqus](https://github.com/kalvn/shaarli-plugin-disqus) by [@kalvn](https://github.com/kalvn): Adds Disqus comment system to your Shaarli. 14- [Disqus](https://github.com/kalvn/shaarli-plugin-disqus) by [@kalvn](https://github.com/kalvn): Adds Disqus comment system to your Shaarli.
15- [emojione](https://github.com/NerosTie/emojione) by [@NerosTie](https://github.com/NerosTie): Add colorful emojis to your Shaarli.
16- [twemoji](https://github.com/NerosTie/twemoji) by [@NerosTie](https://github.com/NerosTie): Add colorful emojis to your Shaarli (Twemoji version)
17- [google analytics](https://github.com/ericjuden/Shaarli-Google-Analytics-Plugin) by [@ericjuden](http://github.com/ericjuden): Adds Google Analytics tracking support 15- [google analytics](https://github.com/ericjuden/Shaarli-Google-Analytics-Plugin) by [@ericjuden](http://github.com/ericjuden): Adds Google Analytics tracking support
18- [launch](https://github.com/ArthurHoaro/launch-plugin) - Launch Plugin is a plugin designed to enhance and customize Launch Theme for Shaarli. 16- [launch](https://github.com/ArthurHoaro/launch-plugin) - Launch Plugin is a plugin designed to enhance and customize Launch Theme for Shaarli.
19- [markdown-toolbar](https://github.com/immanuelfodor/shaarli-markdown-toolbar) by [@immanuelfodor](https://github.com/immanuelfodor) - Easily insert markdown syntax into the Description field when editing a link. 17- [markdown-toolbar](https://github.com/immanuelfodor/shaarli-markdown-toolbar) by [@immanuelfodor](https://github.com/immanuelfodor) - Easily insert markdown syntax into the Description field when editing a link.
@@ -35,6 +33,7 @@ See [Theming](Theming) for a list of community-contributed themes, and an instal
35- [Scuttle to Shaarli](https://github.com/q2apro/scuttle-to-shaarli) - Import bookmarks from Scuttle 33- [Scuttle to Shaarli](https://github.com/q2apro/scuttle-to-shaarli) - Import bookmarks from Scuttle
36- [Shaarli app for Cloudron](https://git.cloudron.io/cloudron/shaarli-app) - Effortlessly run Shaarli with the help of [Cloudron](https://cloudron.io/) [![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=com.github.shaarli) 34- [Shaarli app for Cloudron](https://git.cloudron.io/cloudron/shaarli-app) - Effortlessly run Shaarli with the help of [Cloudron](https://cloudron.io/) [![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=com.github.shaarli)
37- [Shaarli_ynh](https://github.com/YunoHost-Apps/shaarli_ynh) - Shaarli is available as a [Yunohost](https://yunohost.org) app [![Install Shaarli with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=shaarli) 35- [Shaarli_ynh](https://github.com/YunoHost-Apps/shaarli_ynh) - Shaarli is available as a [Yunohost](https://yunohost.org) app [![Install Shaarli with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=shaarli)
36- [pelican](https://blog.getpelican.com) static blog generator plugin to auto-post articles on a Shaarli instance: [shaarli_poster](https://github.com/getpelican/pelican-plugins/tree/master/shaarli_poster)
38 37
39### Mobile Apps 38### Mobile Apps
40- [ShaarliOS](https://github.com/mro/ShaarliOS) - Apple iOS share extension. 39- [ShaarliOS](https://github.com/mro/ShaarliOS) - Apple iOS share extension.
diff --git a/doc/md/Continuous-integration-tools.md b/doc/md/Continuous-integration-tools.md
index 4ca6bdc7..f7819d5a 100644
--- a/doc/md/Continuous-integration-tools.md
+++ b/doc/md/Continuous-integration-tools.md
@@ -27,3 +27,6 @@ After all jobs have finished, Travis returns the results to GitHub:
27 - Green: all tests have passed 27 - Green: all tests have passed
28 - Red: some tests failed 28 - Red: some tests failed
29 - Orange: tests are pending 29 - Orange: tests are pending
30
31## Documentation
32[mkdocs](https://www.mkdocs.org/) is used to convert markdown documentation to HTML pages. The [public documentation](https://shaarli.readthedocs.io/en/master/) website is rendered and hosted by [readthedocs.org](https://readthedocs.org/). A copy of the documentation is also included in prebuilt [release archives](https://github.com/shaarli/Shaarli/releases) (`doc/html/` path in your Shaarli installation). To generate the HTML documentation locally, install a recent version of Python `setuptools` and run `make doc`.
diff --git a/doc/md/Server-configuration.md b/doc/md/Server-configuration.md
index 88eed8e6..bd293c37 100644
--- a/doc/md/Server-configuration.md
+++ b/doc/md/Server-configuration.md
@@ -28,12 +28,12 @@ Version | Status | Shaarli compatibility
28Extension | Required? | Usage 28Extension | Required? | Usage
29---|:---:|--- 29---|:---:|---
30[`openssl`](http://php.net/manual/en/book.openssl.php) | All | OpenSSL, HTTPS 30[`openssl`](http://php.net/manual/en/book.openssl.php) | All | OpenSSL, HTTPS
31[`php-json`](http://php.net/manual/en/book.json.php) | required | configuration parsing
31[`php-mbstring`](http://php.net/manual/en/book.mbstring.php) | CentOS, Fedora, RHEL, Windows, some hosting providers | multibyte (Unicode) string support 32[`php-mbstring`](http://php.net/manual/en/book.mbstring.php) | CentOS, Fedora, RHEL, Windows, some hosting providers | multibyte (Unicode) string support
32[`php-gd`](http://php.net/manual/en/book.image.php) | optional | required to use thumbnails 33[`php-gd`](http://php.net/manual/en/book.image.php) | optional | required to use thumbnails
33[`php-intl`](http://php.net/manual/en/book.intl.php) | optional | localized text sorting (e.g. `e->è->f`) 34[`php-intl`](http://php.net/manual/en/book.intl.php) | optional | localized text sorting (e.g. `e->è->f`)
34[`php-curl`](http://php.net/manual/en/book.curl.php) | optional | using cURL for fetching webpages and thumbnails in a more robust way 35[`php-curl`](http://php.net/manual/en/book.curl.php) | optional | using cURL for fetching webpages and thumbnails in a more robust way
35[`php-gettext`](http://php.net/manual/en/book.gettext.php) | optional | Use the translation system in gettext mode (faster) 36[`php-gettext`](http://php.net/manual/en/book.gettext.php) | optional | Use the translation system in gettext mode (faster)
36
37-------------------------------------------------------------------------------- 37--------------------------------------------------------------------------------
38 38
39### SSL/TLS configuration 39### SSL/TLS configuration
diff --git a/doc/md/Theming.md b/doc/md/Theming.md
index bd400776..eb84e11c 100644
--- a/doc/md/Theming.md
+++ b/doc/md/Theming.md
@@ -16,8 +16,6 @@ This file allows overriding rules defined in the template CSS files (only add ch
16 16
17**Note**: Do not edit `tpl/default/css/shaarli.css`! Your changes would be overridden when updating Shaarli. 17**Note**: Do not edit `tpl/default/css/shaarli.css`! Your changes would be overridden when updating Shaarli.
18 18
19See also [Download CSS styles from an OPML list](Download CSS styles from an OPML list)
20
21## Themes 19## Themes
22 20
23Installation: 21Installation:
diff --git a/doc/md/Troubleshooting.md b/doc/md/Troubleshooting.md
index 570f6956..01fd9840 100644
--- a/doc/md/Troubleshooting.md
+++ b/doc/md/Troubleshooting.md
@@ -1,64 +1,5 @@
1# Troubleshooting 1# Troubleshooting
2 2
3## Browser
4
5### Redirection issues (HTTP Referer)
6
7Depending on its configuration and installed plugins, the browser may remove or alter (spoof) HTTP referers, thus preventing Shaarli from properly redirecting between pages.
8
9See:
10
11- [HTTP referer](https://en.wikipedia.org/wiki/HTTP_referer) (Wikipedia)
12- [Improve online privacy by controlling referrer information](http://www.ghacks.net/2015/01/22/improve-online-privacy-by-controlling-referrer-information/)
13- [Better security, privacy and anonymity in Firefox](http://b.agilob.net/better-security-privacy-and-anonymity-in-firefox/)
14
15### Firefox HTTP Referer options
16
17HTTP settings are available by browsing `about:config`, here are the available settings and their values.
18
19`network.http.sendRefererHeader` - determines when to send the Referer HTTP header
20
21- `0`: Never send the referring URL
22 - not recommended, may break some sites
23- `1`: Send only on clicked links
24- `2` (default): Send for links and images
25
26`network.http.referer.XOriginPolicy` - Cross-domain origin policy
27
28- `0` (default): Always send
29- `1`: Send if base domains match
30- `2`: Send if hosts match
31
32`network.http.referer.spoofSource` - Referer spoofing (~faking)
33
34- `false` (default): real referer
35- `true`: spoof referer (use target URI as referer)
36 - known to break some functionality in Shaarli
37
38`network.http.referer.trimmingPolicy` - trim the URI not to send a full Referer
39
40- `0`: (default): send full URI
41- `1`: scheme+host+port+path
42- `2`: scheme+host+port
43
44### Firefox, localhost and redirections
45
46`localhost` is not a proper Fully Qualified Domain Name (FQDN); if Firefox has
47been set up to spoof referers, or only accept requests from the same base domain/host,
48Shaarli redirections will not work properly.
49
50To solve this, assign a local domain to your host, e.g.
51```
52127.0.0.1 localhost desktop localhost.lan
53::1 localhost desktop localhost.lan
54```
55
56and browse Shaarli at http://localhost.lan/.
57
58Related threads:
59- [What is localhost.localdomain for?](https://bbs.archlinux.org/viewtopic.php?id=156064)
60- [Stop returning to the first page after editing a bookmark from another page](https://github.com/shaarli/Shaarli/issues/311)
61
62## Login 3## Login
63 4
64### I forgot my password! 5### I forgot my password!
@@ -69,12 +10,19 @@ Delete the file `data/config.json.php` and display the page again. You will be a
69 10
70Login form is protected against brute force attacks: 4 failed logins will ban the IP address from login for 30 minutes. Banned IPs can still browse links. 11Login form is protected against brute force attacks: 4 failed logins will ban the IP address from login for 30 minutes. Banned IPs can still browse links.
71 12
72To remove the current IP bans, delete the file `data/ipbans.php` 13- To remove the current IP bans, delete the file `data/ipbans.php`
14- To list all login attempts, see `data/log.txt` (succesful/failed logins, bans/lifted bans)
73 15
74### List of all login attempts 16## Browser issues
75 17
76The file `data/log.txt` shows all logins (successful or failed) and bans/lifted bans. 18### Redirection issues (HTTP Referer)
77Search for `failed` in this file to look for unauthorized login attempts. 19
20Depending on its configuration and installed plugins, the browser may remove or alter (spoof) [HTTP referers](https://en.wikipedia.org/wiki/HTTP_referer), thus preventing Shaarli from properly redirecting between pages. Referer settings are available by browsing `about:config` and are documented [here](https://wiki.mozilla.org/Security/Referrer). `network.http.referer.spoofSource = true` in particular is known to break some functionality in Shaarli.
21
22### Firefox, localhost and redirections
23
24`localhost` is not a proper Fully Qualified Domain Name (FQDN); if Firefox has been set up to spoof referers, or only accept requests from the same base domain/host,
25Shaarli redirections will not work properly. To solve this, assign a local domain to your host, e.g. `localhost.lan` in your [hosts file](https://en.wikipedia.org/wiki/Hosts_(file)) and browse Shaarli at http://localhost.lan/.
78 26
79## Hosting problems 27## Hosting problems
80 28
@@ -123,6 +71,11 @@ This can be caused by several things:
123- You may be using OperaTurbo or OperaMini, which use their own proxies which may change from time to time. 71- You may be using OperaTurbo or OperaMini, which use their own proxies which may change from time to time.
124- If you have another application on the same webserver where Shaarli is installed, these application may forcefully expire php sessions. 72- If you have another application on the same webserver where Shaarli is installed, these application may forcefully expire php sessions.
125 73
74### Old apache versions, Internal Server Error
75
76If you hosting provider only provides apache 2.2 and no support for `mod_version`, `.htaccess` files may cause 500 errors (Internal Server Error). See [this workaround](https://github.com/shaarli/Shaarli/issues/1196#issuecomment-412271085).
77
126## Sessions do not seem to work correctly on your server 78## Sessions do not seem to work correctly on your server
127 79
128Follow the instructions in the error message. Make sure you are accessing shaarli via a direct IP address or a proper hostname. If you have **no dots** in the hostname (e.g. `localhost` or `http://my-webserver/shaarli/`), some browsers will not store cookies at all (this respects the [HTTP cookie specification](http://curl.haxx.se/rfc/cookie_spec.html)). 80Follow the instructions in the error message. Make sure you are accessing shaarli via a direct IP address or a proper hostname. If you have **no dots** in the hostname (e.g. `localhost` or `http://my-webserver/shaarli/`), some browsers will not store cookies at all (this respects the [HTTP cookie specification](http://curl.haxx.se/rfc/cookie_spec.html)).
81
diff --git a/doc/md/docker/shaarli-images.md b/doc/md/docker/shaarli-images.md
index 5948949a..14971d54 100644
--- a/doc/md/docker/shaarli-images.md
+++ b/doc/md/docker/shaarli-images.md
@@ -12,18 +12,12 @@ repository.
12- `master`: master branch 12- `master`: master branch
13- `stable`: stable branch 13- `stable`: stable branch
14 14
15The `latest` and `master` images rely on: 15The `latest`, `master` and `stable` images rely on:
16 16
17- [Alpine Linux](https://www.alpinelinux.org/) 17- [Alpine Linux](https://www.alpinelinux.org/)
18- [PHP7-FPM](http://php-fpm.org/) 18- [PHP7-FPM](http://php-fpm.org/)
19- [Nginx](http://nginx.org/) 19- [Nginx](http://nginx.org/)
20 20
21The `stable` image relies on:
22
23- [Debian 8 Jessie](https://hub.docker.com/_/debian/)
24- [PHP5-FPM](http://php-fpm.org/)
25- [Nginx](http://nginx.org/)
26
27Additional Dockerfiles are provided for the `arm32v7` platform, relying on 21Additional Dockerfiles are provided for the `arm32v7` platform, relying on
28[Linuxserver.io Alpine armhf 22[Linuxserver.io Alpine armhf
29images](https://hub.docker.com/r/lsiobase/alpine.armhf/). These images must be 23images](https://hub.docker.com/r/lsiobase/alpine.armhf/). These images must be
diff --git a/doc/md/guides/various-hacks.md b/doc/md/guides/various-hacks.md
index 0074ae9f..b3aa869d 100644
--- a/doc/md/guides/various-hacks.md
+++ b/doc/md/guides/various-hacks.md
@@ -28,6 +28,5 @@ php -r 'print(json_encode(unserialize(gzinflate(base64_decode(preg_replace("!.*/
28### See also 28### See also
29 29
30- [Add a new custom field to shaares (example patch)](https://gist.github.com/nodiscc/8b0194921f059d7b9ad89a581ecd482c) 30- [Add a new custom field to shaares (example patch)](https://gist.github.com/nodiscc/8b0194921f059d7b9ad89a581ecd482c)
31- [Download CSS styles for shaarlis listed in an opml file](https://gist.github.com/nodiscc/dede231c92cab22c3ad2cc24d5035012)
32- [Copy an existing Shaarli installation over SSH, and serve it locally](https://gist.github.com/nodiscc/ed161c66e5b028b5299b0a3733d01c77) 31- [Copy an existing Shaarli installation over SSH, and serve it locally](https://gist.github.com/nodiscc/ed161c66e5b028b5299b0a3733d01c77)
33- [Create multiple Shaarli instances, generate an HTML index of them](https://gist.github.com/nodiscc/52e711cda3bc47717c16065231cf6b20) 32- [Create multiple Shaarli instances, generate an HTML index of them](https://gist.github.com/nodiscc/52e711cda3bc47717c16065231cf6b20)
diff --git a/plugins/demo_plugin/demo_plugin.php b/plugins/demo_plugin/demo_plugin.php
index 71ba7495..8ae1b479 100644
--- a/plugins/demo_plugin/demo_plugin.php
+++ b/plugins/demo_plugin/demo_plugin.php
@@ -2,8 +2,8 @@
2/** 2/**
3 * Demo Plugin. 3 * Demo Plugin.
4 * 4 *
5 * This plugin try to cover Shaarli's plugin API entirely. 5 * This plugin tries to completely cover Shaarli's plugin API.
6 * Can be used by plugin developper to make their own. 6 * Can be used by plugin developers to make their own plugin.
7 */ 7 */
8 8
9/* 9/*
@@ -61,7 +61,7 @@ function demo_plugin_init($conf)
61 61
62/** 62/**
63 * Hook render_header. 63 * Hook render_header.
64 * Executed on every page redering. 64 * Executed on every page render.
65 * 65 *
66 * Template placeholders: 66 * Template placeholders:
67 * - buttons_toolbar 67 * - buttons_toolbar
@@ -145,7 +145,7 @@ function hook_demo_plugin_render_header($data)
145 145
146/** 146/**
147 * Hook render_includes. 147 * Hook render_includes.
148 * Executed on every page redering. 148 * Executed on every page render.
149 * 149 *
150 * Template placeholders: 150 * Template placeholders:
151 * - css_files 151 * - css_files
@@ -169,7 +169,7 @@ function hook_demo_plugin_render_includes($data)
169 169
170/** 170/**
171 * Hook render_footer. 171 * Hook render_footer.
172 * Executed on every page redering. 172 * Executed on every page render.
173 * 173 *
174 * Template placeholders: 174 * Template placeholders:
175 * - text 175 * - text
@@ -186,7 +186,7 @@ function hook_demo_plugin_render_includes($data)
186 */ 186 */
187function hook_demo_plugin_render_footer($data) 187function hook_demo_plugin_render_footer($data)
188{ 188{
189 // footer text 189 // Footer text
190 $data['text'][] = '<br>'. demo_plugin_t('Shaarli is now enhanced by the awesome demo_plugin.'); 190 $data['text'][] = '<br>'. demo_plugin_t('Shaarli is now enhanced by the awesome demo_plugin.');
191 191
192 // Free elements at the end of the page. 192 // Free elements at the end of the page.
@@ -277,7 +277,7 @@ function hook_demo_plugin_render_editlink($data)
277 // Load HTML into a string 277 // Load HTML into a string
278 $html = file_get_contents(PluginManager::$PLUGINS_PATH .'/demo_plugin/field.html'); 278 $html = file_get_contents(PluginManager::$PLUGINS_PATH .'/demo_plugin/field.html');
279 279
280 // replace value in HTML if it exists in $data 280 // Replace value in HTML if it exists in $data
281 if (!empty($data['link']['stuff'])) { 281 if (!empty($data['link']['stuff'])) {
282 $html = sprintf($html, $data['link']['stuff']); 282 $html = sprintf($html, $data['link']['stuff']);
283 } else { 283 } else {
@@ -324,9 +324,7 @@ function hook_demo_plugin_render_tools($data)
324 */ 324 */
325function hook_demo_plugin_render_picwall($data) 325function hook_demo_plugin_render_picwall($data)
326{ 326{
327 // plugin_start_zone
328 $data['plugin_start_zone'][] = '<center>BEFORE</center>'; 327 $data['plugin_start_zone'][] = '<center>BEFORE</center>';
329 // plugin_end_zone
330 $data['plugin_end_zone'][] = '<center>AFTER</center>'; 328 $data['plugin_end_zone'][] = '<center>AFTER</center>';
331 329
332 return $data; 330 return $data;
@@ -348,9 +346,7 @@ function hook_demo_plugin_render_picwall($data)
348 */ 346 */
349function hook_demo_plugin_render_tagcloud($data) 347function hook_demo_plugin_render_tagcloud($data)
350{ 348{
351 // plugin_start_zone
352 $data['plugin_start_zone'][] = '<center>BEFORE</center>'; 349 $data['plugin_start_zone'][] = '<center>BEFORE</center>';
353 // plugin_end_zone
354 $data['plugin_end_zone'][] = '<center>AFTER</center>'; 350 $data['plugin_end_zone'][] = '<center>AFTER</center>';
355 351
356 return $data; 352 return $data;
@@ -372,9 +368,7 @@ function hook_demo_plugin_render_tagcloud($data)
372 */ 368 */
373function hook_demo_plugin_render_daily($data) 369function hook_demo_plugin_render_daily($data)
374{ 370{
375 // plugin_start_zone
376 $data['plugin_start_zone'][] = '<center>BEFORE</center>'; 371 $data['plugin_start_zone'][] = '<center>BEFORE</center>';
377 // plugin_end_zone
378 $data['plugin_end_zone'][] = '<center>AFTER</center>'; 372 $data['plugin_end_zone'][] = '<center>AFTER</center>';
379 373
380 374
@@ -465,7 +459,8 @@ function hook_demo_plugin_render_feed($data)
465 */ 459 */
466function hook_demo_plugin_save_plugin_parameters($data) 460function hook_demo_plugin_save_plugin_parameters($data)
467{ 461{
468 // Here we edit the provided value, but we can use this to generate config files, etc. 462 // Here we edit the provided value.
463 // This hook can also be used to generate config files, etc.
469 if (! empty($data['DEMO_PLUGIN_PARAMETER']) && ! endsWith($data['DEMO_PLUGIN_PARAMETER'], '_SUFFIX')) { 464 if (! empty($data['DEMO_PLUGIN_PARAMETER']) && ! endsWith($data['DEMO_PLUGIN_PARAMETER'], '_SUFFIX')) {
470 $data['DEMO_PLUGIN_PARAMETER'] .= '_SUFFIX'; 465 $data['DEMO_PLUGIN_PARAMETER'] .= '_SUFFIX';
471 } 466 }
diff --git a/tpl/default/includes.html b/tpl/default/includes.html
index 6c30d1bf..428b8ee2 100644
--- a/tpl/default/includes.html
+++ b/tpl/default/includes.html
@@ -22,12 +22,12 @@
22 <meta property="og:url" content="{$index_url}?{$link.shorturl}" /> 22 <meta property="og:url" content="{$index_url}?{$link.shorturl}" />
23 {$ogDescription=isset($link.description_src) ? $link.description_src : $link.description} 23 {$ogDescription=isset($link.description_src) ? $link.description_src : $link.description}
24 <meta property="og:description" content="{function="substr(strip_tags($ogDescription), 0, 300)"}" /> 24 <meta property="og:description" content="{function="substr(strip_tags($ogDescription), 0, 300)"}" />
25 {if="$link.thumbnail"} 25 {if="!empty($link.thumbnail)"}
26 <meta property="og:image" content="{$index_url}{$link.thumbnail}" /> 26 <meta property="og:image" content="{$index_url}{$link.thumbnail}" />
27 {/if} 27 {/if}
28 {if="!$hide_timestamps || $is_logged_in"} 28 {if="!$hide_timestamps || $is_logged_in"}
29 <meta property="article:published_time" content="{$link.created->format(DateTime::ATOM)}" /> 29 <meta property="article:published_time" content="{$link.created->format(DateTime::ATOM)}" />
30 {if="$link.updated"} 30 {if="!empty($link.updated)"}
31 <meta property="article:modified_time" content="{$link.updated->format(DateTime::ATOM)}" /> 31 <meta property="article:modified_time" content="{$link.updated->format(DateTime::ATOM)}" />
32 {/if} 32 {/if}
33 {/if} 33 {/if}
diff --git a/tpl/vintage/includes.html b/tpl/vintage/includes.html
index 2efb6b10..1c4ff79c 100644
--- a/tpl/vintage/includes.html
+++ b/tpl/vintage/includes.html
@@ -19,12 +19,12 @@
19 <meta property="og:url" content="{$index_url}?{$link.shorturl}" /> 19 <meta property="og:url" content="{$index_url}?{$link.shorturl}" />
20 {$ogDescription=isset($link.description_src) ? $link.description_src : $link.description} 20 {$ogDescription=isset($link.description_src) ? $link.description_src : $link.description}
21 <meta property="og:description" content="{function="mb_substr(strip_tags($ogDescription), 0, 300)"}" /> 21 <meta property="og:description" content="{function="mb_substr(strip_tags($ogDescription), 0, 300)"}" />
22 {if="$link.thumbnail"} 22 {if="!empty($link.thumbnail)"}
23 <meta property="og:image" content="{$index_url}{$link.thumbnail}" /> 23 <meta property="og:image" content="{$index_url}{$link.thumbnail}" />
24 {/if} 24 {/if}
25 {if="!$hide_timestamps || $is_logged_in"} 25 {if="!$hide_timestamps || $is_logged_in"}
26 <meta property="article:published_time" content="{$link.created->format(DateTime::ATOM)}" /> 26 <meta property="article:published_time" content="{$link.created->format(DateTime::ATOM)}" />
27 {if="$link.updated"} 27 {if="!empty($link.updated)"}
28 <meta property="article:modified_time" content="{$link.updated->format(DateTime::ATOM)}" /> 28 <meta property="article:modified_time" content="{$link.updated->format(DateTime::ATOM)}" />
29 {/if} 29 {/if}
30 {/if} 30 {/if}
diff --git a/yarn.lock b/yarn.lock
index 1aa94f42..96f854c1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3428,9 +3428,9 @@ lodash.uniq@^4.5.0:
3428 integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= 3428 integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
3429 3429
3430lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.3.0, lodash@~4.17.10: 3430lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.3.0, lodash@~4.17.10:
3431 version "4.17.11" 3431 version "4.17.15"
3432 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" 3432 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
3433 integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== 3433 integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
3434 3434
3435longest@^1.0.1: 3435longest@^1.0.1:
3436 version "1.0.1" 3436 version "1.0.1"
@@ -3631,9 +3631,9 @@ minizlib@^1.1.1:
3631 minipass "^2.2.1" 3631 minipass "^2.2.1"
3632 3632
3633mixin-deep@^1.2.0: 3633mixin-deep@^1.2.0:
3634 version "1.3.1" 3634 version "1.3.2"
3635 resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" 3635 resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
3636 integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== 3636 integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
3637 dependencies: 3637 dependencies:
3638 for-in "^1.0.2" 3638 for-in "^1.0.2"
3639 is-extendable "^1.0.1" 3639 is-extendable "^1.0.1"