diff options
-rw-r--r-- | application/Thumbnailer.php | 1 | ||||
-rw-r--r-- | application/feed/FeedBuilder.php | 2 | ||||
-rw-r--r-- | doc/md/Community-&-Related-software.md | 3 | ||||
-rw-r--r-- | doc/md/Continuous-integration-tools.md | 3 | ||||
-rw-r--r-- | doc/md/Server-configuration.md | 2 | ||||
-rw-r--r-- | doc/md/Theming.md | 2 | ||||
-rw-r--r-- | doc/md/Troubleshooting.md | 79 | ||||
-rw-r--r-- | doc/md/docker/shaarli-images.md | 8 | ||||
-rw-r--r-- | doc/md/guides/various-hacks.md | 1 | ||||
-rw-r--r-- | plugins/demo_plugin/demo_plugin.php | 23 | ||||
-rw-r--r-- | tpl/default/includes.html | 4 | ||||
-rw-r--r-- | tpl/vintage/includes.html | 4 | ||||
-rw-r--r-- | yarn.lock | 12 |
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>— ' . $permalink; | 160 | $link['description'] .= PHP_EOL . PHP_EOL . '<br>— ' . $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 | |||
28 | Extension | Required? | Usage | 28 | Extension | 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 | ||
19 | See also [Download CSS styles from an OPML list](Download CSS styles from an OPML list) | ||
20 | |||
21 | ## Themes | 19 | ## Themes |
22 | 20 | ||
23 | Installation: | 21 | Installation: |
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 | |||
7 | Depending on its configuration and installed plugins, the browser may remove or alter (spoof) HTTP referers, thus preventing Shaarli from properly redirecting between pages. | ||
8 | |||
9 | See: | ||
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 | |||
17 | HTTP 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 | ||
47 | been set up to spoof referers, or only accept requests from the same base domain/host, | ||
48 | Shaarli redirections will not work properly. | ||
49 | |||
50 | To solve this, assign a local domain to your host, e.g. | ||
51 | ``` | ||
52 | 127.0.0.1 localhost desktop localhost.lan | ||
53 | ::1 localhost desktop localhost.lan | ||
54 | ``` | ||
55 | |||
56 | and browse Shaarli at http://localhost.lan/. | ||
57 | |||
58 | Related 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 | ||
70 | Login 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. | 11 | Login 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 | ||
72 | To 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 | ||
76 | The file `data/log.txt` shows all logins (successful or failed) and bans/lifted bans. | 18 | ### Redirection issues (HTTP Referer) |
77 | Search for `failed` in this file to look for unauthorized login attempts. | 19 | |
20 | Depending 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, | ||
25 | Shaarli 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 | |||
76 | If 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 | ||
128 | Follow 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)). | 80 | Follow 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 | ||
15 | The `latest` and `master` images rely on: | 15 | The `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 | ||
21 | The `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 | |||
27 | Additional Dockerfiles are provided for the `arm32v7` platform, relying on | 21 | Additional Dockerfiles are provided for the `arm32v7` platform, relying on |
28 | [Linuxserver.io Alpine armhf | 22 | [Linuxserver.io Alpine armhf |
29 | images](https://hub.docker.com/r/lsiobase/alpine.armhf/). These images must be | 23 | images](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 | */ |
187 | function hook_demo_plugin_render_footer($data) | 187 | function 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 | */ |
325 | function hook_demo_plugin_render_picwall($data) | 325 | function 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 | */ |
349 | function hook_demo_plugin_render_tagcloud($data) | 347 | function 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 | */ |
373 | function hook_demo_plugin_render_daily($data) | 369 | function 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 | */ |
466 | function hook_demo_plugin_save_plugin_parameters($data) | 460 | function 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} |
@@ -3428,9 +3428,9 @@ lodash.uniq@^4.5.0: | |||
3428 | integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= | 3428 | integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= |
3429 | 3429 | ||
3430 | lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.3.0, lodash@~4.17.10: | 3430 | lodash@^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 | ||
3435 | longest@^1.0.1: | 3435 | longest@^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 | ||
3633 | mixin-deep@^1.2.0: | 3633 | mixin-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" |