diff options
author | ArthurHoaro <arthur@hoa.ro> | 2017-05-07 18:45:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-07 18:45:02 +0200 |
commit | 510f7233006e9ea2e0d653049e2ff62537a4fda8 (patch) | |
tree | 90af6fbddda19c22c1bd21e2fc6ed135116cce48 | |
parent | f501caed215bd12caced5106f9226638b2b15fb4 (diff) | |
parent | b230bf207df576fa2ad165702184edf21f674ce7 (diff) | |
download | Shaarli-510f7233006e9ea2e0d653049e2ff62537a4fda8.tar.gz Shaarli-510f7233006e9ea2e0d653049e2ff62537a4fda8.tar.zst Shaarli-510f7233006e9ea2e0d653049e2ff62537a4fda8.zip |
Merge pull request #863 from ArthurHoaro/v0.9.0
Bump version to v0.9.0
56 files changed, 1090 insertions, 135 deletions
@@ -1,11 +1,11 @@ | |||
1 | 327 ArthurHoaro <arthur@hoa.ro> | 1 | 472 ArthurHoaro <arthur@hoa.ro> |
2 | 188 VirtualTam <virtualtam@flibidi.net> | 2 | 201 VirtualTam <virtualtam@flibidi.net> |
3 | 132 nodiscc <nodiscc@gmail.com> | 3 | 132 nodiscc <nodiscc@gmail.com> |
4 | 56 Sébastien Sauvage <sebsauvage@sebsauvage.net> | 4 | 56 Sébastien Sauvage <sebsauvage@sebsauvage.net> |
5 | 15 Florian Eula <eula.florian@gmail.com> | 5 | 15 Florian Eula <eula.florian@gmail.com> |
6 | 13 Emilien Klein <emilien@klein.st> | 6 | 13 Emilien Klein <emilien@klein.st> |
7 | 12 Nicolas Danelon <hi@nicolasmd.com.ar> | 7 | 12 Nicolas Danelon <hi@nicolasmd.com.ar> |
8 | 7 Christophe HENRY <christophe.henry@sbgodin.fr> | 8 | 8 Christophe HENRY <christophe.henry@sbgodin.fr> |
9 | 4 Alexandre Alapetite <alexandre@alapetite.fr> | 9 | 4 Alexandre Alapetite <alexandre@alapetite.fr> |
10 | 4 David Sferruzza <david.sferruzza@gmail.com> | 10 | 4 David Sferruzza <david.sferruzza@gmail.com> |
11 | 3 Teromene <teromene@teromene.fr> | 11 | 3 Teromene <teromene@teromene.fr> |
@@ -38,3 +38,4 @@ | |||
38 | 1 Sbgodin <Sbgodin@users.noreply.github.com> | 38 | 1 Sbgodin <Sbgodin@users.noreply.github.com> |
39 | 1 TsT <tst2005@gmail.com> | 39 | 1 TsT <tst2005@gmail.com> |
40 | 1 dimtion <zizou.xena@gmail.com> | 40 | 1 dimtion <zizou.xena@gmail.com> |
41 | 1 philipp-r <philipp-r@users.noreply.github.com> | ||
diff --git a/doc/3rd-party-libraries.html b/doc/3rd-party-libraries.html index 946ca037..50aba6c0 100644 --- a/doc/3rd-party-libraries.html +++ b/doc/3rd-party-libraries.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Backup,-restore,-import-and-export.html b/doc/Backup,-restore,-import-and-export.html index a4a48ad7..3c168824 100644 --- a/doc/Backup,-restore,-import-and-export.html +++ b/doc/Backup,-restore,-import-and-export.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Browsing-and-searching.html b/doc/Browsing-and-searching.html index 23001bcb..ef5b5245 100644 --- a/doc/Browsing-and-searching.html +++ b/doc/Browsing-and-searching.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
@@ -64,7 +66,6 @@ | |||
64 | </div> | 66 | </div> |
65 | <h1 id="browsing-and-searching">Browsing and searching</h1> | 67 | <h1 id="browsing-and-searching">Browsing and searching</h1> |
66 | <h1 id="browsing-and-searching-1">Browsing and Searching</h1> | 68 | <h1 id="browsing-and-searching-1">Browsing and Searching</h1> |
67 | <p>Status: DRAFT</p> | ||
68 | <p><embed src="(http://pix.toile-libre.org/upload/original/1455571378.png).html" /></p> | 69 | <p><embed src="(http://pix.toile-libre.org/upload/original/1455571378.png).html" /></p> |
69 | <h2 id="plain-text-search">Plain text search</h2> | 70 | <h2 id="plain-text-search">Plain text search</h2> |
70 | <p>Use the <code>Search text</code> field to search in <em>any</em> of the fields of all links (Title, URL, Description...)</p> | 71 | <p>Use the <code>Search text</code> field to search in <em>any</em> of the fields of all links (Title, URL, Description...)</p> |
@@ -75,6 +76,7 @@ | |||
75 | <p>Use the <code>Filter by tags</code> field to restrict displayed links to entries tagged with one or multiple tags (use space to separate tags).</p> | 76 | <p>Use the <code>Filter by tags</code> field to restrict displayed links to entries tagged with one or multiple tags (use space to separate tags).</p> |
76 | <p><strong>Hidden tags:</strong> Tags starting with a dot <code>.</code> (example <code>.secret</code>) are private. They can only be seen and searched when logged in.</p> | 77 | <p><strong>Hidden tags:</strong> Tags starting with a dot <code>.</code> (example <code>.secret</code>) are private. They can only be seen and searched when logged in.</p> |
77 | <p>Alternatively you can use the <code>Tag cloud</code> to discover all tags and click on any of them to display related links.</p> | 78 | <p>Alternatively you can use the <code>Tag cloud</code> to discover all tags and click on any of them to display related links.</p> |
79 | <p>To search for links that are not tagged, enter <code>""</code> in the tag search field.</p> | ||
78 | <h2 id="filtering-rss-feedspicture-wall">Filtering RSS feeds/Picture wall</h2> | 80 | <h2 id="filtering-rss-feedspicture-wall">Filtering RSS feeds/Picture wall</h2> |
79 | <p>RSS feeds can also be restricted to only return items matching a text/tag search: see <a href="RSS-feeds.html">RSS feeds</a>.</p> | 81 | <p>RSS feeds can also be restricted to only return items matching a text/tag search: see <a href="RSS-feeds.html">RSS feeds</a>.</p> |
80 | </body> | 82 | </body> |
diff --git a/doc/Browsing-and-searching.md b/doc/Browsing-and-searching.md index 187fe447..854b6b60 100644 --- a/doc/Browsing-and-searching.md +++ b/doc/Browsing-and-searching.md | |||
@@ -1,8 +1,6 @@ | |||
1 | #Browsing and searching | 1 | #Browsing and searching |
2 | # Browsing and Searching | 2 | # Browsing and Searching |
3 | 3 | ||
4 | Status: DRAFT | ||
5 | |||
6 | ![(http://pix.toile-libre.org/upload/original/1455571378.png)]((http://pix.toile-libre.org/upload/original/1455571378.png).html) | 4 | ![(http://pix.toile-libre.org/upload/original/1455571378.png)]((http://pix.toile-libre.org/upload/original/1455571378.png).html) |
7 | 5 | ||
8 | ## Plain text search | 6 | ## Plain text search |
@@ -23,6 +21,8 @@ Use the `Filter by tags` field to restrict displayed links to entries tagged wit | |||
23 | 21 | ||
24 | Alternatively you can use the `Tag cloud` to discover all tags and click on any of them to display related links. | 22 | Alternatively you can use the `Tag cloud` to discover all tags and click on any of them to display related links. |
25 | 23 | ||
24 | To search for links that are not tagged, enter `""` in the tag search field. | ||
25 | |||
26 | ## Filtering RSS feeds/Picture wall | 26 | ## Filtering RSS feeds/Picture wall |
27 | 27 | ||
28 | RSS feeds can also be restricted to only return items matching a text/tag search: see [RSS feeds](RSS-feeds.html). | 28 | RSS feeds can also be restricted to only return items matching a text/tag search: see [RSS feeds](RSS-feeds.html). |
diff --git a/doc/Coding-guidelines.html b/doc/Coding-guidelines.html index 1a2a9351..8df12182 100644 --- a/doc/Coding-guidelines.html +++ b/doc/Coding-guidelines.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Community-&-Related-software.html b/doc/Community-&-Related-software.html index cbc73d54..28b96185 100644 --- a/doc/Community-&-Related-software.html +++ b/doc/Community-&-Related-software.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
@@ -77,12 +79,20 @@ | |||
77 | <li><a href="http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history">Original revisions history</a><a href=".html"></a></li> | 79 | <li><a href="http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history">Original revisions history</a><a href=".html"></a></li> |
78 | <li><a href="https://www.shaarli.fr/my.php">Shaarli.fr/my</a> - Unofficial, unsupported (old fork) hosted Shaarlis provider, courtesy of <a href="https://github.com/DMeloni">DMeloni</a><a href=".html"></a></li> | 80 | <li><a href="https://www.shaarli.fr/my.php">Shaarli.fr/my</a> - Unofficial, unsupported (old fork) hosted Shaarlis provider, courtesy of <a href="https://github.com/DMeloni">DMeloni</a><a href=".html"></a></li> |
79 | </ul> | 81 | </ul> |
82 | <h3 id="articles-and-social-media-discussions">Articles and social media discussions</h3> | ||
83 | <ul> | ||
84 | <li>2016-09-22 - Hacker News - <a href="https://news.ycombinator.com/item?id=12552176" class="uri">https://news.ycombinator.com/item?id=12552176</a></li> | ||
85 | <li>2015-08-15 - Reddit - <a href="https://www.reddit.com/r/selfhosted/comments/3h3zwh/question_about_migrating_from_wordpress_to_shaarli/">Question about migrating from WordPress to Shaarli.</a><a href=".html"></a></li> | ||
86 | <li>2015-06-22 - Hacker News - <a href="https://news.ycombinator.com/item?id=9755366" class="uri">https://news.ycombinator.com/item?id=9755366</a></li> | ||
87 | <li>2015-05-12 - Reddit - <a href="https://www.reddit.com/r/selfhosted/comments/35pkkc/shaarli_self_hosted_bookmarking_delicious_php/">shaarli - Self hosted Bookmarking / Delicious (PHP, MySQL)</a><a href=".html"></a></li> | ||
88 | </ul> | ||
80 | <h3 id="third-party-plugins">Third party plugins</h3> | 89 | <h3 id="third-party-plugins">Third party plugins</h3> |
81 | <ul> | 90 | <ul> |
82 | <li><a href="https://github.com/kalvn/shaarli-plugin-autosave">autosave</a> by <a href="https://github.com/kalvn">@kalvn</a>: Automatically saves data when editing a link to avoid any loss in case of crash or unexpected shutdown.<a href=".html"></a></li> | 91 | <li><a href="https://github.com/kalvn/shaarli-plugin-autosave">autosave</a> by <a href="https://github.com/kalvn">@kalvn</a>: Automatically saves data when editing a link to avoid any loss in case of crash or unexpected shutdown.<a href=".html"></a></li> |
83 | <li><a href="https://github.com/ArthurHoaro/code-coloration">Code Coloration</a> by <a href="https://github.com/ArthurHoaro">@ArthurHoaro</a>: client side code syntax highlighter.<a href=".html"></a></li> | 92 | <li><a href="https://github.com/ArthurHoaro/code-coloration">Code Coloration</a> by <a href="https://github.com/ArthurHoaro">@ArthurHoaro</a>: client side code syntax highlighter.<a href=".html"></a></li> |
84 | <li><a href="https://github.com/kalvn/shaarli-plugin-disqus">Disqus</a> by <a href="https://github.com/kalvn">@kalvn</a>: Adds Disqus comment system to your Shaarli.<a href=".html"></a></li> | 93 | <li><a href="https://github.com/kalvn/shaarli-plugin-disqus">Disqus</a> by <a href="https://github.com/kalvn">@kalvn</a>: Adds Disqus comment system to your Shaarli.<a href=".html"></a></li> |
85 | <li><a href="https://github.com/NerosTie/emojione">emojione</a> by <a href="https://github.com/NerosTie">@NerosTie</a>: Add colorful emojis to your Shaarli.<a href=".html"></a></li> | 94 | <li><a href="https://github.com/NerosTie/emojione">emojione</a> by <a href="https://github.com/NerosTie">@NerosTie</a>: Add colorful emojis to your Shaarli.<a href=".html"></a></li> |
95 | <li><a href="https://github.com/ericjuden/Shaarli-Google-Analytics-Plugin">google analytics</a> by <a href="http://github.com/ericjuden">@ericjuden</a>: Adds Google Analytics tracking support<a href=".html"></a></li> | ||
86 | <li><a href="https://github.com/ArthurHoaro/launch-plugin">launch</a> - Launch Plugin is a plugin designed to enhance and customize Launch Theme for Shaarli.<a href=".html"></a></li> | 96 | <li><a href="https://github.com/ArthurHoaro/launch-plugin">launch</a> - Launch Plugin is a plugin designed to enhance and customize Launch Theme for Shaarli.<a href=".html"></a></li> |
87 | <li><a href="https://github.com/alexisju/social">social</a> by <a href="https://github.com/alexisju">@alexisju</a>: share links to social networks.<a href=".html"></a></li> | 97 | <li><a href="https://github.com/alexisju/social">social</a> by <a href="https://github.com/alexisju">@alexisju</a>: share links to social networks.<a href=".html"></a></li> |
88 | <li><a href="https://github.com/ArthurHoaro/shaarli2twitter">shaarli2twitter</a> by <a href="https://github.com/ArthurHoaro">@ArthurHoaro</a> - Automatically tweet your shared links from Shaarli<a href=".html"></a></li> | 98 | <li><a href="https://github.com/ArthurHoaro/shaarli2twitter">shaarli2twitter</a> by <a href="https://github.com/ArthurHoaro">@ArthurHoaro</a> - Automatically tweet your shared links from Shaarli<a href=".html"></a></li> |
diff --git a/doc/Community-&-Related-software.md b/doc/Community-&-Related-software.md index 291bf643..52123a1e 100644 --- a/doc/Community-&-Related-software.md +++ b/doc/Community-&-Related-software.md | |||
@@ -14,6 +14,11 @@ _TODO: contact repos owners to see if they'd like to standardize their work with | |||
14 | - [Original revisions history](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history)[](.html) | 14 | - [Original revisions history](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history)[](.html) |
15 | - [Shaarli.fr/my](https://www.shaarli.fr/my.php) - Unofficial, unsupported (old fork) hosted Shaarlis provider, courtesy of [DMeloni](https://github.com/DMeloni)[](.html) | 15 | - [Shaarli.fr/my](https://www.shaarli.fr/my.php) - Unofficial, unsupported (old fork) hosted Shaarlis provider, courtesy of [DMeloni](https://github.com/DMeloni)[](.html) |
16 | 16 | ||
17 | ### Articles and social media discussions | ||
18 | - 2016-09-22 - Hacker News - https://news.ycombinator.com/item?id=12552176 | ||
19 | - 2015-08-15 - Reddit - [Question about migrating from WordPress to Shaarli.](https://www.reddit.com/r/selfhosted/comments/3h3zwh/question_about_migrating_from_wordpress_to_shaarli/)[](.html) | ||
20 | - 2015-06-22 - Hacker News - https://news.ycombinator.com/item?id=9755366 | ||
21 | - 2015-05-12 - Reddit - [shaarli - Self hosted Bookmarking / Delicious (PHP, MySQL)](https://www.reddit.com/r/selfhosted/comments/35pkkc/shaarli_self_hosted_bookmarking_delicious_php/)[](.html) | ||
17 | 22 | ||
18 | ### Third party plugins | 23 | ### Third party plugins |
19 | 24 | ||
@@ -22,6 +27,7 @@ _TODO: contact repos owners to see if they'd like to standardize their work with | |||
22 | * [Code Coloration](https://github.com/ArthurHoaro/code-coloration) by [@ArthurHoaro](https://github.com/ArthurHoaro): client side code syntax highlighter.[](.html) | 27 | * [Code Coloration](https://github.com/ArthurHoaro/code-coloration) by [@ArthurHoaro](https://github.com/ArthurHoaro): client side code syntax highlighter.[](.html) |
23 | * [Disqus](https://github.com/kalvn/shaarli-plugin-disqus) by [@kalvn](https://github.com/kalvn): Adds Disqus comment system to your Shaarli.[](.html) | 28 | * [Disqus](https://github.com/kalvn/shaarli-plugin-disqus) by [@kalvn](https://github.com/kalvn): Adds Disqus comment system to your Shaarli.[](.html) |
24 | * [emojione](https://github.com/NerosTie/emojione) by [@NerosTie](https://github.com/NerosTie): Add colorful emojis to your Shaarli.[](.html) | 29 | * [emojione](https://github.com/NerosTie/emojione) by [@NerosTie](https://github.com/NerosTie): Add colorful emojis to your Shaarli.[](.html) |
30 | * [google analytics](https://github.com/ericjuden/Shaarli-Google-Analytics-Plugin) by [@ericjuden](http://github.com/ericjuden): Adds Google Analytics tracking support[](.html) | ||
25 | * [launch](https://github.com/ArthurHoaro/launch-plugin) - Launch Plugin is a plugin designed to enhance and customize Launch Theme for Shaarli.[](.html) | 31 | * [launch](https://github.com/ArthurHoaro/launch-plugin) - Launch Plugin is a plugin designed to enhance and customize Launch Theme for Shaarli.[](.html) |
26 | * [social](https://github.com/alexisju/social) by [@alexisju](https://github.com/alexisju): share links to social networks.[](.html) | 32 | * [social](https://github.com/alexisju/social) by [@alexisju](https://github.com/alexisju): share links to social networks.[](.html) |
27 | * [shaarli2twitter](https://github.com/ArthurHoaro/shaarli2twitter) by [@ArthurHoaro](https://github.com/ArthurHoaro) - Automatically tweet your shared links from Shaarli[](.html) | 33 | * [shaarli2twitter](https://github.com/ArthurHoaro/shaarli2twitter) by [@ArthurHoaro](https://github.com/ArthurHoaro) - Automatically tweet your shared links from Shaarli[](.html) |
diff --git a/doc/Copy-an-existing-installation-over-SSH-and-serve-it-locally.html b/doc/Copy-an-existing-installation-over-SSH-and-serve-it-locally.html index 9efb1ad6..d6b76add 100644 --- a/doc/Copy-an-existing-installation-over-SSH-and-serve-it-locally.html +++ b/doc/Copy-an-existing-installation-over-SSH-and-serve-it-locally.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Create-and-serve-multiple-Shaarlis-(farm).html b/doc/Create-and-serve-multiple-Shaarlis-(farm).html index 672e4bf3..0be81d56 100644 --- a/doc/Create-and-serve-multiple-Shaarlis-(farm).html +++ b/doc/Create-and-serve-multiple-Shaarlis-(farm).html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Datastore-hacks.html b/doc/Datastore-hacks.html index 15da09d4..ef3e17bb 100644 --- a/doc/Datastore-hacks.html +++ b/doc/Datastore-hacks.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Development.html b/doc/Development.html index c5776413..8a2be413 100644 --- a/doc/Development.html +++ b/doc/Development.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Directory-structure.html b/doc/Directory-structure.html index 404ff7c8..3f75db8e 100644 --- a/doc/Directory-structure.html +++ b/doc/Directory-structure.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
@@ -101,33 +103,33 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
101 | </div> | 103 | </div> |
102 | <h1 id="directory-structure">Directory structure</h1> | 104 | <h1 id="directory-structure">Directory structure</h1> |
103 | <p>Here is the directory structure of Shaarli and the purpose of the different files:</p> | 105 | <p>Here is the directory structure of Shaarli and the purpose of the different files:</p> |
104 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"> <span class="ex">index.php</span> <span class="co"># Main program</span> | 106 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"> <span class="ex">index.php</span> # Main program |
105 | <span class="ex">application/</span> <span class="co"># Shaarli classes</span> | 107 | <span class="ex">application/</span> # Shaarli classes |
106 | ├── <span class="ex">LinkDB.php</span> | 108 | ├── <span class="ex">LinkDB.php</span> |
107 | └── <span class="ex">Utils.php</span> | 109 | └── <span class="ex">Utils.php</span> |
108 | <span class="ex">tests/</span> <span class="co"># Shaarli unitary & functional tests</span> | 110 | <span class="ex">tests/</span> # Shaarli unitary <span class="kw">&</span> <span class="ex">functional</span> tests |
109 | ├── <span class="ex">LinkDBTest.php</span> | 111 | ├── <span class="ex">LinkDBTest.php</span> |
110 | ├── <span class="ex">utils</span> <span class="co"># utilities to ease testing</span> | 112 | ├── <span class="ex">utils</span> # utilities to ease testing |
111 | │ └── <span class="ex">ReferenceLinkDB.php</span> | 113 | │ └── <span class="ex">ReferenceLinkDB.php</span> |
112 | └── <span class="ex">UtilsTest.php</span> | 114 | └── <span class="ex">UtilsTest.php</span> |
113 | <span class="ex">COPYING</span> <span class="co"># Shaarli license</span> | 115 | <span class="ex">COPYING</span> # Shaarli license |
114 | <span class="ex">inc/</span> <span class="co"># static assets and 3rd party libraries</span> | 116 | <span class="ex">inc/</span> # static assets and 3rd party libraries |
115 | ├── <span class="ex">awesomplete.*</span> <span class="co"># tags autocompletion library</span> | 117 | ├── <span class="ex">awesomplete.*</span> # tags autocompletion library |
116 | ├── <span class="ex">blazy.*</span> <span class="co"># picture wall lazy image loading library</span> | 118 | ├── <span class="ex">blazy.*</span> # picture wall lazy image loading library |
117 | ├── <span class="ex">shaarli.css</span>, reset.css <span class="co"># Shaarli stylesheet.</span> | 119 | ├── <span class="ex">shaarli.css</span>, reset.css <span class="co"># Shaarli stylesheet.</span> |
118 | ├── <span class="ex">qr.*</span> <span class="co"># qr code generation library</span> | 120 | ├── <span class="ex">qr.*</span> # qr code generation library |
119 | └──<span class="ex">rain.tpl.class.php</span> <span class="co"># RainTPL templating library</span> | 121 | └──<span class="ex">rain.tpl.class.php</span> # RainTPL templating library |
120 | <span class="ex">tpl/</span> <span class="co"># RainTPL templates for Shaarli. They are used to build the pages.</span> | 122 | <span class="ex">tpl/</span> # RainTPL templates for Shaarli. They are used to build the pages. |
121 | <span class="ex">images/</span> <span class="co"># Images and icons used in Shaarli</span> | 123 | <span class="ex">images/</span> # Images and icons used in Shaarli |
122 | <span class="ex">data/</span> <span class="co"># data storage: bookmark database, configuration, logs, banlist…</span> | 124 | <span class="ex">data/</span> # data storage: bookmark database, configuration, logs, banlist… |
123 | ├── <span class="ex">config.php</span> <span class="co"># Shaarli configuration (login, password, timezone, title…)</span> | 125 | ├── <span class="ex">config.php</span> # Shaarli configuration (login, password, timezone, title…) |
124 | ├── <span class="ex">datastore.php</span> <span class="co"># Your link database (compressed).</span> | 126 | ├── <span class="ex">datastore.php</span> # Your link database (compressed)<span class="ex">.</span> |
125 | ├── <span class="ex">ipban.php</span> <span class="co"># IP address ban system data</span> | 127 | ├── <span class="ex">ipban.php</span> # IP address ban system data |
126 | ├── <span class="ex">lastupdatecheck.txt</span> <span class="co"># Update check timestamp file</span> | 128 | ├── <span class="ex">lastupdatecheck.txt</span> # Update check timestamp file |
127 | └──<span class="ex">log.txt</span> <span class="co"># login/IPban log.</span> | 129 | └──<span class="ex">log.txt</span> # login/IPban log. |
128 | <span class="ex">cache/</span> <span class="co"># thumbnails cache</span> | 130 | <span class="ex">cache/</span> # thumbnails cache |
129 | <span class="co"># This directory is automatically created. You can erase it anytime you want.</span> | 131 | <span class="co"># This directory is automatically created. You can erase it anytime you want.</span> |
130 | <span class="ex">tmp/</span> <span class="co"># Temporary directory for compiled RainTPL templates.</span> | 132 | <span class="ex">tmp/</span> # Temporary directory for compiled RainTPL templates. |
131 | <span class="co"># This directory is automatically created. You can erase it anytime you want.</span></code></pre></div> | 133 | <span class="co"># This directory is automatically created. You can erase it anytime you want.</span></code></pre></div> |
132 | </body> | 134 | </body> |
133 | </html> | 135 | </html> |
diff --git a/doc/Docker.html b/doc/Docker.html index e89c90fb..fd0dec4b 100644 --- a/doc/Docker.html +++ b/doc/Docker.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
@@ -200,7 +202,7 @@ $ <span class="ex">docker</span> ps | |||
200 | <span class="ex">CONTAINER</span> ID IMAGE COMMAND CREATED STATUS PORTS NAMES | 202 | <span class="ex">CONTAINER</span> ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
201 | <span class="ex">d40b7af693d6</span> shaarli/shaarli /usr/bin/supervisor 15 seconds ago Up 4 seconds 0.0.0.0:8000-<span class="op">></span>80/tcp backstabbing_galileo</code></pre></div> | 203 | <span class="ex">d40b7af693d6</span> shaarli/shaarli /usr/bin/supervisor 15 seconds ago Up 4 seconds 0.0.0.0:8000-<span class="op">></span>80/tcp backstabbing_galileo</code></pre></div> |
202 | <h3 id="stop-and-destroy-a-container">Stop and destroy a container</h3> | 204 | <h3 id="stop-and-destroy-a-container">Stop and destroy a container</h3> |
203 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">docker</span> stop backstabbing_galileo <span class="co"># those docker guys are really rude to physicists!</span> | 205 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">docker</span> stop backstabbing_galileo # those docker guys are really rude to physicists! |
204 | <span class="ex">backstabbing_galileo</span> | 206 | <span class="ex">backstabbing_galileo</span> |
205 | 207 | ||
206 | <span class="co"># check the container is stopped</span> | 208 | <span class="co"># check the container is stopped</span> |
@@ -213,14 +215,15 @@ $ <span class="ex">docker</span> ps -a | |||
213 | <span class="ex">d40b7af693d6</span> shaarli/shaarli /usr/bin/supervisor 5 minutes ago Exited (0) <span class="ex">48</span> seconds ago backstabbing_galileo | 215 | <span class="ex">d40b7af693d6</span> shaarli/shaarli /usr/bin/supervisor 5 minutes ago Exited (0) <span class="ex">48</span> seconds ago backstabbing_galileo |
214 | 216 | ||
215 | <span class="co"># destroy the container</span> | 217 | <span class="co"># destroy the container</span> |
216 | $ <span class="ex">docker</span> rm backstabbing_galileo <span class="co"># let's put an end to these barbarian practices</span> | 218 | $ <span class="ex">docker</span> rm backstabbing_galileo # let<span class="st">'s put an end to these barbarian practices</span> |
217 | <span class="ex">backstabbing_galileo</span> | 219 | <span class="st">backstabbing_galileo</span> |
218 | 220 | ||
219 | $ <span class="ex">docker</span> ps -a | 221 | <span class="st">$ docker ps -a</span> |
220 | <span class="ex">CONTAINER</span> ID IMAGE COMMAND CREATED STATUS PORTS NAMES</code></pre></div> | 222 | <span class="st">CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES</span></code></pre></div> |
221 | <h2 id="resources">Resources</h2> | 223 | <h2 id="resources">Resources</h2> |
222 | <h3 id="docker-1">Docker</h3> | 224 | <h3 id="docker-1">Docker</h3> |
223 | <ul> | 225 | <ul> |
226 | <li><a href="https://www.katacoda.com/courses/docker/">Interactive Docker training portal</a> on <a href="https://www.katacoda.com/">Katakoda</a><a href=".html"></a></li> | ||
224 | <li><a href="http://blog.thoward37.me/articles/where-are-docker-images-stored/">Where are Docker images stored?</a><a href=".html"></a></li> | 227 | <li><a href="http://blog.thoward37.me/articles/where-are-docker-images-stored/">Where are Docker images stored?</a><a href=".html"></a></li> |
225 | <li><a href="https://docs.docker.com/reference/builder/">Dockerfile reference</a><a href=".html"></a></li> | 228 | <li><a href="https://docs.docker.com/reference/builder/">Dockerfile reference</a><a href=".html"></a></li> |
226 | <li><a href="https://docs.docker.com/articles/dockerfile_best-practices/">Dockerfile best practices</a><a href=".html"></a></li> | 229 | <li><a href="https://docs.docker.com/articles/dockerfile_best-practices/">Dockerfile best practices</a><a href=".html"></a></li> |
diff --git a/doc/Docker.md b/doc/Docker.md index 1faa7904..a7d2efb5 100644 --- a/doc/Docker.md +++ b/doc/Docker.md | |||
@@ -141,6 +141,7 @@ CONTAINER ID IMAGE COMMAND CREATED STATUS | |||
141 | 141 | ||
142 | ## Resources | 142 | ## Resources |
143 | ### Docker | 143 | ### Docker |
144 | - [Interactive Docker training portal](https://www.katacoda.com/courses/docker/) on [Katakoda](https://www.katacoda.com/)[](.html) | ||
144 | - [Where are Docker images stored?](http://blog.thoward37.me/articles/where-are-docker-images-stored/)[](.html) | 145 | - [Where are Docker images stored?](http://blog.thoward37.me/articles/where-are-docker-images-stored/)[](.html) |
145 | - [Dockerfile reference](https://docs.docker.com/reference/builder/)[](.html) | 146 | - [Dockerfile reference](https://docs.docker.com/reference/builder/)[](.html) |
146 | - [Dockerfile best practices](https://docs.docker.com/articles/dockerfile_best-practices/)[](.html) | 147 | - [Dockerfile best practices](https://docs.docker.com/articles/dockerfile_best-practices/)[](.html) |
diff --git a/doc/Download-CSS-styles-from-an-OPML-list.html b/doc/Download-CSS-styles-from-an-OPML-list.html index a4f68ac6..18cc5d9a 100644 --- a/doc/Download-CSS-styles-from-an-OPML-list.html +++ b/doc/Download-CSS-styles-from-an-OPML-list.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
@@ -155,7 +157,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
155 | <span class="kw">function</span> copyUserStyleFrom<span class="ot">(</span><span class="kw">$url</span><span class="ot">,</span> <span class="kw">$name</span><span class="ot">,</span> <span class="kw">$knownStyles</span><span class="ot">)</span> { | 157 | <span class="kw">function</span> copyUserStyleFrom<span class="ot">(</span><span class="kw">$url</span><span class="ot">,</span> <span class="kw">$name</span><span class="ot">,</span> <span class="kw">$knownStyles</span><span class="ot">)</span> { |
156 | <span class="kw">$userStyle</span> = <span class="kw">$url</span>.<span class="st">"inc/user.css"</span><span class="ot">;</span> | 158 | <span class="kw">$userStyle</span> = <span class="kw">$url</span>.<span class="st">"inc/user.css"</span><span class="ot">;</span> |
157 | <span class="kw">if</span><span class="ot">(</span><span class="fu">in_array</span><span class="ot">(</span><span class="kw">$url</span><span class="ot">,</span> <span class="kw">$knownStyles</span><span class="ot">))</span> { | 159 | <span class="kw">if</span><span class="ot">(</span><span class="fu">in_array</span><span class="ot">(</span><span class="kw">$url</span><span class="ot">,</span> <span class="kw">$knownStyles</span><span class="ot">))</span> { |
158 | <span class="co">// TODO add log message</span> | 160 | <span class="co">// </span><span class="al">TODO</span><span class="co"> add log message</span> |
159 | } <span class="kw">else</span> { | 161 | } <span class="kw">else</span> { |
160 | <span class="kw">$statusCode</span> = get_http_response_code<span class="ot">(</span><span class="kw">$userStyle</span><span class="ot">);</span> | 162 | <span class="kw">$statusCode</span> = get_http_response_code<span class="ot">(</span><span class="kw">$userStyle</span><span class="ot">);</span> |
161 | <span class="kw">if</span><span class="ot">(</span><span class="fu">intval</span><span class="ot">(</span><span class="kw">$statusCode</span><span class="ot">)</span><<span class="dv">300</span><span class="ot">)</span> { | 163 | <span class="kw">if</span><span class="ot">(</span><span class="fu">intval</span><span class="ot">(</span><span class="kw">$statusCode</span><span class="ot">)</span><<span class="dv">300</span><span class="ot">)</span> { |
diff --git a/doc/Download-and-Installation.html b/doc/Download-and-Installation.html index b9cac360..2c5b3be2 100644 --- a/doc/Download-and-Installation.html +++ b/doc/Download-and-Installation.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
@@ -108,10 +110,10 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
108 | <h3 id="download-as-an-archive">Download as an archive</h3> | 110 | <h3 id="download-as-an-archive">Download as an archive</h3> |
109 | <p>Get the latest released version from the <a href="https://github.com/shaarli/Shaarli/releases">releases</a> page.<a href=".html"></a></p> | 111 | <p>Get the latest released version from the <a href="https://github.com/shaarli/Shaarli/releases">releases</a> page.<a href=".html"></a></p> |
110 | <p><strong>Download our <em>shaarli-full</em> archive</strong> to include dependencies.</p> | 112 | <p><strong>Download our <em>shaarli-full</em> archive</strong> to include dependencies.</p> |
111 | <p>The current latest released version is <code>v0.8.0</code></p> | 113 | <p>The current latest released version is <code>v0.8.4</code></p> |
112 | <p>Or in command lines:</p> | 114 | <p>Or in command lines:</p> |
113 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">wget</span> https://github.com/shaarli/Shaarli/releases/download/v0.8.0/shaarli-v0.8.0-full.zip | 115 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">wget</span> https://github.com/shaarli/Shaarli/releases/download/v0.8.4/shaarli-v0.8.4-full.zip |
114 | $ <span class="fu">unzip</span> shaarli-v0.8.0-full.zip | 116 | $ <span class="fu">unzip</span> shaarli-v0.8.4-full.zip |
115 | $ <span class="fu">mv</span> Shaarli /path/to/shaarli/</code></pre></div> | 117 | $ <span class="fu">mv</span> Shaarli /path/to/shaarli/</code></pre></div> |
116 | <table style="width:46%;"> | 118 | <table style="width:46%;"> |
117 | <colgroup> | 119 | <colgroup> |
@@ -129,8 +131,8 @@ $ <span class="fu">mv</span> Shaarli /path/to/shaarli/</code></pre></div> | |||
129 | </table> | 131 | </table> |
130 | <h3 id="using-git">Using git</h3> | 132 | <h3 id="using-git">Using git</h3> |
131 | <pre><code>mkdir -p /path/to/shaarli && cd /path/to/shaarli/ | 133 | <pre><code>mkdir -p /path/to/shaarli && cd /path/to/shaarli/ |
132 | git clone -b v0.8.0 https://github.com/shaarli/Shaarli.git . | 134 | git clone -b v0.8 https://github.com/shaarli/Shaarli.git . |
133 | composer update --no-dev</code></pre> | 135 | composer install --no-dev</code></pre> |
134 | <hr /> | 136 | <hr /> |
135 | <h2 id="stable-version">Stable version</h2> | 137 | <h2 id="stable-version">Stable version</h2> |
136 | <p>The stable version has been experienced by Shaarli users, and will receive security updates.</p> | 138 | <p>The stable version has been experienced by Shaarli users, and will receive security updates.</p> |
@@ -148,16 +150,16 @@ $ <span class="fu">mv</span> Shaarli-stable /path/to/shaarli/</code></pre></div> | |||
148 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">git</span> clone https://github.com/shaarli/Shaarli.git -b stable /path/to/shaarli/ | 150 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">git</span> clone https://github.com/shaarli/Shaarli.git -b stable /path/to/shaarli/ |
149 | <span class="co"># install/update third-party dependencies</span> | 151 | <span class="co"># install/update third-party dependencies</span> |
150 | $ <span class="bu">cd</span> /path/to/shaarli/ | 152 | $ <span class="bu">cd</span> /path/to/shaarli/ |
151 | $ <span class="ex">composer</span> update --no-dev</code></pre></div> | 153 | $ <span class="ex">composer</span> install --no-dev</code></pre></div> |
152 | <hr /> | 154 | <hr /> |
153 | <h2 id="development-version-mainline">Development version (mainline)</h2> | 155 | <h2 id="development-version-mainline">Development version (mainline)</h2> |
154 | <p><em>Use at your own risk!</em></p> | 156 | <p><em>Use at your own risk!</em></p> |
155 | <p>To get the latest changes from the <code>master</code> branch:</p> | 157 | <p>To get the latest changes from the <code>master</code> branch:</p> |
156 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># clone the repository </span> | 158 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># clone the repository </span> |
157 | $ <span class="fu">git</span> clone https://github.com/shaarli/Shaarli.git master /path/to/shaarli/ | 159 | $ <span class="fu">git</span> clone https://github.com/shaarli/Shaarli.git -b master /path/to/shaarli/ |
158 | <span class="co"># install/update third-party dependencies</span> | 160 | <span class="co"># install/update third-party dependencies</span> |
159 | $ <span class="bu">cd</span> /path/to/shaarli | 161 | $ <span class="bu">cd</span> /path/to/shaarli |
160 | $ <span class="ex">composer</span> update --no-dev</code></pre></div> | 162 | $ <span class="ex">composer</span> install --no-dev</code></pre></div> |
161 | <hr /> | 163 | <hr /> |
162 | <h2 id="finish-installation">Finish Installation</h2> | 164 | <h2 id="finish-installation">Finish Installation</h2> |
163 | <p>Once Shaarli is downloaded and files have been placed at the correct location, open it this location your favorite browser.</p> | 165 | <p>Once Shaarli is downloaded and files have been placed at the correct location, open it this location your favorite browser.</p> |
diff --git a/doc/Download-and-Installation.md b/doc/Download-and-Installation.md index 32df8984..970144a5 100644 --- a/doc/Download-and-Installation.md +++ b/doc/Download-and-Installation.md | |||
@@ -13,13 +13,13 @@ Get the latest released version from the [releases](https://github.com/shaarli/S | |||
13 | 13 | ||
14 | **Download our *shaarli-full* archive** to include dependencies. | 14 | **Download our *shaarli-full* archive** to include dependencies. |
15 | 15 | ||
16 | The current latest released version is `v0.8.0` | 16 | The current latest released version is `v0.8.4` |
17 | 17 | ||
18 | Or in command lines: | 18 | Or in command lines: |
19 | 19 | ||
20 | ```bash | 20 | ```bash |
21 | $ wget https://github.com/shaarli/Shaarli/releases/download/v0.8.0/shaarli-v0.8.0-full.zip | 21 | $ wget https://github.com/shaarli/Shaarli/releases/download/v0.8.4/shaarli-v0.8.4-full.zip |
22 | $ unzip shaarli-v0.8.0-full.zip | 22 | $ unzip shaarli-v0.8.4-full.zip |
23 | $ mv Shaarli /path/to/shaarli/ | 23 | $ mv Shaarli /path/to/shaarli/ |
24 | ``` | 24 | ``` |
25 | 25 | ||
@@ -30,8 +30,8 @@ $ mv Shaarli /path/to/shaarli/ | |||
30 | 30 | ||
31 | ``` | 31 | ``` |
32 | mkdir -p /path/to/shaarli && cd /path/to/shaarli/ | 32 | mkdir -p /path/to/shaarli && cd /path/to/shaarli/ |
33 | git clone -b v0.8.0 https://github.com/shaarli/Shaarli.git . | 33 | git clone -b v0.8 https://github.com/shaarli/Shaarli.git . |
34 | composer update --no-dev | 34 | composer install --no-dev |
35 | ``` | 35 | ``` |
36 | 36 | ||
37 | -------------------------------------------------------- | 37 | -------------------------------------------------------- |
@@ -66,7 +66,7 @@ $ mv Shaarli-stable /path/to/shaarli/ | |||
66 | $ git clone https://github.com/shaarli/Shaarli.git -b stable /path/to/shaarli/ | 66 | $ git clone https://github.com/shaarli/Shaarli.git -b stable /path/to/shaarli/ |
67 | # install/update third-party dependencies | 67 | # install/update third-party dependencies |
68 | $ cd /path/to/shaarli/ | 68 | $ cd /path/to/shaarli/ |
69 | $ composer update --no-dev | 69 | $ composer install --no-dev |
70 | ``` | 70 | ``` |
71 | 71 | ||
72 | -------------------------------------------------------- | 72 | -------------------------------------------------------- |
@@ -79,10 +79,10 @@ To get the latest changes from the `master` branch: | |||
79 | 79 | ||
80 | ```bash | 80 | ```bash |
81 | # clone the repository | 81 | # clone the repository |
82 | $ git clone https://github.com/shaarli/Shaarli.git master /path/to/shaarli/ | 82 | $ git clone https://github.com/shaarli/Shaarli.git -b master /path/to/shaarli/ |
83 | # install/update third-party dependencies | 83 | # install/update third-party dependencies |
84 | $ cd /path/to/shaarli | 84 | $ cd /path/to/shaarli |
85 | $ composer update --no-dev | 85 | $ composer install --no-dev |
86 | ``` | 86 | ``` |
87 | 87 | ||
88 | -------------------------------------------------------- | 88 | -------------------------------------------------------- |
diff --git a/doc/Example-patch---add-new-via-field-for-links.html b/doc/Example-patch---add-new-via-field-for-links.html index 133224e2..49036a74 100644 --- a/doc/Example-patch---add-new-via-field-for-links.html +++ b/doc/Example-patch---add-new-via-field-for-links.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/FAQ.html b/doc/FAQ.html index 61f3475f..25584f22 100644 --- a/doc/FAQ.html +++ b/doc/FAQ.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Firefox-share.html b/doc/Firefox-share.html index d7dcc282..707119a6 100644 --- a/doc/Firefox-share.html +++ b/doc/Firefox-share.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/GnuPG-signature.html b/doc/GnuPG-signature.html index 50b904d5..182a71d4 100644 --- a/doc/GnuPG-signature.html +++ b/doc/GnuPG-signature.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Home.html b/doc/Home.html index 970f547e..7f51b93b 100644 --- a/doc/Home.html +++ b/doc/Home.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Plugin-System.html b/doc/Plugin-System.html index 655536c6..123bf106 100644 --- a/doc/Plugin-System.html +++ b/doc/Plugin-System.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
@@ -100,9 +102,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
100 | </ul> | 102 | </ul> |
101 | </div> | 103 | </div> |
102 | <h1 id="plugin-system">Plugin System</h1> | 104 | <h1 id="plugin-system">Plugin System</h1> |
103 | <blockquote> | ||
104 | <p>Note: Plugin current status - in development (not merged into master).</p> | ||
105 | </blockquote> | ||
106 | <p><a href="#developer-api"><strong>I am a developer.</strong> Developer API.</a><a href=".html"></a></p> | 105 | <p><a href="#developer-api"><strong>I am a developer.</strong> Developer API.</a><a href=".html"></a></p> |
107 | <p><a href="#guide-for-template-designer"><strong>I am a template designer.</strong> Guide for template designer.</a><a href=".html"></a></p> | 106 | <p><a href="#guide-for-template-designer"><strong>I am a template designer.</strong> Guide for template designer.</a><a href=".html"></a></p> |
108 | <h2 id="developer-api">Developer API</h2> | 107 | <h2 id="developer-api">Developer API</h2> |
@@ -121,12 +120,21 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
121 | | plugins/ | 120 | | plugins/ |
122 | |---| demo_plugin/ | 121 | |---| demo_plugin/ |
123 | | |---| demo_plugin.php</code></pre> | 122 | | |---| demo_plugin.php</code></pre> |
123 | <h3 id="plugin-initialization">Plugin initialization</h3> | ||
124 | <p>At the beginning of Shaarli execution, all enabled plugins are loaded. At this point, the plugin system looks for an <code>init()</code> function to execute and run it if it exists. This function must be named this way, and takes the <code>ConfigManager</code> as parameter.</p> | ||
125 | <pre><code><plugin_name>_init($conf)</code></pre> | ||
126 | <p>This function can be used to create initial data, load default settings, etc. But also to set <em>plugin errors</em>. If the initialization function returns an array of strings, they will be understand as errors, and displayed in the header to logged in users.</p> | ||
124 | <h3 id="understanding-hooks">Understanding hooks</h3> | 127 | <h3 id="understanding-hooks">Understanding hooks</h3> |
125 | <p>A plugin is a set of functions. Each function will be triggered by the plugin system at certain point in Shaarli execution.</p> | 128 | <p>A plugin is a set of functions. Each function will be triggered by the plugin system at certain point in Shaarli execution.</p> |
126 | <p>These functions need to be named with this pattern:</p> | 129 | <p>These functions need to be named with this pattern:</p> |
127 | <pre><code>hook_<plugin_name>_<hook_name></code></pre> | 130 | <pre><code>hook_<plugin_name>_<hook_name>($data, $conf)</code></pre> |
131 | <p>Parameters:</p> | ||
132 | <ul> | ||
133 | <li>data: see <a href="https://github.com/shaarli/Shaarli/wiki/Plugin-System#plugins-data">$data section</a><a href=".html"></a></li> | ||
134 | <li>conf: the <code>ConfigManager</code> instance.</li> | ||
135 | </ul> | ||
128 | <p>For exemple, if my plugin want to add data to the header, this function is needed:</p> | 136 | <p>For exemple, if my plugin want to add data to the header, this function is needed:</p> |
129 | <pre><code>hook_demo_plugin_render_header()</code></pre> | 137 | <pre><code>hook_demo_plugin_render_header</code></pre> |
130 | <p>If this function is declared, and the plugin enabled, it will be called every time Shaarli is rendering the header.</p> | 138 | <p>If this function is declared, and the plugin enabled, it will be called every time Shaarli is rendering the header.</p> |
131 | <h3 id="plugins-data">Plugin's data</h3> | 139 | <h3 id="plugins-data">Plugin's data</h3> |
132 | <h4 id="parameters">Parameters</h4> | 140 | <h4 id="parameters">Parameters</h4> |
@@ -159,6 +167,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
159 | <ul> | 167 | <ul> |
160 | <li><code>description</code>: plugin description</li> | 168 | <li><code>description</code>: plugin description</li> |
161 | <li><code>parameters</code>: user parameter names, separated by a <code>;</code>.</li> | 169 | <li><code>parameters</code>: user parameter names, separated by a <code>;</code>.</li> |
170 | <li><code>parameter.<PARAMETER_NAME></code>: add a text description the specified parameter.</li> | ||
162 | </ul> | 171 | </ul> |
163 | <blockquote> | 172 | <blockquote> |
164 | <p>Note: In PHP, <code>parse_ini_file()</code> seems to want strings to be between by quotes <code>"</code> in the ini file.</p> | 173 | <p>Note: In PHP, <code>parse_ini_file()</code> seems to want strings to be between by quotes <code>"</code> in the ini file.</p> |
@@ -209,16 +218,28 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
209 | </tr> | 218 | </tr> |
210 | <tr class="even"> | 219 | <tr class="even"> |
211 | <td><a href="#render_tagcloud">render_tagcloud</a></td> | 220 | <td><a href="#render_tagcloud">render_tagcloud</a></td> |
212 | <td style="text-align: center;">Allow to add content at the top and bottom of the page.</td> | 221 | <td style="text-align: center;">Allow to add content at the top and bottom of the page, and after all tags.</td> |
213 | </tr> | 222 | </tr> |
214 | <tr class="odd"> | 223 | <tr class="odd"> |
224 | <td><a href="#render_taglist">render_taglist</a></td> | ||
225 | <td style="text-align: center;">Allow to add content at the top and bottom of the page, and after all tags.</td> | ||
226 | </tr> | ||
227 | <tr class="even"> | ||
215 | <td><a href="#render_daily">render_daily</a></td> | 228 | <td><a href="#render_daily">render_daily</a></td> |
216 | <td style="text-align: center;">Allow to add content at the top and bottom of the page, the bottom of each link and to alter data.</td> | 229 | <td style="text-align: center;">Allow to add content at the top and bottom of the page, the bottom of each link and to alter data.</td> |
217 | </tr> | 230 | </tr> |
231 | <tr class="odd"> | ||
232 | <td><a href="#render_feed">render_feed</a></td> | ||
233 | <td style="text-align: center;">Allow to do add tags in RSS and ATOM feeds.</td> | ||
234 | </tr> | ||
218 | <tr class="even"> | 235 | <tr class="even"> |
219 | <td><a href="#savelink">savelink</a></td> | 236 | <td><a href="#save_link">save_link</a></td> |
220 | <td style="text-align: center;">Allow to alter the link being saved in the datastore.</td> | 237 | <td style="text-align: center;">Allow to alter the link being saved in the datastore.</td> |
221 | </tr> | 238 | </tr> |
239 | <tr class="odd"> | ||
240 | <td><a href="#delete_link">delete_link</a></td> | ||
241 | <td style="text-align: center;">Allow to do an action before a link is deleted from the datastore.</td> | ||
242 | </tr> | ||
222 | </tbody> | 243 | </tbody> |
223 | </table> | 244 | </table> |
224 | <h4 id="render_header">render_header</h4> | 245 | <h4 id="render_header">render_header</h4> |
@@ -376,17 +397,41 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
376 | <li><p><code>plugin_start_zone</code>: before displaying the template content.</p></li> | 397 | <li><p><code>plugin_start_zone</code>: before displaying the template content.</p></li> |
377 | <li><p><code>plugin_end_zone</code>: after displaying the template content.</p></li> | 398 | <li><p><code>plugin_end_zone</code>: after displaying the template content.</p></li> |
378 | </ul> | 399 | </ul> |
400 | <p>For each tag, the following placeholder can be used:</p> | ||
401 | <ul> | ||
402 | <li><code>tag_plugin</code>: after each tag</li> | ||
403 | </ul> | ||
379 | <p><img src="http://i.imgur.com/vHmyT3a.png" alt="plugin_start_end_zone_example" /><a href=".html"></a></p> | 404 | <p><img src="http://i.imgur.com/vHmyT3a.png" alt="plugin_start_end_zone_example" /><a href=".html"></a></p> |
405 | <h4 id="render_taglist">render_taglist</h4> | ||
406 | <p>Triggered when taglist is displayed.</p> | ||
407 | <p>Allow to add content at the top and bottom of the page.</p> | ||
408 | <h5 id="data-8">Data</h5> | ||
409 | <p><code>$data</code> is an array containing:</p> | ||
410 | <ul> | ||
411 | <li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li> | ||
412 | <li>All templates data.</li> | ||
413 | </ul> | ||
414 | <h5 id="template-placeholders-8">Template placeholders</h5> | ||
415 | <p>Items can be displayed in templates by adding an entry in <code>$data['<placeholder>']</code> array.<a href=".html"></a></p> | ||
416 | <p>List of placeholders:</p> | ||
417 | <ul> | ||
418 | <li><p><code>plugin_start_zone</code>: before displaying the template content.</p></li> | ||
419 | <li><p><code>plugin_end_zone</code>: after displaying the template content.</p></li> | ||
420 | </ul> | ||
421 | <p>For each tag, the following placeholder can be used:</p> | ||
422 | <ul> | ||
423 | <li><code>tag_plugin</code>: after each tag</li> | ||
424 | </ul> | ||
380 | <h4 id="render_daily">render_daily</h4> | 425 | <h4 id="render_daily">render_daily</h4> |
381 | <p>Triggered when tagcloud is displayed.</p> | 426 | <p>Triggered when tagcloud is displayed.</p> |
382 | <p>Allow to add content at the top and bottom of the page, the bottom of each link and to alter data.</p> | 427 | <p>Allow to add content at the top and bottom of the page, the bottom of each link and to alter data.</p> |
383 | <h5 id="data-8">Data</h5> | 428 | <h5 id="data-9">Data</h5> |
384 | <p><code>$data</code> is an array containing:</p> | 429 | <p><code>$data</code> is an array containing:</p> |
385 | <ul> | 430 | <ul> |
386 | <li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li> | 431 | <li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li> |
387 | <li>All templates data, including links.</li> | 432 | <li>All templates data, including links.</li> |
388 | </ul> | 433 | </ul> |
389 | <h5 id="template-placeholders-8">Template placeholders</h5> | 434 | <h5 id="template-placeholders-9">Template placeholders</h5> |
390 | <p>Items can be displayed in templates by adding an entry in <code>$data['<placeholder>']</code> array.<a href=".html"></a></p> | 435 | <p>Items can be displayed in templates by adding an entry in <code>$data['<placeholder>']</code> array.<a href=".html"></a></p> |
391 | <p>List of placeholders:</p> | 436 | <p>List of placeholders:</p> |
392 | <ul> | 437 | <ul> |
@@ -397,18 +442,57 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
397 | <li><p><code>plugin_start_zone</code>: before displaying the template content.</p></li> | 442 | <li><p><code>plugin_start_zone</code>: before displaying the template content.</p></li> |
398 | <li><p><code>plugin_end_zone</code>: after displaying the template content.</p></li> | 443 | <li><p><code>plugin_end_zone</code>: after displaying the template content.</p></li> |
399 | </ul> | 444 | </ul> |
400 | <h4 id="savelink">savelink</h4> | 445 | <h4 id="render_feed">render_feed</h4> |
446 | <p>Triggered when the ATOM or RSS feed is displayed.</p> | ||
447 | <p>Allow to add tags in the feed, either in the header or for each items. Items (links) can also be altered before being rendered.</p> | ||
448 | <h5 id="data-10">Data</h5> | ||
449 | <p><code>$data</code> is an array containing:</p> | ||
450 | <ul> | ||
451 | <li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li> | ||
452 | <li><code>_PAGE_</code>: containing either <code>rss</code> or <code>atom</code>.</li> | ||
453 | <li>All templates data, including links.</li> | ||
454 | </ul> | ||
455 | <h5 id="template-placeholders-10">Template placeholders</h5> | ||
456 | <p>Tags can be added in feeds by adding an entry in <code>$data['<placeholder>']</code> array.<a href=".html"></a></p> | ||
457 | <p>List of placeholders:</p> | ||
458 | <ul> | ||
459 | <li><code>feed_plugins_header</code>: used as a header tag in the feed.</li> | ||
460 | </ul> | ||
461 | <p>For each links:</p> | ||
462 | <ul> | ||
463 | <li><code>feed_plugins</code>: additional tag for every link entry.</li> | ||
464 | </ul> | ||
465 | <h4 id="save_link">save_link</h4> | ||
401 | <p>Triggered when a link is save (new link or edit).</p> | 466 | <p>Triggered when a link is save (new link or edit).</p> |
402 | <p>Allow to alter the link being saved in the datastore.</p> | 467 | <p>Allow to alter the link being saved in the datastore.</p> |
403 | <h5 id="data-9">Data</h5> | 468 | <h5 id="data-11">Data</h5> |
404 | <p><code>$data</code> is an array containing the link being saved:</p> | 469 | <p><code>$data</code> is an array containing the link being saved:</p> |
405 | <ul> | 470 | <ul> |
471 | <li>id</li> | ||
406 | <li>title</li> | 472 | <li>title</li> |
407 | <li>url</li> | 473 | <li>url</li> |
474 | <li>shorturl</li> | ||
408 | <li>description</li> | 475 | <li>description</li> |
409 | <li>linkdate</li> | ||
410 | <li>private</li> | 476 | <li>private</li> |
411 | <li>tags</li> | 477 | <li>tags</li> |
478 | <li>created</li> | ||
479 | <li>updated</li> | ||
480 | </ul> | ||
481 | <h4 id="delete_link">delete_link</h4> | ||
482 | <p>Triggered when a link is deleted.</p> | ||
483 | <p>Allow to execute any action before the link is actually removed from the datastore</p> | ||
484 | <h5 id="data-12">Data</h5> | ||
485 | <p><code>$data</code> is an array containing the link being saved:</p> | ||
486 | <ul> | ||
487 | <li>id</li> | ||
488 | <li>title</li> | ||
489 | <li>url</li> | ||
490 | <li>shorturl</li> | ||
491 | <li>description</li> | ||
492 | <li>private</li> | ||
493 | <li>tags</li> | ||
494 | <li>created</li> | ||
495 | <li>updated</li> | ||
412 | </ul> | 496 | </ul> |
413 | <h2 id="guide-for-template-designer">Guide for template designer</h2> | 497 | <h2 id="guide-for-template-designer">Guide for template designer</h2> |
414 | <h3 id="plugin-administration">Plugin administration</h3> | 498 | <h3 id="plugin-administration">Plugin administration</h3> |
@@ -537,5 +621,14 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
537 | {$value} | 621 | {$value} |
538 | {/loop} | 622 | {/loop} |
539 | <span class="kw"></div></span></code></pre></div> | 623 | <span class="kw"></div></span></code></pre></div> |
624 | <p><strong>feed.atom.xml</strong> and <strong>feed.rss.xml</strong>:</p> | ||
625 | <p>In headers tags section:</p> | ||
626 | <div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode xml">{loop="$feed_plugins_header"} | ||
627 | {$value} | ||
628 | {/loop}</code></pre></div> | ||
629 | <p>After each entry:</p> | ||
630 | <div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode xml">{loop="$value.feed_plugins"} | ||
631 | {$value} | ||
632 | {/loop}</code></pre></div> | ||
540 | </body> | 633 | </body> |
541 | </html> | 634 | </html> |
diff --git a/doc/Plugin-System.md b/doc/Plugin-System.md index 623627dd..addd792d 100644 --- a/doc/Plugin-System.md +++ b/doc/Plugin-System.md | |||
@@ -1,6 +1,4 @@ | |||
1 | #Plugin System | 1 | #Plugin System |
2 | > Note: Plugin current status - in development (not merged into master). | ||
3 | |||
4 | [**I am a developer.** Developer API.](#developer-api)[](.html) | 2 | [**I am a developer.** Developer API.](#developer-api)[](.html) |
5 | 3 | ||
6 | [**I am a template designer.** Guide for template designer.](#guide-for-template-designer)[](.html) | 4 | [**I am a template designer.** Guide for template designer.](#guide-for-template-designer)[](.html) |
@@ -30,6 +28,14 @@ You should have the following tree view: | |||
30 | | |---| demo_plugin.php | 28 | | |---| demo_plugin.php |
31 | ``` | 29 | ``` |
32 | 30 | ||
31 | ### Plugin initialization | ||
32 | |||
33 | At the beginning of Shaarli execution, all enabled plugins are loaded. At this point, the plugin system looks for an `init()` function to execute and run it if it exists. This function must be named this way, and takes the `ConfigManager` as parameter. | ||
34 | |||
35 | <plugin_name>_init($conf) | ||
36 | |||
37 | This function can be used to create initial data, load default settings, etc. But also to set *plugin errors*. If the initialization function returns an array of strings, they will be understand as errors, and displayed in the header to logged in users. | ||
38 | |||
33 | ### Understanding hooks | 39 | ### Understanding hooks |
34 | 40 | ||
35 | A plugin is a set of functions. Each function will be triggered by the plugin system at certain point in Shaarli execution. | 41 | A plugin is a set of functions. Each function will be triggered by the plugin system at certain point in Shaarli execution. |
@@ -37,12 +43,17 @@ A plugin is a set of functions. Each function will be triggered by the plugin sy | |||
37 | These functions need to be named with this pattern: | 43 | These functions need to be named with this pattern: |
38 | 44 | ||
39 | ``` | 45 | ``` |
40 | hook_<plugin_name>_<hook_name> | 46 | hook_<plugin_name>_<hook_name>($data, $conf) |
41 | ``` | 47 | ``` |
42 | 48 | ||
49 | Parameters: | ||
50 | |||
51 | - data: see [$data section](https://github.com/shaarli/Shaarli/wiki/Plugin-System#plugins-data)[](.html) | ||
52 | - conf: the `ConfigManager` instance. | ||
53 | |||
43 | For exemple, if my plugin want to add data to the header, this function is needed: | 54 | For exemple, if my plugin want to add data to the header, this function is needed: |
44 | 55 | ||
45 | hook_demo_plugin_render_header() | 56 | hook_demo_plugin_render_header |
46 | 57 | ||
47 | If this function is declared, and the plugin enabled, it will be called every time Shaarli is rendering the header. | 58 | If this function is declared, and the plugin enabled, it will be called every time Shaarli is rendering the header. |
48 | 59 | ||
@@ -98,6 +109,7 @@ Each file contain two keys: | |||
98 | 109 | ||
99 | * `description`: plugin description | 110 | * `description`: plugin description |
100 | * `parameters`: user parameter names, separated by a `;`. | 111 | * `parameters`: user parameter names, separated by a `;`. |
112 | * `parameter.<PARAMETER_NAME>`: add a text description the specified parameter. | ||
101 | 113 | ||
102 | > Note: In PHP, `parse_ini_file()` seems to want strings to be between by quotes `"` in the ini file. | 114 | > Note: In PHP, `parse_ini_file()` seems to want strings to be between by quotes `"` in the ini file. |
103 | 115 | ||
@@ -118,9 +130,13 @@ If it's still not working, please [open an issue](https://github.com/shaarli/Sha | |||
118 | | [render_editlink](#render_editlink) | Allow to add fields in the form, or display elements. |[](.html) | 130 | | [render_editlink](#render_editlink) | Allow to add fields in the form, or display elements. |[](.html) |
119 | | [render_tools](#render_tools) | Allow to add content at the end of the page. |[](.html) | 131 | | [render_tools](#render_tools) | Allow to add content at the end of the page. |[](.html) |
120 | | [render_picwall](#render_picwall) | Allow to add content at the top and bottom of the page. |[](.html) | 132 | | [render_picwall](#render_picwall) | Allow to add content at the top and bottom of the page. |[](.html) |
121 | | [render_tagcloud](#render_tagcloud) | Allow to add content at the top and bottom of the page. |[](.html) | 133 | | [render_tagcloud](#render_tagcloud) | Allow to add content at the top and bottom of the page, and after all tags. |[](.html) |
134 | | [render_taglist](#render_taglist) | Allow to add content at the top and bottom of the page, and after all tags. |[](.html) | ||
122 | | [render_daily](#render_daily) | Allow to add content at the top and bottom of the page, the bottom of each link and to alter data. |[](.html) | 135 | | [render_daily](#render_daily) | Allow to add content at the top and bottom of the page, the bottom of each link and to alter data. |[](.html) |
123 | | [savelink](#savelink) | Allow to alter the link being saved in the datastore. |[](.html) | 136 | | [render_feed](#render_feed) | Allow to do add tags in RSS and ATOM feeds. |[](.html) |
137 | | [save_link](#save_link) | Allow to alter the link being saved in the datastore. |[](.html) | ||
138 | | [delete_link](#delete_link) | Allow to do an action before a link is deleted from the datastore. |[](.html) | ||
139 | |||
124 | 140 | ||
125 | 141 | ||
126 | #### render_header | 142 | #### render_header |
@@ -330,8 +346,40 @@ List of placeholders: | |||
330 | 346 | ||
331 | * `plugin_end_zone`: after displaying the template content. | 347 | * `plugin_end_zone`: after displaying the template content. |
332 | 348 | ||
349 | For each tag, the following placeholder can be used: | ||
350 | |||
351 | * `tag_plugin`: after each tag | ||
352 | |||
333 | ![plugin_start_end_zone_example](http://i.imgur.com/vHmyT3a.png)[](.html) | 353 | ![plugin_start_end_zone_example](http://i.imgur.com/vHmyT3a.png)[](.html) |
334 | 354 | ||
355 | |||
356 | #### render_taglist | ||
357 | |||
358 | Triggered when taglist is displayed. | ||
359 | |||
360 | Allow to add content at the top and bottom of the page. | ||
361 | |||
362 | ##### Data | ||
363 | |||
364 | `$data` is an array containing: | ||
365 | |||
366 | * `_LOGGEDIN_`: true if user is logged in, false otherwise. | ||
367 | * All templates data. | ||
368 | |||
369 | ##### Template placeholders | ||
370 | |||
371 | Items can be displayed in templates by adding an entry in `$data['<placeholder>']` array.[](.html) | ||
372 | |||
373 | List of placeholders: | ||
374 | |||
375 | * `plugin_start_zone`: before displaying the template content. | ||
376 | |||
377 | * `plugin_end_zone`: after displaying the template content. | ||
378 | |||
379 | For each tag, the following placeholder can be used: | ||
380 | |||
381 | * `tag_plugin`: after each tag | ||
382 | |||
335 | #### render_daily | 383 | #### render_daily |
336 | 384 | ||
337 | Triggered when tagcloud is displayed. | 385 | Triggered when tagcloud is displayed. |
@@ -359,7 +407,33 @@ List of placeholders: | |||
359 | 407 | ||
360 | * `plugin_end_zone`: after displaying the template content. | 408 | * `plugin_end_zone`: after displaying the template content. |
361 | 409 | ||
362 | #### savelink | 410 | #### render_feed |
411 | |||
412 | Triggered when the ATOM or RSS feed is displayed. | ||
413 | |||
414 | Allow to add tags in the feed, either in the header or for each items. Items (links) can also be altered before being rendered. | ||
415 | |||
416 | ##### Data | ||
417 | |||
418 | `$data` is an array containing: | ||
419 | |||
420 | * `_LOGGEDIN_`: true if user is logged in, false otherwise. | ||
421 | * `_PAGE_`: containing either `rss` or `atom`. | ||
422 | * All templates data, including links. | ||
423 | |||
424 | ##### Template placeholders | ||
425 | |||
426 | Tags can be added in feeds by adding an entry in `$data['<placeholder>']` array.[](.html) | ||
427 | |||
428 | List of placeholders: | ||
429 | |||
430 | * `feed_plugins_header`: used as a header tag in the feed. | ||
431 | |||
432 | For each links: | ||
433 | |||
434 | * `feed_plugins`: additional tag for every link entry. | ||
435 | |||
436 | #### save_link | ||
363 | 437 | ||
364 | Triggered when a link is save (new link or edit). | 438 | Triggered when a link is save (new link or edit). |
365 | 439 | ||
@@ -369,12 +443,36 @@ Allow to alter the link being saved in the datastore. | |||
369 | 443 | ||
370 | `$data` is an array containing the link being saved: | 444 | `$data` is an array containing the link being saved: |
371 | 445 | ||
446 | * id | ||
447 | * title | ||
448 | * url | ||
449 | * shorturl | ||
450 | * description | ||
451 | * private | ||
452 | * tags | ||
453 | * created | ||
454 | * updated | ||
455 | |||
456 | |||
457 | #### delete_link | ||
458 | |||
459 | Triggered when a link is deleted. | ||
460 | |||
461 | Allow to execute any action before the link is actually removed from the datastore | ||
462 | |||
463 | ##### Data | ||
464 | |||
465 | `$data` is an array containing the link being saved: | ||
466 | |||
467 | * id | ||
372 | * title | 468 | * title |
373 | * url | 469 | * url |
470 | * shorturl | ||
374 | * description | 471 | * description |
375 | * linkdate | ||
376 | * private | 472 | * private |
377 | * tags | 473 | * tags |
474 | * created | ||
475 | * updated | ||
378 | 476 | ||
379 | ## Guide for template designer | 477 | ## Guide for template designer |
380 | 478 | ||
@@ -595,3 +693,19 @@ Bottom: | |||
595 | {/loop} | 693 | {/loop} |
596 | </div> | 694 | </div> |
597 | ``` | 695 | ``` |
696 | |||
697 | **feed.atom.xml** and **feed.rss.xml**: | ||
698 | |||
699 | In headers tags section: | ||
700 | ```xml | ||
701 | {loop="$feed_plugins_header"} | ||
702 | {$value} | ||
703 | {/loop} | ||
704 | ``` | ||
705 | |||
706 | After each entry: | ||
707 | ```xml | ||
708 | {loop="$value.feed_plugins"} | ||
709 | {$value} | ||
710 | {/loop} | ||
711 | ``` | ||
diff --git a/doc/Plugins.html b/doc/Plugins.html index 435a836f..08ce8a86 100644 --- a/doc/Plugins.html +++ b/doc/Plugins.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
@@ -145,7 +147,6 @@ Example:</p> | |||
145 | <li><a href="https://github.com/shaarli/Shaarli/blob/master/plugins/markdown/README.md"><code>markdown</code></a>: Render shaare description with Markdown syntax.<a href=".html"></a></li> | 147 | <li><a href="https://github.com/shaarli/Shaarli/blob/master/plugins/markdown/README.md"><code>markdown</code></a>: Render shaare description with Markdown syntax.<a href=".html"></a></li> |
146 | <li><a href="https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md"><code>playvideos</code></a>: Add a button in the toolbar allowing to watch all videos.<a href=".html"></a></li> | 148 | <li><a href="https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md"><code>playvideos</code></a>: Add a button in the toolbar allowing to watch all videos.<a href=".html"></a></li> |
147 | <li><code>qrcode</code>: For each link, add a QRCode icon.</li> | 149 | <li><code>qrcode</code>: For each link, add a QRCode icon.</li> |
148 | <li><code>readityourself</code>: For each link, add a ReadItYourself icon to save the shaared URL</li> | ||
149 | <li><a href="https://github.com/shaarli/Shaarli/blob/master/plugins/wallabag/README.md"><code>wallabag</code></a>: For each link, add a Wallabag icon to save it in your instance.<a href=".html"></a></li> | 150 | <li><a href="https://github.com/shaarli/Shaarli/blob/master/plugins/wallabag/README.md"><code>wallabag</code></a>: For each link, add a Wallabag icon to save it in your instance.<a href=".html"></a></li> |
150 | </ul> | 151 | </ul> |
151 | <h4 id="third-party-plugins">Third party plugins</h4> | 152 | <h4 id="third-party-plugins">Third party plugins</h4> |
diff --git a/doc/Plugins.md b/doc/Plugins.md index 81167fcf..e3192a60 100644 --- a/doc/Plugins.md +++ b/doc/Plugins.md | |||
@@ -67,7 +67,6 @@ Usage of each plugin is documented in it's README file: | |||
67 | * [`markdown`](https://github.com/shaarli/Shaarli/blob/master/plugins/markdown/README.md): Render shaare description with Markdown syntax.[](.html) | 67 | * [`markdown`](https://github.com/shaarli/Shaarli/blob/master/plugins/markdown/README.md): Render shaare description with Markdown syntax.[](.html) |
68 | * [`playvideos`](https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md): Add a button in the toolbar allowing to watch all videos.[](.html) | 68 | * [`playvideos`](https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md): Add a button in the toolbar allowing to watch all videos.[](.html) |
69 | * `qrcode`: For each link, add a QRCode icon. | 69 | * `qrcode`: For each link, add a QRCode icon. |
70 | * `readityourself`: For each link, add a ReadItYourself icon to save the shaared URL | ||
71 | * [`wallabag`](https://github.com/shaarli/Shaarli/blob/master/plugins/wallabag/README.md): For each link, add a Wallabag icon to save it in your instance.[](.html) | 70 | * [`wallabag`](https://github.com/shaarli/Shaarli/blob/master/plugins/wallabag/README.md): For each link, add a Wallabag icon to save it in your instance.[](.html) |
72 | 71 | ||
73 | 72 | ||
diff --git a/doc/REST-API.html b/doc/REST-API.html new file mode 100644 index 00000000..d14c98c9 --- /dev/null +++ b/doc/REST-API.html | |||
@@ -0,0 +1,169 @@ | |||
1 | <!DOCTYPE html> | ||
2 | <html> | ||
3 | <head> | ||
4 | <meta charset="utf-8"> | ||
5 | <meta name="generator" content="pandoc"> | ||
6 | <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> | ||
7 | <title>Shaarli – REST API</title> | ||
8 | <style type="text/css">code{white-space: pre;}</style> | ||
9 | <style type="text/css"> | ||
10 | div.sourceCode { overflow-x: auto; } | ||
11 | table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode { | ||
12 | margin: 0; padding: 0; vertical-align: baseline; border: none; } | ||
13 | table.sourceCode { width: 100%; line-height: 100%; } | ||
14 | td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; } | ||
15 | td.sourceCode { padding-left: 5px; } | ||
16 | code > span.kw { color: #007020; font-weight: bold; } /* Keyword */ | ||
17 | code > span.dt { color: #902000; } /* DataType */ | ||
18 | code > span.dv { color: #40a070; } /* DecVal */ | ||
19 | code > span.bn { color: #40a070; } /* BaseN */ | ||
20 | code > span.fl { color: #40a070; } /* Float */ | ||
21 | code > span.ch { color: #4070a0; } /* Char */ | ||
22 | code > span.st { color: #4070a0; } /* String */ | ||
23 | code > span.co { color: #60a0b0; font-style: italic; } /* Comment */ | ||
24 | code > span.ot { color: #007020; } /* Other */ | ||
25 | code > span.al { color: #ff0000; font-weight: bold; } /* Alert */ | ||
26 | code > span.fu { color: #06287e; } /* Function */ | ||
27 | code > span.er { color: #ff0000; font-weight: bold; } /* Error */ | ||
28 | code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ | ||
29 | code > span.cn { color: #880000; } /* Constant */ | ||
30 | code > span.sc { color: #4070a0; } /* SpecialChar */ | ||
31 | code > span.vs { color: #4070a0; } /* VerbatimString */ | ||
32 | code > span.ss { color: #bb6688; } /* SpecialString */ | ||
33 | code > span.im { } /* Import */ | ||
34 | code > span.va { color: #19177c; } /* Variable */ | ||
35 | code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ | ||
36 | code > span.op { color: #666666; } /* Operator */ | ||
37 | code > span.bu { } /* BuiltIn */ | ||
38 | code > span.ex { } /* Extension */ | ||
39 | code > span.pp { color: #bc7a00; } /* Preprocessor */ | ||
40 | code > span.at { color: #7d9029; } /* Attribute */ | ||
41 | code > span.do { color: #ba2121; font-style: italic; } /* Documentation */ | ||
42 | code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ | ||
43 | code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ | ||
44 | code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ | ||
45 | </style> | ||
46 | <link rel="stylesheet" href="github-markdown.css"> | ||
47 | <!--[if lt IE 9]> | ||
48 | <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> | ||
49 | <![endif]--> | ||
50 | </head> | ||
51 | <body> | ||
52 | <div id="local-sidebar"> | ||
53 | <ul> | ||
54 | <li><a href="Home.html">Home</a></li> | ||
55 | <li>Setup | ||
56 | <ul> | ||
57 | <li><a href="Download-and-Installation.html">Download and Installation</a></li> | ||
58 | <li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li> | ||
59 | <li><a href="Server-requirements.html">Server requirements</a></li> | ||
60 | <li><a href="Server-configuration.html">Server configuration</a></li> | ||
61 | <li><a href="Server-security.html">Server security</a></li> | ||
62 | <li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> | ||
63 | <li><a href="Plugins.html">Plugins</a></li> | ||
64 | </ul></li> | ||
65 | <li><a href="Docker.html">Docker</a></li> | ||
66 | <li><a href="Usage.html">Usage</a> | ||
67 | <ul> | ||
68 | <li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li> | ||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | ||
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | ||
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | ||
72 | <li><a href="REST-API.html">REST API</a></li> | ||
73 | </ul></li> | ||
74 | <li>How To | ||
75 | <ul> | ||
76 | <li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> | ||
77 | <li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> | ||
78 | <li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> | ||
79 | <li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> | ||
80 | <li><a href="Datastore-hacks.html">Datastore hacks</a></li> | ||
81 | </ul></li> | ||
82 | <li><a href="Troubleshooting.html">Troubleshooting</a></li> | ||
83 | <li><a href="Development.html">Development</a> | ||
84 | <ul> | ||
85 | <li><a href="GnuPG-signature.html">GnuPG signature</a></li> | ||
86 | <li><a href="Coding-guidelines.html">Coding guidelines</a></li> | ||
87 | <li><a href="Directory-structure.html">Directory structure</a></li> | ||
88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | ||
89 | <li><a href="Plugin-System.html">Plugin System</a></li> | ||
90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | ||
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
92 | <li><a href="Security.html">Security</a></li> | ||
93 | <li><a href="Static-analysis.html">Static analysis</a></li> | ||
94 | <li><a href="Theming.html">Theming</a></li> | ||
95 | <li><a href="Unit-tests.html">Unit tests</a></li> | ||
96 | </ul></li> | ||
97 | <li>About | ||
98 | <ul> | ||
99 | <li><a href="FAQ.html">FAQ</a></li> | ||
100 | <li><a href="Community-&-Related-software.html">Community & Related software</a></li> | ||
101 | </ul></li> | ||
102 | </ul> | ||
103 | </div> | ||
104 | <h1 id="rest-api">REST API</h1> | ||
105 | <h2 id="usage">Usage</h2> | ||
106 | <p>See the <a href="http://shaarli.github.io/api-documentation/">REST API documentation</a>.<a href=".html"></a></p> | ||
107 | <h2 id="authentication">Authentication</h2> | ||
108 | <p>All requests to Shaarli's API must include a JWT token to verify their authenticity.</p> | ||
109 | <p>This token has to be included as an HTTP header called <code>Authentication: Bearer <jwt token></code>.</p> | ||
110 | <p>JWT resources :</p> | ||
111 | <ul> | ||
112 | <li><a href="https://jwt.io">jwt.io</a> (including a list of client per language).<a href=".html"></a></li> | ||
113 | <li>RFC : <a href="https://tools.ietf.org/html/rfc7519" class="uri">https://tools.ietf.org/html/rfc7519</a></li> | ||
114 | <li><a href="https://float-middle.com/json-web-tokens-jwt-vs-sessions/" class="uri">https://float-middle.com/json-web-tokens-jwt-vs-sessions/</a></li> | ||
115 | <li>HackerNews thread: <a href="https://news.ycombinator.com/item?id=11929267" class="uri">https://news.ycombinator.com/item?id=11929267</a></li> | ||
116 | </ul> | ||
117 | <h3 id="shaarli-jwt-token">Shaarli JWT Token</h3> | ||
118 | <p>JWT tokens are composed by three parts, separated by a dot <code>.</code> and encoded in base64:</p> | ||
119 | <pre><code>[header].[payload].[signature][](.html)</code></pre> | ||
120 | <h4 id="header">Header</h4> | ||
121 | <p>Shaarli only allow one hash algorithm, so the header will always be the same:</p> | ||
122 | <div class="sourceCode"><pre class="sourceCode json"><code class="sourceCode json"><span class="fu">{</span> | ||
123 | <span class="dt">"typ"</span><span class="fu">:</span> <span class="st">"JWT"</span><span class="fu">,</span> | ||
124 | <span class="dt">"alg"</span><span class="fu">:</span> <span class="st">"HS512"</span> | ||
125 | <span class="fu">}</span></code></pre></div> | ||
126 | <p>Encoded in base64, it gives:</p> | ||
127 | <pre><code>ewogICAgICAgICJ0eXAiOiAiSldUIiwKICAgICAgICAiYWxnIjogIkhTNTEyIgogICAgfQ==</code></pre> | ||
128 | <h4 id="payload">Payload</h4> | ||
129 | <p><strong>Validity duration</strong></p> | ||
130 | <p>To avoid infinite token validity, JWT tokens must include their creation date in UNIX timestamp format (timezone independant - UTC) under the key <code>iat</code> (issued at). This token will be accepted during 9 minutes.</p> | ||
131 | <div class="sourceCode"><pre class="sourceCode json"><code class="sourceCode json"><span class="fu">{</span> | ||
132 | <span class="dt">"iat"</span><span class="fu">:</span> <span class="dv">1468663519</span> | ||
133 | <span class="fu">}</span></code></pre></div> | ||
134 | <p>See <a href="https://tools.ietf.org/html/rfc7519#section-4.1.6">RFC reference</a>.<a href=".html"></a></p> | ||
135 | <h4 id="signature">Signature</h4> | ||
136 | <p>The signature authenticate the token validity. It contains the base64 of the header and the body, separated by a dot <code>.</code>, hashed in SHA512 with the API secret available in Shaarli administration page.</p> | ||
137 | <p>Signature example with PHP:</p> | ||
138 | <div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="kw">$content</span> = <span class="fu">base64_encode</span><span class="ot">(</span><span class="kw">$header</span><span class="ot">)</span> . <span class="st">'.'</span> . <span class="fu">base64_encode</span><span class="ot">(</span><span class="kw">$payload</span><span class="ot">);</span> | ||
139 | <span class="kw">$signature</span> = <span class="fu">hash_hmac</span><span class="ot">(</span><span class="st">'sha512'</span><span class="ot">,</span> <span class="kw">$content</span><span class="ot">,</span> <span class="kw">$secret</span><span class="ot">);</span></code></pre></div> | ||
140 | <h3 id="complete-example">Complete example</h3> | ||
141 | <h4 id="php">PHP</h4> | ||
142 | <div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="kw">function</span> generateToken<span class="ot">(</span><span class="kw">$secret</span><span class="ot">)</span> { | ||
143 | <span class="kw">$header</span> = <span class="fu">base64_encode</span><span class="ot">(</span><span class="st">'{</span> | ||
144 | <span class="st"> "typ": "JWT",</span> | ||
145 | <span class="st"> "alg": "HS512"</span> | ||
146 | <span class="st"> }'</span><span class="ot">);</span> | ||
147 | <span class="kw">$payload</span> = <span class="fu">base64_encode</span><span class="ot">(</span><span class="st">'{</span> | ||
148 | <span class="st"> "iat": '</span>. <span class="fu">time</span><span class="ot">()</span> .<span class="st">'</span> | ||
149 | <span class="st"> }'</span><span class="ot">);</span> | ||
150 | <span class="kw">$signature</span> = <span class="fu">hash_hmac</span><span class="ot">(</span><span class="st">'sha512'</span><span class="ot">,</span> <span class="kw">$header</span> .<span class="st">'.'</span>. <span class="kw">$payload</span> <span class="ot">,</span> <span class="kw">$secret</span><span class="ot">);</span> | ||
151 | <span class="kw">return</span> <span class="kw">$header</span> .<span class="st">'.'</span>. <span class="kw">$payload</span> .<span class="st">'.'</span>. <span class="kw">$signature</span><span class="ot">;</span> | ||
152 | } | ||
153 | |||
154 | <span class="kw">$secret</span> = <span class="st">'mysecret'</span><span class="ot">;</span> | ||
155 | <span class="kw">$token</span> = generateToken<span class="ot">(</span><span class="kw">$secret</span><span class="ot">);</span> | ||
156 | <span class="fu">echo</span> <span class="kw">$token</span><span class="ot">;</span></code></pre></div> | ||
157 | <blockquote> | ||
158 | <p><code>ewogICAgICAgICJ0eXAiOiAiSldUIiwKICAgICAgICAiYWxnIjogIkhTNTEyIgogICAgfQ==.ewogICAgICAgICJpYXQiOiAxNDY4NjY3MDQ3CiAgICB9.1d2c54fa947daf594fdbf7591796195652c8bc63bffad7f6a6db2a41c313f495a542cbfb595acade79e83f3810d709b4251d7b940bbc10b531a6e6134af63a68</code></p> | ||
159 | </blockquote> | ||
160 | <div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="kw">$options</span> = <span class="ot">[[](</span>.html<span class="ot">)</span> | ||
161 | <span class="st">'http'</span> => <span class="ot">[[](</span>.html<span class="ot">)</span> | ||
162 | <span class="st">'method'</span> => <span class="st">'GET'</span><span class="ot">,</span> | ||
163 | <span class="st">'jwt'</span> => <span class="kw">$token</span><span class="ot">,</span> | ||
164 | <span class="ot">],</span> | ||
165 | <span class="ot">];</span> | ||
166 | <span class="kw">$context</span> = <span class="fu">stream_context_create</span><span class="ot">(</span><span class="kw">$options</span><span class="ot">);</span> | ||
167 | <span class="fu">file_get_contents</span><span class="ot">(</span><span class="kw">$apiEndpoint</span><span class="ot">,</span> <span class="kw">false</span><span class="ot">,</span> <span class="kw">$context</span><span class="ot">);</span></code></pre></div> | ||
168 | </body> | ||
169 | </html> | ||
diff --git a/doc/REST-API.md b/doc/REST-API.md new file mode 100644 index 00000000..d7909978 --- /dev/null +++ b/doc/REST-API.md | |||
@@ -0,0 +1,105 @@ | |||
1 | #REST API | ||
2 | ## Usage | ||
3 | |||
4 | See the [REST API documentation](http://shaarli.github.io/api-documentation/).[](.html) | ||
5 | |||
6 | ## Authentication | ||
7 | |||
8 | All requests to Shaarli's API must include a JWT token to verify their authenticity. | ||
9 | |||
10 | This token has to be included as an HTTP header called `Authentication: Bearer <jwt token>`. | ||
11 | |||
12 | JWT resources : | ||
13 | |||
14 | * [jwt.io](https://jwt.io) (including a list of client per language).[](.html) | ||
15 | * RFC : https://tools.ietf.org/html/rfc7519 | ||
16 | * https://float-middle.com/json-web-tokens-jwt-vs-sessions/ | ||
17 | * HackerNews thread: https://news.ycombinator.com/item?id=11929267 | ||
18 | |||
19 | |||
20 | ### Shaarli JWT Token | ||
21 | |||
22 | JWT tokens are composed by three parts, separated by a dot `.` and encoded in base64: | ||
23 | |||
24 | ``` | ||
25 | [header].[payload].[signature][](.html) | ||
26 | ``` | ||
27 | |||
28 | #### Header | ||
29 | |||
30 | Shaarli only allow one hash algorithm, so the header will always be the same: | ||
31 | |||
32 | ```json | ||
33 | { | ||
34 | "typ": "JWT", | ||
35 | "alg": "HS512" | ||
36 | } | ||
37 | ``` | ||
38 | |||
39 | Encoded in base64, it gives: | ||
40 | |||
41 | ``` | ||
42 | ewogICAgICAgICJ0eXAiOiAiSldUIiwKICAgICAgICAiYWxnIjogIkhTNTEyIgogICAgfQ== | ||
43 | ``` | ||
44 | |||
45 | #### Payload | ||
46 | |||
47 | **Validity duration** | ||
48 | |||
49 | To avoid infinite token validity, JWT tokens must include their creation date in UNIX timestamp format (timezone independant - UTC) under the key `iat` (issued at). This token will be accepted during 9 minutes. | ||
50 | |||
51 | ```json | ||
52 | { | ||
53 | "iat": 1468663519 | ||
54 | } | ||
55 | ``` | ||
56 | |||
57 | See [RFC reference](https://tools.ietf.org/html/rfc7519#section-4.1.6).[](.html) | ||
58 | |||
59 | |||
60 | #### Signature | ||
61 | |||
62 | The signature authenticate the token validity. It contains the base64 of the header and the body, separated by a dot `.`, hashed in SHA512 with the API secret available in Shaarli administration page. | ||
63 | |||
64 | Signature example with PHP: | ||
65 | |||
66 | ```php | ||
67 | $content = base64_encode($header) . '.' . base64_encode($payload); | ||
68 | $signature = hash_hmac('sha512', $content, $secret); | ||
69 | ``` | ||
70 | |||
71 | |||
72 | ### Complete example | ||
73 | |||
74 | #### PHP | ||
75 | |||
76 | ```php | ||
77 | function generateToken($secret) { | ||
78 | $header = base64_encode('{ | ||
79 | "typ": "JWT", | ||
80 | "alg": "HS512" | ||
81 | }'); | ||
82 | $payload = base64_encode('{ | ||
83 | "iat": '. time() .' | ||
84 | }'); | ||
85 | $signature = hash_hmac('sha512', $header .'.'. $payload , $secret); | ||
86 | return $header .'.'. $payload .'.'. $signature; | ||
87 | } | ||
88 | |||
89 | $secret = 'mysecret'; | ||
90 | $token = generateToken($secret); | ||
91 | echo $token; | ||
92 | ``` | ||
93 | |||
94 | > `ewogICAgICAgICJ0eXAiOiAiSldUIiwKICAgICAgICAiYWxnIjogIkhTNTEyIgogICAgfQ==.ewogICAgICAgICJpYXQiOiAxNDY4NjY3MDQ3CiAgICB9.1d2c54fa947daf594fdbf7591796195652c8bc63bffad7f6a6db2a41c313f495a542cbfb595acade79e83f3810d709b4251d7b940bbc10b531a6e6134af63a68` | ||
95 | |||
96 | ```php | ||
97 | $options = [[](.html) | ||
98 | 'http' => [[](.html) | ||
99 | 'method' => 'GET', | ||
100 | 'jwt' => $token, | ||
101 | ], | ||
102 | ]; | ||
103 | $context = stream_context_create($options); | ||
104 | file_get_contents($apiEndpoint, false, $context); | ||
105 | ``` | ||
diff --git a/doc/RSS-feeds.html b/doc/RSS-feeds.html index 0f332b3d..0ebfecc6 100644 --- a/doc/RSS-feeds.html +++ b/doc/RSS-feeds.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Release-Shaarli.html b/doc/Release-Shaarli.html index 0d9fa3e1..fa690c7c 100644 --- a/doc/Release-Shaarli.html +++ b/doc/Release-Shaarli.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
@@ -192,6 +194,8 @@ $ <span class="fu">git</span> verify-tag f7762cf803f03f5caf4b8078359a63783d0090c | |||
192 | <span class="ex">gpg</span>: Signature made Thu 30 Jul 2015 11:46:34 CEST using RSA key ID 4100DF6F | 194 | <span class="ex">gpg</span>: Signature made Thu 30 Jul 2015 11:46:34 CEST using RSA key ID 4100DF6F |
193 | <span class="ex">gpg</span>: Good signature from <span class="st">"VirtualTam <virtualtam@flibidi.net>"</span> [ultimate][](.html)</code></pre></div> | 195 | <span class="ex">gpg</span>: Good signature from <span class="st">"VirtualTam <virtualtam@flibidi.net>"</span> [ultimate][](.html)</code></pre></div> |
194 | <h2 id="publish-the-github-release">Publish the GitHub release</h2> | 196 | <h2 id="publish-the-github-release">Publish the GitHub release</h2> |
197 | <h3 id="update-release-badges">Update release badges</h3> | ||
198 | <p>Update <code>README.md</code> so version badges display and point to the newly released Shaarli version(s).</p> | ||
195 | <h3 id="create-a-github-release-from-a-git-tag">Create a GitHub release from a Git tag</h3> | 199 | <h3 id="create-a-github-release-from-a-git-tag">Create a GitHub release from a Git tag</h3> |
196 | <p>From the previously drafted release:</p> | 200 | <p>From the previously drafted release:</p> |
197 | <ul> | 201 | <ul> |
diff --git a/doc/Release-Shaarli.md b/doc/Release-Shaarli.md index 556a96ee..ced58853 100644 --- a/doc/Release-Shaarli.md +++ b/doc/Release-Shaarli.md | |||
@@ -103,6 +103,9 @@ gpg: Good signature from "VirtualTam <virtualtam@flibidi.net>" [ultimate][](.htm | |||
103 | ``` | 103 | ``` |
104 | 104 | ||
105 | ## Publish the GitHub release | 105 | ## Publish the GitHub release |
106 | ### Update release badges | ||
107 | Update `README.md` so version badges display and point to the newly released Shaarli version(s). | ||
108 | |||
106 | ### Create a GitHub release from a Git tag | 109 | ### Create a GitHub release from a Git tag |
107 | From the previously drafted release: | 110 | From the previously drafted release: |
108 | - edit the release notes (if needed) | 111 | - edit the release notes (if needed) |
diff --git a/doc/Security.html b/doc/Security.html index cec20590..12b46fa9 100644 --- a/doc/Security.html +++ b/doc/Security.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Server-configuration.html b/doc/Server-configuration.html index 2f1c25b5..0e6b220a 100644 --- a/doc/Server-configuration.html +++ b/doc/Server-configuration.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
@@ -196,6 +198,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
196 | <h3 id="htaccess">.htaccess</h3> | 198 | <h3 id="htaccess">.htaccess</h3> |
197 | <p>Shaarli use <code>.htaccess</code> Apache files to deny access to files that shouldn't be directly accessed (datastore, config, etc.). You need the directive <code>AllowOverride All</code> in your virtual host configuration for them to work.</p> | 199 | <p>Shaarli use <code>.htaccess</code> Apache files to deny access to files that shouldn't be directly accessed (datastore, config, etc.). You need the directive <code>AllowOverride All</code> in your virtual host configuration for them to work.</p> |
198 | <p><strong>Warning</strong>: If you use Apache 2.2 or lower, you need <a href="https://httpd.apache.org/docs/current/mod/mod_version.html">mod_version</a> to be installed and enabled.<a href=".html"></a></p> | 200 | <p><strong>Warning</strong>: If you use Apache 2.2 or lower, you need <a href="https://httpd.apache.org/docs/current/mod/mod_version.html">mod_version</a> to be installed and enabled.<a href=".html"></a></p> |
201 | <p>Apache module <code>mod_rewrite</code> <strong>must</strong> be enabled to use the REST API. URL rewriting rules for the Slim microframework are stated in the root <code>.htaccess</code> file.</p> | ||
199 | <h2 id="lighthttpd">LightHttpd</h2> | 202 | <h2 id="lighthttpd">LightHttpd</h2> |
200 | <h2 id="nginx">Nginx</h2> | 203 | <h2 id="nginx">Nginx</h2> |
201 | <h3 id="foreword">Foreword</h3> | 204 | <h3 id="foreword">Foreword</h3> |
@@ -296,11 +299,14 @@ http { | |||
296 | error_log /var/log/nginx/error.log; | 299 | error_log /var/log/nginx/error.log; |
297 | 300 | ||
298 | location /shaarli/ { | 301 | location /shaarli/ { |
302 | try_files $uri /shaarli/index.php$is_args$args; | ||
299 | access_log /var/log/nginx/shaarli.access.log; | 303 | access_log /var/log/nginx/shaarli.access.log; |
300 | error_log /var/log/nginx/shaarli.error.log; | 304 | error_log /var/log/nginx/shaarli.error.log; |
301 | } | 305 | } |
302 | 306 | ||
303 | location ~ (index)\.php$ { | 307 | location ~ (index)\.php$ { |
308 | try_files $uri =404; | ||
309 | fastcgi_split_path_info ^(.+\.php)(/.+)$; | ||
304 | fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; | 310 | fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; |
305 | fastcgi_index index.php; | 311 | fastcgi_index index.php; |
306 | include fastcgi.conf; | 312 | include fastcgi.conf; |
@@ -335,6 +341,10 @@ location ~ ~$ { | |||
335 | }</code></pre> | 341 | }</code></pre> |
336 | <pre class="nginx"><code># /etc/nginx/php.conf | 342 | <pre class="nginx"><code># /etc/nginx/php.conf |
337 | location ~ (index)\.php$ { | 343 | location ~ (index)\.php$ { |
344 | # Slim - split URL path into (script_filename, path_info) | ||
345 | try_files $uri =404; | ||
346 | fastcgi_split_path_info ^(.+\.php)(/.+)$; | ||
347 | |||
338 | # filter and proxy PHP requests to PHP-FPM | 348 | # filter and proxy PHP requests to PHP-FPM |
339 | fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; | 349 | fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; |
340 | fastcgi_index index.php; | 350 | fastcgi_index index.php; |
@@ -367,6 +377,9 @@ http { | |||
367 | server_name my.first.domain.org; | 377 | server_name my.first.domain.org; |
368 | 378 | ||
369 | location /shaarli/ { | 379 | location /shaarli/ { |
380 | # Slim - rewrite URLs | ||
381 | try_files $uri /shaarli/index.php$is_args$args; | ||
382 | |||
370 | access_log /var/log/nginx/shaarli.access.log; | 383 | access_log /var/log/nginx/shaarli.access.log; |
371 | error_log /var/log/nginx/shaarli.error.log; | 384 | error_log /var/log/nginx/shaarli.error.log; |
372 | } | 385 | } |
@@ -425,6 +438,9 @@ http { | |||
425 | ssl_certificate_key /home/john/ssl/localhost.key; | 438 | ssl_certificate_key /home/john/ssl/localhost.key; |
426 | 439 | ||
427 | location /shaarli/ { | 440 | location /shaarli/ { |
441 | # Slim - rewrite URLs | ||
442 | try_files $uri /index.php$is_args$args; | ||
443 | |||
428 | access_log /var/log/nginx/shaarli.access.log; | 444 | access_log /var/log/nginx/shaarli.access.log; |
429 | error_log /var/log/nginx/shaarli.error.log; | 445 | error_log /var/log/nginx/shaarli.error.log; |
430 | } | 446 | } |
diff --git a/doc/Server-configuration.md b/doc/Server-configuration.md index df10feb2..81cc1a72 100644 --- a/doc/Server-configuration.md +++ b/doc/Server-configuration.md | |||
@@ -107,6 +107,8 @@ See [Server-side TLS](https://wiki.mozilla.org/Security/Server_Side_TLS#Apache) | |||
107 | Shaarli use `.htaccess` Apache files to deny access to files that shouldn't be directly accessed (datastore, config, etc.). You need the directive `AllowOverride All` in your virtual host configuration for them to work. | 107 | Shaarli use `.htaccess` Apache files to deny access to files that shouldn't be directly accessed (datastore, config, etc.). You need the directive `AllowOverride All` in your virtual host configuration for them to work. |
108 | 108 | ||
109 | **Warning**: If you use Apache 2.2 or lower, you need [mod_version](https://httpd.apache.org/docs/current/mod/mod_version.html) to be installed and enabled.[](.html) | 109 | **Warning**: If you use Apache 2.2 or lower, you need [mod_version](https://httpd.apache.org/docs/current/mod/mod_version.html) to be installed and enabled.[](.html) |
110 | |||
111 | Apache module `mod_rewrite` **must** be enabled to use the REST API. URL rewriting rules for the Slim microframework are stated in the root `.htaccess` file. | ||
110 | 112 | ||
111 | ## LightHttpd | 113 | ## LightHttpd |
112 | 114 | ||
@@ -218,11 +220,14 @@ http { | |||
218 | error_log /var/log/nginx/error.log; | 220 | error_log /var/log/nginx/error.log; |
219 | 221 | ||
220 | location /shaarli/ { | 222 | location /shaarli/ { |
223 | try_files $uri /shaarli/index.php$is_args$args; | ||
221 | access_log /var/log/nginx/shaarli.access.log; | 224 | access_log /var/log/nginx/shaarli.access.log; |
222 | error_log /var/log/nginx/shaarli.error.log; | 225 | error_log /var/log/nginx/shaarli.error.log; |
223 | } | 226 | } |
224 | 227 | ||
225 | location ~ (index)\.php$ { | 228 | location ~ (index)\.php$ { |
229 | try_files $uri =404; | ||
230 | fastcgi_split_path_info ^(.+\.php)(/.+)$; | ||
226 | fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; | 231 | fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; |
227 | fastcgi_index index.php; | 232 | fastcgi_index index.php; |
228 | include fastcgi.conf; | 233 | include fastcgi.conf; |
@@ -261,6 +266,10 @@ location ~ ~$ { | |||
261 | ```nginx | 266 | ```nginx |
262 | # /etc/nginx/php.conf | 267 | # /etc/nginx/php.conf |
263 | location ~ (index)\.php$ { | 268 | location ~ (index)\.php$ { |
269 | # Slim - split URL path into (script_filename, path_info) | ||
270 | try_files $uri =404; | ||
271 | fastcgi_split_path_info ^(.+\.php)(/.+)$; | ||
272 | |||
264 | # filter and proxy PHP requests to PHP-FPM | 273 | # filter and proxy PHP requests to PHP-FPM |
265 | fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; | 274 | fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; |
266 | fastcgi_index index.php; | 275 | fastcgi_index index.php; |
@@ -299,6 +308,9 @@ http { | |||
299 | server_name my.first.domain.org; | 308 | server_name my.first.domain.org; |
300 | 309 | ||
301 | location /shaarli/ { | 310 | location /shaarli/ { |
311 | # Slim - rewrite URLs | ||
312 | try_files $uri /shaarli/index.php$is_args$args; | ||
313 | |||
302 | access_log /var/log/nginx/shaarli.access.log; | 314 | access_log /var/log/nginx/shaarli.access.log; |
303 | error_log /var/log/nginx/shaarli.error.log; | 315 | error_log /var/log/nginx/shaarli.error.log; |
304 | } | 316 | } |
@@ -361,6 +373,9 @@ http { | |||
361 | ssl_certificate_key /home/john/ssl/localhost.key; | 373 | ssl_certificate_key /home/john/ssl/localhost.key; |
362 | 374 | ||
363 | location /shaarli/ { | 375 | location /shaarli/ { |
376 | # Slim - rewrite URLs | ||
377 | try_files $uri /index.php$is_args$args; | ||
378 | |||
364 | access_log /var/log/nginx/shaarli.access.log; | 379 | access_log /var/log/nginx/shaarli.access.log; |
365 | error_log /var/log/nginx/shaarli.error.log; | 380 | error_log /var/log/nginx/shaarli.error.log; |
366 | } | 381 | } |
diff --git a/doc/Server-requirements.html b/doc/Server-requirements.html index 2c2545bb..79d74118 100644 --- a/doc/Server-requirements.html +++ b/doc/Server-requirements.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
@@ -83,26 +85,31 @@ | |||
83 | </thead> | 85 | </thead> |
84 | <tbody> | 86 | <tbody> |
85 | <tr class="odd"> | 87 | <tr class="odd"> |
88 | <td style="text-align: center;">7.1</td> | ||
89 | <td style="text-align: center;">Supported (v0.9.x)</td> | ||
90 | <td style="text-align: center;">✅</td> | ||
91 | </tr> | ||
92 | <tr class="even"> | ||
86 | <td style="text-align: center;">7.0</td> | 93 | <td style="text-align: center;">7.0</td> |
87 | <td style="text-align: center;">Supported</td> | 94 | <td style="text-align: center;">Supported</td> |
88 | <td style="text-align: center;">✅</td> | 95 | <td style="text-align: center;">✅</td> |
89 | </tr> | 96 | </tr> |
90 | <tr class="even"> | 97 | <tr class="odd"> |
91 | <td style="text-align: center;">5.6</td> | 98 | <td style="text-align: center;">5.6</td> |
92 | <td style="text-align: center;">Supported</td> | 99 | <td style="text-align: center;">Supported</td> |
93 | <td style="text-align: center;">✅</td> | 100 | <td style="text-align: center;">✅</td> |
94 | </tr> | 101 | </tr> |
95 | <tr class="odd"> | 102 | <tr class="even"> |
96 | <td style="text-align: center;">5.5</td> | 103 | <td style="text-align: center;">5.5</td> |
97 | <td style="text-align: center;">EOL: 2016-07-10</td> | 104 | <td style="text-align: center;">EOL: 2016-07-10</td> |
98 | <td style="text-align: center;">✅</td> | 105 | <td style="text-align: center;">✅</td> |
99 | </tr> | 106 | </tr> |
100 | <tr class="even"> | 107 | <tr class="odd"> |
101 | <td style="text-align: center;">5.4</td> | 108 | <td style="text-align: center;">5.4</td> |
102 | <td style="text-align: center;">EOL: 2015-09-14</td> | 109 | <td style="text-align: center;">EOL: 2015-09-14</td> |
103 | <td style="text-align: center;">✅ (up to Shaarli 0.8.x)</td> | 110 | <td style="text-align: center;">✅ (up to Shaarli 0.8.x)</td> |
104 | </tr> | 111 | </tr> |
105 | <tr class="odd"> | 112 | <tr class="even"> |
106 | <td style="text-align: center;">5.3</td> | 113 | <td style="text-align: center;">5.3</td> |
107 | <td style="text-align: center;">EOL: 2014-08-14</td> | 114 | <td style="text-align: center;">EOL: 2014-08-14</td> |
108 | <td style="text-align: center;">✅ (up to Shaarli 0.8.x)</td> | 115 | <td style="text-align: center;">✅ (up to Shaarli 0.8.x)</td> |
@@ -130,6 +137,16 @@ download and install third-party PHP dependencies.</p> | |||
130 | <td style="text-align: center;">All</td> | 137 | <td style="text-align: center;">All</td> |
131 | <td>Import bookmarks from Netscape files<a href=".html"></a></td> | 138 | <td>Import bookmarks from Netscape files<a href=".html"></a></td> |
132 | </tr> | 139 | </tr> |
140 | <tr class="even"> | ||
141 | <td><a href="https://packagist.org/packages/erusev/parsedown"><code>erusev/parsedown</code></a></td> | ||
142 | <td style="text-align: center;">All</td> | ||
143 | <td>Parse MarkDown syntax for the MarkDown plugin<a href=".html"></a></td> | ||
144 | </tr> | ||
145 | <tr class="odd"> | ||
146 | <td><a href="https://packagist.org/packages/slim/slim"><code>slim/slim</code></a></td> | ||
147 | <td style="text-align: center;">All</td> | ||
148 | <td>Handle routes and middleware for the REST API<a href=".html"></a></td> | ||
149 | </tr> | ||
133 | </tbody> | 150 | </tbody> |
134 | </table> | 151 | </table> |
135 | <h3 id="extensions">Extensions</h3> | 152 | <h3 id="extensions">Extensions</h3> |
diff --git a/doc/Server-requirements.md b/doc/Server-requirements.md index 4962193e..07e70ab3 100644 --- a/doc/Server-requirements.md +++ b/doc/Server-requirements.md | |||
@@ -10,6 +10,7 @@ | |||
10 | ### Supported versions | 10 | ### Supported versions |
11 | Version | Status | Shaarli compatibility | 11 | Version | Status | Shaarli compatibility |
12 | :---:|:---:|:---: | 12 | :---:|:---:|:---: |
13 | 7.1 | Supported (v0.9.x) | :white_check_mark: | ||
13 | 7.0 | Supported | :white_check_mark: | 14 | 7.0 | Supported | :white_check_mark: |
14 | 5.6 | Supported | :white_check_mark: | 15 | 5.6 | Supported | :white_check_mark: |
15 | 5.5 | EOL: 2016-07-10 | :white_check_mark: | 16 | 5.5 | EOL: 2016-07-10 | :white_check_mark: |
@@ -26,6 +27,8 @@ download and install third-party PHP dependencies. | |||
26 | Library | Required? | Usage | 27 | Library | Required? | Usage |
27 | ---|:---:|--- | 28 | ---|:---:|--- |
28 | [`shaarli/netscape-bookmark-parser`](https://packagist.org/packages/shaarli/netscape-bookmark-parser) | All | Import bookmarks from Netscape files[](.html) | 29 | [`shaarli/netscape-bookmark-parser`](https://packagist.org/packages/shaarli/netscape-bookmark-parser) | All | Import bookmarks from Netscape files[](.html) |
30 | [`erusev/parsedown`](https://packagist.org/packages/erusev/parsedown) | All | Parse MarkDown syntax for the MarkDown plugin[](.html) | ||
31 | [`slim/slim`](https://packagist.org/packages/slim/slim) | All | Handle routes and middleware for the REST API[](.html) | ||
29 | 32 | ||
30 | ### Extensions | 33 | ### Extensions |
31 | Extension | Required? | Usage | 34 | Extension | Required? | Usage |
diff --git a/doc/Server-security.html b/doc/Server-security.html index 3551deff..4f7ff468 100644 --- a/doc/Server-security.html +++ b/doc/Server-security.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Shaarli-configuration.html b/doc/Shaarli-configuration.html index 6d717c65..c696c97c 100644 --- a/doc/Shaarli-configuration.html +++ b/doc/Shaarli-configuration.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
@@ -169,6 +171,7 @@ It might be useful if your IP adress often changes.<br /> | |||
169 | <h3 id="resources">Resources</h3> | 171 | <h3 id="resources">Resources</h3> |
170 | <p><strong>data_dir</strong>: Data directory.<br /> | 172 | <p><strong>data_dir</strong>: Data directory.<br /> |
171 | <strong>datastore</strong>: Shaarli's links database file path.<br /> | 173 | <strong>datastore</strong>: Shaarli's links database file path.<br /> |
174 | <strong>history</strong>: Shaarli's operation history file path.<br /> | ||
172 | <strong>updates</strong>: File path for the ran updates file.<br /> | 175 | <strong>updates</strong>: File path for the ran updates file.<br /> |
173 | <strong>log</strong>: Log file path.<br /> | 176 | <strong>log</strong>: Log file path.<br /> |
174 | <strong>update_check</strong>: Last update check file path.<br /> | 177 | <strong>update_check</strong>: Last update check file path.<br /> |
diff --git a/doc/Shaarli-configuration.md b/doc/Shaarli-configuration.md index 4a783c0e..25647cb7 100644 --- a/doc/Shaarli-configuration.md +++ b/doc/Shaarli-configuration.md | |||
@@ -70,6 +70,7 @@ It might be useful if your IP adress often changes. | |||
70 | 70 | ||
71 | **data_dir**: Data directory. | 71 | **data_dir**: Data directory. |
72 | **datastore**: Shaarli's links database file path. | 72 | **datastore**: Shaarli's links database file path. |
73 | **history**: Shaarli's operation history file path. | ||
73 | **updates**: File path for the ran updates file. | 74 | **updates**: File path for the ran updates file. |
74 | **log**: Log file path. | 75 | **log**: Log file path. |
75 | **update_check**: Last update check file path. | 76 | **update_check**: Last update check file path. |
diff --git a/doc/Sharing-button.html b/doc/Sharing-button.html index 93710efe..f3682f8c 100644 --- a/doc/Sharing-button.html +++ b/doc/Sharing-button.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Static-analysis.html b/doc/Static-analysis.html index d964e917..a95d195e 100644 --- a/doc/Static-analysis.html +++ b/doc/Static-analysis.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Theming.html b/doc/Theming.html index 7cbf7aef..6b5dac35 100644 --- a/doc/Theming.html +++ b/doc/Theming.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
@@ -100,42 +102,56 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
100 | </ul> | 102 | </ul> |
101 | </div> | 103 | </div> |
102 | <h1 id="theming">Theming</h1> | 104 | <h1 id="theming">Theming</h1> |
103 | <h2 id="user-css">User CSS</h2> | 105 | <h2 id="foreword">Foreword</h2> |
106 | <p>There are two ways of customizing how Shaarli looks:</p> | ||
107 | <ol> | ||
108 | <li>by using a custom CSS to override Shaarli's CSS</li> | ||
109 | <li>by using a full theme that provides its own RainTPL templates, CSS and Javascript resources</li> | ||
110 | </ol> | ||
111 | <h2 id="custom-css">Custom CSS</h2> | ||
112 | <p>Shaarli's appearance can be modified by adding CSS rules to:</p> | ||
104 | <ul> | 113 | <ul> |
105 | <li>Shaarli's apparence can be modified by editing CSS rules in <code>inc/user.css</code>. This file allows to override rules defined in the main <code>inc/shaarli.css</code> (only add changed rules), or define a whole new theme.</li> | 114 | <li>Shaarli < <code>v0.9.0</code>: <code>inc/user.css</code></li> |
106 | <li>Do not edit <code>inc/shaarli.css</code>! Your changes would be overriden when updating Shaarli.</li> | 115 | <li>Shaarli >= <code>v0.9.0</code>: <code>data/user.css</code></li> |
107 | <li>Some themes are available at <a href="https://github.com/shaarli/shaarli-themes" class="uri">https://github.com/shaarli/shaarli-themes</a>.</li> | ||
108 | </ul> | 116 | </ul> |
109 | <p>See also:</p> | 117 | <p>This file allows overriding rules defined in the template CSS files (only add changed rules), or define a whole new theme.</p> |
110 | <ul> | 118 | <p><strong>Note</strong>: Do not edit <code>tpl/default/css/shaarli.css</code>! Your changes would be overridden when updating Shaarli.</p> |
111 | <li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> | 119 | <p>See also <a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></p> |
112 | </ul> | 120 | <h2 id="themes">Themes</h2> |
113 | <h2 id="raintpl-template">RainTPL template</h2> | ||
114 | <p><em>WARNING - This feature is currently being worked on and will be improved in the next releases. Experimental.</em></p> | 121 | <p><em>WARNING - This feature is currently being worked on and will be improved in the next releases. Experimental.</em></p> |
122 | <p>Installation:</p> | ||
115 | <ul> | 123 | <ul> |
116 | <li>Find the template you'd like to install (see the list of <a href="available-templates%7CTheming#community-themes--templates.html">available templates|Theming#community-themes--templates</a>)</li> | 124 | <li>find a theme you'd like to install</li> |
117 | <li>Find it's git clone URL or download the zip archive for the template.</li> | 125 | <li>copy or clone the theme folder under <code>tpl/<a_sweet_theme></code></li> |
118 | <li>In your Shaarli <code>tpl/</code> directory, run <code>git clone https://url/of/my-template/</code> or unpack the zip archive. | 126 | <li>enable the theme: |
119 | <ul> | 127 | <ul> |
120 | <li>There should now be a <code>my-template/</code> directory under the <code>tpl/</code> dir, containing directly all the template files.</li> | 128 | <li>Shaarli < <code>v0.9.0</code>: edit <code>data/config.json.php</code> and set the value of <code>raintpl_tpl</code> to the new theme name:<br /> |
129 | <code>"raintpl_tpl": "tpl\/my-template\/"</code></li> | ||
130 | <li>Shaarli >= <code>v0.9.0</code>: select the theme through the <em>Tools</em> page</li> | ||
121 | </ul></li> | 131 | </ul></li> |
122 | <li><p>Edit <code>data/config.json.php</code> to have Shaarli use this template, in <code>"resource"</code> e.g.</p> | ||
123 | <div class="sourceCode"><pre class="sourceCode json"><code class="sourceCode json"><span class="er">"raintpl_tpl":</span> <span class="er">"tpl\/my-template\/",</span></code></pre></div></li> | ||
124 | </ul> | 132 | </ul> |
125 | <h2 id="community-themes-templates">Community themes & templates</h2> | 133 | <h2 id="community-css-themes">Community CSS & themes</h2> |
134 | <h3 id="custom-css-1">Custom CSS</h3> | ||
135 | <ul> | ||
136 | <li><a href="https://github.com/mrjovanovic/serious-theme-shaarli">mrjovanovic/serious-theme-shaarli</a> - A serious theme for Shaarli<a href=".html"></a></li> | ||
137 | <li><a href="https://github.com/shaarli/shaarli-themes">shaarli/shaarli-themes</a><a href=".html"></a></li> | ||
138 | </ul> | ||
139 | <h3 id="themes-1">Themes</h3> | ||
126 | <ul> | 140 | <ul> |
127 | <li><a href="https://github.com/AkibaTech/Shaarli---SuperHero-Theme">AkibaTech/Shaarli Superhero Theme</a> - A template/theme for Shaarli<a href=".html"></a></li> | 141 | <li><a href="https://github.com/AkibaTech/Shaarli---SuperHero-Theme">AkibaTech/Shaarli Superhero Theme</a> - A template/theme for Shaarli<a href=".html"></a></li> |
128 | <li><a href="https://github.com/alexisju/albinomouse-template">alexisju/albinomouse-template</a> - A full template for Shaarli<a href=".html"></a></li> | 142 | <li><a href="https://github.com/alexisju/albinomouse-template">alexisju/albinomouse-template</a> - A full template for Shaarli<a href=".html"></a></li> |
129 | <li><a href="https://github.com/ArthurHoaro/shaarli-launch">ArthurHoaro/shaarli-launch</a> - Customizable Shaarli theme.<a href=".html"></a></li> | 143 | <li><a href="https://github.com/ArthurHoaro/shaarli-launch">ArthurHoaro/shaarli-launch</a> - Customizable Shaarli theme<a href=".html"></a></li> |
130 | <li><a href="https://github.com/dhoko/ShaarliTemplate">dhoko/ShaarliTemplate</a> - A template/theme for Shaarli<a href=".html"></a></li> | 144 | <li><a href="https://github.com/dhoko/ShaarliTemplate">dhoko/ShaarliTemplate</a> - A template/theme for Shaarli<a href=".html"></a></li> |
131 | <li><a href="https://github.com/kalvn/shaarli-blocks">kalvn/shaarli-blocks</a> - A template/theme for Shaarli<a href=".html"></a></li> | 145 | <li><a href="https://github.com/kalvn/shaarli-blocks">kalvn/shaarli-blocks</a> - A template/theme for Shaarli<a href=".html"></a></li> |
132 | <li><a href="https://github.com/kalvn/Shaarli-Material">kalvn/Shaarli-Material</a> - A theme (template) based on Google's Material Design for Shaarli, the superfast delicious clone.<a href=".html"></a></li> | 146 | <li><a href="https://github.com/kalvn/Shaarli-Material">kalvn/Shaarli-Material</a> - A theme (template) based on Google's Material Design for Shaarli, the superfast delicious clone<a href=".html"></a></li> |
133 | <li><a href="https://github.com/ManufacturaInd/shaarli-2004licious-theme">ManufacturaInd/shaarli-2004licious-theme</a> - A template/theme as a humble homage to the early looks of the del.icio.us site.<a href=".html"></a></li> | 147 | <li><a href="https://github.com/ManufacturaInd/shaarli-2004licious-theme">ManufacturaInd/shaarli-2004licious-theme</a> - A template/theme as a humble homage to the early looks of the del.icio.us site<a href=".html"></a></li> |
148 | </ul> | ||
149 | <h3 id="shaarli-forks">Shaarli forks</h3> | ||
150 | <ul> | ||
134 | <li><a href="https://github.com/misterair/limonade">misterair/Limonade</a> - A fork of (legacy) Shaarli with a new template<a href=".html"></a></li> | 151 | <li><a href="https://github.com/misterair/limonade">misterair/Limonade</a> - A fork of (legacy) Shaarli with a new template<a href=".html"></a></li> |
135 | <li><a href="https://github.com/mrjovanovic/serious-theme-shaarli">mrjovanovic/serious-theme-shaarli</a> - A serious theme for SHaarli.<a href=".html"></a></li> | ||
136 | <li><a href="https://github.com/vivienhaese/shaarlitheme">vivienhaese/shaarlitheme</a> - A Shaarli fork meant to be run in an openshift instance<a href=".html"></a></li> | 152 | <li><a href="https://github.com/vivienhaese/shaarlitheme">vivienhaese/shaarlitheme</a> - A Shaarli fork meant to be run in an openshift instance<a href=".html"></a></li> |
137 | </ul> | 153 | </ul> |
138 | <h3 id="example-installation-albinomouse-template">Example installation: AlbinoMouse template</h3> | 154 | <h2 id="example-installation-albinomouse-theme">Example installation: AlbinoMouse theme</h2> |
139 | <p>With the following configuration:</p> | 155 | <p>With the following configuration:</p> |
140 | <ul> | 156 | <ul> |
141 | <li>Apache 2 / PHP 5.6</li> | 157 | <li>Apache 2 / PHP 5.6</li> |
diff --git a/doc/Theming.md b/doc/Theming.md index a21899c2..23877e5d 100644 --- a/doc/Theming.md +++ b/doc/Theming.md | |||
@@ -1,39 +1,51 @@ | |||
1 | #Theming | 1 | #Theming |
2 | ## User CSS | 2 | ## Foreword |
3 | There are two ways of customizing how Shaarli looks: | ||
3 | 4 | ||
4 | - Shaarli's apparence can be modified by editing CSS rules in `inc/user.css`. This file allows to override rules defined in the main `inc/shaarli.css` (only add changed rules), or define a whole new theme. | 5 | 1. by using a custom CSS to override Shaarli's CSS |
5 | - Do not edit `inc/shaarli.css`! Your changes would be overriden when updating Shaarli. | 6 | 2. by using a full theme that provides its own RainTPL templates, CSS and Javascript resources |
6 | - Some themes are available at https://github.com/shaarli/shaarli-themes. | ||
7 | 7 | ||
8 | See also: | 8 | ## Custom CSS |
9 | - [Download CSS styles from an OPML list](Download-CSS-styles-from-an-OPML-list.html) | 9 | Shaarli's appearance can be modified by adding CSS rules to: |
10 | - Shaarli < `v0.9.0`: `inc/user.css` | ||
11 | - Shaarli >= `v0.9.0`: `data/user.css` | ||
10 | 12 | ||
11 | ## RainTPL template | 13 | This file allows overriding rules defined in the template CSS files (only add changed rules), or define a whole new theme. |
12 | 14 | ||
15 | **Note**: Do not edit `tpl/default/css/shaarli.css`! Your changes would be overridden when updating Shaarli. | ||
16 | |||
17 | See also [Download CSS styles from an OPML list](Download-CSS-styles-from-an-OPML-list.html) | ||
18 | |||
19 | ## Themes | ||
13 | _WARNING - This feature is currently being worked on and will be improved in the next releases. Experimental._ | 20 | _WARNING - This feature is currently being worked on and will be improved in the next releases. Experimental._ |
14 | 21 | ||
15 | - Find the template you'd like to install (see the list of [available templates|Theming#community-themes--templates](available-templates|Theming#community-themes--templates.html)) | 22 | Installation: |
16 | - Find it's git clone URL or download the zip archive for the template. | 23 | - find a theme you'd like to install |
17 | - In your Shaarli `tpl/` directory, run `git clone https://url/of/my-template/` or unpack the zip archive. | 24 | - copy or clone the theme folder under `tpl/<a_sweet_theme>` |
18 | - There should now be a `my-template/` directory under the `tpl/` dir, containing directly all the template files. | 25 | - enable the theme: |
19 | - Edit `data/config.json.php` to have Shaarli use this template, in `"resource"` e.g. | 26 | - Shaarli < `v0.9.0`: edit `data/config.json.php` and set the value of `raintpl_tpl` to the new theme name: |
20 | ```json | 27 | `"raintpl_tpl": "tpl\/my-template\/"` |
21 | "raintpl_tpl": "tpl\/my-template\/", | 28 | - Shaarli >= `v0.9.0`: select the theme through the _Tools_ page |
22 | ``` | ||
23 | 29 | ||
24 | ## Community themes & templates | 30 | ## Community CSS & themes |
31 | ### Custom CSS | ||
32 | - [mrjovanovic/serious-theme-shaarli](https://github.com/mrjovanovic/serious-theme-shaarli) - A serious theme for Shaarli[](.html) | ||
33 | - [shaarli/shaarli-themes](https://github.com/shaarli/shaarli-themes)[](.html) | ||
34 | |||
35 | ### Themes | ||
25 | - [AkibaTech/Shaarli Superhero Theme](https://github.com/AkibaTech/Shaarli---SuperHero-Theme) - A template/theme for Shaarli[](.html) | 36 | - [AkibaTech/Shaarli Superhero Theme](https://github.com/AkibaTech/Shaarli---SuperHero-Theme) - A template/theme for Shaarli[](.html) |
26 | - [alexisju/albinomouse-template](https://github.com/alexisju/albinomouse-template) - A full template for Shaarli[](.html) | 37 | - [alexisju/albinomouse-template](https://github.com/alexisju/albinomouse-template) - A full template for Shaarli[](.html) |
27 | - [ArthurHoaro/shaarli-launch](https://github.com/ArthurHoaro/shaarli-launch) - Customizable Shaarli theme.[](.html) | 38 | - [ArthurHoaro/shaarli-launch](https://github.com/ArthurHoaro/shaarli-launch) - Customizable Shaarli theme[](.html) |
28 | - [dhoko/ShaarliTemplate](https://github.com/dhoko/ShaarliTemplate) - A template/theme for Shaarli[](.html) | 39 | - [dhoko/ShaarliTemplate](https://github.com/dhoko/ShaarliTemplate) - A template/theme for Shaarli[](.html) |
29 | - [kalvn/shaarli-blocks](https://github.com/kalvn/shaarli-blocks) - A template/theme for Shaarli[](.html) | 40 | - [kalvn/shaarli-blocks](https://github.com/kalvn/shaarli-blocks) - A template/theme for Shaarli[](.html) |
30 | - [kalvn/Shaarli-Material](https://github.com/kalvn/Shaarli-Material) - A theme (template) based on Google's Material Design for Shaarli, the superfast delicious clone.[](.html) | 41 | - [kalvn/Shaarli-Material](https://github.com/kalvn/Shaarli-Material) - A theme (template) based on Google's Material Design for Shaarli, the superfast delicious clone[](.html) |
31 | - [ManufacturaInd/shaarli-2004licious-theme](https://github.com/ManufacturaInd/shaarli-2004licious-theme) - A template/theme as a humble homage to the early looks of the del.icio.us site.[](.html) | 42 | - [ManufacturaInd/shaarli-2004licious-theme](https://github.com/ManufacturaInd/shaarli-2004licious-theme) - A template/theme as a humble homage to the early looks of the del.icio.us site[](.html) |
43 | |||
44 | ### Shaarli forks | ||
32 | - [misterair/Limonade](https://github.com/misterair/limonade) - A fork of (legacy) Shaarli with a new template[](.html) | 45 | - [misterair/Limonade](https://github.com/misterair/limonade) - A fork of (legacy) Shaarli with a new template[](.html) |
33 | - [mrjovanovic/serious-theme-shaarli](https://github.com/mrjovanovic/serious-theme-shaarli) - A serious theme for SHaarli.[](.html) | ||
34 | - [vivienhaese/shaarlitheme](https://github.com/vivienhaese/shaarlitheme) - A Shaarli fork meant to be run in an openshift instance[](.html) | 46 | - [vivienhaese/shaarlitheme](https://github.com/vivienhaese/shaarlitheme) - A Shaarli fork meant to be run in an openshift instance[](.html) |
35 | 47 | ||
36 | ### Example installation: AlbinoMouse template | 48 | ## Example installation: AlbinoMouse theme |
37 | With the following configuration: | 49 | With the following configuration: |
38 | - Apache 2 / PHP 5.6 | 50 | - Apache 2 / PHP 5.6 |
39 | - user sites are enabled, e.g. `/home/user/public_html/somedir` is served as `http://localhost/~user/somedir` | 51 | - user sites are enabled, e.g. `/home/user/public_html/somedir` is served as `http://localhost/~user/somedir` |
diff --git a/doc/Troubleshooting.html b/doc/Troubleshooting.html index ed1c6f09..f43e6ed3 100644 --- a/doc/Troubleshooting.html +++ b/doc/Troubleshooting.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
@@ -172,7 +174,7 @@ Search for <code>failed</code> in this file to look for unauthorized login attem | |||
172 | <li>If you have the error <code>Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in /…/index.php on line xxx</code>, it means that your host has disabled the ability to fetch a file by HTTP in the php config (Typically in 1and1 hosting). Bad host. Change host. Or comment the following lines:<a href=".html"></a></li> | 174 | <li>If you have the error <code>Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in /…/index.php on line xxx</code>, it means that your host has disabled the ability to fetch a file by HTTP in the php config (Typically in 1and1 hosting). Bad host. Change host. Or comment the following lines:<a href=".html"></a></li> |
173 | </ul> | 175 | </ul> |
174 | <div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="co">//list($status,$headers,$data) = getHTTP($url,4); // Short timeout to keep the application responsive.</span> | 176 | <div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="co">//list($status,$headers,$data) = getHTTP($url,4); // Short timeout to keep the application responsive.</span> |
175 | <span class="co">// FIXME: Decode charset according to charset specified in either 1) HTTP response headers or 2) <head> in html </span> | 177 | <span class="co">// </span><span class="al">FIXME</span><span class="co">: Decode charset according to charset specified in either 1) HTTP response headers or 2) <head> in html </span> |
176 | <span class="co">//if (strpos($status,'200 OK')) $title=html_extract_title($data);</span></code></pre></div> | 178 | <span class="co">//if (strpos($status,'200 OK')) $title=html_extract_title($data);</span></code></pre></div> |
177 | <ul> | 179 | <ul> |
178 | <li>On hosts which forbid outgoing HTTP requests (such as free.fr), some thumbnails will not work.</li> | 180 | <li>On hosts which forbid outgoing HTTP requests (such as free.fr), some thumbnails will not work.</li> |
diff --git a/doc/Unit-tests.html b/doc/Unit-tests.html index 266fd33a..09611463 100644 --- a/doc/Unit-tests.html +++ b/doc/Unit-tests.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
@@ -208,5 +210,17 @@ DBTest.php on line 79 and defined | |||
208 | <li>a detailed HTML report with metrics for tested code</li> | 210 | <li>a detailed HTML report with metrics for tested code</li> |
209 | <li>to open it in a web browser: <code>firefox coverage/index.html &</code></li> | 211 | <li>to open it in a web browser: <code>firefox coverage/index.html &</code></li> |
210 | </ul> | 212 | </ul> |
213 | <h3 id="executing-specific-tests">Executing specific tests</h3> | ||
214 | <p>Add a <a href="https://phpunit.de/manual/current/en/appendixes.annotations.html#appendixes.annotations.group"><code>@group</code></a> annotation in a test class or method comment:<a href=".html"></a></p> | ||
215 | <div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="co">/**</span> | ||
216 | <span class="co"> * Netscape bookmark import</span> | ||
217 | <span class="co"> * </span><span class="an">@group</span><span class="co"> WIP</span> | ||
218 | <span class="co"> */</span> | ||
219 | <span class="kw">class</span> BookmarkImportTest <span class="kw">extends</span> PHPUnit_Framework_TestCase | ||
220 | { | ||
221 | <span class="ot">[</span><span class="st">...</span><span class="ot">][](</span>.html<span class="ot">)</span> | ||
222 | }</code></pre></div> | ||
223 | <p>To run all tests annotated with <code>@group WIP</code>:</p> | ||
224 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">vendor/bin/phpunit</span> --group WIP tests/</code></pre></div> | ||
211 | </body> | 225 | </body> |
212 | </html> | 226 | </html> |
diff --git a/doc/Unit-tests.md b/doc/Unit-tests.md index f2888780..0942ad38 100644 --- a/doc/Unit-tests.md +++ b/doc/Unit-tests.md | |||
@@ -126,3 +126,22 @@ If Xdebug has been installed and activated, two coverage reports will be generat | |||
126 | * a summary in the console | 126 | * a summary in the console |
127 | * a detailed HTML report with metrics for tested code | 127 | * a detailed HTML report with metrics for tested code |
128 | * to open it in a web browser: `firefox coverage/index.html &` | 128 | * to open it in a web browser: `firefox coverage/index.html &` |
129 | |||
130 | ### Executing specific tests | ||
131 | Add a [`@group`](https://phpunit.de/manual/current/en/appendixes.annotations.html#appendixes.annotations.group) annotation in a test class or method comment:[](.html) | ||
132 | |||
133 | ```php | ||
134 | /** | ||
135 | * Netscape bookmark import | ||
136 | * @group WIP | ||
137 | */ | ||
138 | class BookmarkImportTest extends PHPUnit_Framework_TestCase | ||
139 | { | ||
140 | [...][](.html) | ||
141 | } | ||
142 | ``` | ||
143 | |||
144 | To run all tests annotated with `@group WIP`: | ||
145 | ```bash | ||
146 | $ vendor/bin/phpunit --group WIP tests/ | ||
147 | ``` | ||
diff --git a/doc/Upgrade-and-migration.html b/doc/Upgrade-and-migration.html index a5b041d5..667215ab 100644 --- a/doc/Upgrade-and-migration.html +++ b/doc/Upgrade-and-migration.html | |||
@@ -69,6 +69,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | 70 | <li><a href="Firefox-share.html">Firefox share</a></li> |
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
72 | <li><a href="REST-API.html">REST API</a></li> | ||
72 | </ul></li> | 73 | </ul></li> |
73 | <li>How To | 74 | <li>How To |
74 | <ul> | 75 | <ul> |
@@ -87,6 +88,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
87 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
88 | <li><a href="Plugin-System.html">Plugin System</a></li> | 89 | <li><a href="Plugin-System.html">Plugin System</a></li> |
89 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
90 | <li><a href="Security.html">Security</a></li> | 92 | <li><a href="Security.html">Security</a></li> |
91 | <li><a href="Static-analysis.html">Static analysis</a></li> | 93 | <li><a href="Static-analysis.html">Static analysis</a></li> |
92 | <li><a href="Theming.html">Theming</a></li> | 94 | <li><a href="Theming.html">Theming</a></li> |
@@ -101,12 +103,16 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
101 | </div> | 103 | </div> |
102 | <h1 id="upgrade-and-migration">Upgrade and migration</h1> | 104 | <h1 id="upgrade-and-migration">Upgrade and migration</h1> |
103 | <h2 id="preparation">Preparation</h2> | 105 | <h2 id="preparation">Preparation</h2> |
106 | <h3 id="note-your-current-version">Note your current version</h3> | ||
107 | <p>If anything goes wrong, it's important for us to know which version you're upgrading from.<br /> | ||
108 | The current version is present in the <code>version.php</code> file.</p> | ||
104 | <h3 id="backup-your-data">Backup your data</h3> | 109 | <h3 id="backup-your-data">Backup your data</h3> |
105 | <p>Shaarli stores all user data under the <code>data</code> directory:</p> | 110 | <p>Shaarli stores all user data under the <code>data</code> directory:</p> |
106 | <ul> | 111 | <ul> |
107 | <li><code>data/config.php</code> - main configuration file</li> | 112 | <li><code>data/config.php</code> - main configuration file</li> |
108 | <li><code>data/datastore.php</code> - bookmarked links</li> | 113 | <li><code>data/datastore.php</code> - bookmarked links</li> |
109 | <li><code>data/ipbans.php</code> - banned IP addresses</li> | 114 | <li><code>data/ipbans.php</code> - banned IP addresses</li> |
115 | <li><code>data/updates.txt</code> - contains all automatic update to the configuration and datastore files already run</li> | ||
110 | </ul> | 116 | </ul> |
111 | <p>See <a href="Shaarli-configuration.html">Shaarli configuration</a> for more information about Shaarli resources.</p> | 117 | <p>See <a href="Shaarli-configuration.html">Shaarli configuration</a> for more information about Shaarli resources.</p> |
112 | <p>It is recommended to backup this repository <em>before</em> starting updating/upgrading Shaarli:</p> | 118 | <p>It is recommended to backup this repository <em>before</em> starting updating/upgrading Shaarli:</p> |
@@ -125,15 +131,11 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf | |||
125 | </ul></li> | 131 | </ul></li> |
126 | <li>check or restore the <code>data</code> directory</li> | 132 | <li>check or restore the <code>data</code> directory</li> |
127 | </ul> | 133 | </ul> |
128 | <h2 id="upgrading-from-release-archives">Upgrading from release archives</h2> | 134 | <h2 id="recommended-upgrading-from-release-archives">Recommended : Upgrading from release archives</h2> |
129 | <p>All tagged revisions can be downloaded as tarballs or ZIP archives from the <a href="https://github.com/shaarli/Shaarli/releases">releases</a> page.<a href=".html"></a></p> | 135 | <p>All tagged revisions can be downloaded as tarballs or ZIP archives from the <a href="https://github.com/shaarli/Shaarli/releases">releases</a> page.<a href=".html"></a></p> |
130 | <p>We <em>recommend</em> using the releases from the <code>stable</code> branch, which are available as:</p> | 136 | <p>We recommend that you use the latest release tarball with the <code>-full</code> suffix. It contains the dependencies, please read <a href="Download-and-installation.html">Download and installation</a> for <code>git</code> complete instructions.</p> |
131 | <ul> | 137 | <p>Once downloaded, extract the archive locally and update your remote installation (e.g. via FTP) -be sure you keep the content of the <code>data</code> directory!</p> |
132 | <li>gzipped tarball - <a href="https://github.com/shaarli/Shaarli/archive/stable.tar.gz" class="uri">https://github.com/shaarli/Shaarli/archive/stable.tar.gz</a></li> | 138 | <p>After upgrading, access your fresh Shaarli installation from a web browser; the configuration and data store will then be automatically updated, and new settings added to <code>data/config.json.php</code> (see <a href="Shaarli-configuration.html">Shaarli configuration</a> for more details).</p> |
133 | <li>ZIP archive - <a href="https://github.com/shaarli/Shaarli/archive/stable.zip" class="uri">https://github.com/shaarli/Shaarli/archive/stable.zip</a></li> | ||
134 | </ul> | ||
135 | <p>Once downloaded, extract the archive locally and update your remote installation (e.g. via FTP) -be sure you keep the contents of the <code>data</code> directory!</p> | ||
136 | <p>After upgrading, access your fresh Shaarli installation from a web browser; the configuration will then be automatically updated, and new settings added to <code>data/config.php</code> (see <a href="Shaarli-configuration.html">Shaarli configuration</a> for more details).</p> | ||
137 | <h2 id="upgrading-with-git">Upgrading with Git</h2> | 139 | <h2 id="upgrading-with-git">Upgrading with Git</h2> |
138 | <h3 id="updating-a-community-shaarli">Updating a community Shaarli</h3> | 140 | <h3 id="updating-a-community-shaarli">Updating a community Shaarli</h3> |
139 | <p>If you have installed Shaarli from the <a href="Download#clone-with-git-recommended">community Git repository</a>, simply <a href="https://www.git-scm.com/docs/git-pull">pull new changes</a> from your local clone:<a href=".html"></a></p> | 141 | <p>If you have installed Shaarli from the <a href="Download#clone-with-git-recommended">community Git repository</a>, simply <a href="https://www.git-scm.com/docs/git-pull">pull new changes</a> from your local clone:<a href=".html"></a></p> |
@@ -149,7 +151,7 @@ $ <span class="fu">git</span> pull | |||
149 | <span class="ex">tests/Url/UrlTest.php</span> <span class="kw">|</span> <span class="ex">1</span> + | 151 | <span class="ex">tests/Url/UrlTest.php</span> <span class="kw">|</span> <span class="ex">1</span> + |
150 | <span class="ex">3</span> files changed, 3 insertions(+), <span class="ex">1</span> deletion(-)</code></pre></div> | 152 | <span class="ex">3</span> files changed, 3 insertions(+), <span class="ex">1</span> deletion(-)</code></pre></div> |
151 | <p>Shaarli >= <code>v0.8.x</code>: install/update third-party PHP dependencies using <a href="https://getcomposer.org/">Composer</a>:<a href=".html"></a></p> | 153 | <p>Shaarli >= <code>v0.8.x</code>: install/update third-party PHP dependencies using <a href="https://getcomposer.org/">Composer</a>:<a href=".html"></a></p> |
152 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">composer</span> update --no-dev | 154 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">composer</span> install --no-dev |
153 | 155 | ||
154 | <span class="ex">Loading</span> composer repositories with package information | 156 | <span class="ex">Loading</span> composer repositories with package information |
155 | <span class="ex">Updating</span> dependencies | 157 | <span class="ex">Updating</span> dependencies |
@@ -214,7 +216,7 @@ $ <span class="fu">git</span> branch -vv | |||
214 | <span class="ex">master</span> 029f75f [sebsauvage/master] Update README.md[](.html) | 216 | <span class="ex">master</span> 029f75f [sebsauvage/master] Update README.md[](.html) |
215 | <span class="ex">*</span> stable 890afc3 [origin/stable] Merge pull request <span class="co">#509 from ArthurHoaro/v0.6.5[](.html)</span></code></pre></div> | 217 | <span class="ex">*</span> stable 890afc3 [origin/stable] Merge pull request <span class="co">#509 from ArthurHoaro/v0.6.5[](.html)</span></code></pre></div> |
216 | <p>Shaarli >= <code>v0.8.x</code>: install/update third-party PHP dependencies using <a href="https://getcomposer.org/">Composer</a>:<a href=".html"></a></p> | 218 | <p>Shaarli >= <code>v0.8.x</code>: install/update third-party PHP dependencies using <a href="https://getcomposer.org/">Composer</a>:<a href=".html"></a></p> |
217 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">composer</span> update --no-dev | 219 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">composer</span> install --no-dev |
218 | 220 | ||
219 | <span class="ex">Loading</span> composer repositories with package information | 221 | <span class="ex">Loading</span> composer repositories with package information |
220 | <span class="ex">Updating</span> dependencies | 222 | <span class="ex">Updating</span> dependencies |
@@ -238,5 +240,20 @@ $ <span class="fu">git</span> gc | |||
238 | <span class="ex">Total</span> 3317 (delta 2050), <span class="ex">reused</span> 3301 (delta 2034)<span class="ex">to</span></code></pre></div> | 240 | <span class="ex">Total</span> 3317 (delta 2050), <span class="ex">reused</span> 3301 (delta 2034)<span class="ex">to</span></code></pre></div> |
239 | <h4 id="step-3-configuration">Step 3: configuration</h4> | 241 | <h4 id="step-3-configuration">Step 3: configuration</h4> |
240 | <p>After migrating, access your fresh Shaarli installation from a web browser; the configuration will then be automatically updated, and new settings added to <code>data/config.php</code> (see <a href="Shaarli-configuration.html">Shaarli configuration</a> for more details).</p> | 242 | <p>After migrating, access your fresh Shaarli installation from a web browser; the configuration will then be automatically updated, and new settings added to <code>data/config.php</code> (see <a href="Shaarli-configuration.html">Shaarli configuration</a> for more details).</p> |
243 | <h2 id="troubleshooting">Troubleshooting</h2> | ||
244 | <p>If the solutions provided here doesn't work, please open an issue specifying which version you're upgrading from and to.</p> | ||
245 | <h3 id="you-must-specify-an-integer-as-a-key">You must specify an integer as a key</h3> | ||
246 | <p>In <code>v0.8.1</code> we changed how link keys are handled (from timestamps to incremental integers).<br /> | ||
247 | Take a look at <code>data/updates.txt</code> content.</p> | ||
248 | <h4 id="updates.txt-contains-updatemethoddatastoreids"><code>updates.txt</code> contains <code>updateMethodDatastoreIds</code></h4> | ||
249 | <p>Try to delete it and refresh your page while being logged in.</p> | ||
250 | <h4 id="updates.txt-doesnt-exists-or-doesnt-contain-updatemethoddatastoreids"><code>updates.txt</code> doesn't exists or doesn't contain <code>updateMethodDatastoreIds</code></h4> | ||
251 | <ol> | ||
252 | <li>Create <code>data/updates.txt</code> if it doesn't exist.</li> | ||
253 | <li>Paste this string in the update file <code>;updateMethodRenameDashTags;</code></li> | ||
254 | <li>Login to Shaarli.</li> | ||
255 | <li>Delete the update file.</li> | ||
256 | <li>Refresh.</li> | ||
257 | </ol> | ||
241 | </body> | 258 | </body> |
242 | </html> | 259 | </html> |
diff --git a/doc/Upgrade-and-migration.md b/doc/Upgrade-and-migration.md index 0bc33824..d36eb862 100644 --- a/doc/Upgrade-and-migration.md +++ b/doc/Upgrade-and-migration.md | |||
@@ -1,11 +1,17 @@ | |||
1 | #Upgrade and migration | 1 | #Upgrade and migration |
2 | ## Preparation | 2 | ## Preparation |
3 | ### Note your current version | ||
4 | |||
5 | If anything goes wrong, it's important for us to know which version you're upgrading from. | ||
6 | The current version is present in the `version.php` file. | ||
7 | |||
3 | ### Backup your data | 8 | ### Backup your data |
4 | 9 | ||
5 | Shaarli stores all user data under the `data` directory: | 10 | Shaarli stores all user data under the `data` directory: |
6 | - `data/config.php` - main configuration file | 11 | - `data/config.php` - main configuration file |
7 | - `data/datastore.php` - bookmarked links | 12 | - `data/datastore.php` - bookmarked links |
8 | - `data/ipbans.php` - banned IP addresses | 13 | - `data/ipbans.php` - banned IP addresses |
14 | - `data/updates.txt` - contains all automatic update to the configuration and datastore files already run | ||
9 | 15 | ||
10 | See [Shaarli configuration](Shaarli-configuration.html) for more information about Shaarli resources. | 16 | See [Shaarli configuration](Shaarli-configuration.html) for more information about Shaarli resources. |
11 | 17 | ||
@@ -22,16 +28,14 @@ As all user data is kept under `data`, this is the only directory you need to wo | |||
22 | - update - see the following sections | 28 | - update - see the following sections |
23 | - check or restore the `data` directory | 29 | - check or restore the `data` directory |
24 | 30 | ||
25 | ## Upgrading from release archives | 31 | ## Recommended : Upgrading from release archives |
26 | All tagged revisions can be downloaded as tarballs or ZIP archives from the [releases](https://github.com/shaarli/Shaarli/releases) page.[](.html) | 32 | All tagged revisions can be downloaded as tarballs or ZIP archives from the [releases](https://github.com/shaarli/Shaarli/releases) page.[](.html) |
27 | 33 | ||
28 | We _recommend_ using the releases from the `stable` branch, which are available as: | 34 | We recommend that you use the latest release tarball with the `-full` suffix. It contains the dependencies, please read [Download and installation](Download-and-installation.html) for `git` complete instructions. |
29 | - gzipped tarball - https://github.com/shaarli/Shaarli/archive/stable.tar.gz | ||
30 | - ZIP archive - https://github.com/shaarli/Shaarli/archive/stable.zip | ||
31 | 35 | ||
32 | Once downloaded, extract the archive locally and update your remote installation (e.g. via FTP) -be sure you keep the contents of the `data` directory! | 36 | Once downloaded, extract the archive locally and update your remote installation (e.g. via FTP) -be sure you keep the content of the `data` directory! |
33 | 37 | ||
34 | After upgrading, access your fresh Shaarli installation from a web browser; the configuration will then be automatically updated, and new settings added to `data/config.php` (see [Shaarli configuration](Shaarli-configuration.html) for more details). | 38 | After upgrading, access your fresh Shaarli installation from a web browser; the configuration and data store will then be automatically updated, and new settings added to `data/config.json.php` (see [Shaarli configuration](Shaarli-configuration.html) for more details). |
35 | 39 | ||
36 | ## Upgrading with Git | 40 | ## Upgrading with Git |
37 | ### Updating a community Shaarli | 41 | ### Updating a community Shaarli |
@@ -54,7 +58,7 @@ Fast-forward | |||
54 | Shaarli >= `v0.8.x`: install/update third-party PHP dependencies using [Composer](https://getcomposer.org/):[](.html) | 58 | Shaarli >= `v0.8.x`: install/update third-party PHP dependencies using [Composer](https://getcomposer.org/):[](.html) |
55 | 59 | ||
56 | ```bash | 60 | ```bash |
57 | $ composer update --no-dev | 61 | $ composer install --no-dev |
58 | 62 | ||
59 | Loading composer repositories with package information | 63 | Loading composer repositories with package information |
60 | Updating dependencies | 64 | Updating dependencies |
@@ -129,7 +133,7 @@ $ git branch -vv | |||
129 | Shaarli >= `v0.8.x`: install/update third-party PHP dependencies using [Composer](https://getcomposer.org/):[](.html) | 133 | Shaarli >= `v0.8.x`: install/update third-party PHP dependencies using [Composer](https://getcomposer.org/):[](.html) |
130 | 134 | ||
131 | ```bash | 135 | ```bash |
132 | $ composer update --no-dev | 136 | $ composer install --no-dev |
133 | 137 | ||
134 | Loading composer repositories with package information | 138 | Loading composer repositories with package information |
135 | Updating dependencies | 139 | Updating dependencies |
@@ -159,3 +163,24 @@ Total 3317 (delta 2050), reused 3301 (delta 2034)to | |||
159 | 163 | ||
160 | #### Step 3: configuration | 164 | #### Step 3: configuration |
161 | After migrating, access your fresh Shaarli installation from a web browser; the configuration will then be automatically updated, and new settings added to `data/config.php` (see [Shaarli configuration](Shaarli-configuration.html) for more details). | 165 | After migrating, access your fresh Shaarli installation from a web browser; the configuration will then be automatically updated, and new settings added to `data/config.php` (see [Shaarli configuration](Shaarli-configuration.html) for more details). |
166 | |||
167 | ## Troubleshooting | ||
168 | |||
169 | If the solutions provided here doesn't work, please open an issue specifying which version you're upgrading from and to. | ||
170 | |||
171 | ### You must specify an integer as a key | ||
172 | |||
173 | In `v0.8.1` we changed how link keys are handled (from timestamps to incremental integers). | ||
174 | Take a look at `data/updates.txt` content. | ||
175 | |||
176 | #### `updates.txt` contains `updateMethodDatastoreIds` | ||
177 | |||
178 | Try to delete it and refresh your page while being logged in. | ||
179 | |||
180 | #### `updates.txt` doesn't exists or doesn't contain `updateMethodDatastoreIds` | ||
181 | |||
182 | 1. Create `data/updates.txt` if it doesn't exist. | ||
183 | 2. Paste this string in the update file `;updateMethodRenameDashTags;` | ||
184 | 3. Login to Shaarli. | ||
185 | 4. Delete the update file. | ||
186 | 5. Refresh. | ||
diff --git a/doc/Usage.html b/doc/Usage.html index 63f21d93..b5855881 100644 --- a/doc/Usage.html +++ b/doc/Usage.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/Versioning-and-Branches.html b/doc/Versioning-and-Branches.html new file mode 100644 index 00000000..4dfe4a91 --- /dev/null +++ b/doc/Versioning-and-Branches.html | |||
@@ -0,0 +1,156 @@ | |||
1 | <!DOCTYPE html> | ||
2 | <html> | ||
3 | <head> | ||
4 | <meta charset="utf-8"> | ||
5 | <meta name="generator" content="pandoc"> | ||
6 | <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> | ||
7 | <title>Shaarli – Versioning and Branches</title> | ||
8 | <style type="text/css">code{white-space: pre;}</style> | ||
9 | <style type="text/css"> | ||
10 | div.sourceCode { overflow-x: auto; } | ||
11 | table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode { | ||
12 | margin: 0; padding: 0; vertical-align: baseline; border: none; } | ||
13 | table.sourceCode { width: 100%; line-height: 100%; } | ||
14 | td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; } | ||
15 | td.sourceCode { padding-left: 5px; } | ||
16 | code > span.kw { color: #007020; font-weight: bold; } /* Keyword */ | ||
17 | code > span.dt { color: #902000; } /* DataType */ | ||
18 | code > span.dv { color: #40a070; } /* DecVal */ | ||
19 | code > span.bn { color: #40a070; } /* BaseN */ | ||
20 | code > span.fl { color: #40a070; } /* Float */ | ||
21 | code > span.ch { color: #4070a0; } /* Char */ | ||
22 | code > span.st { color: #4070a0; } /* String */ | ||
23 | code > span.co { color: #60a0b0; font-style: italic; } /* Comment */ | ||
24 | code > span.ot { color: #007020; } /* Other */ | ||
25 | code > span.al { color: #ff0000; font-weight: bold; } /* Alert */ | ||
26 | code > span.fu { color: #06287e; } /* Function */ | ||
27 | code > span.er { color: #ff0000; font-weight: bold; } /* Error */ | ||
28 | code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ | ||
29 | code > span.cn { color: #880000; } /* Constant */ | ||
30 | code > span.sc { color: #4070a0; } /* SpecialChar */ | ||
31 | code > span.vs { color: #4070a0; } /* VerbatimString */ | ||
32 | code > span.ss { color: #bb6688; } /* SpecialString */ | ||
33 | code > span.im { } /* Import */ | ||
34 | code > span.va { color: #19177c; } /* Variable */ | ||
35 | code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ | ||
36 | code > span.op { color: #666666; } /* Operator */ | ||
37 | code > span.bu { } /* BuiltIn */ | ||
38 | code > span.ex { } /* Extension */ | ||
39 | code > span.pp { color: #bc7a00; } /* Preprocessor */ | ||
40 | code > span.at { color: #7d9029; } /* Attribute */ | ||
41 | code > span.do { color: #ba2121; font-style: italic; } /* Documentation */ | ||
42 | code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ | ||
43 | code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ | ||
44 | code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ | ||
45 | </style> | ||
46 | <link rel="stylesheet" href="github-markdown.css"> | ||
47 | <!--[if lt IE 9]> | ||
48 | <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> | ||
49 | <![endif]--> | ||
50 | </head> | ||
51 | <body> | ||
52 | <div id="local-sidebar"> | ||
53 | <ul> | ||
54 | <li><a href="Home.html">Home</a></li> | ||
55 | <li>Setup | ||
56 | <ul> | ||
57 | <li><a href="Download-and-Installation.html">Download and Installation</a></li> | ||
58 | <li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li> | ||
59 | <li><a href="Server-requirements.html">Server requirements</a></li> | ||
60 | <li><a href="Server-configuration.html">Server configuration</a></li> | ||
61 | <li><a href="Server-security.html">Server security</a></li> | ||
62 | <li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> | ||
63 | <li><a href="Plugins.html">Plugins</a></li> | ||
64 | </ul></li> | ||
65 | <li><a href="Docker.html">Docker</a></li> | ||
66 | <li><a href="Usage.html">Usage</a> | ||
67 | <ul> | ||
68 | <li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li> | ||
69 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | ||
70 | <li><a href="Firefox-share.html">Firefox share</a></li> | ||
71 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | ||
72 | <li><a href="REST-API.html">REST API</a></li> | ||
73 | </ul></li> | ||
74 | <li>How To | ||
75 | <ul> | ||
76 | <li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> | ||
77 | <li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> | ||
78 | <li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> | ||
79 | <li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> | ||
80 | <li><a href="Datastore-hacks.html">Datastore hacks</a></li> | ||
81 | </ul></li> | ||
82 | <li><a href="Troubleshooting.html">Troubleshooting</a></li> | ||
83 | <li><a href="Development.html">Development</a> | ||
84 | <ul> | ||
85 | <li><a href="GnuPG-signature.html">GnuPG signature</a></li> | ||
86 | <li><a href="Coding-guidelines.html">Coding guidelines</a></li> | ||
87 | <li><a href="Directory-structure.html">Directory structure</a></li> | ||
88 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | ||
89 | <li><a href="Plugin-System.html">Plugin System</a></li> | ||
90 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | ||
91 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
92 | <li><a href="Security.html">Security</a></li> | ||
93 | <li><a href="Static-analysis.html">Static analysis</a></li> | ||
94 | <li><a href="Theming.html">Theming</a></li> | ||
95 | <li><a href="Unit-tests.html">Unit tests</a></li> | ||
96 | </ul></li> | ||
97 | <li>About | ||
98 | <ul> | ||
99 | <li><a href="FAQ.html">FAQ</a></li> | ||
100 | <li><a href="Community-&-Related-software.html">Community & Related software</a></li> | ||
101 | </ul></li> | ||
102 | </ul> | ||
103 | </div> | ||
104 | <h1 id="versioning-and-branches">Versioning and Branches</h1> | ||
105 | <p>[<strong>WORK IN PROGRESS</strong>][](.html)</p> | ||
106 | <p>It's important to understand how Shaarli branches work, especially if you're maintaining a 3rd party tools for Shaarli (theme, plugin, etc.), to be sure stay compatible.</p> | ||
107 | <h2 id="master-branch"><code>master</code> branch</h2> | ||
108 | <p>The <code>master</code> branch is the development branch. Any new change MUST go through this branch using Pull Requests.</p> | ||
109 | <p>Remarks:</p> | ||
110 | <ul> | ||
111 | <li>This branch shouldn't be used for production as it isn't necessary stable.</li> | ||
112 | <li>3rd party aren't required to be compatible with the latest changes.</li> | ||
113 | <li>Official plugins, themes and libraries (contained within Shaarli organization repos) must be compatible with the master branch.</li> | ||
114 | <li>The version in this branch is always <code>dev</code>.</li> | ||
115 | </ul> | ||
116 | <h2 id="v0.x-branch"><code>v0.x</code> branch</h2> | ||
117 | <p>This <code>v0.x</code> branch, points to the latest <code>v0.x.y</code> release.</p> | ||
118 | <p>Explanation:</p> | ||
119 | <p>When a new version is released, it might contains a major bug which isn't detected right away. For example, a new PHP version is released, containing backward compatibility issue which doesn't work with Shaarli.</p> | ||
120 | <p>In this case, the issue is fixed in the <code>master</code> branch, and the fix is backported the to the <code>v0.x</code> branch. Then a new release is made from the <code>v0.x</code> branch.</p> | ||
121 | <p>This workflow allow us to fix any major bug detected, without having to release bleeding edge feature too soon.</p> | ||
122 | <h2 id="latest-branch"><code>latest</code> branch</h2> | ||
123 | <p>This branch point the latest release. It recommended to use it to get the latest tested changes.</p> | ||
124 | <h2 id="stable-branch"><code>stable</code> branch</h2> | ||
125 | <p>The <code>stable</code> branch doesn't contain any major bug, and is one major digit version behind the latest release.</p> | ||
126 | <p>For example, the current latest release is <code>v0.8.3</code>, the stable branch is an alias to the latest <code>v0.7.x</code> release. When the <code>v0.9.0</code> version will be released, the stable will move to the latest <code>v0.8.x</code> release.</p> | ||
127 | <p>Remarks:</p> | ||
128 | <ul> | ||
129 | <li>Shaarli release pace isn't fast, and the stable branch might be a few months behind the latest release.</li> | ||
130 | </ul> | ||
131 | <h2 id="releases">Releases</h2> | ||
132 | <p>Releases are always made from the latest <code>v0.x</code> branch.</p> | ||
133 | <p>Note that for every release, we manually generate a tarball which contains all Shaarli dependencies, making Shaarli's installation only one step.</p> | ||
134 | <h2 id="advices-on-3rd-party-git-repos-workflow">Advices on 3rd party git repos workflow</h2> | ||
135 | <h3 id="versioning">Versioning</h3> | ||
136 | <p>Any time a new Shaarli release is published, you should publish a new release of your repo if the changes affected you since the latest release (take a look at the <a href="https://github.com/shaarli/Shaarli/releases">changelog</a> (<em>Draft</em> means not released yet) and the commit log (like <a href="https://github.com/shaarli/Shaarli/commits/master/tpl/default"><code>tpl</code> folder</a> for themes)). You can either:<a href=".html"></a></p> | ||
137 | <ul> | ||
138 | <li>use the Shaarli version number, with your repo version. For example, if Shaarli <code>v0.8.3</code> is released, publish a <code>v0.8.3-1</code> release, where <code>v0.8.3</code> states Shaarli compatibility and <code>-1</code> is your own version digit for the current Shaarli version.</li> | ||
139 | <li>use your own versioning scheme, and state Shaarli compatibility in the release description.</li> | ||
140 | </ul> | ||
141 | <p>Using this, any user will be able to pick the release matching his own Shaarli version.</p> | ||
142 | <h3 id="major-bugfix-backport-releases">Major bugfix backport releases</h3> | ||
143 | <p>To be able to support backported fixes, it recommended to use our workflow:</p> | ||
144 | <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># In master, fix the major bug</span> | ||
145 | <span class="fu">git</span> commit -m <span class="st">"Katastrophe"</span> | ||
146 | <span class="fu">git</span> push origin master | ||
147 | <span class="co"># Get your commit hash</span> | ||
148 | <span class="fu">git</span> log --format=<span class="st">"%H"</span> -n 1 | ||
149 | <span class="co"># Create a new branch from your latest release, let's say v0.8.2-1 (the tag name)</span> | ||
150 | <span class="fu">git</span> checkout -b katastrophe v0.8.2-1 | ||
151 | <span class="co"># Backport the fix commit to your brand new branch</span> | ||
152 | <span class="fu">git</span> cherry-pick <span class="op"><</span>fix commit hash<span class="op">></span> | ||
153 | <span class="fu">git</span> push origin katastrophe | ||
154 | <span class="co"># Then you just have to make a new release from the `katastrophe` branch tagged `v0.8.3-1`</span></code></pre></div> | ||
155 | </body> | ||
156 | </html> | ||
diff --git a/doc/Versioning-and-Branches.md b/doc/Versioning-and-Branches.md new file mode 100644 index 00000000..bbc7719e --- /dev/null +++ b/doc/Versioning-and-Branches.md | |||
@@ -0,0 +1,76 @@ | |||
1 | #Versioning and Branches | ||
2 | [**WORK IN PROGRESS**][](.html) | ||
3 | |||
4 | It's important to understand how Shaarli branches work, especially if you're maintaining a 3rd party tools for Shaarli (theme, plugin, etc.), to be sure stay compatible. | ||
5 | |||
6 | ## `master` branch | ||
7 | |||
8 | The `master` branch is the development branch. Any new change MUST go through this branch using Pull Requests. | ||
9 | |||
10 | Remarks: | ||
11 | |||
12 | * This branch shouldn't be used for production as it isn't necessary stable. | ||
13 | * 3rd party aren't required to be compatible with the latest changes. | ||
14 | * Official plugins, themes and libraries (contained within Shaarli organization repos) must be compatible with the master branch. | ||
15 | * The version in this branch is always `dev`. | ||
16 | |||
17 | ## `v0.x` branch | ||
18 | |||
19 | This `v0.x` branch, points to the latest `v0.x.y` release. | ||
20 | |||
21 | Explanation: | ||
22 | |||
23 | When a new version is released, it might contains a major bug which isn't detected right away. For example, a new PHP version is released, containing backward compatibility issue which doesn't work with Shaarli. | ||
24 | |||
25 | In this case, the issue is fixed in the `master` branch, and the fix is backported the to the `v0.x` branch. Then a new release is made from the `v0.x` branch. | ||
26 | |||
27 | This workflow allow us to fix any major bug detected, without having to release bleeding edge feature too soon. | ||
28 | |||
29 | ## `latest` branch | ||
30 | |||
31 | This branch point the latest release. It recommended to use it to get the latest tested changes. | ||
32 | |||
33 | ## `stable` branch | ||
34 | |||
35 | The `stable` branch doesn't contain any major bug, and is one major digit version behind the latest release. | ||
36 | |||
37 | For example, the current latest release is `v0.8.3`, the stable branch is an alias to the latest `v0.7.x` release. When the `v0.9.0` version will be released, the stable will move to the latest `v0.8.x` release. | ||
38 | |||
39 | Remarks: | ||
40 | |||
41 | * Shaarli release pace isn't fast, and the stable branch might be a few months behind the latest release. | ||
42 | |||
43 | ## Releases | ||
44 | |||
45 | Releases are always made from the latest `v0.x` branch. | ||
46 | |||
47 | Note that for every release, we manually generate a tarball which contains all Shaarli dependencies, making Shaarli's installation only one step. | ||
48 | |||
49 | ## Advices on 3rd party git repos workflow | ||
50 | |||
51 | ### Versioning | ||
52 | |||
53 | Any time a new Shaarli release is published, you should publish a new release of your repo if the changes affected you since the latest release (take a look at the [changelog](https://github.com/shaarli/Shaarli/releases) (*Draft* means not released yet) and the commit log (like [`tpl` folder](https://github.com/shaarli/Shaarli/commits/master/tpl/default) for themes)). You can either:[](.html) | ||
54 | |||
55 | - use the Shaarli version number, with your repo version. For example, if Shaarli `v0.8.3` is released, publish a `v0.8.3-1` release, where `v0.8.3` states Shaarli compatibility and `-1` is your own version digit for the current Shaarli version. | ||
56 | - use your own versioning scheme, and state Shaarli compatibility in the release description. | ||
57 | |||
58 | Using this, any user will be able to pick the release matching his own Shaarli version. | ||
59 | |||
60 | ### Major bugfix backport releases | ||
61 | |||
62 | To be able to support backported fixes, it recommended to use our workflow: | ||
63 | |||
64 | ```bash | ||
65 | # In master, fix the major bug | ||
66 | git commit -m "Katastrophe" | ||
67 | git push origin master | ||
68 | # Get your commit hash | ||
69 | git log --format="%H" -n 1 | ||
70 | # Create a new branch from your latest release, let's say v0.8.2-1 (the tag name) | ||
71 | git checkout -b katastrophe v0.8.2-1 | ||
72 | # Backport the fix commit to your brand new branch | ||
73 | git cherry-pick <fix commit hash> | ||
74 | git push origin katastrophe | ||
75 | # Then you just have to make a new release from the `katastrophe` branch tagged `v0.8.3-1` | ||
76 | ``` | ||
diff --git a/doc/_Footer.html b/doc/_Footer.html index e8a62d2a..09473a38 100644 --- a/doc/_Footer.html +++ b/doc/_Footer.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/_Sidebar.html b/doc/_Sidebar.html index bb6dad93..d3f94560 100644 --- a/doc/_Sidebar.html +++ b/doc/_Sidebar.html | |||
@@ -32,6 +32,7 @@ | |||
32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 32 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
33 | <li><a href="Firefox-share.html">Firefox share</a></li> | 33 | <li><a href="Firefox-share.html">Firefox share</a></li> |
34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 34 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
35 | <li><a href="REST-API.html">REST API</a></li> | ||
35 | </ul></li> | 36 | </ul></li> |
36 | <li>How To | 37 | <li>How To |
37 | <ul> | 38 | <ul> |
@@ -50,6 +51,7 @@ | |||
50 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 51 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
51 | <li><a href="Plugin-System.html">Plugin System</a></li> | 52 | <li><a href="Plugin-System.html">Plugin System</a></li> |
52 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 53 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
54 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
53 | <li><a href="Security.html">Security</a></li> | 55 | <li><a href="Security.html">Security</a></li> |
54 | <li><a href="Static-analysis.html">Static analysis</a></li> | 56 | <li><a href="Static-analysis.html">Static analysis</a></li> |
55 | <li><a href="Theming.html">Theming</a></li> | 57 | <li><a href="Theming.html">Theming</a></li> |
@@ -82,6 +84,7 @@ | |||
82 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 84 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
83 | <li><a href="Firefox-share.html">Firefox share</a></li> | 85 | <li><a href="Firefox-share.html">Firefox share</a></li> |
84 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 86 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
87 | <li><a href="REST-API.html">REST API</a></li> | ||
85 | </ul></li> | 88 | </ul></li> |
86 | <li>How To | 89 | <li>How To |
87 | <ul> | 90 | <ul> |
@@ -100,6 +103,7 @@ | |||
100 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 103 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
101 | <li><a href="Plugin-System.html">Plugin System</a></li> | 104 | <li><a href="Plugin-System.html">Plugin System</a></li> |
102 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 105 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
106 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
103 | <li><a href="Security.html">Security</a></li> | 107 | <li><a href="Security.html">Security</a></li> |
104 | <li><a href="Static-analysis.html">Static analysis</a></li> | 108 | <li><a href="Static-analysis.html">Static analysis</a></li> |
105 | <li><a href="Theming.html">Theming</a></li> | 109 | <li><a href="Theming.html">Theming</a></li> |
diff --git a/doc/_Sidebar.md b/doc/_Sidebar.md index 1778e3a3..8df2e565 100644 --- a/doc/_Sidebar.md +++ b/doc/_Sidebar.md | |||
@@ -14,6 +14,7 @@ | |||
14 | - [Browsing and Searching](Browsing-and-Searching.html) | 14 | - [Browsing and Searching](Browsing-and-Searching.html) |
15 | - [Firefox share](Firefox-share.html) | 15 | - [Firefox share](Firefox-share.html) |
16 | - [RSS feeds](RSS-feeds.html) | 16 | - [RSS feeds](RSS-feeds.html) |
17 | - [REST API](REST-API.html) | ||
17 | - How To | 18 | - How To |
18 | - [Backup, restore, import and export](Backup,-restore,-import-and-export.html) | 19 | - [Backup, restore, import and export](Backup,-restore,-import-and-export.html) |
19 | - [Copy an existing installation over SSH and serve it locally](Copy-an-existing-installation-over-SSH-and-serve-it-locally.html) | 20 | - [Copy an existing installation over SSH and serve it locally](Copy-an-existing-installation-over-SSH-and-serve-it-locally.html) |
@@ -28,6 +29,7 @@ | |||
28 | - [3rd party libraries](3rd-party-libraries.html) | 29 | - [3rd party libraries](3rd-party-libraries.html) |
29 | - [Plugin System](Plugin-System.html) | 30 | - [Plugin System](Plugin-System.html) |
30 | - [Release Shaarli](Release-Shaarli.html) | 31 | - [Release Shaarli](Release-Shaarli.html) |
32 | - [Versioning and Branches](Versioning-and-Branches.html) | ||
31 | - [Security](Security.html) | 33 | - [Security](Security.html) |
32 | - [Static analysis](Static-analysis.html) | 34 | - [Static analysis](Static-analysis.html) |
33 | - [Theming](Theming.html) | 35 | - [Theming](Theming.html) |
diff --git a/doc/sidebar.html b/doc/sidebar.html index 4dad0161..478840d1 100644 --- a/doc/sidebar.html +++ b/doc/sidebar.html | |||
@@ -18,6 +18,7 @@ | |||
18 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> | 18 | <li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li> |
19 | <li><a href="Firefox-share.html">Firefox share</a></li> | 19 | <li><a href="Firefox-share.html">Firefox share</a></li> |
20 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | 20 | <li><a href="RSS-feeds.html">RSS feeds</a></li> |
21 | <li><a href="REST-API.html">REST API</a></li> | ||
21 | </ul></li> | 22 | </ul></li> |
22 | <li>How To | 23 | <li>How To |
23 | <ul> | 24 | <ul> |
@@ -36,6 +37,7 @@ | |||
36 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | 37 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> |
37 | <li><a href="Plugin-System.html">Plugin System</a></li> | 38 | <li><a href="Plugin-System.html">Plugin System</a></li> |
38 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> | 39 | <li><a href="Release-Shaarli.html">Release Shaarli</a></li> |
40 | <li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li> | ||
39 | <li><a href="Security.html">Security</a></li> | 41 | <li><a href="Security.html">Security</a></li> |
40 | <li><a href="Static-analysis.html">Static analysis</a></li> | 42 | <li><a href="Static-analysis.html">Static analysis</a></li> |
41 | <li><a href="Theming.html">Theming</a></li> | 43 | <li><a href="Theming.html">Theming</a></li> |