浏览代码

Generate HTML documentation using MkDocs (WIP)

MkDocs is a static site generator geared towards building project documentation.
Documentation source files are written in Markdown, and configured with a single YAML file.

 * http://www.mkdocs.org/
 * http://www.mkdocs.org/user-guide/configuration/

Ref. #312

* remove pandoc-generated HTML documentation
* move markdown doc to doc/md/,
* mkdocs.yml:
  * generate HTML doc in doc/html
  * add pages TOC/ordering
  * use index.md as index page
* Makefile: remove execute permissions from generated files
* Makefile: rewrite htmlpages GFM to markdown conversion using sed:
   awk expression aslo matched '][' which causes invalid output on complex links with images or code blocks
* Add mkdocs.yml to .gitattributes, exclude this file from release archives
* Makefile: rename: htmldoc -> doc_html target
* run make doc: pull latest markdown documentation from wiki
* run make htmlpages: update html documentation
nodiscc 7 年之前
父节点
当前提交
53ed6d7d1e
共有 100 个文件被更改,包括 17558 次插入6701 次删除
  1. 1 0
      .gitattributes
  2. 19 33
      Makefile
  3. 0 88
      doc/3rd-party-libraries.html
  4. 0 152
      doc/Backup,-restore,-import-and-export.html
  5. 0 83
      doc/Browsing-and-searching.html
  6. 0 75
      doc/Coding-guidelines.html
  7. 0 131
      doc/Community-&-Related-software.html
  8. 0 165
      doc/Copy-an-existing-installation-over-SSH-and-serve-it-locally.html
  9. 0 159
      doc/Create-and-serve-multiple-Shaarlis-(farm).html
  10. 0 124
      doc/Datastore-hacks.html
  11. 0 112
      doc/Development.html
  12. 0 35
      doc/Development.md
  13. 0 135
      doc/Directory-structure.html
  14. 0 245
      doc/Docker.html
  15. 0 257
      doc/Download-CSS-styles-from-an-OPML-list.html
  16. 0 172
      doc/Download-and-Installation.html
  17. 0 254
      doc/Example-patch---add-new-via-field-for-links.html
  18. 0 107
      doc/FAQ.html
  19. 0 95
      doc/Firefox-share.html
  20. 0 175
      doc/GnuPG-signature.html
  21. 0 76
      doc/Home.html
  22. 0 634
      doc/Plugin-System.html
  23. 0 155
      doc/Plugins.html
  24. 0 169
      doc/REST-API.html
  25. 0 99
      doc/RSS-feeds.html
  26. 0 224
      doc/Release-Shaarli.html
  27. 0 135
      doc/Security.html
  28. 0 459
      doc/Server-configuration.html
  29. 0 195
      doc/Server-requirements.html
  30. 0 175
      doc/Server-security.html
  31. 0 298
      doc/Shaarli-configuration.html
  32. 0 94
      doc/Sharing-button.html
  33. 0 82
      doc/Static-analysis.html
  34. 0 182
      doc/Theming.html
  35. 0 202
      doc/Troubleshooting.html
  36. 0 226
      doc/Unit-tests.html
  37. 0 259
      doc/Upgrade-and-migration.html
  38. 0 95
      doc/Usage.html
  39. 0 156
      doc/Versioning-and-Branches.html
  40. 0 70
      doc/_Footer.html
  41. 0 119
      doc/_Sidebar.html
  42. 369 0
      doc/html/3rd-party-libraries/index.html
  43. 411 0
      doc/html/Backup,-restore,-import-and-export/index.html
  44. 375 0
      doc/html/Bookmarklet/index.html
  45. 362 0
      doc/html/Browsing-and-searching/index.html
  46. 348 0
      doc/html/Coding-guidelines/index.html
  47. 419 0
      doc/html/Community-&-Related-software/index.html
  48. 367 0
      doc/html/Continuous-integration-tools/index.html
  49. 403 0
      doc/html/Copy-an-existing-installation-over-SSH-and-serve-it-locally/index.html
  50. 396 0
      doc/html/Create-and-serve-multiple-Shaarlis-(farm)/index.html
  51. 369 0
      doc/html/Datastore-hacks/index.html
  52. 352 0
      doc/html/Development-guidelines/index.html
  53. 371 0
      doc/html/Directory-structure/index.html
  54. 410 0
      doc/html/Docker-101/index.html
  55. 370 0
      doc/html/Docker-resources/index.html
  56. 496 0
      doc/html/Download-CSS-styles-from-an-OPML-list/index.html
  57. 444 0
      doc/html/Download-and-Installation/index.html
  58. 388 0
      doc/html/FAQ/index.html
  59. 371 0
      doc/html/Features/index.html
  60. 368 0
      doc/html/Firefox-share/index.html
  61. 439 0
      doc/html/GnuPG-signature/index.html
  62. 968 0
      doc/html/Plugin-System/index.html
  63. 414 0
      doc/html/Plugins/index.html
  64. 431 0
      doc/html/REST-API/index.html
  65. 367 0
      doc/html/RSS-feeds/index.html
  66. 529 0
      doc/html/Release-Shaarli/index.html
  67. 350 0
      doc/html/Reverse-proxy-configuration/index.html
  68. 386 0
      doc/html/Security/index.html
  69. 747 0
      doc/html/Server-configuration/index.html
  70. 475 0
      doc/html/Server-requirements/index.html
  71. 429 0
      doc/html/Server-security/index.html
  72. 563 0
      doc/html/Shaarli-configuration/index.html
  73. 425 0
      doc/html/Shaarli-images/index.html
  74. 359 0
      doc/html/Static-analysis/index.html
  75. 435 0
      doc/html/Theming/index.html
  76. 441 0
      doc/html/Troubleshooting/index.html
  77. 492 0
      doc/html/Unit-tests/index.html
  78. 534 0
      doc/html/Upgrade-and-migration/index.html
  79. 418 0
      doc/html/Versioning-and-Branches/index.html
  80. 0 0
      doc/html/config.json
  81. 124 0
      doc/html/css/highlight.css
  82. 8 0
      doc/html/css/theme.css
  83. 193 0
      doc/html/css/theme_extra.css
  84. 二进制
      doc/html/fonts/fontawesome-webfont.eot
  85. 195 0
      doc/html/fonts/fontawesome-webfont.svg
  86. 二进制
      doc/html/fonts/fontawesome-webfont.ttf
  87. 二进制
      doc/html/fonts/fontawesome-webfont.woff
  88. 0 0
      doc/html/github-markdown.css
  89. 0 0
      doc/html/images/bookmarklet.png
  90. 0 0
      doc/html/images/doc-logo.png
  91. 0 0
      doc/html/images/doc-logo.svg
  92. 0 0
      doc/html/images/firefoxshare.png
  93. 0 0
      doc/html/images/rss-filter-1.png
  94. 0 0
      doc/html/images/rss-filter-2.png
  95. 二进制
      doc/html/img/favicon.ico
  96. 344 0
      doc/html/index.html
  97. 0 0
      doc/html/js/highlight.pack.js
  98. 1 0
      doc/html/js/jquery-2.1.1.min.js
  99. 0 0
      doc/html/js/modernizr-2.8.3.min.js
  100. 82 0
      doc/html/js/theme.js

+ 1 - 0
.gitattributes

@@ -33,5 +33,6 @@ doc/**/*.md     export-ignore
 docker/         export-ignore
 Doxyfile        export-ignore
 Makefile        export-ignore
+mkdocs.yml      export-ignore
 phpunit.xml     export-ignore
 tests/          export-ignore

+ 19 - 33
Makefile

@@ -194,42 +194,28 @@ doxygen: clean
 
 ### update the local copy of the documentation
 doc: clean
-	@rm -rf doc
-	@git clone https://github.com/shaarli/Shaarli.wiki.git doc
-	@rm -rf doc/.git
-
-### Generate a custom sidebar
-#
-# Sidebar content:
-#  - convert GitHub-flavoured relative links to standard Markdown
-#  - trim HTML, only keep the list (<ul>[...]</ul>) part
-htmlsidebar:
-	@echo '<div id="local-sidebar">' > doc/sidebar.html
-	@awk 'BEGIN { FS = "[\\[\\]]{2}" }'\
-	'm = /\[/ { t=$$2; gsub(/ /, "-", $$2); print $$1"["t"]("$$2".html)"$$3 }'\
-	'!m { print $$0 }' doc/_Sidebar.md > doc/tmp.md
-	@pandoc -f markdown -t html5 -s doc/tmp.md | awk '/(ul>|li>)/' >> doc/sidebar.html
-	@echo '</div>' >> doc/sidebar.html
-	@rm doc/tmp.md
+	@rm -rf doc/md/
+	@git clone https://github.com/shaarli/Shaarli.wiki.git doc/md
+	mv doc/md/Home.md doc/md/index.md
+	@rm -rf doc/md/.git
 
 ### Convert local markdown documentation to HTML
 #
 # For all pages:
-#  - infer title from the file name
 #  - convert GitHub-flavoured relative links to standard Markdown
-#  - insert the sidebar menu
+#  - generate html documentation with mkdocs
 htmlpages:
-	@for file in `find doc/ -maxdepth 1 -name "*.md"`; do \
-		base=`basename $$file .md`; \
-		sed -i "1i #$${base//-/ }" $$file; \
-		awk 'BEGIN { FS = "[\\[\\]]{2}" }'\
-	'm = /\[/ { t=$$2; gsub(/ /, "-", $$2); print $$1"["t"]("$$2".html)"$$3 }'\
-	'!m { print $$0 }' $$file > doc/tmp.md; \
-		mv doc/tmp.md $$file; \
-		pandoc -f markdown_github -t html5 -s \
-			-c "github-markdown.css" \
-			-T Shaarli -M pagetitle:"$${base//-/ }" -B doc/sidebar.html \
-			-o doc/$$base.html $$file; \
-	done;
-
-htmldoc: authors doc htmlsidebar htmlpages
+	# Rename local [[links]] to regular links.
+	@for file in `find doc/md/ -maxdepth 1 -name "*.md"`; do \
+		sed -e "s/\[\[\(.*\)\]\]/[\1](\1)/g" "$$file" > doc/md/tmp.md; \
+		mv doc/md/tmp.md $$file; \
+	done
+
+	python3 -m venv venv/
+	bash -c 'source venv/bin/activate; \
+	pip install mkdocs; \
+	mkdocs build'
+	find doc/html/ -type f -exec chmod a-x '{}' \;
+	rm -r venv
+
+doc_html: authors doc htmlpages

+ 0 - 88
doc/3rd-party-libraries.html

@@ -1,88 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – 3rd party libraries</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="rd-party-libraries">3rd party libraries</h1>
-<h2 id="css">CSS</h2>
-<ul>
-<li>Yahoo UI <a href="http://yuilibrary.com/yui/docs/cssreset/">CSS Reset</a><a href=".html"></a>
-<ul>
-<li>resets default CSS properties for all HTML elements (overriding browsers' default values)</li>
-<li>ensures custom CSS stylessheets will provide the same results on all browsers</li>
-</ul></li>
-</ul>
-<h2 id="javascript">Javascript</h2>
-<ul>
-<li><a href="https://leaverou.github.io/awesomplete/">Awesomeplete</a> (<a href="https://github.com/LeaVerou/awesomplete">GitHub</a>) - autocompletion in input forms<a href=".html"></a></li>
-<li><a href="http://dinbror.dk/blazy/">bLazy</a> (<a href="https://github.com/dinbror/blazy">GitHub</a>) - lazy loading for thumbnails<a href=".html"></a></li>
-<li><a href="http://neocotic.com/qr.js/">qr.js</a> (<a href="https://github.com/neocotic/qr.js">GitHub</a>) - QR code generation<a href=".html"></a></li>
-</ul>
-<h2 id="php">PHP</h2>
-<ul>
-<li><a href="https://github.com/shaarli/netscape-bookmark-parser">shaarli/netscape-bookmark-parser</a> - Netscape bookmark parser<a href=".html"></a></li>
-<li><a href="https://github.com/rainphp/raintpl">RainTPL</a> - HTML templating for PHP<a href=".html"></a></li>
-</ul>
-</body>
-</html>

+ 0 - 152
doc/Backup,-restore,-import-and-export.html

@@ -1,152 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Backup, restore, import and export</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="backup-restore-import-and-export">Backup, restore, import and export</h1>
-<ul>
-<li><a href="#backup-and-restore-the-datastore-file">Backup and restore the datastore file</a><a href=".html"></a></li>
-<li><a href="#export-links-as">Export links as...</a><a href=".html"></a></li>
-<li><a href="#import-links-from">Import links from...</a><a href=".html"></a></li>
-<li><a href="#import-shaarli-links-to-firefox">Import Shaarli links to Firefox</a><a href=".html"></a></li>
-</ul>
-<hr />
-<h2 id="backup-and-restore-the-datastore-file">Backup and restore the datastore file</h2>
-<p>Backup the file <code>data/datastore.php</code> (by FTP or SSH). Restore by putting the file back in place.</p>
-<p>Example command:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">rsync</span> -avzP my.server.com:/var/www/shaarli/data/datastore.php datastore-<span class="va">$(</span><span class="fu">date</span> +%Y-%m-%d_%H%M<span class="va">)</span>.php</code></pre></div>
-<h2 id="export-links-as...">Export links as...</h2>
-<p>To export links as an HTML file, under <em>Tools &gt; Export</em>, choose:</p>
-<ul>
-<li><em>Export all</em> to export both public and private links</li>
-<li><em>Export public</em> to export public links only</li>
-<li><em>Export private</em> to export private links only</li>
-</ul>
-<p>Restore by using the <code>Import</code> feature.</p>
-<ul>
-<li>This can be done using the <a href="https://github.com/nodiscc/shaarchiver">shaarchiver</a> tool.<a href=".html"></a></li>
-</ul>
-<p>Example command:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="ex">./export-bookmarks.py</span> --url=https://my.server.com/shaarli --username=myusername --password=mysupersecretpassword --download-dir=./ --type=all</code></pre></div>
-<h2 id="import-links-from...">Import links from...</h2>
-<h3 id="diigo">Diigo</h3>
-<p>If you export your bookmark from Diigo, make sure you use the Delicious export, not the Netscape export. (Their Netscape export is broken, and they don't seem to be interested in fixing it.)</p>
-<h3 id="mister-wong">Mister Wong</h3>
-<p>See <a href="https://github.com/sebsauvage/Shaarli/issues/146">this issue</a> for import tweaks.<a href=".html"></a></p>
-<h3 id="semanticscuttle">SemanticScuttle</h3>
-<p>To correctly import the tags from a <a href="http://semanticscuttle.sourceforge.net/">SemanticScuttle</a> HTML export, edit the HTML file before importing and replace all occurences of <code>tags=</code> (lowercase) to <code>TAGS=</code> (uppercase).<a href=".html"></a></p>
-<h3 id="scuttle">Scuttle</h3>
-<p>Shaarli cannot import data directly from <a href="https://github.com/scronide/scuttle">Scuttle</a>. However, you can use this third party tool: <a href="https://github.com/q2apro/scuttle-to-shaarli" class="uri">https://github.com/q2apro/scuttle-to-shaarli</a> to export the Scuttle database to the Netscape HTML format compatible with the Shaarli importer.<a href=".html"></a></p>
-<h2 id="import-shaarli-links-to-firefox">Import Shaarli links to Firefox</h2>
-<ul>
-<li>Export your Shaarli links as described above.</li>
-<li>For compatibility reasons, check <code>Prepend note permalinks with this Shaarli instance's URL (useful to import bookmarks in a web browser)</code></li>
-<li>In Firefox, open the bookmark manager (not the sidebar! <code>Bookmarks menu &gt; Show all bookmarks</code> or <code>Ctrl+Shift+B</code>)</li>
-<li>Select <code>Import and Backup &gt; Import bookmarks in HTML format</code></li>
-</ul>
-<p>Your bookmarks will be imported in Firefox, ready to use, with tags and descriptions retained. &quot;Self&quot; (notes) shaares will still point to the Shaarli instance you exported them from, but the note text can be viewed directly in the bookmark properties inside your browser. Depending on the number of bookmarks, the import can take some time.</p>
-<p>You may be interested in these Firefox addons to manage links imported from Shaarli</p>
-<ul>
-<li><a href="https://addons.mozilla.org/en-US/firefox/addon/bookmark-deduplicator/">Bookmark Deduplicator</a> - provides an easy way to deduplicate your bookmarks<a href=".html"></a></li>
-<li><a href="https://addons.mozilla.org/en-US/firefox/addon/tagsieve/">TagSieve</a> - browse your bookmarks by their tags<a href=".html"></a></li>
-</ul>
-</body>
-</html>

+ 0 - 83
doc/Browsing-and-searching.html

@@ -1,83 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Browsing and searching</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="browsing-and-searching">Browsing and searching</h1>
-<h1 id="browsing-and-searching-1">Browsing and Searching</h1>
-<p><embed src="(http://pix.toile-libre.org/upload/original/1455571378.png).html" /></p>
-<h2 id="plain-text-search">Plain text search</h2>
-<p>Use the <code>Search text</code> field to search in <em>any</em> of the fields of all links (Title, URL, Description...)</p>
-<p><strong>Exclude text/tags:</strong> Use the <code>-</code> operator before a word or tag (example <code>-uninteresting</code>) to prevent entries containing (or tagged) <code>uninteresting</code> from showing up in the search results.</p>
-<p><strong>Exact text search:</strong> Use double-quotes (example <code>&quot;exact search&quot;</code>) to search for the exact expression.</p>
-<p>Both exclude patterns and exact searches can be combined with normal searches (example <code>&quot;exact search&quot; term otherterm -notthis &quot;very exact&quot; stuff -notagain</code>)</p>
-<h2 id="tags-search">Tags search</h2>
-<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>
-<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>
-<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>
-<p>To search for links that are not tagged, enter <code>&quot;&quot;</code> in the tag search field.</p>
-<h2 id="filtering-rss-feedspicture-wall">Filtering RSS feeds/Picture wall</h2>
-<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>
-</body>
-</html>

+ 0 - 75
doc/Coding-guidelines.html

@@ -1,75 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Coding guidelines</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="coding-guidelines">Coding guidelines</h1>
-<h2 id="wip">WIP</h2>
-<p>This topic is currently being discussed here:</p>
-<ul>
-<li><a href="https://github.com/shaarli/Shaarli/issues/95">Fix coding style (static analysis)</a> (#95)<a href=".html"></a></li>
-<li><a href="https://github.com/shaarli/Shaarli/issues/130">Continuous Integration tools &amp; features</a> (#130)<a href=".html"></a></li>
-</ul>
-</body>
-</html>

+ 0 - 131
doc/Community-&-Related-software.html

@@ -1,131 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Community & Related software</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="community-related-software">Community &amp; Related software</h1>
-<p><em>Unofficial but related work on Shaarli. If you maintain one of these, please get in touch with us to help us find a way to adapt your work to our fork.</em></p>
-<p><em>TODO: contact repos owners to see if they'd like to standardize their work with the community fork.</em></p>
-<h2 id="community">Community</h2>
-<ul>
-<li><a href="http://sebsauvage.net/links/">Liens en vrac de sebsauvage</a> - the original Shaarli<a href=".html"></a></li>
-<li><a href="http://porneia.free.fr/pub/links/ou-est-shaarli.html">A large list of Shaarlis</a><a href=".html"></a></li>
-<li><a href="https://raw.githubusercontent.com/Oros42/find_shaarlis/master/annuaires.json">A list of working Shaarli aggregators</a><a href=".html"></a></li>
-<li><a href="https://github.com/Oros42/shaarlis_list">A list of some known Shaarlis</a><a href=".html"></a></li>
-<li><a href="http://sebsauvage.net/rhaa/index.php?2011/09/16/09/29/58-adieu-delicious-diigo-et-stumbleupon-salut-shaarli-">Adieu Delicious, Diigo et StumbleUpon. Salut Shaarli ! - sebsauvage.net</a> (fr) <em>16/09/2011 - the original post about Shaarli</em><a href=".html"></a></li>
-<li><a href="http://sebsauvage.net/wiki/doku.php?id=php:shaarli:ideas">Original ideas/fixme/TODO page</a><a href=".html"></a></li>
-<li><a href="http://sebsauvage.net/wiki/doku.php?id=php:shaarli:discussion">Original discussion page</a> (fr)<a href=".html"></a></li>
-<li><a href="http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history">Original revisions history</a><a href=".html"></a></li>
-<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>
-</ul>
-<h3 id="articles-and-social-media-discussions">Articles and social media discussions</h3>
-<ul>
-<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>
-<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>
-<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>
-<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>
-</ul>
-<h3 id="third-party-plugins">Third party plugins</h3>
-<ul>
-<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>
-<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>
-<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>
-<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>
-<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>
-<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>
-<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>
-<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>
-</ul>
-<h3 id="themes">Themes</h3>
-<p>See <a href="Theming.html">Theming</a> for the list of community-contributed themes, and an installation guide.</p>
-<h3 id="server-apps">Server apps</h3>
-<ul>
-<li><a href="https://github.com/nodiscc/shaarchiver">shaarchiver</a> - Archive your Shaarli bookmarks and their content<a href=".html"></a></li>
-<li><a href="https://github.com/mknexen/shaarli-river">shaarli-river</a> - An aggregator for shaarlis with many features <a href=".html"></a></li>
-<li><a href="https://github.com/DMeloni/shaarlo">Shaarlo</a> - An aggregator for shaarlis with many features (a very popular running instance among french shaarliers: <a href="http://shaarli.fr/">shaarli.fr</a>)<a href=".html"></a></li>
-<li><a href="https://github.com/BoboTiG/shaarlimages">Shaarlimages</a> - An image-oriented aggregator for Shaarlis<a href=".html"></a></li>
-<li><a href="https://github.com/mknexen/shaarli-api">mknexen/shaarli-api</a> - A REST API for Shaarli<a href=".html"></a></li>
-<li><a href="https://github.com/qwertygc/shaarli-dev-code/blob/master/self-dead-link.php">Self dead link</a> - Detect dead links on shaarli. This version use the database of shaarli. <a href="https://github.com/qwertygc/shaarli-dev-code/blob/master/dead-link.php">Another version</a>, can be used for other shaarli instances (but is more resource consuming).<a href=".html"></a></li>
-</ul>
-<h3 id="mobile-apps">Mobile Apps</h3>
-<ul>
-<li><a href="http://app.mro.name/Shaarli💫">Shaarli💫</a> iOS share extension - see <a href="https://github.com/shaarli/Shaarli/issues/308#issuecomment-184592070">#308</a> for some promo codes,<a href=".html"></a></li>
-<li><a href="http://sebsauvage.net/links/?ZAyDzg">Shaarli for Android</a> - Android application that adds Shaarli as a sharing provider<a href=".html"></a></li>
-<li><a href="https://github.com/dimtion/Shaarlier">Shaarlier for Android</a> - Android application to simply add links directly into your Shaarli<a href=".html"></a></li>
-</ul>
-<h2 id="integration-with-other-platforms">Integration with other platforms</h2>
-<ul>
-<li><a href="https://github.com/jcsaaddupuy/tt-rss-shaarli">tt-rss-shaarli</a> - <a href="http://tt-rss.org/">TinyTiny RSS</a> plugin that adds support for sharing articles with Shaarli<a href=".html"></a></li>
-<li><a href="https://github.com/ahmet2mir/octopress-shaarli">octopress-shaarli</a> - Octopress plugin to retrieve Shaarli links on the sidebar<a href=".html"></a></li>
-<li><a href="https://github.com/q2apro/scuttle-to-shaarli">Scuttle to Shaarli</a> - Import bookmarks from Scuttle<a href=".html"></a></li>
-</ul>
-<h2 id="alternatives-to-shaarli">Alternatives to Shaarli</h2>
-<ul>
-<li><a href="http://alternativeto.net/software/shaarli/">Shaarli alternatives</a> (alternativeto.net)<a href=".html"></a></li>
-<li><a href="https://github.com/bookieio/bookie">Bookie</a> - Another self-hostable, free bookmark sharing software, written in Python<a href=".html"></a></li>
-<li><a href="https://github.com/plainmade/unmark">Unmark</a> - An open source todo app for bookmarks (<a href="https://unmark.it/">Homepage</a>)<a href=".html"></a></li>
-<li><a href="https://wordpress.org/plugins/wp-bookmarks/">Wordpress bookmarks</a><a href=".html"></a></li>
-</ul>
-</body>
-</html>

+ 0 - 165
doc/Copy-an-existing-installation-over-SSH-and-serve-it-locally.html

@@ -1,165 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Copy an existing installation over SSH and serve it locally</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="copy-an-existing-installation-over-ssh-and-serve-it-locally">Copy an existing installation over SSH and serve it locally</h1>
-<p>Example bash script:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co">#!/bin/bash</span>
-<span class="co">#Description: Copy a Shaarli installation over SSH/SCP, serve it locally with php-cli</span>
-<span class="co">#Will create a local-shaarli/ directory when you run it, backup your Shaarli there, and serve it locally.</span>
-<span class="co">#Will NOT download linked pages. It&#39;s just a directly usable backup/copy/mirror of your Shaarli</span>
-<span class="co">#Requires: ssh, scp and a working SSH access to the server where your Shaarli is installed</span>
-<span class="co">#Usage: ./local-shaarli.sh</span>
-<span class="co">#Author: nodiscc (nodiscc@gmail.com)</span>
-<span class="co">#License: MIT (http://opensource.org/licenses/MIT)</span>
-<span class="kw">set</span> <span class="ex">-o</span> errexit
-<span class="kw">set</span> <span class="ex">-o</span> nounset
-
-<span class="co">##### CONFIG #################</span>
-<span class="co">#The port used by php&#39;s local server</span>
-<span class="va">php_local_port=</span>7431
-
-<span class="co">#Name of the SSH server and path where Shaarli is installed</span>
-<span class="co">#TODO: pass these as command-line arguments</span>
-<span class="va">remotehost=</span><span class="st">&quot;my.ssh.server&quot;</span>
-<span class="va">remote_shaarli_dir=</span><span class="st">&quot;/var/www/shaarli&quot;</span>
-
-
-<span class="co">###### FUNCTIONS #############</span>
-<span class="fu">_main()</span> <span class="kw">{</span>
-    <span class="ex">_CBSyncShaarli</span>
-    <span class="ex">_CBServeShaarli</span>
-<span class="kw">}</span>
-
-<span class="fu">_CBSyncShaarli()</span> <span class="kw">{</span>
-    <span class="va">remote_temp_dir=$(</span><span class="fu">ssh</span> <span class="va">$remotehost</span> mktemp -d<span class="va">)</span>
-    <span class="va">remote_ssh_user=$(</span><span class="fu">ssh</span> <span class="va">$remotehost</span> whoami<span class="va">)</span>
-    <span class="fu">ssh</span> -t <span class="st">&quot;</span><span class="va">$remotehost</span><span class="st">&quot;</span> sudo cp -r <span class="st">&quot;</span><span class="va">$remote_shaarli_dir</span><span class="st">&quot;</span> <span class="st">&quot;</span><span class="va">$remote_temp_dir</span><span class="st">&quot;</span>
-    <span class="fu">ssh</span> -t <span class="st">&quot;</span><span class="va">$remotehost</span><span class="st">&quot;</span> sudo chown -R <span class="st">&quot;</span><span class="va">$remote_ssh_user</span><span class="st">&quot;</span>:<span class="st">&quot;</span><span class="va">$remote_ssh_user</span><span class="st">&quot;</span> <span class="st">&quot;</span><span class="va">$remote_temp_dir</span><span class="st">&quot;</span>
-    <span class="fu">scp</span> -rq <span class="st">&quot;</span><span class="va">$remotehost</span><span class="st">&quot;</span>:<span class="st">&quot;</span><span class="va">$remote_temp_dir</span><span class="st">&quot;</span> local-shaarli
-    <span class="fu">ssh</span> <span class="st">&quot;</span><span class="va">$remotehost</span><span class="st">&quot;</span> rm -r <span class="st">&quot;</span><span class="va">$remote_temp_dir</span><span class="st">&quot;</span>
-<span class="kw">}</span>
-
-<span class="fu">_CBServeShaarli()</span> <span class="kw">{</span>
-    <span class="co">#TODO: allow serving a previously downloaded Shaarli</span>
-    <span class="co">#TODO: ask before overwriting local copy, if it exists</span>
-    <span class="bu">cd</span> local-shaarli/
-    <span class="ex">php</span> -S localhost:<span class="va">${php_local_port}</span>
-    <span class="bu">echo</span> <span class="st">&quot;Please go to http://localhost:</span><span class="va">${php_local_port}</span><span class="st">&quot;</span>
-<span class="kw">}</span>
-
-
-<span class="co">##### MAIN #################</span>
-
-<span class="ex">_main</span></code></pre></div>
-<p>This outputs:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">./local-shaarli.sh</span>
-<span class="ex">PHP</span> 5.6.0RC4 Development Server started at Mon Sep  1 21:56:19 2014
-<span class="ex">Listening</span> on http://localhost:7431
-<span class="ex">Document</span> root is /home/user/local-shaarli/shaarli
-<span class="ex">Press</span> Ctrl-C to quit.
-
-[<span class="ex">Mon</span> Sep  1 21:56:27 2014] ::1:57868 [200]: /[](.html)
-[<span class="ex">Mon</span> Sep  1 21:56:27 2014] ::1:57869 [200]: /index.html[](.html)
-[<span class="ex">Mon</span> Sep  1 21:56:37 2014] ::1:57881 [200]: /...[](.html)</code></pre></div>
-</body>
-</html>

+ 0 - 159
doc/Create-and-serve-multiple-Shaarlis-(farm).html

@@ -1,159 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Create and serve multiple Shaarlis (farm)</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="create-and-serve-multiple-shaarlis-farm">Create and serve multiple Shaarlis (farm)</h1>
-<p>Example bash script (creates multiple shaarli instances and generates an HTML index of them)</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co">#!/bin/bash</span>
-<span class="kw">set</span> <span class="ex">-o</span> errexit
-<span class="kw">set</span> <span class="ex">-o</span> nounset
-
-<span class="co">#config</span>
-<span class="va">shaarli_base_dir=</span><span class="st">&#39;/var/www/shaarli&#39;</span>
-<span class="va">accounts=</span><span class="st">&#39;bob john whatever username&#39;</span>
-<span class="va">shaarli_repo_url=</span><span class="st">&#39;https://github.com/shaarli/Shaarli&#39;</span>
-<span class="va">ref=</span><span class="st">&quot;master&quot;</span>
-
-<span class="co">#clone multiple shaarli instances</span>
-<span class="kw">if</span><span class="bu"> [</span> <span class="ot">!</span> <span class="ot">-d</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">&quot;</span><span class="bu"> ]</span>; <span class="kw">then</span> <span class="fu">mkdir</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">&quot;</span><span class="kw">;</span> <span class="kw">fi</span>[]<span class="kw">(</span><span class="ex">.html</span><span class="kw">)</span>
-   
-<span class="kw">for</span> <span class="ex">account</span> in <span class="va">$accounts</span><span class="kw">;</span> <span class="kw">do</span>
-    <span class="kw">if</span><span class="bu"> [</span> <span class="ot">-d</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">/</span><span class="va">$account</span><span class="st">&quot;</span><span class="bu"> ]</span>;[]<span class="kw">(</span><span class="ex">.html</span><span class="kw">)</span>
-    <span class="kw">then</span> <span class="bu">echo</span> <span class="st">&quot;[info] account </span><span class="va">$account</span><span class="st"> already exists, skipping&quot;</span><span class="kw">;</span>[]<span class="kw">(</span><span class="ex">.html</span><span class="kw">)</span>
-    <span class="kw">else</span> <span class="bu">echo</span> <span class="st">&quot;[info] creating new account </span><span class="va">$account</span><span class="st"> ...&quot;</span><span class="kw">;</span> <span class="fu">git</span> clone --quiet <span class="st">&quot;</span><span class="va">$shaarli_repo_url</span><span class="st">&quot;</span> -b <span class="st">&quot;</span><span class="va">$ref</span><span class="st">&quot;</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">/</span><span class="va">$account</span><span class="st">&quot;</span><span class="kw">;</span> <span class="kw">fi</span>[]<span class="kw">(</span><span class="ex">.html</span><span class="kw">)</span>
-<span class="kw">done</span>
-
-<span class="co">#generate html index of shaarlis</span>
-<span class="va">htmlhead=</span><span class="st">&#39;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;</span>
-<span class="st">&lt;!-- Minimal html template thanks to http://www.sitepoint.com/a-minimal-html-document/ --&gt;</span>
-<span class="st">&lt;html lang=&quot;en&quot;&gt;</span>
-<span class="st">    &lt;head&gt;</span>
-<span class="st">        &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;</span>
-<span class="st">        &lt;title&gt;My Shaarli farm&lt;/title&gt;</span>
-<span class="st">        &lt;style&gt;body {font-family: &quot;Open Sans&quot;}&lt;/style&gt;</span>
-<span class="st">    &lt;/head&gt;</span>
-<span class="st">    &lt;body&gt;</span>
-<span class="st">    &lt;div&gt;</span>
-<span class="st">    &lt;h1&gt;My Shaarli farm&lt;/h1&gt;</span>
-<span class="st">    &lt;ul style=&quot;list-style-type: none;&quot;&gt;&#39;</span>
-
-<span class="va">accountlinks=</span><span class="st">&#39;&#39;</span>
-    
-<span class="va">htmlfooter=</span><span class="st">&#39;</span>
-<span class="st">    &lt;/ul&gt;</span>
-<span class="st">    &lt;/div&gt;</span>
-<span class="st">    &lt;/body&gt;</span>
-<span class="st">&lt;/html&gt;&#39;</span>    
-    
-
-
-<span class="kw">for</span> <span class="ex">account</span> in <span class="va">$accounts</span><span class="kw">;</span> <span class="kw">do</span> <span class="va">accountlinks=</span><span class="st">&quot;</span><span class="va">$accountlinks</span><span class="st">\n&lt;li&gt;&lt;a href=</span><span class="dt">\&quot;</span><span class="va">$account</span><span class="dt">\&quot;</span><span class="st">&gt;</span><span class="va">$account</span><span class="st">&lt;/a&gt;&lt;/li&gt;&quot;</span>; <span class="kw">done</span>
-<span class="kw">if</span><span class="bu"> [</span> <span class="ot">-d</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">/index.html&quot;</span><span class="bu"> ]</span>; <span class="kw">then</span> <span class="bu">echo</span> <span class="st">&quot;[removing old index.html]&quot;</span><span class="kw">;</span> <span class="fu">rm</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">/index.html&quot;</span> ]<span class="kw">;</span> <span class="kw">fi</span>[]<span class="kw">(</span><span class="ex">.html</span><span class="kw">)</span>
-<span class="bu">echo</span> <span class="st">&quot;[info] generating new index of shaarlis&quot;</span>[](.html)
-<span class="bu">echo</span> -e <span class="st">&quot;</span><span class="va">$htmlhead</span><span class="st"> </span><span class="va">$accountlinks</span><span class="st"> </span><span class="va">$htmlfooter</span><span class="st">&quot;</span> <span class="op">&gt;</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">/index.html&quot;</span>
-<span class="bu">echo</span> <span class="st">&#39;[info] done.&#39;</span>[](.html)
-<span class="bu">echo</span> <span class="st">&quot;[info] list of accounts: </span><span class="va">$accounts</span><span class="st">&quot;</span>[](.html)
-<span class="bu">echo</span> <span class="st">&quot;[info] contents of </span><span class="va">$shaarli_base_dir</span><span class="st">:&quot;</span>[](.html)
-<span class="ex">tree</span> -a -L 1 <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">&quot;</span></code></pre></div>
-<p>This script just serves as an example. More precise or complex (applying custom configuration, etc) automation is possible using configuration management software like <a href="https://www.ansible.com/">Ansible</a><a href=".html"></a></p>
-</body>
-</html>

+ 0 - 124
doc/Datastore-hacks.html

@@ -1,124 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Datastore hacks</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="datastore-hacks">Datastore hacks</h1>
-<h3 id="decode-datastore-content">Decode datastore content</h3>
-<p>To display the array representing the data saved in <code>data/datastore.php</code>, use the following snippet:</p>
-<div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="kw">$data</span> = <span class="st">&quot;tZNdb9MwFIb... &lt;Commented content inside datastore.php&gt;&quot;</span><span class="ot">;</span>
-<span class="kw">$out</span> = <span class="fu">unserialize</span><span class="ot">(</span><span class="fu">gzinflate</span><span class="ot">(</span><span class="fu">base64_decode</span><span class="ot">(</span><span class="kw">$data</span><span class="ot">)));</span>
-<span class="fu">echo</span> <span class="st">&quot;&lt;pre&gt;&quot;</span><span class="ot">;</span> <span class="co">// Pretty printing is love, pretty printing is life</span>
-<span class="fu">print_r</span><span class="ot">(</span><span class="kw">$out</span><span class="ot">);</span>
-<span class="fu">echo</span> <span class="st">&quot;&lt;/pre&gt;&quot;</span><span class="ot">;</span>
-<span class="fu">exit</span><span class="ot">;</span></code></pre></div>
-<p>This will output the internal representation of the datastore, &quot;unobfuscated&quot; (if this can really be considered obfuscation).</p>
-<p>Alternatively, you can transform to JSON format (and pretty-print if you have <code>jq</code> installed):</p>
-<pre><code>php -r &#39;print(json_encode(unserialize(gzinflate(base64_decode(preg_replace(&quot;!.*/\* (.+) \*/.*!&quot;, &quot;$1&quot;, file_get_contents(&quot;data/datastore.php&quot;)))))));&#39; | jq .</code></pre>
-<h3 id="changing-the-timestamp-for-a-link">Changing the timestamp for a link</h3>
-<ul>
-<li>Look for <code>&lt;input type=&quot;hidden&quot; name=&quot;lf_linkdate&quot; value=&quot;{$link.linkdate}&quot;&gt;</code> in <code>tpl/editlink.tpl</code> (line 14)</li>
-<li>Replace <code>type=&quot;hidden&quot;</code> with <code>type=&quot;text&quot;</code> from this line</li>
-<li>A new date/time field becomes available in the edit/new link dialog.</li>
-<li>You can set the timestamp manually by entering it in the format <code>YYYMMDD_HHMMS</code>.</li>
-</ul>
-</body>
-</html>

+ 0 - 112
doc/Development.html

@@ -1,112 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Development</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="development">Development</h1>
-<h2 id="guidelines">Guidelines</h2>
-<p>Please have a look at the following pages:</p>
-<ul>
-<li><a href="https://github.com/shaarli/Shaarli/tree/master/CONTRIBUTING.md">Contributing to Shaarli</a><a href=".html"></a></li>
-<li><a href="Static-analysis.html">Static analysis</a> - patches should try to stick to the <a href="http://www.php-fig.org/psr/">PHP Standard Recommendations</a> (PSR), especially:
-<ul>
-<li><a href="http://www.php-fig.org/psr/psr-1/">PSR-1</a> - Basic Coding Standard<a href=".html"></a></li>
-<li><a href="http://www.php-fig.org/psr/psr-2/">PSR-2</a> - Coding Style Guide<a href=".html"></a></li>
-</ul></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-<li><a href="GnuPG-signature.html">GnuPG signature</a> for tags/releases</li>
-</ul>
-<h2 id="continuous-integration-tools">Continuous integration tools</h2>
-<h3 id="local-development">Local development</h3>
-<p>A <a href="https://github.com/shaarli/Shaarli/blob/master/Makefile"><code>Makefile</code></a> is available to perform project-related operations:<a href=".html"></a></p>
-<ul>
-<li>Documentation - generate a local HTML copy of the GitHub wiki</li>
-<li><a href="Static-analysis.html">Static analysis</a> - check that the code is compliant to PHP conventions</li>
-<li><a href="Unit-tests.html">Unit tests</a> - ensure there are no regressions introduced by new commits</li>
-</ul>
-<h3 id="automatic-builds">Automatic builds</h3>
-<p><a href="http://docs.travis-ci.com/">Travis CI</a> is a Continuous Integration build server, that runs a build:<a href=".html"></a></p>
-<ul>
-<li>each time a commit is merged to the mainline (<code>master</code> branch)</li>
-<li>each time a Pull Request is submitted or updated</li>
-</ul>
-<p>A build is composed of several jobs: one for each supported PHP version (see <a href="Server-requirements.html">Server requirements</a>).</p>
-<p>Each build job:</p>
-<ul>
-<li>updates Composer</li>
-<li>installs 3rd-party test dependencies with Composer</li>
-<li>runs <a href="Unit-tests.html">Unit tests</a></li>
-</ul>
-<p>After all jobs have finished, Travis returns the results to GitHub:</p>
-<ul>
-<li>a status icon represents the result for the <code>master</code> branch: <a href="(https://api.travis-ci.org/shaarli/Shaarli.svg)%5D(https://travis-ci.org/shaarli/Shaarli).html"><img src="https://travis-ci.org/shaarli/Shaarli" alt="(https://api.travis-ci.org/shaarli/Shaarli.svg)" /></a></li>
-<li>Pull Requests are updated with the Travis result
-<ul>
-<li>Green: all tests have passed</li>
-<li>Red: some tests failed</li>
-<li>Orange: tests are pending</li>
-</ul></li>
-</ul>
-</body>
-</html>

+ 0 - 35
doc/Development.md

@@ -1,35 +0,0 @@
-#Development
-## Guidelines
-Please have a look at the following pages:
-- [Contributing to Shaarli](https://github.com/shaarli/Shaarli/tree/master/CONTRIBUTING.md)[](.html)
-- [Static analysis](Static-analysis.html) - patches should try to stick to the [PHP Standard Recommendations](http://www.php-fig.org/psr/) (PSR), especially:
-    - [PSR-1](http://www.php-fig.org/psr/psr-1/) - Basic Coding Standard[](.html)
-    - [PSR-2](http://www.php-fig.org/psr/psr-2/) - Coding Style Guide[](.html)
-- [Unit tests](Unit-tests.html)
-- [GnuPG signature](GnuPG-signature.html) for tags/releases
-
-## Continuous integration tools
-### Local development
-A [`Makefile`](https://github.com/shaarli/Shaarli/blob/master/Makefile) is available to perform project-related operations:[](.html)
-- Documentation - generate a local HTML copy of the GitHub wiki
-- [Static analysis](Static-analysis.html) - check that the code is compliant to PHP conventions
-- [Unit tests](Unit-tests.html) - ensure there are no regressions introduced by new commits
-
-### Automatic builds
-[Travis CI](http://docs.travis-ci.com/) is a Continuous Integration build server, that runs a build:[](.html)
-- each time a commit is merged to the mainline (`master` branch)
-- each time a Pull Request is submitted or updated
-
-A build is composed of several jobs: one for each supported PHP version (see [Server requirements](Server-requirements.html)).
-
-Each build job:
-- updates Composer
-- installs 3rd-party test dependencies with Composer
-- runs [Unit tests](Unit-tests.html)
-
-After all jobs have finished, Travis returns the results to GitHub:
-- a status icon represents the result for the `master` branch: [![(https://api.travis-ci.org/shaarli/Shaarli.svg)](https://travis-ci.org/shaarli/Shaarli)]((https://api.travis-ci.org/shaarli/Shaarli.svg)](https://travis-ci.org/shaarli/Shaarli).html)
-- Pull Requests are updated with the Travis result
-    - Green: all tests have passed
-    - Red: some tests failed
-    - Orange: tests are pending

+ 0 - 135
doc/Directory-structure.html

@@ -1,135 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Directory structure</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="directory-structure">Directory structure</h1>
-<p>Here is the directory structure of Shaarli and the purpose of the different files:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">    <span class="ex">index.php</span>        # Main program
-    <span class="ex">application/</span>     # Shaarli classes
-        ├── <span class="ex">LinkDB.php</span>
-        └── <span class="ex">Utils.php</span>
-    <span class="ex">tests/</span>       # Shaarli unitary <span class="kw">&amp;</span> <span class="ex">functional</span> tests
-        ├── <span class="ex">LinkDBTest.php</span>
-        ├── <span class="ex">utils</span>  # utilities to ease testing
-        │   └── <span class="ex">ReferenceLinkDB.php</span>
-        └── <span class="ex">UtilsTest.php</span>
-    <span class="ex">COPYING</span>          # Shaarli license
-    <span class="ex">inc/</span>             # static assets and 3rd party libraries
-        ├── <span class="ex">awesomplete.*</span>          # tags autocompletion library
-        ├── <span class="ex">blazy.*</span>                # picture wall lazy image loading library
-        ├── <span class="ex">shaarli.css</span>, reset.css <span class="co"># Shaarli stylesheet.</span>
-        ├── <span class="ex">qr.*</span>                   # qr code generation library
-        └──<span class="ex">rain.tpl.class.php</span>      # RainTPL templating library
-    <span class="ex">tpl/</span>             # RainTPL templates for Shaarli. They are used to build the pages.
-    <span class="ex">images/</span>          # Images and icons used in Shaarli
-    <span class="ex">data/</span>            # data storage: bookmark database, configuration, logs, banlist…
-        ├── <span class="ex">config.php</span>             # Shaarli configuration (login, password, timezone, title…)
-        ├── <span class="ex">datastore.php</span>          # Your link database (compressed)<span class="ex">.</span>
-        ├── <span class="ex">ipban.php</span>              # IP address ban system data
-        ├── <span class="ex">lastupdatecheck.txt</span>    # Update check timestamp file
-        └──<span class="ex">log.txt</span>                 # login/IPban log.
-    <span class="ex">cache/</span>           # thumbnails cache
-                     <span class="co"># This directory is automatically created. You can erase it anytime you want.</span>
-    <span class="ex">tmp/</span>             # Temporary directory for compiled RainTPL templates.
-                     <span class="co"># This directory is automatically created. You can erase it anytime you want.</span></code></pre></div>
-</body>
-</html>

+ 0 - 245
doc/Docker.html

@@ -1,245 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Docker</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="docker">Docker</h1>
-<ul>
-<li><a href="#docker-usage">Docker usage</a><a href=".html"></a></li>
-<li><a href="#get-and-run-a-shaarli-image">Get and run a Shaarli image</a><a href=".html"></a></li>
-<li><a href="#resources">Resources</a><a href=".html"></a></li>
-</ul>
-<h2 id="docker-usage">Docker usage</h2>
-<h3 id="basics">Basics</h3>
-<p>Install <a href="https://www.docker.com/">Docker</a>, by following the instructions relevant<a href=".html"></a><br />
-to your OS / distribution, and start the service.</p>
-<h4 id="search-an-image-on-dockerhub">Search an image on <a href="https://hub.docker.com/">DockerHub</a><a href=".html"></a></h4>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">docker</span> search debian
-
-<span class="ex">NAME</span>            DESCRIPTION                                     STARS   OFFICIAL   AUTOMATED
-<span class="ex">ubuntu</span>          Ubuntu is a Debian-based Linux operating s...   2065    [OK][](.html)
-<span class="ex">debian</span>          Debian is a Linux distribution that<span class="st">&#39;s comp...   603     [OK][](.html)</span>
-<span class="st">google/debian                                                   47                 [OK][](.html)</span></code></pre></div>
-<h4 id="show-available-tags-for-a-repository">Show available tags for a repository</h4>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">curl</span> https://index.docker.io/v1/repositories/debian/tags <span class="kw">|</span> <span class="ex">python</span> -m json.tool
-
-<span class="ex">%</span> Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
-<span class="ex">Dload</span>  Upload   Total   Spent    Left  Speed
-<span class="ex">100</span>  1283    0  1283    0     0    433      0 --:--:--  0:00:02 --:--:--   433</code></pre></div>
-<p>Sample output:</p>
-<div class="sourceCode"><pre class="sourceCode json"><code class="sourceCode json"><span class="ot">[[]</span><span class="er">(.html)</span>
-    <span class="fu">{</span>
-        <span class="dt">&quot;layer&quot;</span><span class="fu">:</span> <span class="st">&quot;85a02782&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;name&quot;</span><span class="fu">:</span> <span class="st">&quot;stretch&quot;</span>
-    <span class="fu">}</span><span class="ot">,</span>
-    <span class="fu">{</span>
-        <span class="dt">&quot;layer&quot;</span><span class="fu">:</span> <span class="st">&quot;59abecbc&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;name&quot;</span><span class="fu">:</span> <span class="st">&quot;testing&quot;</span>
-    <span class="fu">}</span><span class="ot">,</span>
-    <span class="fu">{</span>
-        <span class="dt">&quot;layer&quot;</span><span class="fu">:</span> <span class="st">&quot;bf0fd686&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;name&quot;</span><span class="fu">:</span> <span class="st">&quot;unstable&quot;</span>
-    <span class="fu">}</span><span class="ot">,</span>
-    <span class="fu">{</span>
-        <span class="dt">&quot;layer&quot;</span><span class="fu">:</span> <span class="st">&quot;60c52dbe&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;name&quot;</span><span class="fu">:</span> <span class="st">&quot;wheezy&quot;</span>
-    <span class="fu">}</span><span class="ot">,</span>
-    <span class="fu">{</span>
-        <span class="dt">&quot;layer&quot;</span><span class="fu">:</span> <span class="st">&quot;c5b806fe&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;name&quot;</span><span class="fu">:</span> <span class="st">&quot;wheezy-backports&quot;</span>
-    <span class="fu">}</span>
-<span class="ot">]</span></code></pre></div>
-<h4 id="pull-an-image-from-dockerhub">Pull an image from DockerHub</h4>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">docker</span> pull repository[:tag][](.html)
-
-$ <span class="ex">docker</span> pull debian:wheezy
-<span class="ex">wheezy</span>: Pulling from debian
-<span class="ex">4c8cbfd2973e</span>: Pull complete
-<span class="ex">60c52dbe9d91</span>: Pull complete
-<span class="ex">Digest</span>: sha256:c584131da2ac1948aa3e66468a4424b6aea2f33acba7cec0b631bdb56254c4fe
-<span class="ex">Status</span>: Downloaded newer image for debian:wheezy</code></pre></div>
-<h2 id="get-and-run-a-shaarli-image">Get and run a Shaarli image</h2>
-<h3 id="dockerhub-repository">DockerHub repository</h3>
-<p>The images can be found in the <a href="https://hub.docker.com/r/shaarli/shaarli/"><code>shaarli/shaarli</code></a><a href=".html"></a><br />
-repository.</p>
-<h3 id="available-image-tags">Available image tags</h3>
-<ul>
-<li><code>latest</code>: master branch (tarball release)</li>
-<li><code>stable</code>: stable branch (tarball release)</li>
-<li><code>dev</code>: master branch (Git clone)</li>
-</ul>
-<p>All images rely on:</p>
-<ul>
-<li><a href="https://hub.docker.com/_/debian/">Debian 8 Jessie</a><a href=".html"></a></li>
-<li><a href="http://php-fpm.org/">PHP5-FPM</a><a href=".html"></a></li>
-<li><a href="http://nginx.org/">Nginx</a><a href=".html"></a></li>
-</ul>
-<h3 id="download-from-dockerhub">Download from DockerHub</h3>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">docker</span> pull shaarli/shaarli
-<span class="ex">latest</span>: Pulling from shaarli/shaarli
-<span class="ex">32716d9fcddb</span>: Pull complete
-<span class="ex">84899d045435</span>: Pull complete
-<span class="ex">4b6ad7444763</span>: Pull complete
-<span class="ex">e0345ef7a3e0</span>: Pull complete
-<span class="ex">5c1dd344094f</span>: Pull complete
-<span class="ex">6422305a200b</span>: Pull complete
-<span class="ex">7d63f861dbef</span>: Pull complete
-<span class="ex">3eb97210645c</span>: Pull complete
-<span class="ex">869319d746ff</span>: Already exists
-<span class="ex">869319d746ff</span>: Pulling fs layer
-<span class="ex">902b87aaaec9</span>: Already exists
-<span class="ex">Digest</span>: sha256:f836b4627b958b3f83f59c332f22f02fcd495ace3056f2be2c4912bd8704cc98
-<span class="ex">Status</span>: Downloaded newer image for shaarli/shaarli:latest</code></pre></div>
-<h3 id="create-and-start-a-new-container-from-the-image">Create and start a new container from the image</h3>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># map the host&#39;s :8000 port to the container&#39;s :80 port</span>
-$ <span class="ex">docker</span> create -p 8000:80 shaarli/shaarli
-<span class="ex">d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101</span>
-
-<span class="co"># launch the container in the background</span>
-$ <span class="ex">docker</span> start d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101
-<span class="ex">d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101</span>
-
-<span class="co"># list active containers</span>
-$ <span class="ex">docker</span> ps
-<span class="ex">CONTAINER</span> ID  IMAGE            COMMAND               CREATED         STATUS        PORTS                 NAMES
-<span class="ex">d40b7af693d6</span>  shaarli/shaarli  /usr/bin/supervisor  15 seconds ago  Up 4 seconds  0.0.0.0:8000-<span class="op">&gt;</span>80/tcp  backstabbing_galileo</code></pre></div>
-<h3 id="stop-and-destroy-a-container">Stop and destroy a container</h3>
-<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!
-<span class="ex">backstabbing_galileo</span>
-
-<span class="co"># check the container is stopped</span>
-$ <span class="ex">docker</span> ps
-<span class="ex">CONTAINER</span> ID  IMAGE            COMMAND               CREATED         STATUS        PORTS                 NAMES
-
-<span class="co"># list ALL containers</span>
-$ <span class="ex">docker</span> ps -a
-<span class="ex">CONTAINER</span> ID        IMAGE               COMMAND                CREATED             STATUS                      PORTS               NAMES
-<span class="ex">d40b7af693d6</span>        shaarli/shaarli     /usr/bin/supervisor   5 minutes ago       Exited (0) <span class="ex">48</span> seconds ago                       backstabbing_galileo
-
-<span class="co"># destroy the container</span>
-$ <span class="ex">docker</span> rm backstabbing_galileo  # let<span class="st">&#39;s put an end to these barbarian practices</span>
-<span class="st">backstabbing_galileo</span>
-
-<span class="st">$ docker ps -a</span>
-<span class="st">CONTAINER ID  IMAGE            COMMAND               CREATED         STATUS        PORTS                 NAMES</span></code></pre></div>
-<h2 id="resources">Resources</h2>
-<h3 id="docker-1">Docker</h3>
-<ul>
-<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>
-<li><a href="http://blog.thoward37.me/articles/where-are-docker-images-stored/">Where are Docker images stored?</a><a href=".html"></a></li>
-<li><a href="https://docs.docker.com/reference/builder/">Dockerfile reference</a><a href=".html"></a></li>
-<li><a href="https://docs.docker.com/articles/dockerfile_best-practices/">Dockerfile best practices</a><a href=".html"></a></li>
-<li><a href="https://docs.docker.com/userguide/dockervolumes/">Volumes</a><a href=".html"></a></li>
-</ul>
-<h3 id="dockerhub">DockerHub</h3>
-<ul>
-<li><a href="https://docs.docker.com/userguide/dockerrepos/">Repositories</a><a href=".html"></a></li>
-<li><a href="https://docs.docker.com/docker-hub/orgs/">Teams and organizations</a><a href=".html"></a></li>
-<li><a href="https://docs.docker.com/docker-hub/github/">GitHub automated build</a><a href=".html"></a></li>
-</ul>
-<h3 id="service-management">Service management</h3>
-<ul>
-<li><a href="https://docs.docker.com/articles/using_supervisord/">Using supervisord</a><a href=".html"></a></li>
-<li><a href="http://nginx.org/en/docs/ngx_core_module.html#daemon">Nginx in the foreground</a><a href=".html"></a></li>
-<li><a href="http://supervisord.org/">supervisord</a><a href=".html"></a></li>
-</ul>
-</body>
-</html>

+ 0 - 257
doc/Download-CSS-styles-from-an-OPML-list.html

@@ -1,257 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Download CSS styles from an OPML list</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="download-css-styles-from-an-opml-list">Download CSS styles from an OPML list</h1>
-<h3 id="download-css-styles-for-shaarlis-listed-in-an-opml-file">Download CSS styles for shaarlis listed in an opml file</h3>
-<p>Example php script:</p>
-<div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php">&lt;!---- <span class="ot">?</span>php --&gt;
-&lt;!---- Copyright <span class="ot">(</span>c<span class="ot">)</span> <span class="dv">2014</span> Nicolas Delsaux <span class="ot">(</span>https<span class="ot">:</span><span class="co">//github.com/Riduidel) --&gt;</span>
-&lt;!---- License: zlib <span class="ot">(</span>http:<span class="co">//www.gzip.org/zlib/zlib_license.html) --&gt;</span>
-
-<span class="co">/**</span>
-<span class="co"> * Source: https://github.com/Riduidel</span>
-<span class="co"> * Download css styles for shaarlis listed in an opml file</span>
-<span class="co"> */</span>
-<span class="fu">define</span><span class="ot">(</span><span class="st">&quot;SHAARLI_RSS_OPML&quot;</span><span class="ot">,</span> <span class="st">&quot;https://www.ecirtam.net/shaarlirss/custom/people.opml&quot;</span><span class="ot">);</span>
-
-<span class="fu">define</span><span class="ot">(</span><span class="st">&quot;THEMES_TEMP_FOLDER&quot;</span><span class="ot">,</span> <span class="st">&quot;new_themes&quot;</span><span class="ot">);</span>
-
-<span class="kw">if</span><span class="ot">(</span>!<span class="fu">file_exists</span><span class="ot">(</span><span class="kw">THEMES_TEMP_FOLDER</span><span class="ot">))</span> {
-    <span class="fu">mkdir</span><span class="ot">(</span><span class="kw">THEMES_TEMP_FOLDER</span><span class="ot">);</span>
-}
-
-<span class="kw">function</span> siteUrl<span class="ot">(</span><span class="kw">$pathInSite</span><span class="ot">)</span> {
-    <span class="kw">$indexPos</span> = <span class="fu">strpos</span><span class="ot">(</span><span class="kw">$pathInSite</span><span class="ot">,</span> <span class="st">&quot;index.php&quot;</span><span class="ot">);</span>
-    <span class="kw">if</span><span class="ot">(</span>!<span class="kw">$indexPos</span><span class="ot">)</span> {
-        <span class="kw">return</span> <span class="kw">$pathInSite</span><span class="ot">;</span>
-    } <span class="kw">else</span> {
-        <span class="kw">return</span> <span class="fu">substr</span><span class="ot">(</span><span class="kw">$pathInSite</span><span class="ot">,</span> <span class="dv">0</span><span class="ot">,</span> <span class="kw">$indexPos</span><span class="ot">);</span>
-    }
-}
-
-<span class="kw">function</span> createShaarliHashFromOPMLL<span class="ot">(</span><span class="kw">$opmlFile</span><span class="ot">)</span> {
-    <span class="kw">$result</span> = <span class="fu">array</span><span class="ot">();</span>
-    <span class="kw">$opml</span> = <span class="fu">file_get_contents</span><span class="ot">(</span><span class="kw">$opmlFile</span><span class="ot">);</span>
-    <span class="kw">$opmlXml</span> = <span class="fu">simplexml_load_string</span><span class="ot">(</span><span class="kw">$opml</span><span class="ot">);</span>
-    <span class="kw">$outlineElements</span> = <span class="kw">$opmlXml</span>-&gt;xpath<span class="ot">(</span><span class="st">&quot;body/outline&quot;</span><span class="ot">);</span>
-    <span class="kw">foreach</span><span class="ot">(</span><span class="kw">$outlineElements</span> <span class="kw">as</span> <span class="kw">$site</span><span class="ot">)</span> {
-        <span class="kw">$siteUrl</span> = siteUrl<span class="ot">(</span><span class="dt">(string)</span> <span class="kw">$site</span><span class="ot">[</span><span class="st">&#39;htmlUrl&#39;</span><span class="ot">]);[](</span>.html<span class="ot">)</span>
-        <span class="kw">$result</span><span class="ot">[</span><span class="kw">$siteUrl</span><span class="ot">]</span>=<span class="ot">(</span><span class="dt">(string)</span> <span class="kw">$site</span><span class="ot">[</span><span class="st">&#39;text&#39;</span><span class="ot">]);[](</span>.html<span class="ot">)</span>
-    }
-    <span class="kw">return</span> <span class="kw">$result</span><span class="ot">;</span>
-}
-
-<span class="kw">function</span> getSiteFolder<span class="ot">(</span><span class="kw">$url</span><span class="ot">)</span> {
-    <span class="kw">$domain</span> = <span class="fu">parse_url</span><span class="ot">(</span><span class="kw">$url</span><span class="ot">,</span>  <span class="kw">PHP_URL_HOST</span><span class="ot">);</span>
-    <span class="kw">return</span> <span class="kw">THEMES_TEMP_FOLDER</span>.<span class="st">&quot;/&quot;</span>.<span class="fu">str_replace</span><span class="ot">(</span><span class="st">&quot;.&quot;</span><span class="ot">,</span> <span class="st">&quot;_&quot;</span><span class="ot">,</span> <span class="kw">$domain</span><span class="ot">);</span>
-}
-
-<span class="kw">function</span> get_http_response_code<span class="ot">(</span><span class="kw">$theURL</span><span class="ot">)</span> {
-     <span class="kw">$headers</span> = <span class="fu">get_headers</span><span class="ot">(</span><span class="kw">$theURL</span><span class="ot">);</span>
-     <span class="kw">return</span> <span class="fu">substr</span><span class="ot">(</span><span class="kw">$headers</span><span class="ot">[</span><span class="dv">0</span><span class="ot">],</span> <span class="dv">9</span><span class="ot">,</span> <span class="dv">3</span><span class="ot">);[](</span>.html<span class="ot">)</span>
-}
-
-<span class="co">/**</span>
-<span class="co"> * This makes the code PHP-5 only (particularly the call to &quot;get_headers&quot;)</span>
-<span class="co"> */</span>
-<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> {
-    <span class="kw">$userStyle</span> = <span class="kw">$url</span>.<span class="st">&quot;inc/user.css&quot;</span><span class="ot">;</span>
-    <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> {
-        <span class="co">// </span><span class="al">TODO</span><span class="co"> add log message</span>
-    } <span class="kw">else</span> {
-        <span class="kw">$statusCode</span> = get_http_response_code<span class="ot">(</span><span class="kw">$userStyle</span><span class="ot">);</span>
-        <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>&lt;<span class="dv">300</span><span class="ot">)</span> {
-            <span class="kw">$styleSheet</span> = <span class="fu">file_get_contents</span><span class="ot">(</span><span class="kw">$userStyle</span><span class="ot">);</span>
-            <span class="kw">$siteFolder</span> = getSiteFolder<span class="ot">(</span><span class="kw">$url</span><span class="ot">);</span>
-            <span class="kw">if</span><span class="ot">(</span>!<span class="fu">file_exists</span><span class="ot">(</span><span class="kw">$siteFolder</span><span class="ot">))</span> {
-                <span class="fu">mkdir</span><span class="ot">(</span><span class="kw">$siteFolder</span><span class="ot">);</span>
-            }
-            <span class="kw">if</span><span class="ot">(</span>!<span class="fu">file_exists</span><span class="ot">(</span><span class="kw">$siteFolder</span>.<span class="st">&#39;/user.css&#39;</span><span class="ot">))</span> {
-                <span class="co">// Copy stylesheet</span>
-                <span class="fu">file_put_contents</span><span class="ot">(</span><span class="kw">$siteFolder</span>.<span class="st">&#39;/user.css&#39;</span><span class="ot">,</span> <span class="kw">$styleSheet</span><span class="ot">);</span>
-            }
-            <span class="kw">if</span><span class="ot">(</span>!<span class="fu">file_exists</span><span class="ot">(</span><span class="kw">$siteFolder</span>.<span class="st">&#39;/README.md&#39;</span><span class="ot">))</span> {
-                <span class="co">// Then write a readme.md file</span>
-                <span class="fu">file_put_contents</span><span class="ot">(</span><span class="kw">$siteFolder</span>.<span class="st">&#39;/README.md&#39;</span><span class="ot">,</span> 
-                    <span class="st">&quot;User style from &quot;</span>.<span class="kw">$name</span>.<span class="st">&quot;</span><span class="kw">\n</span><span class="st">&quot;</span>
-                    .<span class="st">&quot;=============================&quot;</span>
-                    .<span class="st">&quot;</span><span class="kw">\n\n</span><span class="st">&quot;</span>
-                    .<span class="st">&quot;This stylesheet was downloaded from &quot;</span>.<span class="kw">$userStyle</span>.<span class="st">&quot; on &quot;</span>.<span class="fu">date</span><span class="ot">(</span><span class="kw">DATE_RFC822</span><span class="ot">)</span>
-                    <span class="ot">);</span>
-            }
-            <span class="kw">if</span><span class="ot">(</span>!<span class="fu">file_exists</span><span class="ot">(</span><span class="kw">$siteFolder</span>.<span class="st">&#39;/config.ini&#39;</span><span class="ot">))</span> {
-                <span class="co">// Write a config file containing useful informations</span>
-                <span class="fu">file_put_contents</span><span class="ot">(</span><span class="kw">$siteFolder</span>.<span class="st">&#39;/config.ini&#39;</span><span class="ot">,</span> 
-                    <span class="st">&quot;site_url=&quot;</span>.<span class="kw">$url</span>.<span class="st">&quot;</span><span class="kw">\n</span><span class="st">&quot;</span>
-                    .<span class="st">&quot;site_name=&quot;</span>.<span class="kw">$name</span>.<span class="st">&quot;</span><span class="kw">\n</span><span class="st">&quot;</span>
-                    <span class="ot">);</span>
-            }
-            <span class="kw">if</span><span class="ot">(</span>!<span class="fu">file_exists</span><span class="ot">(</span><span class="kw">$siteFolder</span>.<span class="st">&#39;/home.png&#39;</span><span class="ot">))</span> {
-                <span class="co">// And finally copy generated thumbnail</span>
-                <span class="kw">$homeThumb</span> = <span class="kw">$siteFolder</span>.<span class="st">&#39;/home.png&#39;</span><span class="ot">;</span>
-                <span class="fu">file_put_contents</span><span class="ot">(</span><span class="kw">$siteFolder</span>.<span class="st">&#39;/home.png&#39;</span><span class="ot">,</span> <span class="fu">file_get_contents</span><span class="ot">(</span>getThumbnailUrl<span class="ot">(</span><span class="kw">$url</span><span class="ot">)));</span>
-            }
-            <span class="fu">echo</span> <span class="st">&#39;Theme have been downloaded from  &lt;a href=&quot;&#39;</span>.<span class="kw">$url</span>.<span class="st">&#39;&quot;&gt;&#39;</span>.<span class="kw">$url</span>.<span class="st">&#39;&lt;/a&gt; into &#39;</span>.<span class="kw">$siteFolder</span>
-                .<span class="st">&#39;. It looks like &lt;img src=&quot;&#39;</span>.<span class="kw">$homeThumb</span>.<span class="st">&#39;&quot;&gt;&lt;br/&gt;&#39;</span><span class="ot">;</span>
-        }
-    }
-}
-
-<span class="kw">function</span> getThumbnailUrl<span class="ot">(</span><span class="kw">$url</span><span class="ot">)</span> {
-    <span class="kw">return</span> <span class="st">&#39;http://api.webthumbnail.org/?url=&#39;</span>.<span class="kw">$url</span><span class="ot">;</span>
-}
-
-<span class="kw">function</span> copyUserStylesFrom<span class="ot">(</span><span class="kw">$urlToNames</span><span class="ot">,</span> <span class="kw">$knownStyles</span><span class="ot">)</span> {
-    <span class="kw">foreach</span><span class="ot">(</span><span class="kw">$urlToNames</span> <span class="kw">as</span> <span class="kw">$url</span> =&gt; <span class="kw">$name</span><span class="ot">)</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>
-    }
-}
-
-<span class="co">/**</span>
-<span class="co"> * Reading directory list, courtesy of http://www.laughing-buddha.net/php/dirlist/</span>
-<span class="co"> * </span><span class="an">@param</span><span class="co"> </span><span class="cv">directory</span><span class="co"> the directory we want to list files of</span>
-<span class="co"> * </span><span class="an">@return</span><span class="co"> a simple array containing the list of absolute file paths. Notice that current file (&quot;.&quot;) and parent one(&quot;..&quot;)</span>
-<span class="co"> * are not listed here</span>
-<span class="co"> */</span>
-<span class="kw">function</span> getDirectoryList <span class="ot">(</span><span class="kw">$directory</span><span class="ot">)</span>  {
-    <span class="kw">$realPath</span> = <span class="fu">realpath</span><span class="ot">(</span><span class="kw">$directory</span><span class="ot">);</span>
-    <span class="co">// create an array to hold directory list</span>
-    <span class="kw">$results</span> = <span class="fu">array</span><span class="ot">();</span>
-    <span class="co">// create a handler for the directory</span>
-    <span class="kw">$handler</span> = <span class="fu">opendir</span><span class="ot">(</span><span class="kw">$directory</span><span class="ot">);</span>
-    <span class="co">// open directory and walk through the filenames</span>
-    <span class="kw">while</span> <span class="ot">(</span><span class="kw">$file</span> = <span class="fu">readdir</span><span class="ot">(</span><span class="kw">$handler</span><span class="ot">))</span> {
-        <span class="co">// if file isn&#39;t this directory or its parent, add it to the results</span>
-        <span class="kw">if</span> <span class="ot">(</span><span class="kw">$file</span> != <span class="st">&quot;.&quot;</span> &amp;&amp; <span class="kw">$file</span> != <span class="st">&quot;..&quot;</span><span class="ot">)</span> {
-            <span class="kw">$results</span><span class="ot">[</span> = <span class="fu">realpath</span><span class="ot">(</span><span class="kw">$realPath</span> . <span class="st">&quot;/&quot;</span> . <span class="kw">$file</span><span class="ot">);](</span>-=-<span class="fu">realpath</span><span class="ot">(</span><span class="kw">$realPath</span>-.-<span class="st">&quot;/&quot;</span>-.-<span class="kw">$file</span><span class="ot">);</span>.html<span class="ot">)</span>
-        }
-    }
-    <span class="co">// tidy up: close the handler</span>
-    <span class="fu">closedir</span><span class="ot">(</span><span class="kw">$handler</span><span class="ot">);</span>
-    <span class="co">// done!</span>
-    <span class="kw">return</span> <span class="kw">$results</span><span class="ot">;</span>
-}
-
-<span class="co">/**</span>
-<span class="co"> * Start in themes folder and look in all subfolders for config.ini files. </span>
-<span class="co"> * These config.ini files allow us not to download styles again and again</span>
-<span class="co"> */</span>
-<span class="kw">function</span> findKnownStyles<span class="ot">()</span> {
-    <span class="kw">$result</span> = <span class="fu">array</span><span class="ot">();</span>
-    <span class="kw">$subFolders</span> = getDirectoryList<span class="ot">(</span><span class="st">&quot;themes&quot;</span><span class="ot">);</span>
-    <span class="kw">foreach</span><span class="ot">(</span><span class="kw">$subFolders</span> <span class="kw">as</span> <span class="kw">$folder</span><span class="ot">)</span> {
-        <span class="kw">$configFile</span> = <span class="kw">$folder</span>.<span class="st">&quot;/config.ini&quot;</span><span class="ot">;</span>
-        <span class="kw">if</span><span class="ot">(</span><span class="fu">file_exists</span><span class="ot">(</span><span class="kw">$configFile</span><span class="ot">))</span> {
-            <span class="kw">$iniParameters</span> = <span class="fu">parse_ini_file</span><span class="ot">(</span><span class="kw">$configFile</span><span class="ot">);</span>
-            <span class="fu">array_push</span><span class="ot">(</span><span class="kw">$result</span><span class="ot">,</span> <span class="kw">$iniParameters</span><span class="ot">[</span><span class="st">&#39;site_url&#39;</span><span class="ot">]);[](</span>.html<span class="ot">)</span>
-        }
-    }
-    <span class="kw">return</span> <span class="kw">$result</span><span class="ot">;</span>
-}
-
-<span class="kw">$knownStyles</span> = findKnownStyles<span class="ot">();</span>
-copyUserStylesFrom<span class="ot">(</span>createShaarliHashFromOPMLL<span class="ot">(</span><span class="kw">SHAARLI_RSS_OPML</span><span class="ot">),</span> <span class="kw">$knownStyles</span><span class="ot">);</span>
-
-&lt;!--- <span class="ot">?</span> ----&gt;</code></pre></div>
-</body>
-</html>

+ 0 - 172
doc/Download-and-Installation.html

@@ -1,172 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Download and Installation</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="download-and-installation">Download and Installation</h1>
-<h1 id="get-shaarli">Get Shaarli!</h1>
-<p>To install Shaarli, simply place the files in a directory under your webserver's Document Root (or directly at the document root). Make sure your <a href="Server-requirements">server</a> is properly <a href="Server-configuration">configured</a>.<a href=".html"></a></p>
-<p>Several releases are available:</p>
-<hr />
-<h2 id="latest-release-recommended">Latest release (recommended)</h2>
-<h3 id="download-as-an-archive">Download as an archive</h3>
-<p>Get the latest released version from the <a href="https://github.com/shaarli/Shaarli/releases">releases</a> page.<a href=".html"></a></p>
-<p><strong>Download our <em>shaarli-full</em> archive</strong> to include dependencies.</p>
-<p>The current latest released version is <code>v0.8.4</code></p>
-<p>Or in command lines:</p>
-<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
-$ <span class="fu">unzip</span> shaarli-v0.8.4-full.zip
-$ <span class="fu">mv</span> Shaarli /path/to/shaarli/</code></pre></div>
-<table style="width:46%;">
-<colgroup>
-<col style="width: 8%" />
-<col style="width: 37%" />
-</colgroup>
-<thead>
-<tr class="header">
-<th>!</th>
-<th>In most cases, download Shaarli from the <a href="https://github.com/shaarli/Shaarli/releases">releases</a> page. Cloning using <code>git</code> or downloading Github branches as zip files requires additional steps (see below).</th>
-</tr>
-</thead>
-<tbody>
-</tbody>
-</table>
-<h3 id="using-git">Using git</h3>
-<pre><code>mkdir -p /path/to/shaarli &amp;&amp; cd /path/to/shaarli/
-git clone -b v0.8 https://github.com/shaarli/Shaarli.git .
-composer install --no-dev</code></pre>
-<hr />
-<h2 id="stable-version">Stable version</h2>
-<p>The stable version has been experienced by Shaarli users, and will receive security updates.</p>
-<h3 id="download-as-an-archive-1">Download as an archive</h3>
-<p>As a .zip archive:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">wget</span> https://github.com/shaarli/Shaarli/archive/stable.zip
-$ <span class="fu">unzip</span> stable.zip
-$ <span class="fu">mv</span> Shaarli-stable /path/to/shaarli/</code></pre></div>
-<p>As a .tar.gz archive :</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">wget</span> https://github.com/shaarli/Shaarli/archive/stable.tar.gz
-$ <span class="fu">tar</span> xvf stable.tar.gz
-$ <span class="fu">mv</span> Shaarli-stable /path/to/shaarli/</code></pre></div>
-<h3 id="clone-with-git">Clone with Git</h3>
-<p><a href="https://getcomposer.org/">Composer</a> is required to build a functional Shaarli installation when pulling from git.<a href=".html"></a></p>
-<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/
-<span class="co"># install/update third-party dependencies</span>
-$ <span class="bu">cd</span> /path/to/shaarli/
-$ <span class="ex">composer</span> install --no-dev</code></pre></div>
-<hr />
-<h2 id="development-version-mainline">Development version (mainline)</h2>
-<p><em>Use at your own risk!</em></p>
-<p>To get the latest changes from the <code>master</code> branch:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># clone the repository  </span>
-$ <span class="fu">git</span> clone https://github.com/shaarli/Shaarli.git -b master /path/to/shaarli/
-<span class="co"># install/update third-party dependencies</span>
-$ <span class="bu">cd</span> /path/to/shaarli
-$ <span class="ex">composer</span> install --no-dev</code></pre></div>
-<hr />
-<h2 id="finish-installation">Finish Installation</h2>
-<p>Once Shaarli is downloaded and files have been placed at the correct location, open it this location your favorite browser.</p>
-<p><img src="http://i.imgur.com/wuMpDSN.png" alt="install screenshot" /><a href=".html"></a></p>
-<p>Setup your Shaarli installation, and it's ready to use!</p>
-<hr />
-<h2 id="updating-shaarli">Updating Shaarli</h2>
-<p>See <a href="Upgrade-and-migration">Upgrade and Migration</a><a href=".html"></a></p>
-</body>
-</html>

+ 0 - 254
doc/Example-patch---add-new-via-field-for-links.html

@@ -1,254 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Example patch   add new via field for links</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="example-patch-add-new-via-field-for-links">Example patch add new via field for links</h1>
-<p>Example patch to add a new field (&quot;via&quot;) for links, an input field to set the &quot;via&quot; property from the &quot;edit link&quot; dialog, and display the &quot;via&quot; field in the link list display. <strong>Untested, use at your own risk</strong></p>
-<p>Thanks to @Knah-Tsaeb in <a href="https://github.com/sebsauvage/Shaarli/pull/158" class="uri">https://github.com/sebsauvage/Shaarli/pull/158</a></p>
-<pre><code>From e0f363c18e8fe67990ed2bb1a08652e24e70bbcb Mon Sep 17 00:00:00 2001
-From: Knah Tsaeb &lt;knah-tsaeb@knah-tsaeb.org&gt;
-Date: Fri, 11 Oct 2013 15:18:37 +0200
-Subject: [PATCH] Add a &quot;via&quot;/origin property for links, add new input in &quot;edit link&quot; dialog[](.html)
-Thanks to:
-* https://github.com/Knah-Tsaeb/Shaarli/commit/040eb18ec8cdabd5ea855e108f81f97fbf0478c4
-* https://github.com/Knah-Tsaeb/Shaarli/commit/4123658eae44d7564d1128ce52ddd5689efee813
-* https://github.com/Knah-Tsaeb/Shaarli/commit/f1a8ca9cc8fe49b119d51b2d8382cc1a34542f96
-
----
- index.php         | 43 ++++++++++++++++++++++++++++++++-----------
- tpl/editlink.html |  1 +
- tpl/linklist.html |  1 +
- 3 files changed, 34 insertions(+), 11 deletions(-)
-
-diff --git a/index.php b/index.php
-index 6fae2f8..53f798e 100644
---- a/index.php
-+++ b/index.php
-@@ -436,6 +436,12 @@ if (isset($_POST[&#39;login&#39;]))[](.html)
- // ------------------------------------------------------------------------------------------
- // Misc utility functions:
- 
-+// Try to get just domain for @via
-+function getJustDomain($url){
-+    $parts = parse_url($url);   
-+    return trim($parts[&#39;host&#39;]);[](.html)
-+    }
-+
- // Returns the server URL (including port and http/https), without path.
- // e.g. &quot;http://myserver.com:8080&quot;
- // You can append $_SERVER[&#39;SCRIPT_NAME&#39;] to get the current script URL.[](.html)
-@@ -799,7 +805,8 @@ class linkdb implements Iterator, Countable, ArrayAccess
-             $found=   (strpos(strtolower($l[&#39;title&#39;]),$s)!==false)[](.html)
-                    || (strpos(strtolower($l[&#39;description&#39;]),$s)!==false)[](.html)
-                    || (strpos(strtolower($l[&#39;url&#39;]),$s)!==false)[](.html)
--                   || (strpos(strtolower($l[&#39;tags&#39;]),$s)!==false);[](.html)
-+                   || (strpos(strtolower($l[&#39;tags&#39;]),$s)!==false)[](.html)
-+                   || (!empty($l[&#39;via&#39;]) &amp;&amp; (strpos(strtolower($l[&#39;via&#39;]),$s)!==false));[](.html)
-             if ($found) $filtered[$l[&#39;linkdate&#39;[ = $l;](-=-$l;.html)
-         }
-         krsort($filtered);
-@@ -814,7 +821,7 @@ class linkdb implements Iterator, Countable, ArrayAccess
-         $t = str_replace(&#39;,&#39;,&#39; &#39;,($casesensitive?$tags:strtolower($tags)));
-         $searchtags=explode(&#39; &#39;,$t);
-         $filtered=array();
--        foreach($this-&gt;links as $l)
-+        foreach($this-&gt; links as $l)
-         {
-             $linktags = explode(&#39; &#39;,($casesensitive?$l[&#39;tags&#39;]:strtolower($l[&#39;tags&#39;])));[](.html)
-             if (count(array_intersect($linktags,$searchtags)) == count($searchtags))
-@@ -905,7 +912,7 @@ function showRSS()
-     else $linksToDisplay = $LINKSDB;
-     $nblinksToDisplay = 50;  // Number of links to display.
-     if (!empty($_GET[&#39;nb&#39;]))  // In URL, you can specificy the number of links. Example: nb=200 or nb=all for all links.[](.html)
--    { 
-+    {
-         $nblinksToDisplay = $_GET[&#39;nb&#39;]==&#39;all&#39; ? count($linksToDisplay) : max($_GET[&#39;nb&#39;]+0,1) ;[](.html)
-     }
- 
-@@ -944,7 +951,12 @@ function showRSS()
-         // If user wants permalinks first, put the final link in description
-         if ($usepermalinks===true) $descriptionlink = &#39;(&lt;a href=&quot;&#39;.$absurl.&#39;&quot;&gt;Link&lt;/a&gt;)&#39;;
-         if (strlen($link[&#39;description&#39;])&gt;0) $descriptionlink = &#39;&lt;br&gt;&#39;.$descriptionlink;[](.html)
--        echo &#39;&lt;description&gt;&lt;![CDATA[&#39;.nl2br(keepMultipleSpaces(text2clickable(htmlspecialchars($link[&#39;description&#39;])))).$descriptionlink.&#39;[&gt;&lt;/description&gt;&#39;.&quot;\n&lt;/item&gt;\n&quot;;](&gt;&lt;/description&gt;&#39;.&quot;\n&lt;/item&gt;\n&quot;;.html)
-+        if(!empty($link[&#39;via&#39;])){[](.html)
-+          $via = &#39;&lt;br&gt;Origine =&gt; &lt;a href=&quot;&#39;.htmlspecialchars($link[&#39;via&#39;]).&#39;&quot;&gt;&#39;.htmlspecialchars(getJustDomain($link[&#39;via&#39;])).&#39;&lt;/a&gt;&#39;;[](.html)
-+        } else {
-+         $via = &#39;&#39;;
-+        }
-+        echo &#39;&lt;description&gt;&lt;![CDATA[&#39;.nl2br(keepMultipleSpaces(text2clickable(htmlspecialchars($link[&#39;description&#39;])))).$via.$descriptionlink.&#39;[&gt;&lt;/description&gt;&#39;.&quot;\n&lt;/item&gt;\n&quot;;](&gt;&lt;/description&gt;&#39;.&quot;\n&lt;/item&gt;\n&quot;;.html)
-         $i++;
-     }
-     echo &#39;&lt;/channel&gt;&lt;/rss&gt;&lt;!-- Cached version of &#39;.htmlspecialchars(pageUrl()).&#39; --&gt;&#39;;
-@@ -980,7 +992,7 @@ function showATOM()
-     else $linksToDisplay = $LINKSDB;
-     $nblinksToDisplay = 50;  // Number of links to display.
-     if (!empty($_GET[&#39;nb&#39;]))  // In URL, you can specificy the number of links. Example: nb=200 or nb=all for all links.[](.html)
--    { 
-+    {
-         $nblinksToDisplay = $_GET[&#39;nb&#39;]==&#39;all&#39; ? count($linksToDisplay) : max($_GET[&#39;nb&#39;]+0,1) ;[](.html)
-     }
- 
-@@ -1006,11 +1018,16 @@ function showATOM()
- 
-         // Add permalink in description
-         $descriptionlink = htmlspecialchars(&#39;(&lt;a href=&quot;&#39;.$guid.&#39;&quot;&gt;Permalink&lt;/a&gt;)&#39;);
-+        if(isset($link[&#39;via&#39;]) &amp;&amp; !empty($link[&#39;via&#39;])){[](.html)
-+          $via = htmlspecialchars(&#39;&lt;/br&gt; Origine =&gt; &lt;a href=&quot;&#39;.$link[&#39;via&#39;].&#39;&quot;&gt;&#39;.getJustDomain($link[&#39;via&#39;]).&#39;&lt;/a&gt;&#39;);[](.html)
-+        } else {
-+          $via = &#39;&#39;;
-+        }
-         // If user wants permalinks first, put the final link in description
-         if ($usepermalinks===true) $descriptionlink = htmlspecialchars(&#39;(&lt;a href=&quot;&#39;.$absurl.&#39;&quot;&gt;Link&lt;/a&gt;)&#39;);
-         if (strlen($link[&#39;description&#39;])&gt;0) $descriptionlink = &#39;&amp;lt;br&amp;gt;&#39;.$descriptionlink;[](.html)
- 
--        $entries.=&#39;&lt;content type=&quot;html&quot;&gt;&#39;.htmlspecialchars(nl2br(keepMultipleSpaces(text2clickable(htmlspecialchars($link[&#39;description&#39;]))))).$descriptionlink.&quot;&lt;/content&gt;\n&quot;;[](.html)
-+        $entries.=&#39;&lt;content type=&quot;html&quot;&gt;&#39;.htmlspecialchars(nl2br(keepMultipleSpaces(text2clickable(htmlspecialchars($link[&#39;description&#39;]))))).$descriptionlink.$via.&quot;&lt;/content&gt;\n&quot;;[](.html)
-         if ($link[&#39;tags&#39;]!=&#39;&#39;) // Adding tags to each ATOM entry (as mentioned in ATOM specification)[](.html)
-         {
-             foreach(explode(&#39; &#39;,$link[&#39;tags&#39;]) as $tag)[](.html)
-@@ -1478,7 +1495,7 @@ function renderPage()
-         if (!startsWith($url,&#39;http:&#39;) &amp;&amp; !startsWith($url,&#39;https:&#39;) &amp;&amp; !startsWith($url,&#39;ftp:&#39;) &amp;&amp; !startsWith($url,&#39;magnet:&#39;) &amp;&amp; !startsWith($url,&#39;?&#39;))
-             $url = &#39;http://&#39;.$url;
-         $link = array(&#39;title&#39;=&gt;trim($_POST[&#39;lf_title&#39;]),&#39;url&#39;=&gt;$url,&#39;description&#39;=&gt;trim($_POST[&#39;lf_description&#39;]),&#39;private&#39;=&gt;(isset($_POST[&#39;lf_private&#39;]) ? 1 : 0),[](.html)
--                      &#39;linkdate&#39;=&gt;$linkdate,&#39;tags&#39;=&gt;str_replace(&#39;,&#39;,&#39; &#39;,$tags));
-+                      &#39;linkdate&#39;=&gt;$linkdate,&#39;tags&#39;=&gt;str_replace(&#39;,&#39;,&#39; &#39;,$tags), &#39;via&#39;=&gt;trim($_POST[&#39;lf_via&#39;]));[](.html)
-         if ($link[&#39;title&#39;]==&#39;&#39;) $link[&#39;title&#39;]=$link[&#39;url&#39;]; // If title is empty, use the URL as title.[](.html)
-         $LINKSDB[$linkdate] = $link;[](.html)
-         $LINKSDB-&gt;savedb(); // Save to disk.
-@@ -1556,7 +1573,8 @@ function renderPage()
-             $title = (empty($_GET[&#39;title&#39;]) ? &#39;&#39; : $_GET[&#39;title&#39;] ); // Get title if it was provided in URL (by the bookmarklet).[](.html)
-             $description = (empty($_GET[&#39;description&#39;]) ? &#39;&#39; : $_GET[&#39;description&#39;]); // Get description if it was provided in URL (by the bookmarklet). [Bronco added that][](.html)
-             $tags = (empty($_GET[&#39;tags&#39;]) ? &#39;&#39; : $_GET[&#39;tags&#39;] ); // Get tags if it was provided in URL[](.html)
--            $private = (!empty($_GET[&#39;private&#39;]) &amp;&amp; $_GET[&#39;private&#39;] === &quot;1&quot; ? 1 : 0); // Get private if it was provided in URL [](.html)
-+            $via = (empty($_GET[&#39;via&#39;]) ? &#39;&#39; : $_GET[&#39;via&#39;] );[](.html)
-+            $private = (!empty($_GET[&#39;private&#39;]) &amp;&amp; $_GET[&#39;private&#39;] === &quot;1&quot; ? 1 : 0); // Get private if it was provided in URL[](.html)
-             if (($url!=&#39;&#39;) &amp;&amp; parse_url($url,PHP_URL_SCHEME)==&#39;&#39;) $url = &#39;http://&#39;.$url;
-             // If this is an HTTP link, we try go get the page to extract the title (otherwise we will to straight to the edit form.)
-             if (empty($title) &amp;&amp; parse_url($url,PHP_URL_SCHEME)==&#39;http&#39;)
-@@ -1567,7 +1585,7 @@ function renderPage()
-                     {
-                         // Look for charset in html header.
-                        preg_match(&#39;#&lt;meta .*charset=.*&gt;#Usi&#39;, $data, $meta);
-- 
-+
-                        // If found, extract encoding.
-                        if (!empty($meta[0]))[](.html)
-                        {
-@@ -1577,7 +1595,7 @@ function renderPage()
-                            $html_charset = (!empty($enc[1])) ? strtolower($enc[1]) : &#39;utf-8&#39;;[](.html)
-                        }
-                        else { $html_charset = &#39;utf-8&#39;; }
-- 
-+
-                        // Extract title
-                        $title = html_extract_title($data);
-                        if (!empty($title))
-@@ -1592,7 +1610,7 @@ function renderPage()
-                 $url=&#39;?&#39;.smallHash($linkdate);
-                 $title=&#39;Note: &#39;;
-             }
--            $link = array(&#39;linkdate&#39;=&gt;$linkdate,&#39;title&#39;=&gt;$title,&#39;url&#39;=&gt;$url,&#39;description&#39;=&gt;$description,&#39;tags&#39;=&gt;$tags,&#39;private&#39;=&gt;$private);
-+            $link = array(&#39;linkdate&#39;=&gt;$linkdate,&#39;title&#39;=&gt;$title,&#39;url&#39;=&gt;$url,&#39;description&#39;=&gt;$description,&#39;tags&#39;=&gt;$tags,&#39;via&#39; =&gt; $via,&#39;private&#39;=&gt;$private);
-         }
- 
-         $PAGE = new pageBuilder;
-@@ -1842,6 +1860,9 @@ function buildLinkList($PAGE,$LINKSDB)
-         $taglist = explode(&#39; &#39;,$link[&#39;tags&#39;]);[](.html)
-         uasort($taglist, &#39;strcasecmp&#39;);
-         $link[&#39;taglist&#39;]=$taglist;[](.html)
-+        if(!empty($link[&#39;via&#39;])){[](.html)
-+          $link[&#39;via&#39;]=htmlspecialchars($link[&#39;via&#39;]);[](.html)
-+        }
-         $linkDisp[$keys[$i[ = $link;](-=-$link;.html)
-         $i++;
-     }
-diff --git a/tpl/editlink.html b/tpl/editlink.html
-index 4a2c30c..14d4f9c 100644
---- a/tpl/editlink.html
-+++ b/tpl/editlink.html
-@@ -16,6 +16,7 @@
-            &lt;i&gt;Title&lt;/i&gt;&lt;br&gt;&lt;input type=&quot;text&quot; name=&quot;lf_title&quot; value=&quot;{$link.title|htmlspecialchars}&quot; style=&quot;width:100%&quot;&gt;&lt;br&gt;
-            &lt;i&gt;Description&lt;/i&gt;&lt;br&gt;&lt;textarea name=&quot;lf_description&quot; rows=&quot;4&quot; cols=&quot;25&quot; style=&quot;width:100%&quot;&gt;{$link.description|htmlspecialchars}&lt;/textarea&gt;&lt;br&gt;
-            &lt;i&gt;Tags&lt;/i&gt;&lt;br&gt;&lt;input type=&quot;text&quot; id=&quot;lf_tags&quot; name=&quot;lf_tags&quot; value=&quot;{$link.tags|htmlspecialchars}&quot; style=&quot;width:100%&quot;&gt;&lt;br&gt;
-+           &lt;i&gt;Origine&lt;/i&gt;&lt;br&gt;&lt;input type=&quot;text&quot; name=&quot;lf_via&quot; value=&quot;{$link.via|htmlspecialchars}&quot; style=&quot;width:100%&quot;&gt;&lt;br&gt;
-            {if condition=&quot;($link_is_new &amp;&amp; $GLOBALS[&#39;privateLinkByDefault&#39;]==true) || $link.private == true&quot;}[](.html)
-             &lt;input type=&quot;checkbox&quot; checked=&quot;checked&quot; name=&quot;lf_private&quot; id=&quot;lf_private&quot;&gt;
-             &amp;nbsp;&lt;label for=&quot;lf_private&quot;&gt;&lt;i&gt;Private&lt;/i&gt;&lt;/label&gt;&lt;br&gt;
-diff --git a/tpl/linklist.html b/tpl/linklist.html
-index ddc38cb..0a8475f 100644
---- a/tpl/linklist.html
-+++ b/tpl/linklist.html
-@@ -43,6 +43,7 @@
-                 &lt;span class=&quot;linktitle&quot;&gt;&lt;a href=&quot;{$redirector}{$value.url|htmlspecialchars}&quot;&gt;{$value.title|htmlspecialchars}&lt;/a&gt;&lt;/span&gt;
-                 &lt;br&gt;
-                 {if=&quot;$value.description&quot;}&lt;div class=&quot;linkdescription&quot;{if condition=&quot;$search_type==&#39;permalink&#39;&quot;} style=&quot;max-height:none !important;&quot;{/if}&gt;{$value.description}&lt;/div&gt;{/if}
-+                {if condition=&quot;isset($value.via) &amp;&amp; !empty($value.via)&quot;}&lt;div&gt;&lt;a href=&quot;{$value.via}&quot;&gt;Origine =&gt; {$value.via|getJustDomain}&lt;/a&gt;&lt;/div&gt;{/if}
-                 {if=&quot;!$GLOBALS[&#39;config&#39;[&#39;HIDE_TIMESTAMPS&#39;] || isLoggedIn()&quot;}](&#39;HIDE_TIMESTAMPS&#39;]-||-isLoggedIn()&quot;}.html)
-                     &lt;span class=&quot;linkdate&quot; title=&quot;Permalink&quot;&gt;&lt;a href=&quot;?{$value.linkdate|smallHash}&quot;&gt;{$value.localdate|htmlspecialchars} - permalink&lt;/a&gt; - &lt;/span&gt;
-                 {else}
--- 
-2.1.1</code></pre>
-</body>
-</html>

+ 0 - 107
doc/FAQ.html

@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – FAQ</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="faq">FAQ</h1>
-<h3 id="why-did-you-create-shaarli">Why did you create Shaarli ?</h3>
-<p>I was a StumbleUpon user. Then I got fed up with they big toolbar. I switched to delicious, which was lighter, faster and more beautiful. Until Yahoo bought it. Then the export API broke all the time, delicious became slow and was ditched by Yahoo. I switched to Diigo, which is not bad, but does too much. And Diigo is sslllooooowww and their Firefox extension a bit buggy. And… oh… <strong>their Firefox addon sends to Diigo every single URL you visit</strong> (Don't believe me ? Use <a href="https://addons.mozilla.org/en-US/firefox/addon/tamper-data/">Tamper Data</a> and open any page).<a href=".html"></a></p>
-<p>Enough is enough. Saving simple links should not be a complicated heavy thing. I ditched them all and wrote my own: Shaarli. It's simple, but it does the job and does it well. And my data is not hosted on a foreign server, but on my server.</p>
-<h3 id="why-use-shaarli-and-not-deliciousdiigo">Why use Shaarli and not Delicious/Diigo ?</h3>
-<p>With Shaarli:</p>
-<ul>
-<li>The data is yours: It's hosted on your server.</li>
-<li>Never fear of having your data locked-in.</li>
-<li>Never fear to have your data sold to third party.</li>
-<li>Your private links are not hosted on a third party server.</li>
-<li>You are not tracked by browser addons (like Diigo does)</li>
-<li>You can change the look and feel of the pages if you want.</li>
-<li>You can change the behaviour of the program.</li>
-<li>It's magnitude faster than most bookmarking services.</li>
-</ul>
-<h3 id="what-does-shaarli-mean">What does Shaarli mean?</h3>
-<p>Shaarli is for shaaring your links.</p>
-<h3 id="my-shaarli-is-broken">My Shaarli is broken!</h3>
-<p>First of all, ensure that both the <a href="Server-configuration">web server</a> and <a href="Shaarli-configuration">Shaarli</a> are correctly configured, and that your installation is <a href="Server-requirements">supported</a>.<a href=".html"></a></p>
-<p>If everything looks right but the issue(s) remain(s), please:</p>
-<ul>
-<li>take a look at the <a href="Troubleshooting">troubleshooting</a> section<a href=".html"></a></li>
-<li>come <a href="https://gitter.im/shaarli/Shaarli">chat with us</a> on Gitter, we'll be happy to help ;-)<a href=".html"></a></li>
-<li>browse active <a href="https://github.com/shaarli/Shaarli/issues">issues</a> and <a href="https://github.com/shaarli/Shaarli/pulls">Pull Requests</a><a href=".html"></a>
-<ul>
-<li>if you find one that is related to the issue, feel free to comment and provide additional details (host/Shaarli setup)</li>
-<li>else, <a href="https://github.com/shaarli/Shaarli/issues/new">open a new issue</a>, and provide information about the problem:<a href=".html"></a>
-<ul>
-<li><em>what happens?</em> - display glitches, invalid data, security flaws...</li>
-<li><em>what is your configuration?</em> - OS, server version, activated extensions, web browser...</li>
-<li><em>is it reproducible?</em></li>
-</ul></li>
-</ul></li>
-</ul>
-<h3 id="why-not-use-a-real-database-files-are-slow">Why not use a real database? Files are slow!</h3>
-<p>Does browsing <a href="http://sebsauvage.net/links/">this page</a> feel slow? Try browsing older pages, too.<a href=".html"></a></p>
-<p>It's not slow at all, is it? And don't forget the database contains more than 16000 links, and it's on a shared host, with 32000 visitors/day for my website alone. And it's still damn fast. Why?</p>
-<p>The data file is only 3.7 Mb. It's read 99% of the time, and is probably already in the operation system disk cache. So generating a page involves no I/O at all most of the time.</p>
-</body>
-</html>

+ 0 - 95
doc/Firefox-share.html

@@ -1,95 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Firefox share</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="firefox-share">Firefox share</h1>
-<h3 id="add-shaarli-as-a-sharing-service-to-firefox">Add Shaarli as a sharing service to Firefox</h3>
-<ul>
-<li>Open your Shaarli and <code>Login</code></li>
-<li>Click the <code>Tools</code> button in the top bar</li>
-<li>Click the <code>✚Add to Firefox social</code> button and accept the activation.</li>
-</ul>
-<h3 id="sharing-links-using-firefox-share">Sharing links using Firefox share</h3>
-<ul>
-<li>Add the sharing service as described above</li>
-<li>When you are visiting a webpage you would like to share with Shaarli, click the Firefox <em>Share</em> button <a href="images/firefoxshare.png.html">images/firefoxshare.png</a></li>
-<li>You can edit your link before and after saving, just like the bookmarklet above.</li>
-</ul>
-<table style="width:100%;">
-<colgroup>
-<col style="width: 8%" />
-<col style="width: 91%" />
-</colgroup>
-<thead>
-<tr class="header">
-<th></th>
-<th>Your Shaarli instance must be hosted on an HTTPS (SSL/TLS secure connection) enabled server for Firefox Share to work. Firefox Share will not work over plain HTTP connections.</th>
-</tr>
-</thead>
-<tbody>
-</tbody>
-</table>
-</body>
-</html>

+ 0 - 175
doc/GnuPG-signature.html

@@ -1,175 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – GnuPG signature</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="gnupg-signature">GnuPG signature</h1>
-<h2 id="introduction">Introduction</h2>
-<h3 id="pgp-and-gpg">PGP and GPG</h3>
-<p><a href="https://gnupg.org/">Gnu Privacy Guard</a> (GnuPG) is an Open Source implementation of the <a href="https://en.wikipedia.org/wiki/Pretty_Good_Privacy#OpenPGP">Pretty Good [](.html)<br />
-Privacy</a> (OpenPGP) specification. Its main purposes are digital authentication,<br />
-signature and encryption.</p>
-<p>It is often used by the <a href="https://en.wikipedia.org/wiki/Free_and_open-source_software">FLOSS</a> community to verify:<a href=".html"></a></p>
-<ul>
-<li>Linux package signatures: Debian <a href="https://wiki.debian.org/SecureApt">SecureApt</a>, ArchLinux <a href="https://www.archlinux.org/master-keys/">Master [](.html)<br />
-Keys</a></li>
-<li><a href="https://en.wikipedia.org/wiki/Revision_control">SCM</a> releases &amp; maintainer identity<a href=".html"></a></li>
-</ul>
-<h3 id="trust">Trust</h3>
-<p>To quote Phil Pennock (the author of the <a href="https://bitbucket.org/skskeyserver/sks-keyserver/wiki/Home">SKS</a> key server - <a href="http://sks.spodhuis.org/" class="uri">http://sks.spodhuis.org/</a>):<a href=".html"></a></p>
-<blockquote>
-<p>You MUST understand that presence of data in the keyserver (pools) in no way connotes trust. Anyone can generate a key, with any name or email address, and upload it. All security and trust comes from evaluating security at the “object level”, via PGP Web-Of-Trust signatures. This keyserver makes it possible to retrieve keys, looking them up via various indices, but the collection of keys in this public pool is KNOWN to contain malicious and fraudulent keys. It is the common expectation of server operators that users understand this and use software which, like all known common OpenPGP implementations, evaluates trust accordingly. This expectation is so common that it is not normally explicitly stated.</p>
-</blockquote>
-<p>Trust can be gained by having your key signed by other people (and signing their key back, too :) ), for instance during <a href="https://en.wikipedia.org/wiki/Key_signing_party">key signing parties</a>, see:<a href=".html"></a></p>
-<ul>
-<li><a href="http://www.cryptnet.net/fdp/crypto/keysigning_party/en/keysigning_party.html">The Keysigning party HOWTO</a><a href=".html"></a></li>
-<li><a href="https://en.wikipedia.org/wiki/Web_of_trust">Web of trust</a><a href=".html"></a></li>
-</ul>
-<h2 id="generate-a-gpg-key">Generate a GPG key</h2>
-<ul>
-<li><a href="http://stackoverflow.com/a/16725717">Generating a GPG key for Git tagging</a> (StackOverflow)<a href=".html"></a></li>
-<li><a href="https://help.github.com/articles/generating-a-gpg-key/">Generating a GPG key</a> (GitHub)<a href=".html"></a></li>
-</ul>
-<h3 id="gpg---provide-identity-information">gpg - provide identity information</h3>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">gpg</span> --gen-key
-
-<span class="ex">gpg</span> (GnuPG) <span class="ex">2.1.6</span><span class="kw">;</span> <span class="ex">Copyright</span> (C) <span class="ex">2015</span> Free Software Foundation, Inc.
-<span class="ex">This</span> is free software: you are free to change and redistribute it.
-<span class="ex">There</span> is NO WARRANTY, to the extent permitted by law.
-
-<span class="ex">Note</span>: Use <span class="st">&quot;gpg2 --full-gen-key&quot;</span> for a full featured key generation dialog.
-
-<span class="ex">GnuPG</span> needs to construct a user ID to identify your key.
-
-<span class="ex">Real</span> name: Marvin the Paranoid Android
-<span class="ex">Email</span> address: marvin@h2g2.net
-<span class="ex">You</span> selected this USER-ID:
-    <span class="st">&quot;Marvin the Paranoid Android &lt;marvin@h2g2.net&gt;&quot;</span>
-
-<span class="ex">Change</span> (N)<span class="ex">ame</span>, (E)<span class="ex">mail</span>, or (O)<span class="ex">kay</span>/<span class="kw">(</span><span class="ex">Q</span><span class="kw">)</span><span class="ex">uit?</span> o
-<span class="ex">We</span> need to generate a lot of random bytes. It is a good idea to perform
-<span class="ex">some</span> other action (type on the keyboard, move the mouse, utilize the
-<span class="ex">disks</span>) <span class="ex">during</span> the prime generation<span class="kw">;</span> <span class="ex">this</span> gives the random number
-<span class="ex">generator</span> a better chance to gain enough entropy.</code></pre></div>
-<h3 id="gpg---entropy-interlude">gpg - entropy interlude</h3>
-<p>At this point, you will:</p>
-<ul>
-<li>be prompted for a secure password to protect your key (the input method will depend on your Desktop Environment and configuration)</li>
-<li>be asked to use your machine's input devices (mouse, keyboard, etc.) to generate random entropy; this step <em>may take some time</em></li>
-</ul>
-<h3 id="gpg---key-creation-confirmation">gpg - key creation confirmation</h3>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="ex">gpg</span>: key A9D53A3E marked as ultimately trusted
-<span class="ex">public</span> and secret key created and signed.
-
-<span class="ex">gpg</span>: checking the trustdb
-<span class="ex">gpg</span>: 3 marginal(s) <span class="ex">needed</span>, 1 complete(s) <span class="ex">needed</span>, PGP trust model
-<span class="ex">gpg</span>: depth: 0  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 2u
-<span class="ex">pub</span>   rsa2048/A9D53A3E 2015-07-31
-      <span class="ex">Key</span> fingerprint = AF2A 5381 E54B 2FD2 14C4  A9A3 0E35 ACA4 A9D5 3A3E
-<span class="ex">uid</span>       [ultimate] Marvin the Paranoid Android <span class="op">&lt;</span>marvin@h2g2.net<span class="op">&gt;</span>[](.html)
-<span class="ex">sub</span>   rsa2048/8C0EACF1 2015-07-31</code></pre></div>
-<h3 id="gpg---submit-your-public-key-to-a-pgp-server-optional">gpg - submit your public key to a PGP server (Optional)</h3>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">gpg</span> --keyserver pgp.mit.edu --send-keys A9D53A3E
-<span class="ex">gpg</span>: sending key A9D53A3E to hkp server pgp.mit.edu</code></pre></div>
-<h2 id="create-and-push-a-gpg-signed-tag">Create and push a GPG-signed tag</h2>
-<p>See <a href="Release-Shaarli.html">Release Shaarli</a>.</p>
-</body>
-</html>

+ 0 - 76
doc/Home.html

@@ -1,76 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Home</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="home">Home</h1>
-<h1 id="shaarli-wiki">Shaarli wiki</h1>
-<p>Welcome to the <a href="https://github.com/shaarli/Shaarli/">Shaarli</a> wiki<embed src=".html" /></p>
-<p>Here you can find some info on how to use, configure, tweak and solve problems with your Shaarli.</p>
-<p>For general info, read the <a href="https://github.com/shaarli/Shaarli/blob/master/README.md">README</a>.<a href=".html"></a></p>
-<p>If you have any questions or ideas, please join the <a href="https://gitter.im/shaarli/Shaarli">chat</a> (also reachable via <a href="https://irc.gitter.im/">IRC</a>), post them in our <a href="https://github.com/shaarli/Shaarli/issues/308">general discussion</a> (<a href="https://github.com/shaarli/Shaarli/issues/44">archive</a>) or read the current <a href="https://github.com/shaarli/Shaarli/issues">issues</a>. If you've found a bug, please create a <a href="https://github.com/shaarli/Shaarli/issues/new">new issue</a>.<a href=".html"></a></p>
-<p>If you would like a feature added to Shaarli, check the issues labeled <a href="https://github.com/shaarli/Shaarli/labels/feature"><code>feature</code></a>, <a href="https://github.com/shaarli/Shaarli/labels/enhancement"><code>enhancement</code></a>, and <a href="https://github.com/shaarli/Shaarli/labels/plugin"><code>plugin</code></a>.<a href=".html"></a></p>
-<p><em>Note: This documentation is available online at <a href="https://github.com/shaarli/Shaarli/wiki" class="uri">https://github.com/shaarli/Shaarli/wiki</a>, and locally in the <code>doc/</code> directory of your Shaarli installation.</em></p>
-</body>
-</html>

+ 0 - 634
doc/Plugin-System.html

@@ -1,634 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Plugin System</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="plugin-system">Plugin System</h1>
-<p><a href="#developer-api"><strong>I am a developer.</strong> Developer API.</a><a href=".html"></a></p>
-<p><a href="#guide-for-template-designer"><strong>I am a template designer.</strong> Guide for template designer.</a><a href=".html"></a></p>
-<h2 id="developer-api">Developer API</h2>
-<h3 id="what-can-i-do-with-plugins">What can I do with plugins?</h3>
-<p>The plugin system let you:</p>
-<ul>
-<li>insert content into specific places across templates.</li>
-<li>alter data before templates rendering.</li>
-<li>alter data before saving new links.</li>
-</ul>
-<h3 id="how-can-i-create-a-plugin-for-shaarli">How can I create a plugin for Shaarli?</h3>
-<p>First, chose a plugin name, such as <code>demo_plugin</code>.</p>
-<p>Under <code>plugin</code> folder, create a folder named with your plugin name. Then create a <plugin_name>.php file in that folder.</p>
-<p>You should have the following tree view:</p>
-<pre><code>| index.php
-| plugins/
-|---| demo_plugin/
-|   |---| demo_plugin.php</code></pre>
-<h3 id="plugin-initialization">Plugin initialization</h3>
-<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>
-<pre><code>&lt;plugin_name&gt;_init($conf)</code></pre>
-<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>
-<h3 id="understanding-hooks">Understanding hooks</h3>
-<p>A plugin is a set of functions. Each function will be triggered by the plugin system at certain point in Shaarli execution.</p>
-<p>These functions need to be named with this pattern:</p>
-<pre><code>hook_&lt;plugin_name&gt;_&lt;hook_name&gt;($data, $conf)</code></pre>
-<p>Parameters:</p>
-<ul>
-<li>data: see <a href="https://github.com/shaarli/Shaarli/wiki/Plugin-System#plugins-data">$data section</a><a href=".html"></a></li>
-<li>conf: the <code>ConfigManager</code> instance.</li>
-</ul>
-<p>For exemple, if my plugin want to add data to the header, this function is needed:</p>
-<pre><code>hook_demo_plugin_render_header</code></pre>
-<p>If this function is declared, and the plugin enabled, it will be called every time Shaarli is rendering the header.</p>
-<h3 id="plugins-data">Plugin's data</h3>
-<h4 id="parameters">Parameters</h4>
-<p>Every hook function has a <code>$data</code> parameter. Its content differs for each hooks.</p>
-<p><strong>This parameter needs to be returned every time</strong>, otherwise data is lost.</p>
-<pre><code>return $data;</code></pre>
-<h4 id="filling-templates-placeholder">Filling templates placeholder</h4>
-<p>Template placeholders are displayed in template in specific places.</p>
-<p>RainTPL displays every element contained in the placeholder's array. These element can be added by plugins.</p>
-<p>For example, let's add a value in the placeholder <code>top_placeholder</code> which is displayed at the top of my page:</p>
-<div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="kw">$data</span><span class="ot">[</span><span class="st">&#39;top_placeholder&#39;</span><span class="ot">[]</span> = <span class="st">&#39;My content&#39;</span><span class="ot">;](]</span>-=-<span class="st">&#39;My-content&#39;</span><span class="ot">;</span>.html<span class="ot">)</span>
-<span class="co"># OR</span>
-<span class="fu">array_push</span><span class="ot">(</span><span class="kw">$data</span><span class="ot">[</span><span class="st">&#39;top_placeholder&#39;</span><span class="ot">],</span> <span class="st">&#39;My&#39;</span><span class="ot">,</span> <span class="st">&#39;content&#39;</span><span class="ot">);[](</span>.html<span class="ot">)</span>
-
-<span class="kw">return</span> <span class="kw">$data</span><span class="ot">;</span></code></pre></div>
-<h4 id="data-manipulation">Data manipulation</h4>
-<p>When a page is displayed, every variable send to the template engine is passed to plugins before that in <code>$data</code>.</p>
-<p>The data contained by this array can be altered before template rendering.</p>
-<p>For exemple, in linklist, it is possible to alter every title:</p>
-<div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="co">// mind the reference if you want $data to be altered</span>
-<span class="kw">foreach</span> <span class="ot">(</span><span class="kw">$data</span><span class="ot">[</span><span class="st">&#39;links&#39;</span><span class="ot">]</span> <span class="kw">as</span> &amp;<span class="kw">$value</span><span class="ot">)</span> {<span class="ot">[](</span>.html<span class="ot">)</span>
-    <span class="co">// String reverse every title.</span>
-    <span class="kw">$value</span><span class="ot">[</span><span class="st">&#39;title&#39;</span><span class="ot">]</span> = <span class="fu">strrev</span><span class="ot">(</span><span class="kw">$value</span><span class="ot">[</span><span class="st">&#39;title&#39;</span><span class="ot">]);[](</span>.html<span class="ot">)</span>
-}
-
-<span class="kw">return</span> <span class="kw">$data</span><span class="ot">;</span></code></pre></div>
-<h3 id="metadata">Metadata</h3>
-<p>Every plugin needs a <code>&lt;plugin_name&gt;.meta</code> file, which is in fact an <code>.ini</code> file (<code>KEY=&quot;VALUE&quot;</code>), to be listed in plugin administration.</p>
-<p>Each file contain two keys:</p>
-<ul>
-<li><code>description</code>: plugin description</li>
-<li><code>parameters</code>: user parameter names, separated by a <code>;</code>.</li>
-<li><code>parameter.&lt;PARAMETER_NAME&gt;</code>: add a text description the specified parameter.</li>
-</ul>
-<blockquote>
-<p>Note: In PHP, <code>parse_ini_file()</code> seems to want strings to be between by quotes <code>&quot;</code> in the ini file.</p>
-</blockquote>
-<h3 id="its-not-working">It's not working!</h3>
-<p>Use <code>demo_plugin</code> as a functional example. It covers most of the plugin system features.</p>
-<p>If it's still not working, please <a href="https://github.com/shaarli/Shaarli/issues/new">open an issue</a>.<a href=".html"></a></p>
-<h3 id="hooks">Hooks</h3>
-<table style="width:42%;">
-<colgroup>
-<col style="width: 19%" />
-<col style="width: 22%" />
-</colgroup>
-<thead>
-<tr class="header">
-<th>Hooks</th>
-<th style="text-align: center;">Description</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td><a href="#render_header">render_header</a></td>
-<td style="text-align: center;">Allow plugin to add content in page headers.</td>
-</tr>
-<tr class="even">
-<td><a href="#render_includes">render_includes</a></td>
-<td style="text-align: center;">Allow plugin to include their own CSS files.</td>
-</tr>
-<tr class="odd">
-<td><a href="#render_footer">render_footer</a></td>
-<td style="text-align: center;">Allow plugin to add content in page footer and include their own JS files.</td>
-</tr>
-<tr class="even">
-<td><a href="#render_linklist">render_linklist</a></td>
-<td style="text-align: center;">It allows to add content at the begining and end of the page, after every link displayed and to alter link data.</td>
-</tr>
-<tr class="odd">
-<td><a href="#render_editlink">render_editlink</a></td>
-<td style="text-align: center;">Allow to add fields in the form, or display elements.</td>
-</tr>
-<tr class="even">
-<td><a href="#render_tools">render_tools</a></td>
-<td style="text-align: center;">Allow to add content at the end of the page.</td>
-</tr>
-<tr class="odd">
-<td><a href="#render_picwall">render_picwall</a></td>
-<td style="text-align: center;">Allow to add content at the top and bottom of the page.</td>
-</tr>
-<tr class="even">
-<td><a href="#render_tagcloud">render_tagcloud</a></td>
-<td style="text-align: center;">Allow to add content at the top and bottom of the page, and after all tags.</td>
-</tr>
-<tr class="odd">
-<td><a href="#render_taglist">render_taglist</a></td>
-<td style="text-align: center;">Allow to add content at the top and bottom of the page, and after all tags.</td>
-</tr>
-<tr class="even">
-<td><a href="#render_daily">render_daily</a></td>
-<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>
-</tr>
-<tr class="odd">
-<td><a href="#render_feed">render_feed</a></td>
-<td style="text-align: center;">Allow to do add tags in RSS and ATOM feeds.</td>
-</tr>
-<tr class="even">
-<td><a href="#save_link">save_link</a></td>
-<td style="text-align: center;">Allow to alter the link being saved in the datastore.</td>
-</tr>
-<tr class="odd">
-<td><a href="#delete_link">delete_link</a></td>
-<td style="text-align: center;">Allow to do an action before a link is deleted from the datastore.</td>
-</tr>
-</tbody>
-</table>
-<h4 id="render_header">render_header</h4>
-<p>Triggered on every page.</p>
-<p>Allow plugin to add content in page headers.</p>
-<h5 id="data">Data</h5>
-<p><code>$data</code> is an array containing:</p>
-<ul>
-<li><code>_PAGE_</code>: current target page (eg: <code>linklist</code>, <code>picwall</code>, etc.).</li>
-<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
-</ul>
-<h5 id="template-placeholders">Template placeholders</h5>
-<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.<a href=".html"></a></p>
-<p>List of placeholders:</p>
-<ul>
-<li><code>buttons_toolbar</code>: after the list of buttons in the header.</li>
-</ul>
-<p><img src="http://i.imgur.com/ssJUOrt.png" alt="buttons_toolbar_example" /><a href=".html"></a></p>
-<ul>
-<li><code>fields_toolbar</code>: after search fields in the header.</li>
-</ul>
-<blockquote>
-<p>Note: This will only be called in linklist.</p>
-</blockquote>
-<p><img src="http://i.imgur.com/3GMifI2.png" alt="fields_toolbar_example" /><a href=".html"></a></p>
-<h4 id="render_includes">render_includes</h4>
-<p>Triggered on every page.</p>
-<p>Allow plugin to include their own CSS files.</p>
-<h5 id="data-1">Data</h5>
-<p><code>$data</code> is an array containing:</p>
-<ul>
-<li><code>_PAGE_</code>: current target page (eg: <code>linklist</code>, <code>picwall</code>, etc.).</li>
-<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
-</ul>
-<h5 id="template-placeholders-1">Template placeholders</h5>
-<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.<a href=".html"></a></p>
-<p>List of placeholders:</p>
-<ul>
-<li><code>css_files</code>: called after loading default CSS.</li>
-</ul>
-<blockquote>
-<p>Note: only add the path of the CSS file. E.g: <code>plugins/demo_plugin/custom_demo.css</code>.</p>
-</blockquote>
-<h4 id="render_footer">render_footer</h4>
-<p>Triggered on every page.</p>
-<p>Allow plugin to add content in page footer and include their own JS files.</p>
-<h5 id="data-2">Data</h5>
-<p><code>$data</code> is an array containing:</p>
-<ul>
-<li><code>_PAGE_</code>: current target page (eg: <code>linklist</code>, <code>picwall</code>, etc.).</li>
-<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
-</ul>
-<h5 id="template-placeholders-2">Template placeholders</h5>
-<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.<a href=".html"></a></p>
-<p>List of placeholders:</p>
-<ul>
-<li><code>text</code>: called after the end of the footer text.</li>
-<li><code>endofpage</code>: called at the end of the page.</li>
-</ul>
-<p><img src="http://i.imgur.com/L5S2YEH.png" alt="text_example" /><a href=".html"></a></p>
-<ul>
-<li><code>js_files</code>: called at the end of the page, to include custom JS scripts.</li>
-</ul>
-<blockquote>
-<p>Note: only add the path of the JS file. E.g: <code>plugins/demo_plugin/custom_demo.js</code>.</p>
-</blockquote>
-<h4 id="render_linklist">render_linklist</h4>
-<p>Triggered when <code>linklist</code> is displayed (list of links, permalink, search, tag filtered, etc.).</p>
-<p>It allows to add content at the begining and end of the page, after every link displayed and to alter link data.</p>
-<h5 id="data-3">Data</h5>
-<p><code>$data</code> is an array containing:</p>
-<ul>
-<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
-<li>All templates data, including links.</li>
-</ul>
-<h5 id="template-placeholders-3">Template placeholders</h5>
-<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.<a href=".html"></a></p>
-<p>List of placeholders:</p>
-<ul>
-<li><code>action_plugin</code>: next to the button &quot;private only&quot; at the top and bottom of the page.</li>
-</ul>
-<p><img src="http://i.imgur.com/Q12PWg0.png" alt="action_plugin_example" /><a href=".html"></a></p>
-<ul>
-<li><code>link_plugin</code>: for every link, between permalink and link URL.</li>
-</ul>
-<p><img src="http://i.imgur.com/3oDPhWx.png" alt="link_plugin_example" /><a href=".html"></a></p>
-<ul>
-<li><code>plugin_start_zone</code>: before displaying the template content.</li>
-</ul>
-<p><img src="http://i.imgur.com/OVBkGy3.png" alt="plugin_start_zone_example" /><a href=".html"></a></p>
-<ul>
-<li><code>plugin_end_zone</code>: after displaying the template content.</li>
-</ul>
-<p><img src="http://i.imgur.com/6IoRuop.png" alt="plugin_end_zone_example" /><a href=".html"></a></p>
-<h4 id="render_editlink">render_editlink</h4>
-<p>Triggered when the link edition form is displayed.</p>
-<p>Allow to add fields in the form, or display elements.</p>
-<h5 id="data-4">Data</h5>
-<p><code>$data</code> is an array containing:</p>
-<ul>
-<li>All templates data.</li>
-</ul>
-<h5 id="template-placeholders-4">Template placeholders</h5>
-<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.<a href=".html"></a></p>
-<p>List of placeholders:</p>
-<ul>
-<li><code>edit_link_plugin</code>: after tags field.</li>
-</ul>
-<p><img src="http://i.imgur.com/5u17Ens.png" alt="edit_link_plugin_example" /><a href=".html"></a></p>
-<h4 id="render_tools">render_tools</h4>
-<p>Triggered when the &quot;tools&quot; page is displayed.</p>
-<p>Allow to add content at the end of the page.</p>
-<h5 id="data-5">Data</h5>
-<p><code>$data</code> is an array containing:</p>
-<ul>
-<li>All templates data.</li>
-</ul>
-<h5 id="template-placeholders-5">Template placeholders</h5>
-<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.<a href=".html"></a></p>
-<p>List of placeholders:</p>
-<ul>
-<li><code>tools_plugin</code>: at the end of the page.</li>
-</ul>
-<p><img src="http://i.imgur.com/Bqhu9oQ.png" alt="tools_plugin_example" /><a href=".html"></a></p>
-<h4 id="render_picwall">render_picwall</h4>
-<p>Triggered when picwall is displayed.</p>
-<p>Allow to add content at the top and bottom of the page.</p>
-<h5 id="data-6">Data</h5>
-<p><code>$data</code> is an array containing:</p>
-<ul>
-<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
-<li>All templates data.</li>
-</ul>
-<h5 id="template-placeholders-6">Template placeholders</h5>
-<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.<a href=".html"></a></p>
-<p>List of placeholders:</p>
-<ul>
-<li><p><code>plugin_start_zone</code>: before displaying the template content.</p></li>
-<li><p><code>plugin_end_zone</code>: after displaying the template content.</p></li>
-</ul>
-<p><img src="http://i.imgur.com/tVTQFER.png" alt="plugin_start_end_zone_example" /><a href=".html"></a></p>
-<h4 id="render_tagcloud">render_tagcloud</h4>
-<p>Triggered when tagcloud is displayed.</p>
-<p>Allow to add content at the top and bottom of the page.</p>
-<h5 id="data-7">Data</h5>
-<p><code>$data</code> is an array containing:</p>
-<ul>
-<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
-<li>All templates data.</li>
-</ul>
-<h5 id="template-placeholders-7">Template placeholders</h5>
-<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.<a href=".html"></a></p>
-<p>List of placeholders:</p>
-<ul>
-<li><p><code>plugin_start_zone</code>: before displaying the template content.</p></li>
-<li><p><code>plugin_end_zone</code>: after displaying the template content.</p></li>
-</ul>
-<p>For each tag, the following placeholder can be used:</p>
-<ul>
-<li><code>tag_plugin</code>: after each tag</li>
-</ul>
-<p><img src="http://i.imgur.com/vHmyT3a.png" alt="plugin_start_end_zone_example" /><a href=".html"></a></p>
-<h4 id="render_taglist">render_taglist</h4>
-<p>Triggered when taglist is displayed.</p>
-<p>Allow to add content at the top and bottom of the page.</p>
-<h5 id="data-8">Data</h5>
-<p><code>$data</code> is an array containing:</p>
-<ul>
-<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
-<li>All templates data.</li>
-</ul>
-<h5 id="template-placeholders-8">Template placeholders</h5>
-<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.<a href=".html"></a></p>
-<p>List of placeholders:</p>
-<ul>
-<li><p><code>plugin_start_zone</code>: before displaying the template content.</p></li>
-<li><p><code>plugin_end_zone</code>: after displaying the template content.</p></li>
-</ul>
-<p>For each tag, the following placeholder can be used:</p>
-<ul>
-<li><code>tag_plugin</code>: after each tag</li>
-</ul>
-<h4 id="render_daily">render_daily</h4>
-<p>Triggered when tagcloud is displayed.</p>
-<p>Allow to add content at the top and bottom of the page, the bottom of each link and to alter data.</p>
-<h5 id="data-9">Data</h5>
-<p><code>$data</code> is an array containing:</p>
-<ul>
-<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
-<li>All templates data, including links.</li>
-</ul>
-<h5 id="template-placeholders-9">Template placeholders</h5>
-<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.<a href=".html"></a></p>
-<p>List of placeholders:</p>
-<ul>
-<li><code>link_plugin</code>: used at bottom of each link.</li>
-</ul>
-<p><img src="http://i.imgur.com/hzhMfSZ.png" alt="link_plugin_example" /><a href=".html"></a></p>
-<ul>
-<li><p><code>plugin_start_zone</code>: before displaying the template content.</p></li>
-<li><p><code>plugin_end_zone</code>: after displaying the template content.</p></li>
-</ul>
-<h4 id="render_feed">render_feed</h4>
-<p>Triggered when the ATOM or RSS feed is displayed.</p>
-<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>
-<h5 id="data-10">Data</h5>
-<p><code>$data</code> is an array containing:</p>
-<ul>
-<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
-<li><code>_PAGE_</code>: containing either <code>rss</code> or <code>atom</code>.</li>
-<li>All templates data, including links.</li>
-</ul>
-<h5 id="template-placeholders-10">Template placeholders</h5>
-<p>Tags can be added in feeds by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.<a href=".html"></a></p>
-<p>List of placeholders:</p>
-<ul>
-<li><code>feed_plugins_header</code>: used as a header tag in the feed.</li>
-</ul>
-<p>For each links:</p>
-<ul>
-<li><code>feed_plugins</code>: additional tag for every link entry.</li>
-</ul>
-<h4 id="save_link">save_link</h4>
-<p>Triggered when a link is save (new link or edit).</p>
-<p>Allow to alter the link being saved in the datastore.</p>
-<h5 id="data-11">Data</h5>
-<p><code>$data</code> is an array containing the link being saved:</p>
-<ul>
-<li>id</li>
-<li>title</li>
-<li>url</li>
-<li>shorturl</li>
-<li>description</li>
-<li>private</li>
-<li>tags</li>
-<li>created</li>
-<li>updated</li>
-</ul>
-<h4 id="delete_link">delete_link</h4>
-<p>Triggered when a link is deleted.</p>
-<p>Allow to execute any action before the link is actually removed from the datastore</p>
-<h5 id="data-12">Data</h5>
-<p><code>$data</code> is an array containing the link being saved:</p>
-<ul>
-<li>id</li>
-<li>title</li>
-<li>url</li>
-<li>shorturl</li>
-<li>description</li>
-<li>private</li>
-<li>tags</li>
-<li>created</li>
-<li>updated</li>
-</ul>
-<h2 id="guide-for-template-designer">Guide for template designer</h2>
-<h3 id="plugin-administration">Plugin administration</h3>
-<p>Your theme must include a plugin administration page: <code>pluginsadmin.html</code>.</p>
-<blockquote>
-<p>Note: repo's template link needs to be added when the PR is merged.</p>
-</blockquote>
-<p>Use the default one as an example.</p>
-<p>Aside from classic RainTPL loops, plugins order is handle by JavaScript. You can just include <code>plugin_admin.js</code>, only if:</p>
-<ul>
-<li>you're using a table.</li>
-<li>you call orderUp() and orderUp() onclick on arrows.</li>
-<li>you add data-line and data-order to your rows.</li>
-</ul>
-<p>Otherwise, you can use your own JS as long as this field is send by the form:</p>
-<p><input type="hidden" name="order_{$key}" value="{$counter}"></p>
-<h3 id="placeholder-system">Placeholder system</h3>
-<p>In order to make plugins work with every custom themes, you need to add variable placeholder in your templates.</p>
-<p>It's a RainTPL loop like this:</p>
-<pre><code>{loop=&quot;$plugin_variable&quot;}
-    {$value}
-{/loop}</code></pre>
-<p>You should enable <code>demo_plugin</code> for testing purpose, since it uses every placeholder available.</p>
-<h3 id="list-of-placeholders">List of placeholders</h3>
-<p><strong>page.header.html</strong></p>
-<p>At the end of the menu:</p>
-<pre><code>{loop=&quot;$plugins_header.buttons_toolbar&quot;}
-    {$value}
-{/loop}</code></pre>
-<p>At the end of file, before clearing floating blocks:</p>
-<pre><code>{if=&quot;!empty($plugin_errors) &amp;&amp; isLoggedIn()&quot;}
-    &lt;ul class=&quot;errors&quot;&gt;
-        {loop=&quot;plugin_errors&quot;}
-            &lt;li&gt;{$value}&lt;/li&gt;
-        {/loop}
-    &lt;/ul&gt;
-{/if}</code></pre>
-<p><strong>includes.html</strong></p>
-<p>At the end of the file:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html">{loop=&quot;$plugins_includes.css_files&quot;}
-<span class="kw">&lt;link</span><span class="ot"> type=</span><span class="st">&quot;text/css&quot;</span><span class="ot"> rel=</span><span class="st">&quot;stylesheet&quot;</span><span class="ot"> href=</span><span class="st">&quot;{$value}#&quot;</span><span class="kw">/&gt;</span>
-{/loop}</code></pre></div>
-<p><strong>page.footer.html</strong></p>
-<p>At the end of your footer notes:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html">{loop=&quot;$plugins_footer.text&quot;}
-     {$value}
-{/loop}</code></pre></div>
-<p>At the end of file:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html">{loop=&quot;$plugins_footer.js_files&quot;}
-     <span class="kw">&lt;script</span><span class="ot"> src=</span><span class="st">&quot;{$value}#&quot;</span><span class="kw">&gt;&lt;/script&gt;</span>
-{/loop}</code></pre></div>
-<p><strong>linklist.html</strong></p>
-<p>After search fields:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html">{loop=&quot;$plugins_header.fields_toolbar&quot;}
-     {$value}
-{/loop}</code></pre></div>
-<p>Before displaying the link list (after paging):</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html">{loop=&quot;$plugin_start_zone&quot;}
-     {$value}
-{/loop}</code></pre></div>
-<p>For every links (icons):</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html">{loop=&quot;$value.link_plugin&quot;}
-    <span class="kw">&lt;span&gt;</span>{$value}<span class="kw">&lt;/span&gt;</span>
-{/loop}</code></pre></div>
-<p>Before end paging:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html">{loop=&quot;$plugin_end_zone&quot;}
-     {$value}
-{/loop}</code></pre></div>
-<p><strong>linklist.paging.html</strong></p>
-<p>After the &quot;private only&quot; icon:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html">{loop=&quot;$action_plugin&quot;}
-     {$value}
-{/loop}</code></pre></div>
-<p><strong>editlink.html</strong></p>
-<p>After tags field:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html">{loop=&quot;$edit_link_plugin&quot;}
-     {$value}
-{/loop}</code></pre></div>
-<p><strong>tools.html</strong></p>
-<p>After the last tool:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html">{loop=&quot;$tools_plugin&quot;}
-     {$value}
-{/loop}</code></pre></div>
-<p><strong>picwall.html</strong></p>
-<p>Top:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html"><span class="kw">&lt;div</span><span class="ot"> id=</span><span class="st">&quot;plugin_zone_start_picwall&quot;</span><span class="ot"> class=</span><span class="st">&quot;plugin_zone&quot;</span><span class="kw">&gt;</span>
-    {loop=&quot;$plugin_start_zone&quot;}
-        {$value}
-    {/loop}
-<span class="kw">&lt;/div&gt;</span></code></pre></div>
-<p>Bottom:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html"><span class="kw">&lt;div</span><span class="ot"> id=</span><span class="st">&quot;plugin_zone_end_picwall&quot;</span><span class="ot"> class=</span><span class="st">&quot;plugin_zone&quot;</span><span class="kw">&gt;</span>
-    {loop=&quot;$plugin_end_zone&quot;}
-        {$value}
-    {/loop}
-<span class="kw">&lt;/div&gt;</span></code></pre></div>
-<p><strong>tagcloud.html</strong></p>
-<p>Top:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html">   <span class="kw">&lt;div</span><span class="ot"> id=</span><span class="st">&quot;plugin_zone_start_tagcloud&quot;</span><span class="ot"> class=</span><span class="st">&quot;plugin_zone&quot;</span><span class="kw">&gt;</span>
-        {loop=&quot;$plugin_start_zone&quot;}
-            {$value}
-        {/loop}
-    <span class="kw">&lt;/div&gt;</span></code></pre></div>
-<p>Bottom:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html">    <span class="kw">&lt;div</span><span class="ot"> id=</span><span class="st">&quot;plugin_zone_end_tagcloud&quot;</span><span class="ot"> class=</span><span class="st">&quot;plugin_zone&quot;</span><span class="kw">&gt;</span>
-        {loop=&quot;$plugin_end_zone&quot;}
-            {$value}
-        {/loop}
-    <span class="kw">&lt;/div&gt;</span></code></pre></div>
-<p><strong>daily.html</strong></p>
-<p>Top:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html"><span class="kw">&lt;div</span><span class="ot"> id=</span><span class="st">&quot;plugin_zone_start_picwall&quot;</span><span class="ot"> class=</span><span class="st">&quot;plugin_zone&quot;</span><span class="kw">&gt;</span>
-     {loop=&quot;$plugin_start_zone&quot;}
-         {$value}
-     {/loop}
-<span class="kw">&lt;/div&gt;</span></code></pre></div>
-<p>After every link:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html"><span class="kw">&lt;div</span><span class="ot"> class=</span><span class="st">&quot;dailyEntryFooter&quot;</span><span class="kw">&gt;</span>
-     {loop=&quot;$link.link_plugin&quot;}
-          {$value}
-     {/loop}
-<span class="kw">&lt;/div&gt;</span></code></pre></div>
-<p>Bottom:</p>
-<div class="sourceCode"><pre class="sourceCode html"><code class="sourceCode html"><span class="kw">&lt;div</span><span class="ot"> id=</span><span class="st">&quot;plugin_zone_end_picwall&quot;</span><span class="ot"> class=</span><span class="st">&quot;plugin_zone&quot;</span><span class="kw">&gt;</span>
-    {loop=&quot;$plugin_end_zone&quot;}
-        {$value}
-    {/loop}
-<span class="kw">&lt;/div&gt;</span></code></pre></div>
-<p><strong>feed.atom.xml</strong> and <strong>feed.rss.xml</strong>:</p>
-<p>In headers tags section:</p>
-<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode xml">{loop=&quot;$feed_plugins_header&quot;}
-  {$value}
-{/loop}</code></pre></div>
-<p>After each entry:</p>
-<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode xml">{loop=&quot;$value.feed_plugins&quot;}
-  {$value}
-{/loop}</code></pre></div>
-</body>
-</html>

+ 0 - 155
doc/Plugins.html

@@ -1,155 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Plugins</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="plugins">Plugins</h1>
-<h2 id="plugin-installation">Plugin installation</h2>
-<p>There is a bunch of plugins shipped with Shaarli, where there is nothing to do to install them.</p>
-<p>If you want to install a third party plugin:</p>
-<ul>
-<li>Download it.</li>
-<li>Put it in the <code>plugins</code> directory in Shaarli's installation folder.</li>
-<li>Make sure you put it correctly:</li>
-</ul>
-<pre><code>| index.php
-| plugins/
-|---| custom_plugin/
-|   |---| custom_plugin.php
-|   |---| ...
-</code></pre>
-<ul>
-<li>Make sure your webserver can read and write the files in your plugin folder.</li>
-</ul>
-<h2 id="plugin-configuration">Plugin configuration</h2>
-<p>In Shaarli's administration page (<code>Tools</code> link), go to <code>Plugin administration</code>.</p>
-<p>Here you can enable and disable all plugins available, and configure them.</p>
-<p><img src="https://camo.githubusercontent.com/5da68e191969007492ca0fbeb25f3b2357b748cc/687474703a2f2f692e696d6775722e636f6d2f766837544643712e706e67" alt="administration screenshot" /><a href=".html"></a></p>
-<h2 id="plugin-order">Plugin order</h2>
-<p>In the plugin administration page, you can move enabled plugins to the top or bottom of the list. The first plugins in the list will be processed first.</p>
-<p>This is important in case plugins are depending on each other. Read plugins README details for more information.</p>
-<p><strong>Use case</strong>: The (non existent) plugin <code>shaares_footer</code> adds a footer to every shaare in Markdown syntax. It needs to be processed <em>before</em> (higher in the list) the Markdown plugin. Otherwise its syntax won't be translated in HTML.</p>
-<h2 id="file-mode">File mode</h2>
-<p>Enabled plugin are stored in your <code>config.php</code> parameters file, under the <code>array</code>:</p>
-<div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;ENABLED_PLUGINS&#39;</span><span class="ot">]](</span><span class="st">&#39;ENABLED_PLUGINS&#39;</span><span class="ot">]</span>.html<span class="ot">)</span></code></pre></div>
-<p>You can edit them manually here.<br />
-Example:</p>
-<div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;ENABLED_PLUGINS&#39;</span><span class="ot">]</span> = <span class="fu">array</span><span class="ot">(](</span><span class="st">&#39;ENABLED_PLUGINS&#39;</span><span class="ot">]</span>-=-<span class="fu">array</span><span class="ot">(</span>.html<span class="ot">)</span>
-    <span class="st">&#39;qrcode&#39;</span><span class="ot">,</span> 
-    <span class="st">&#39;archiveorg&#39;</span><span class="ot">,</span>
-    <span class="st">&#39;wallabag&#39;</span><span class="ot">,</span>
-    <span class="st">&#39;markdown&#39;</span><span class="ot">,</span>
-<span class="ot">);</span></code></pre></div>
-<h3 id="plugin-usage">Plugin usage</h3>
-<h4 id="official-plugins">Official plugins</h4>
-<p>Usage of each plugin is documented in it's README file:</p>
-<ul>
-<li><code>addlink-toolbar</code>: Adds the addlink input on the linklist page</li>
-<li><code>archiveorg</code>: For each link, add an Archive.org icon</li>
-<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>
-<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>
-<li><code>qrcode</code>: For each link, add a QRCode icon.</li>
-<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>
-</ul>
-<h4 id="third-party-plugins">Third party plugins</h4>
-<p>See <a href="https://github.com/shaarli/Shaarli/wiki/Community-%26-Related-software#third-party-plugins">Community &amp; related software</a><a href=".html"></a></p>
-</body>
-</html>

+ 0 - 169
doc/REST-API.html

@@ -1,169 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – REST API</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="rest-api">REST API</h1>
-<h2 id="usage">Usage</h2>
-<p>See the <a href="http://shaarli.github.io/api-documentation/">REST API documentation</a>.<a href=".html"></a></p>
-<h2 id="authentication">Authentication</h2>
-<p>All requests to Shaarli's API must include a JWT token to verify their authenticity.</p>
-<p>This token has to be included as an HTTP header called <code>Authentication: Bearer &lt;jwt token&gt;</code>.</p>
-<p>JWT resources :</p>
-<ul>
-<li><a href="https://jwt.io">jwt.io</a> (including a list of client per language).<a href=".html"></a></li>
-<li>RFC : <a href="https://tools.ietf.org/html/rfc7519" class="uri">https://tools.ietf.org/html/rfc7519</a></li>
-<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>
-<li>HackerNews thread: <a href="https://news.ycombinator.com/item?id=11929267" class="uri">https://news.ycombinator.com/item?id=11929267</a></li>
-</ul>
-<h3 id="shaarli-jwt-token">Shaarli JWT Token</h3>
-<p>JWT tokens are composed by three parts, separated by a dot <code>.</code> and encoded in base64:</p>
-<pre><code>[header].[payload].[signature][](.html)</code></pre>
-<h4 id="header">Header</h4>
-<p>Shaarli only allow one hash algorithm, so the header will always be the same:</p>
-<div class="sourceCode"><pre class="sourceCode json"><code class="sourceCode json"><span class="fu">{</span>
-    <span class="dt">&quot;typ&quot;</span><span class="fu">:</span> <span class="st">&quot;JWT&quot;</span><span class="fu">,</span>
-    <span class="dt">&quot;alg&quot;</span><span class="fu">:</span> <span class="st">&quot;HS512&quot;</span>
-<span class="fu">}</span></code></pre></div>
-<p>Encoded in base64, it gives:</p>
-<pre><code>ewogICAgICAgICJ0eXAiOiAiSldUIiwKICAgICAgICAiYWxnIjogIkhTNTEyIgogICAgfQ==</code></pre>
-<h4 id="payload">Payload</h4>
-<p><strong>Validity duration</strong></p>
-<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>
-<div class="sourceCode"><pre class="sourceCode json"><code class="sourceCode json"><span class="fu">{</span>
-    <span class="dt">&quot;iat&quot;</span><span class="fu">:</span> <span class="dv">1468663519</span>
-<span class="fu">}</span></code></pre></div>
-<p>See <a href="https://tools.ietf.org/html/rfc7519#section-4.1.6">RFC reference</a>.<a href=".html"></a></p>
-<h4 id="signature">Signature</h4>
-<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>
-<p>Signature example with PHP:</p>
-<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">&#39;.&#39;</span> . <span class="fu">base64_encode</span><span class="ot">(</span><span class="kw">$payload</span><span class="ot">);</span>
-<span class="kw">$signature</span> = <span class="fu">hash_hmac</span><span class="ot">(</span><span class="st">&#39;sha512&#39;</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>
-<h3 id="complete-example">Complete example</h3>
-<h4 id="php">PHP</h4>
-<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> {
-    <span class="kw">$header</span> = <span class="fu">base64_encode</span><span class="ot">(</span><span class="st">&#39;{</span>
-<span class="st">        &quot;typ&quot;: &quot;JWT&quot;,</span>
-<span class="st">        &quot;alg&quot;: &quot;HS512&quot;</span>
-<span class="st">    }&#39;</span><span class="ot">);</span>
-    <span class="kw">$payload</span> = <span class="fu">base64_encode</span><span class="ot">(</span><span class="st">&#39;{</span>
-<span class="st">        &quot;iat&quot;: &#39;</span>. <span class="fu">time</span><span class="ot">()</span> .<span class="st">&#39;</span>
-<span class="st">    }&#39;</span><span class="ot">);</span>
-    <span class="kw">$signature</span> = <span class="fu">hash_hmac</span><span class="ot">(</span><span class="st">&#39;sha512&#39;</span><span class="ot">,</span> <span class="kw">$header</span> .<span class="st">&#39;.&#39;</span>. <span class="kw">$payload</span> <span class="ot">,</span> <span class="kw">$secret</span><span class="ot">);</span>
-    <span class="kw">return</span> <span class="kw">$header</span> .<span class="st">&#39;.&#39;</span>. <span class="kw">$payload</span> .<span class="st">&#39;.&#39;</span>. <span class="kw">$signature</span><span class="ot">;</span>
-}
-
-<span class="kw">$secret</span> = <span class="st">&#39;mysecret&#39;</span><span class="ot">;</span>
-<span class="kw">$token</span> = generateToken<span class="ot">(</span><span class="kw">$secret</span><span class="ot">);</span>
-<span class="fu">echo</span> <span class="kw">$token</span><span class="ot">;</span></code></pre></div>
-<blockquote>
-<p><code>ewogICAgICAgICJ0eXAiOiAiSldUIiwKICAgICAgICAiYWxnIjogIkhTNTEyIgogICAgfQ==.ewogICAgICAgICJpYXQiOiAxNDY4NjY3MDQ3CiAgICB9.1d2c54fa947daf594fdbf7591796195652c8bc63bffad7f6a6db2a41c313f495a542cbfb595acade79e83f3810d709b4251d7b940bbc10b531a6e6134af63a68</code></p>
-</blockquote>
-<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>
-    <span class="st">&#39;http&#39;</span> =&gt; <span class="ot">[[](</span>.html<span class="ot">)</span>
-        <span class="st">&#39;method&#39;</span> =&gt; <span class="st">&#39;GET&#39;</span><span class="ot">,</span>
-        <span class="st">&#39;jwt&#39;</span> =&gt; <span class="kw">$token</span><span class="ot">,</span>
-    <span class="ot">],</span>
-<span class="ot">];</span>
-<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>
-<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>
-</body>
-</html>

+ 0 - 99
doc/RSS-feeds.html

@@ -1,99 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – RSS feeds</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="rss-feeds">RSS feeds</h1>
-<h3 id="feeds-options">Feeds options</h3>
-<p>Feeds are available in ATOM with <code>?do=atom</code> and RSS with <code>do=RSS</code>.</p>
-<p>Options:</p>
-<ul>
-<li>You can use <code>permalinks</code> in the feed URL to get permalink to Shaares instead of direct link to shaared URL.
-<ul>
-<li>E.G. <code>https://my.shaarli.domain/?do=atom&amp;permalinks</code>.</li>
-</ul></li>
-<li>You can use <code>nb</code> parameter in the feed URL to specify the number of Shaares you want in a feed (default if not specified: <code>50</code>). The keyword <code>all</code> is available if you want everything.
-<ul>
-<li><code>https://my.shaarli.domain/?do=atom&amp;permalinks&amp;nb=42</code></li>
-<li><code>https://my.shaarli.domain/?do=atom&amp;permalinks&amp;nb=all</code></li>
-</ul></li>
-</ul>
-<h3 id="rss-feeds-or-picture-wall-for-a-specific-searchtag">RSS Feeds or Picture Wall for a specific search/tag</h3>
-<p>It is possible to filter RSS/ATOM feeds and Picture Wall on a Shaarli to <strong>only display results of a specific search, or for a specific tag</strong>.</p>
-<p>For example, if you want to subscribe only to links tagged <code>photography</code>:</p>
-<ul>
-<li>Go to the desired Shaarli instance.</li>
-<li>Search for the <code>photography</code> tag in the <em>Filter by tag</em> box. Links tagged <code>photography</code> are displayed.</li>
-<li>Click on the <code>RSS Feed</code> button.</li>
-<li>You are presented with an RSS feed showing only these links. Subscribe to it to receive only updates with this tag.</li>
-<li>The same method <strong>also works for a full-text search</strong> (<em>Search</em> box) <strong>and for the Picture Wall</strong> (want to only see pictures about <code>nature</code>?)</li>
-<li>You can also build the URLs manually:
-<ul>
-<li><code>https://my.shaarli.domain/?do=rss&amp;searchtags=nature</code></li>
-<li><code>https://my.shaarli.domain/links/?do=picwall&amp;searchterm=poney</code></li>
-</ul></li>
-</ul>
-<p><embed src="(images/rss-filter-1.png)-!.html" />(images/rss-filter-2.png)</p>
-</body>
-</html>

+ 0 - 224
doc/Release-Shaarli.html

@@ -1,224 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Release Shaarli</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="release-shaarli">Release Shaarli</h1>
-<p>See <a href="http://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Tagging-Your-Releases">Git - Maintaining a project - Tagging your [](.html)<br />
-releases</a>.</p>
-<h2 id="prerequisites">Prerequisites</h2>
-<p>This guide assumes that you have:</p>
-<ul>
-<li>a GPG key matching your GitHub authentication credentials
-<ul>
-<li>i.e., the email address identified by the GPG key is the same as the one in your <code>~/.gitconfig</code></li>
-</ul></li>
-<li>a GitHub fork of Shaarli</li>
-<li>a local clone of your Shaarli fork, with the following remotes:
-<ul>
-<li><code>origin</code> pointing to your GitHub fork</li>
-<li><code>upstream</code> pointing to the main Shaarli repository</li>
-</ul></li>
-<li>maintainer permissions on the main Shaarli repository, to:
-<ul>
-<li>push the signed tag</li>
-<li>create a new release</li>
-</ul></li>
-<li><a href="https://getcomposer.org/">Composer</a> and <a href="http://pandoc.org/">Pandoc</a> need to be installed<a href=".html"></a></li>
-</ul>
-<h2 id="github-release-draft-and-changelog.md">GitHub release draft and <code>CHANGELOG.md</code></h2>
-<p>See <a href="http://keepachangelog.com/en/0.3.0/" class="uri">http://keepachangelog.com/en/0.3.0/</a> for changelog formatting.</p>
-<h3 id="github-release-draft">GitHub release draft</h3>
-<p>GitHub allows drafting the release note for the upcoming release, from the <a href="https://github.com/shaarli/Shaarli/releases">Releases</a> page. This way, the release note can be drafted while contributions are merged to <code>master</code>.<a href=".html"></a></p>
-<h3 id="changelog.md"><code>CHANGELOG.md</code></h3>
-<p>This file should contain the same information as the release note draft for the upcoming version.</p>
-<p>Update it to:</p>
-<ul>
-<li>add new entries (additions, fixes, etc.)</li>
-<li>mark the current version as released by setting its date and link</li>
-<li>add a new section for the future unreleased version</li>
-</ul>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">cd</span> /path/to/shaarli
-
-$ <span class="fu">nano</span> CHANGELOG.md
-
-[<span class="ex">...</span>][](.html)
-<span class="co">## vA.B.C - UNRELEASED</span>
-<span class="ex">TBA</span>
-
-<span class="co">## [vX.Y.Z](https://github.com/shaarli/Shaarli/releases/tag/vX.Y.Z) - YYYY-MM-DD[](.html)</span>
-[<span class="ex">...</span>][](.html)</code></pre></div>
-<h2 id="increment-the-version-code-create-and-push-a-signed-tag">Increment the version code, create and push a signed tag</h2>
-<h3 id="bump-shaarlis-version">Bump Shaarli's version</h3>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">cd</span> /path/to/shaarli
-
-<span class="co"># create a new branch</span>
-$ <span class="fu">git</span> fetch upstream
-$ <span class="fu">git</span> checkout upstream/master -b v0.5.0
-
-<span class="co"># bump the version number</span>
-$ <span class="ex">vim</span> index.php shaarli_version.php
-
-<span class="co"># rebuild the documentation from the wiki</span>
-$ <span class="fu">make</span> htmldoc
-
-<span class="co"># commit the changes</span>
-$ <span class="fu">git</span> add index.php shaarli_version.php doc
-$ <span class="fu">git</span> commit -s -m <span class="st">&quot;Bump version to v0.5.0&quot;</span>
-
-<span class="co"># push the commit on your GitHub fork</span>
-$ <span class="fu">git</span> push origin v0.5.0</code></pre></div>
-<h3 id="create-and-merge-a-pull-request">Create and merge a Pull Request</h3>
-<p>This one is pretty straightforward ;-)</p>
-<h3 id="create-and-push-a-signed-tag">Create and push a signed tag</h3>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># update your local copy</span>
-$ <span class="fu">git</span> checkout master
-$ <span class="fu">git</span> fetch upstream
-$ <span class="fu">git</span> pull upstream master
-
-<span class="co"># create a signed tag</span>
-$ <span class="fu">git</span> tag -s -m <span class="st">&quot;Release v0.5.0&quot;</span> v0.5.0
-
-<span class="co"># push it to &quot;upstream&quot;</span>
-$ <span class="fu">git</span> push --tags upstream</code></pre></div>
-<h3 id="verify-a-signed-tag">Verify a signed tag</h3>
-<p><a href="https://github.com/shaarli/Shaarli/releases/tag/v0.5.0"><code>v0.5.0</code></a> is the first GPG-signed tag pushed on the Community Shaarli.<a href=".html"></a></p>
-<p>Let's have a look at its signature!</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">cd</span> /path/to/shaarli
-$ <span class="fu">git</span> fetch upstream
-
-<span class="co"># get the SHA1 reference of the tag</span>
-$ <span class="fu">git</span> show-ref tags/v0.5.0
-<span class="ex">f7762cf803f03f5caf4b8078359a63783d0090c1</span> refs/tags/v0.5.0
-
-<span class="co"># verify the tag signature information</span>
-$ <span class="fu">git</span> verify-tag f7762cf803f03f5caf4b8078359a63783d0090c1
-<span class="ex">gpg</span>: Signature made Thu 30 Jul 2015 11:46:34 CEST using RSA key ID 4100DF6F
-<span class="ex">gpg</span>: Good signature from <span class="st">&quot;VirtualTam &lt;virtualtam@flibidi.net&gt;&quot;</span> [ultimate][](.html)</code></pre></div>
-<h2 id="publish-the-github-release">Publish the GitHub release</h2>
-<h3 id="update-release-badges">Update release badges</h3>
-<p>Update <code>README.md</code> so version badges display and point to the newly released Shaarli version(s).</p>
-<h3 id="create-a-github-release-from-a-git-tag">Create a GitHub release from a Git tag</h3>
-<p>From the previously drafted release:</p>
-<ul>
-<li>edit the release notes (if needed)</li>
-<li>specify the appropriate Git tag</li>
-<li>publish the release</li>
-<li>profit!</li>
-</ul>
-<h3 id="generate-and-upload-all-in-one-release-archives">Generate and upload all-in-one release archives</h3>
-<p>Users with a shared hosting may have:</p>
-<ul>
-<li>no SSH access</li>
-<li>no possibility to install PHP packages or server extensions</li>
-<li>no possibility to run scripts</li>
-</ul>
-<p>To ease Shaarli installations, it is possible to generate and upload additional release archives,<br />
-that will contain Shaarli code plus all required third-party libraries:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">make</span> release_archive</code></pre></div>
-<p>This will create the following archives:</p>
-<ul>
-<li><code>shaarli-vX.Y.Z-full.tar</code></li>
-<li><code>shaarli-vX.Y.Z-full.zip</code></li>
-</ul>
-<p>The archives need to be manually uploaded on the previously created GitHub release.</p>
-</body>
-</html>

+ 0 - 135
doc/Security.html

@@ -1,135 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Security</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="security">Security</h1>
-<h2 id="client-browser">Client browser</h2>
-<ul>
-<li>Shaarli relies on <code>HTTP_REFERER</code> for some functions (like redirects and clicking on tags). If you have disabled or masqueraded <code>HTTP_REFERER</code> in your browser, some features of Shaarli may not work</li>
-</ul>
-<h2 id="php">PHP</h2>
-<ul>
-<li><code>magic_quotes</code> is an horrible option of PHP which is often activated on servers. No serious developer should rely on this horror to secure their code against SQL injections. You should disable it (and Shaarli expects this option to be disabled). Nevertheless, I have added code to cope with <code>magic_quotes</code> on, so you should not be bothered even on crappy hosts.</li>
-</ul>
-<h2 id="server-and-sessions">Server and sessions</h2>
-<ul>
-<li>Directories are protected using <code>.htaccess</code> files</li>
-<li>Forms are protected against XSRF (Cross-site requests forgery):</li>
-<li>Forms which act on data (save,delete…) contain a token generated by the server.</li>
-<li>Any posted form which does not contain a valid token is rejected.</li>
-<li>Any token can only be used once.</li>
-<li>Tokens are attached to the session and cannot be reused in another session.</li>
-<li>Sessions automatically expire after 60 minutes.</li>
-<li>Sessions are protected against hijacking: the session ID cannot be used from a different IP address.</li>
-</ul>
-<h2 id="shaarli-datastore-and-configuration">Shaarli datastore and configuration</h2>
-<ul>
-<li>The password is salted, hashed and stored in the data subdirectory, in a PHP file, and protected by htaccess. Even if the webserver does not support htaccess, the hash is not readable by URL. Even if the .php file is stolen, the password cannot deduced from the hash. The salt prevents rainbow-tables attacks.</li>
-<li>Links are stored as an associative array which is serialized, compressed (with deflate), base64-encoded and saved as a comment in a <code>.php</code> file.</li>
-<li>Even if the server does not support <code>.htaccess</code> files, the data file will still not be readable by URL.</li>
-<li><p>The database looks like this:</p>
-<div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="kw">&lt;?php</span> <span class="co">/* zP1ZjxxJtiYIvvevEPJ2lDOaLrZv7o...</span>
-<span class="co">...ka7gaco/Z+TFXM2i7BlfMf8qxpaSSYfKlvqv/x8= */</span> <span class="kw">?&gt;</span></code></pre></div></li>
-<li><p>Small hashes are used to make a link to an entry in Shaarli. They are unique. In fact, the date of the items (eg. <code>20110923_150523</code>) is hashed with CRC32, then converted to base64 and some characters are replaced. They are always 6 characters longs and use only <code>A-Z a-z 0-9 - _</code> and <code>@</code>.</p></li>
-</ul>
-</body>
-</html>

+ 0 - 459
doc/Server-configuration.html

@@ -1,459 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Server configuration</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="server-configuration">Server configuration</h1>
-<p><em>Example virtual host configurations for popular web servers</em></p>
-<ul>
-<li><a href="#apache">Apache</a><a href=".html"></a></li>
-<li><a href="#nginx">Nginx</a><a href=".html"></a></li>
-</ul>
-<h2 id="prerequisites">Prerequisites</h2>
-<h3 id="shaarli">Shaarli</h3>
-<ul>
-<li>Shaarli is installed in a directory readable/writeable by the user</li>
-<li>the correct read/write permissions have been granted to the web server <em>user and/or group</em></li>
-<li>for HTTPS / SSL:</li>
-<li>a key pair (public, private) and a certificate have been generated</li>
-<li>the appropriate server SSL extension is installed and active</li>
-</ul>
-<h3 id="https-tls-and-self-signed-certificates">HTTPS, TLS and self-signed certificates</h3>
-<p>Related guides:</p>
-<ul>
-<li><a href="http://www.xenocafe.com/tutorials/linux/centos/openssl/self_signed_certificates/index.php">How to Create Self-Signed SSL Certificates with OpenSSL</a><a href=".html"></a></li>
-<li><a href="https://workaround.org/certificate-authority">How do I create my own Certificate Authority?</a><a href=".html"></a></li>
-<li>Generate a self-signed certificate (will trigger browser warnings) with apache2: <code>make-ssl-cert generate-default-snakeoil --force-overwrite</code> will create <code>/etc/ssl/certs/ssl-cert-snakeoil.pem</code> and <code>/etc/ssl/private/ssl-cert-snakeoil.key</code></li>
-</ul>
-<h3 id="proxies">Proxies</h3>
-<p>If Shaarli is served behind a proxy (i.e. there is a proxy server between clients and the web server hosting Shaarli), please refer to the proxy server documentation for proper configuration. In particular, you have to ensure that the following server variables are properly set:</p>
-<ul>
-<li><code>X-Forwarded-Proto</code>;</li>
-<li><code>X-Forwarded-Host</code>;</li>
-<li><code>X-Forwarded-For</code>.</li>
-</ul>
-<p>See also <a href="https://github.com/shaarli/Shaarli/issues?utf8=%E2%9C%93&amp;q=label%3Aproxy+">proxy-related</a> issues.<a href=".html"></a></p>
-<h2 id="apache">Apache</h2>
-<h3 id="minimal">Minimal</h3>
-<div class="sourceCode"><pre class="sourceCode apache"><code class="sourceCode apache"><span class="fu">&lt;VirtualHost</span><span class="at"> *:80</span><span class="fu">&gt;</span>
-    ServerName<span class="st">   shaarli.my-domain.org</span>
-    DocumentRoot<span class="st"> /absolute/path/to/shaarli/</span>
-<span class="fu">&lt;/VirtualHost&gt;</span></code></pre></div>
-<h3 id="debug---log-all-the-things">Debug - Log all the things!</h3>
-<p>This configuration will log both Apache and PHP errors, which may prove useful to identify server configuration errors.</p>
-<p>See:</p>
-<ul>
-<li><a href="http://stackoverflow.com/q/176">Apache/PHP - error log per VirtualHost</a> (StackOverflow)<a href=".html"></a></li>
-<li><a href="https://ma.ttias.be/php-php_value-vs-php_admin_value-and-the-use-of-php_flag-explained/">PHP: php_value vs php_admin_value and the use of php_flag explained</a><a href=".html"></a></li>
-</ul>
-<div class="sourceCode"><pre class="sourceCode apache"><code class="sourceCode apache"><span class="fu">&lt;VirtualHost</span><span class="at"> *:80</span><span class="fu">&gt;</span>
-    ServerName<span class="st">   shaarli.my-domain.org</span>
-    DocumentRoot<span class="st"> /absolute/path/to/shaarli/</span>
-
-    <span class="ex">LogLevel</span><span class="ch">  </span><span class="kw">warn</span>
-    ErrorLog<span class="st">  /var/log/apache2/shaarli-error.log</span>
-    CustomLog<span class="st"> /var/log/apache2/shaarli-access.log combined</span>
-
-    php_flag  log_errors on
-    php_flag  display_errors on
-    php_value error_reporting 2147483647
-    php_value error_log /var/log/apache2/shaarli-php-error.log
-<span class="fu">&lt;/VirtualHost&gt;</span></code></pre></div>
-<h3 id="standard---keep-access-and-error-logs">Standard - Keep access and error logs</h3>
-<div class="sourceCode"><pre class="sourceCode apache"><code class="sourceCode apache"><span class="fu">&lt;VirtualHost</span><span class="at"> *:80</span><span class="fu">&gt;</span>
-    ServerName<span class="st">   shaarli.my-domain.org</span>
-    DocumentRoot<span class="st"> /absolute/path/to/shaarli/</span>
-
-    <span class="ex">LogLevel</span><span class="ch">  </span><span class="kw">warn</span>
-    ErrorLog<span class="st">  /var/log/apache2/shaarli-error.log</span>
-    CustomLog<span class="st"> /var/log/apache2/shaarli-access.log combined</span>
-<span class="fu">&lt;/VirtualHost&gt;</span></code></pre></div>
-<h3 id="paranoid---redirect-http-80-to-https-443">Paranoid - Redirect HTTP (:80) to HTTPS (:443)</h3>
-<p>See <a href="https://wiki.mozilla.org/Security/Server_Side_TLS#Apache">Server-side TLS</a> (Mozilla).<a href=".html"></a></p>
-<div class="sourceCode"><pre class="sourceCode apache"><code class="sourceCode apache"><span class="fu">&lt;VirtualHost</span><span class="at"> *:443</span><span class="fu">&gt;</span>
-    ServerName<span class="st">   shaarli.my-domain.org</span>
-    DocumentRoot<span class="st"> /absolute/path/to/shaarli/</span>
-
-    <span class="ex">SSLEngine</span><span class="ch">             </span><span class="kw">on</span>
-    SSLCertificateFile<span class="st">    /absolute/path/to/the/website/certificate.pem</span>
-    SSLCertificateKeyFile<span class="st"> /absolute/path/to/the/website/key.key</span>
-
-    <span class="fu">&lt;Directory</span><span class="at"> /absolute/path/to/shaarli/</span><span class="fu">&gt;</span>
-        <span class="ex">AllowOverride</span><span class="ch"> </span><span class="kw">All</span>
-        <span class="ex">Options</span><span class="ch"> </span><span class="kw">Indexes</span><span class="ch"> </span><span class="kw">FollowSymLinks</span><span class="ch"> </span><span class="kw">MultiViews</span>
-        <span class="ex">Order</span><span class="ch"> </span><span class="kw">allow,deny</span>
-        allow<span class="st"> from all</span>
-    <span class="fu">&lt;/Directory&gt;</span>
-
-    <span class="ex">LogLevel</span><span class="ch">  </span><span class="kw">warn</span>
-    ErrorLog<span class="st">  /var/log/apache2/shaarli-error.log</span>
-    CustomLog<span class="st"> /var/log/apache2/shaarli-access.log combined</span>
-<span class="fu">&lt;/VirtualHost&gt;</span>
-<span class="fu">&lt;VirtualHost</span><span class="at"> *:80</span><span class="fu">&gt;</span>
-    ServerName<span class="st">   shaarli.my-domain.org</span>
-    Redirect<span class="st"> 301 / https://shaarli.my-domain.org</span>
-
-    <span class="ex">LogLevel</span><span class="ch">  </span><span class="kw">warn</span>
-    ErrorLog<span class="st">  /var/log/apache2/shaarli-error.log</span>
-    CustomLog<span class="st"> /var/log/apache2/shaarli-access.log combined</span>
-<span class="fu">&lt;/VirtualHost&gt;</span></code></pre></div>
-<h3 id="htaccess">.htaccess</h3>
-<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>
-<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>
-<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>
-<h2 id="lighthttpd">LightHttpd</h2>
-<h2 id="nginx">Nginx</h2>
-<h3 id="foreword">Foreword</h3>
-<p>Nginx does not natively interpret PHP scripts; to this effect, we will run a <a href="https://en.wikipedia.org/wiki/FastCGI">FastCGI</a> service, to which Nginx's FastCGI module will proxy all requests to PHP resources.<a href=".html"></a></p>
-<p>Required packages:</p>
-<ul>
-<li><a href="http://nginx.org">nginx</a><a href=".html"></a></li>
-<li><a href="http://php-fpm.org">php-fpm</a> - PHP FastCGI Process Manager<a href=".html"></a></li>
-</ul>
-<p>Official documentation:</p>
-<ul>
-<li><a href="http://nginx.org/en/docs/beginners_guide.html">Beginner's guide</a><a href=".html"></a></li>
-<li><a href="http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html">ngx_http_fastcgi_module</a><a href=".html"></a></li>
-<li><a href="http://wiki.nginx.org/Pitfalls">Pitfalls</a><a href=".html"></a></li>
-</ul>
-<p>Community resources:</p>
-<ul>
-<li><a href="https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx">Server-side TLS (Nginx)</a> (Mozilla)<a href=".html"></a></li>
-<li><a href="http://kbeezie.com/nginx-configuration-examples/">PHP configuration examples</a> (Karl Blessing)<a href=".html"></a></li>
-</ul>
-<h3 id="common-setup">Common setup</h3>
-<p>Once Nginx and PHP-FPM are installed, we need to ensure:</p>
-<ul>
-<li>Nginx and PHP-FPM are running using the <em>same user and group</em></li>
-<li>both these user and group have
-<ul>
-<li><code>read</code> permissions for Shaarli resources</li>
-<li><code>execute</code> permissions for Shaarli directories <em>AND</em> their parent directories</li>
-</ul></li>
-</ul>
-<p>On a production server:</p>
-<ul>
-<li><code>user:group</code> will likely be <code>http:http</code>, <code>www:www</code> or <code>www-data:www-data</code></li>
-<li>files will be located under <code>/var/www</code>, <code>/var/http</code> or <code>/usr/share/nginx</code></li>
-</ul>
-<p>On a development server:</p>
-<ul>
-<li>files may be located in a user's home directory</li>
-<li>in this case, make sure both Nginx and PHP-FPM are running as the local user/group!</li>
-</ul>
-<p>For all following configuration examples, this user/group pair will be used:</p>
-<ul>
-<li><code>user:group = john:users</code>,</li>
-</ul>
-<p>which corresponds to the following service configuration:</p>
-<div class="sourceCode"><pre class="sourceCode ini"><code class="sourceCode ini"><span class="co">; /etc/php/php-fpm.conf</span>
-<span class="dt">user </span><span class="ot">=</span><span class="st"> john</span>
-<span class="dt">group </span><span class="ot">=</span><span class="st"> users</span>
-
-<span class="kw">[...][]</span><span class="dt">(.html)</span>
-<span class="dt">listen.owner </span><span class="ot">=</span><span class="st"> john</span>
-<span class="dt">listen.group </span><span class="ot">=</span><span class="st"> users</span></code></pre></div>
-<pre class="nginx"><code># /etc/nginx/nginx.conf
-user john users;
-
-http {
-    [...][](.html)
-}</code></pre>
-<h3 id="optional-increase-the-maximum-file-upload-size">(Optional) Increase the maximum file upload size</h3>
-<p>Some bookmark dumps generated by web browsers can be <em>huge</em> due to the presence of Base64-encoded images and favicons, as well as extra verbosity when nesting links in (sub-)folders.</p>
-<p>To increase upload size, you will need to modify both nginx and PHP configuration:</p>
-<pre class="nginx"><code># /etc/nginx/nginx.conf
-
-http {
-    [...][](.html)
-
-    client_max_body_size 10m;
-
-    [...][](.html)
-}</code></pre>
-<div class="sourceCode"><pre class="sourceCode ini"><code class="sourceCode ini"><span class="co"># /etc/php5/fpm/php.ini</span>
-
-<span class="kw">[...][]</span><span class="dt">(.html)</span>
-<span class="dt">post_max_size </span><span class="ot">=</span><span class="st"> 10M</span>
-<span class="kw">[...][]</span><span class="dt">(.html)</span>
-<span class="dt">upload_max_filesize </span><span class="ot">=</span><span class="st"> 10M</span></code></pre></div>
-<h3 id="minimal-1">Minimal</h3>
-<p><em>WARNING: Use for development only!</em></p>
-<pre class="nginx"><code>user john users;
-worker_processes  1;
-events {
-    worker_connections  1024;
-}
-
-http {
-    include            mime.types;
-    default_type       application/octet-stream;
-    keepalive_timeout  20;
-
-    index index.html index.php;
-
-    server {
-        listen       80;
-        server_name  localhost;
-        root         /home/john/web;
-
-        access_log  /var/log/nginx/access.log;
-        error_log   /var/log/nginx/error.log;
-
-        location /shaarli/ {
-            try_files $uri /shaarli/index.php$is_args$args;
-            access_log  /var/log/nginx/shaarli.access.log;
-            error_log   /var/log/nginx/shaarli.error.log;
-        }
-
-        location ~ (index)\.php$ {
-            try_files $uri =404;
-            fastcgi_split_path_info ^(.+\.php)(/.+)$;
-            fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
-            fastcgi_index  index.php;
-            include        fastcgi.conf;
-        }
-    }
-}</code></pre>
-<h3 id="modular">Modular</h3>
-<p>The previous setup is sufficient for development purposes, but has several major caveats:</p>
-<ul>
-<li>every content that does not match the PHP rule will be sent to client browsers:
-<ul>
-<li>dotfiles - in our case, <code>.htaccess</code></li>
-<li>temporary files, e.g. Vim or Emacs files: <code>index.php~</code></li>
-</ul></li>
-<li>asset / static resource caching is not optimized</li>
-<li>if serving several PHP sites, there will be a lot of duplication: <code>location /shaarli/</code>, <code>location /mysite/</code>, etc.</li>
-</ul>
-<p>To solve this, we will split Nginx configuration in several parts, that will be included when needed:</p>
-<pre class="nginx"><code># /etc/nginx/deny.conf
-location ~ /\. {
-    # deny access to dotfiles
-    access_log off;
-    log_not_found off;
-    deny all;
-}
-
-location ~ ~$ {
-    # deny access to temp editor files, e.g. &quot;script.php~&quot;
-    access_log off;
-    log_not_found off;
-    deny all;
-}</code></pre>
-<pre class="nginx"><code># /etc/nginx/php.conf
-location ~ (index)\.php$ {
-    # Slim - split URL path into (script_filename, path_info)
-    try_files $uri =404;
-    fastcgi_split_path_info ^(.+\.php)(/.+)$;
-
-    # filter and proxy PHP requests to PHP-FPM
-    fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
-    fastcgi_index  index.php;
-    include        fastcgi.conf;
-}
-
-location ~ \.php$ {
-    # deny access to all other PHP scripts
-    deny all;
-}</code></pre>
-<pre class="nginx"><code># /etc/nginx/static_assets.conf
-location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
-    expires    max;
-    add_header Pragma public;
-    add_header Cache-Control &quot;public, must-revalidate, proxy-revalidate&quot;;
-}</code></pre>
-<pre class="nginx"><code># /etc/nginx/nginx.conf
-[...][](.html)
-
-http {
-    [...][](.html)
-
-    root        /home/john/web;
-    access_log  /var/log/nginx/access.log;
-    error_log   /var/log/nginx/error.log;
-
-    server {
-        # virtual host for a first domain
-        listen       80;
-        server_name  my.first.domain.org;
-
-        location /shaarli/ {
-            # Slim - rewrite URLs
-            try_files $uri /shaarli/index.php$is_args$args;
-
-            access_log  /var/log/nginx/shaarli.access.log;
-            error_log   /var/log/nginx/shaarli.error.log;
-        }
-
-        location = /shaarli/favicon.ico {
-            # serve the Shaarli favicon from its custom location
-            alias /var/www/shaarli/images/favicon.ico;
-        }
-
-        include deny.conf;
-        include static_assets.conf;
-        include php.conf;
-    }
-
-    server {
-        # virtual host for a second domain
-        listen       80;
-        server_name  second.domain.com;
-
-        location /minigal/ {
-            access_log  /var/log/nginx/minigal.access.log;
-            error_log   /var/log/nginx/minigal.error.log;
-        }
-
-        include deny.conf;
-        include static_assets.conf;
-        include php.conf;
-    }
-}</code></pre>
-<h3 id="redirect-http-to-https">Redirect HTTP to HTTPS</h3>
-<p>Assuming you have generated a (self-signed) key and certificate, and they are located under <code>/home/john/ssl/localhost.{key,crt}</code>, it is pretty straightforward to set an HTTP (:80) to HTTPS (:443) redirection to force SSL/TLS usage.</p>
-<pre class="nginx"><code># /etc/nginx/nginx.conf
-[...][](.html)
-
-http {
-    [...][](.html)
-
-    index index.html index.php;
-
-    root        /home/john/web;
-    access_log  /var/log/nginx/access.log;
-    error_log   /var/log/nginx/error.log;
-
-    server {
-        listen       80;
-        server_name  localhost;
-
-        return 301 https://localhost$request_uri;
-    }
-
-    server {
-        listen       443 ssl;
-        server_name  localhost;
-
-        ssl_certificate      /home/john/ssl/localhost.crt;
-        ssl_certificate_key  /home/john/ssl/localhost.key;
-
-        location /shaarli/ {
-            # Slim - rewrite URLs
-            try_files $uri /index.php$is_args$args;
-
-            access_log  /var/log/nginx/shaarli.access.log;
-            error_log   /var/log/nginx/shaarli.error.log;
-        }
-
-        location = /shaarli/favicon.ico {
-            # serve the Shaarli favicon from its custom location
-            alias /var/www/shaarli/images/favicon.ico;
-        }
-
-        include deny.conf;
-        include static_assets.conf;
-        include php.conf;
-    }
-}</code></pre>
-</body>
-</html>

+ 0 - 195
doc/Server-requirements.html

@@ -1,195 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Server requirements</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="server-requirements">Server requirements</h1>
-<h2 id="php">PHP</h2>
-<h3 id="release-information">Release information</h3>
-<ul>
-<li><a href="http://php.net/supported-versions.php">PHP: Supported versions</a><a href=".html"></a></li>
-<li><a href="http://php.net/eol.php">PHP: Unsupported versions</a> <em>(EOL - End Of Life)</em><a href=".html"></a></li>
-<li><a href="http://php.net/ChangeLog-7.php">PHP 7 Changelog</a><a href=".html"></a></li>
-<li><a href="http://php.net/ChangeLog-5.php">PHP 5 Changelog</a><a href=".html"></a></li>
-<li><a href="https://bugs.php.net/">PHP: Bugs</a><a href=".html"></a></li>
-</ul>
-<h3 id="supported-versions">Supported versions</h3>
-<table>
-<thead>
-<tr class="header">
-<th style="text-align: center;">Version</th>
-<th style="text-align: center;">Status</th>
-<th style="text-align: center;">Shaarli compatibility</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td style="text-align: center;">7.1</td>
-<td style="text-align: center;">Supported (v0.9.x)</td>
-<td style="text-align: center;">✅</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">7.0</td>
-<td style="text-align: center;">Supported</td>
-<td style="text-align: center;">✅</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">5.6</td>
-<td style="text-align: center;">Supported</td>
-<td style="text-align: center;">✅</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">5.5</td>
-<td style="text-align: center;">EOL: 2016-07-10</td>
-<td style="text-align: center;">✅</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">5.4</td>
-<td style="text-align: center;">EOL: 2015-09-14</td>
-<td style="text-align: center;">✅ (up to Shaarli 0.8.x)</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">5.3</td>
-<td style="text-align: center;">EOL: 2014-08-14</td>
-<td style="text-align: center;">✅ (up to Shaarli 0.8.x)</td>
-</tr>
-</tbody>
-</table>
-<p>See also:</p>
-<ul>
-<li><a href="https://github.com/shaarli/Shaarli/blob/master/.travis.yml">Travis configuration</a><a href=".html"></a></li>
-</ul>
-<h3 id="dependency-management">Dependency management</h3>
-<p>Starting with Shaarli <code>v0.8.x</code>, <a href="https://getcomposer.org/">Composer</a> is used to resolve,<a href=".html"></a><br />
-download and install third-party PHP dependencies.</p>
-<table>
-<thead>
-<tr class="header">
-<th>Library</th>
-<th style="text-align: center;">Required?</th>
-<th>Usage</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td><a href="https://packagist.org/packages/shaarli/netscape-bookmark-parser"><code>shaarli/netscape-bookmark-parser</code></a></td>
-<td style="text-align: center;">All</td>
-<td>Import bookmarks from Netscape files<a href=".html"></a></td>
-</tr>
-<tr class="even">
-<td><a href="https://packagist.org/packages/erusev/parsedown"><code>erusev/parsedown</code></a></td>
-<td style="text-align: center;">All</td>
-<td>Parse MarkDown syntax for the MarkDown plugin<a href=".html"></a></td>
-</tr>
-<tr class="odd">
-<td><a href="https://packagist.org/packages/slim/slim"><code>slim/slim</code></a></td>
-<td style="text-align: center;">All</td>
-<td>Handle routes and middleware for the REST API<a href=".html"></a></td>
-</tr>
-</tbody>
-</table>
-<h3 id="extensions">Extensions</h3>
-<table style="width:19%;">
-<colgroup>
-<col style="width: 5%" />
-<col style="width: 8%" />
-<col style="width: 5%" />
-</colgroup>
-<thead>
-<tr class="header">
-<th>Extension</th>
-<th style="text-align: center;">Required?</th>
-<th>Usage</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td><a href="http://php.net/manual/en/book.openssl.php"><code>openssl</code></a></td>
-<td style="text-align: center;">All</td>
-<td>OpenSSL, HTTPS<a href=".html"></a></td>
-</tr>
-<tr class="even">
-<td><a href="http://php.net/manual/en/book.mbstring.php"><code>php-mbstring</code></a></td>
-<td style="text-align: center;">CentOS, Fedora, RHEL, Windows</td>
-<td>multibyte (Unicode) string support<a href=".html"></a></td>
-</tr>
-<tr class="odd">
-<td><a href="http://php.net/manual/en/book.image.php"><code>php-gd</code></a></td>
-<td style="text-align: center;">optional</td>
-<td>thumbnail resizing<a href=".html"></a></td>
-</tr>
-<tr class="even">
-<td><a href="http://php.net/manual/en/book.intl.php"><code>php-intl</code></a></td>
-<td style="text-align: center;">optional</td>
-<td>localized text sorting (e.g. <code>e-&gt;è-&gt;f</code>)<a href=".html"></a></td>
-</tr>
-<tr class="odd">
-<td><a href="http://php.net/manual/en/book.curl.php"><code>php-curl</code></a></td>
-<td style="text-align: center;">optional</td>
-<td>using cURL for fetching webpages and thumbnails in a more robust way<a href=".html"></a></td>
-</tr>
-</tbody>
-</table>
-</body>
-</html>

+ 0 - 175
doc/Server-security.html

@@ -1,175 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Server security</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="server-security">Server security</h1>
-<h2 id="php.ini">php.ini</h2>
-<p>PHP settings are defined in:</p>
-<ul>
-<li>a main configuration file, usually found under <code>/etc/php5/php.ini</code>; some distributions provide different configuration environments, e.g.
-<ul>
-<li><code>/etc/php5/php.ini</code> - used when running console scripts</li>
-<li><code>/etc/php5/apache2/php.ini</code> - used when a client requests PHP resources from Apache</li>
-<li><code>/etc/php5/php-fpm.conf</code> - used when PHP requests are proxied to PHP-FPM</li>
-</ul></li>
-<li>additional configuration files/entries, depending on the installed/enabled extensions:
-<ul>
-<li><code>/etc/php/conf.d/xdebug.ini</code></li>
-</ul></li>
-</ul>
-<h3 id="locate-.ini-files">Locate .ini files</h3>
-<h4 id="console-environment">Console environment</h4>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">php</span> --ini
-<span class="ex">Configuration</span> File (php.ini) <span class="ex">Path</span>: /etc/php
-<span class="ex">Loaded</span> Configuration File:         /etc/php/php.ini
-<span class="ex">Scan</span> for additional .ini files in: /etc/php/conf.d
-<span class="ex">Additional</span> .ini files parsed:      /etc/php/conf.d/xdebug.ini</code></pre></div>
-<h4 id="server-environment">Server environment</h4>
-<ul>
-<li>create a <code>phpinfo.php</code> script located in a path supported by the web server, e.g.
-<ul>
-<li>Apache (with user dirs enabled): <code>/home/myself/public_html/phpinfo.php</code></li>
-<li><code>/var/www/test/phpinfo.php</code></li>
-</ul></li>
-<li>make sure the script is readable by the web server user/group (usually, <code>www</code>, <code>www-data</code> or <code>httpd</code>)</li>
-<li>access the script from a web browser</li>
-<li><p>look at the <em>Loaded Configuration File</em> and <em>Scan this dir for additional .ini files</em> entries</p>
-<div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="kw">&lt;?php</span> <span class="fu">phpinfo</span><span class="ot">();</span> <span class="kw">?&gt;</span></code></pre></div></li>
-</ul>
-<h2 id="fail2ban">fail2ban</h2>
-<p><code>fail2ban</code> is an intrusion prevention framework that reads server (Apache, SSH, etc.) and uses <code>iptables</code> profiles to block brute-force attempts:</p>
-<ul>
-<li><a href="http://www.fail2ban.org/wiki/index.php/Main_Page">Official website</a><a href=".html"></a></li>
-<li><a href="https://github.com/fail2ban/fail2ban">Source code</a><a href=".html"></a></li>
-</ul>
-<h3 id="read-shaarli-logs-to-ban-ips">Read Shaarli logs to ban IPs</h3>
-<p>Example configuration:</p>
-<ul>
-<li>allow 3 login attempts per IP address</li>
-<li>after 3 failures, permanently ban the corresponding IP adddress</li>
-</ul>
-<p><code>/etc/fail2ban/jail.local</code></p>
-<div class="sourceCode"><pre class="sourceCode ini"><code class="sourceCode ini"><span class="kw">[shaarli-auth][]</span><span class="dt">(.html)</span>
-<span class="dt">enabled  </span><span class="ot">=</span><span class="st"> </span><span class="kw">true</span>
-<span class="dt">port     </span><span class="ot">=</span><span class="st"> https,http</span>
-<span class="dt">filter   </span><span class="ot">=</span><span class="st"> shaarli-auth</span>
-<span class="dt">logpath  </span><span class="ot">=</span><span class="st"> /var/www/path/to/shaarli/data/log.txt</span>
-<span class="dt">maxretry </span><span class="ot">=</span><span class="st"> </span><span class="dv">3</span>
-<span class="dt">bantime </span><span class="ot">=</span><span class="st"> -</span><span class="dv">1</span></code></pre></div>
-<p><code>/etc/fail2ban/filter.d/shaarli-auth.conf</code></p>
-<div class="sourceCode"><pre class="sourceCode ini"><code class="sourceCode ini"><span class="kw">[INCLUDES][]</span><span class="dt">(.html)</span>
-<span class="dt">before </span><span class="ot">=</span><span class="st"> common.conf</span>
-<span class="kw">[Definition][]</span><span class="dt">(.html)</span>
-<span class="dt">failregex </span><span class="ot">=</span><span class="st"> \s-\s&lt;HOST&gt;\s-\sLogin failed for user.*$</span>
-<span class="dt">ignoreregex </span><span class="ot">=</span><span class="st"> </span></code></pre></div>
-<h2 id="robots---restricting-search-engines-and-web-crawler-traffic">Robots - Restricting search engines and web crawler traffic</h2>
-<p>Creating a <code>robots.txt</code> with the following contents at the root of your Shaarli installation will prevent <em>honest</em> web crawlers from indexing each and every link and Daily page from a Shaarli instance, thus getting rid of a certain amount of unsollicited network traffic.</p>
-<pre><code>User-agent: *
-Disallow: /</code></pre>
-<p>See:</p>
-<ul>
-<li><a href="http://www.robotstxt.org/" class="uri">http://www.robotstxt.org/</a></li>
-<li><a href="http://www.robotstxt.org/robotstxt.html" class="uri">http://www.robotstxt.org/robotstxt.html</a></li>
-<li><a href="http://www.robotstxt.org/meta.html" class="uri">http://www.robotstxt.org/meta.html</a></li>
-</ul>
-</body>
-</html>

+ 0 - 298
doc/Shaarli-configuration.html

@@ -1,298 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Shaarli configuration</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="shaarli-configuration">Shaarli configuration</h1>
-<h1 id="shaarli-configuration-1">Shaarli configuration</h1>
-<h2 id="foreword">Foreword</h2>
-<p><strong>Do not edit configuration options in index.php! Your changes would be lost.</strong></p>
-<p>Once your Shaarli instance is installed, the file <code>data/config.json.php</code> is generated:</p>
-<ul>
-<li>it contains all settings in JSON format, and can be edited to customize values</li>
-<li>it defines which <a href="Plugin-System">plugins</a> are enabled<a href="(.html).html">(.html)</a></li>
-<li>its values override those defined in <code>index.php</code></li>
-<li>it is wrap in a PHP comment to prevent anyone accessing it, regardless of server configuration</li>
-</ul>
-<h2 id="file-and-directory-permissions">File and directory permissions</h2>
-<p>The server process running Shaarli must have:</p>
-<ul>
-<li><code>read</code> access to the following resources:
-<ul>
-<li>PHP scripts: <code>index.php</code>, <code>application/*.php</code>, <code>plugins/*.php</code></li>
-<li>3rd party PHP and Javascript libraries: <code>inc/*.php</code>, <code>inc/*.js</code></li>
-<li>static assets:
-<ul>
-<li>CSS stylesheets: <code>inc/*.css</code></li>
-<li><code>images/*</code></li>
-</ul></li>
-<li>RainTPL templates: <code>tpl/*.html</code></li>
-</ul></li>
-<li><code>read</code>, <code>write</code> and <code>execution</code> access to the following directories:
-<ul>
-<li><code>cache</code> - thumbnail cache</li>
-<li><code>data</code> - link data store, configuration options</li>
-<li><code>pagecache</code> - Atom/RSS feed cache</li>
-<li><code>tmp</code> - RainTPL page cache</li>
-</ul></li>
-</ul>
-<p>On a Linux distribution:</p>
-<ul>
-<li>the web server user will likely be <code>www</code> or <code>http</code> (for Apache2)</li>
-<li>it will be a member of a group of the same name: <code>www:www</code>, <code>http:http</code></li>
-<li>to give it access to Shaarli, either:
-<ul>
-<li>unzip Shaarli in the default web server location (usually <code>/var/www/</code>) and set the web server user as the owner</li>
-<li>put users in the same group as the web server, and set the appropriate access rights</li>
-</ul></li>
-<li>if you have a domain / subdomain to serve Shaarli, <a href="Server-configuration">configure the server</a> accordingly<a href="(.html).html">(.html)</a></li>
-</ul>
-<h2 id="configuration">Configuration</h2>
-<p>In <code>data/config.json.php</code>.</p>
-<p>See also <a href="Plugin-System.html">Plugin System</a>.<a href=".html"></a></p>
-<h3 id="credentials">Credentials</h3>
-<blockquote>
-<p>You shouldn't edit those.</p>
-</blockquote>
-<p><strong>login</strong>: Login username.<br />
-<strong>hash</strong>: Generated password hash.<br />
-<strong>salt</strong>: Password salt.</p>
-<h3 id="general">General</h3>
-<p><strong>title</strong>: Shaarli's instance title.<br />
-<strong>header_link</strong>: Link to the homepage.<br />
-<strong>links_per_page</strong>: Number of shaares displayed per page.<br />
-<strong>timezone</strong>: See <a href="http://php.net/manual/en/timezones.php">the list of supported timezones</a>. <a href=".html"></a><br />
-<strong>enabled_plugins</strong>: List of enabled plugins.</p>
-<h3 id="security">Security</h3>
-<p><strong>session_protection_disabled</strong>: Disable session cookie hijacking protection (not recommended).<br />
-It might be useful if your IP adress often changes.<br />
-<strong>ban_after</strong>: Failed login attempts before being IP banned.<br />
-<strong>ban_duration</strong>: IP ban duration in seconds.<br />
-<strong>open_shaarli</strong>: Anyone can add a new link while logged out if enabled.<br />
-<strong>trusted_proxies</strong>: List of trusted IP which won't be banned after failed login attemps. Useful if Shaarli is behind a reverse proxy.</p>
-<h3 id="resources">Resources</h3>
-<p><strong>data_dir</strong>: Data directory.<br />
-<strong>datastore</strong>: Shaarli's links database file path.<br />
-<strong>history</strong>: Shaarli's operation history file path.<br />
-<strong>updates</strong>: File path for the ran updates file.<br />
-<strong>log</strong>: Log file path.<br />
-<strong>update_check</strong>: Last update check file path.<br />
-<strong>raintpl_tpl</strong>: Templates directory.<br />
-<strong>raintpl_tmp</strong>: Template engine cache directory.<br />
-<strong>thumbnails_cache</strong>: Thumbnails cache directory.<br />
-<strong>page_cache</strong>: Shaarli's internal cache directory.<br />
-<strong>ban_file</strong>: Banned IP file path.</p>
-<h3 id="updates">Updates</h3>
-<p><strong>check_updates</strong>: Enable or disable update check to the git repository.<br />
-<strong>check_updates_branch</strong>: Git branch used to check updates (e.g. <code>stable</code> or <code>master</code>).<br />
-<strong>check_updates_interval</strong>: Look for new version every N seconds (default: every day).</p>
-<h3 id="privacy">Privacy</h3>
-<p><strong>default_private_links</strong>: Check the private checkbox by default for every new link.<br />
-<strong>hide_public_links</strong>: All links are hidden while logged out.<br />
-<strong>hide_timestamps</strong>: Timestamps are hidden.</p>
-<h3 id="feed">Feed</h3>
-<p><strong>rss_permalinks</strong>: Enable this to redirect RSS links to Shaarli's permalinks instead of shaared URL.<br />
-<strong>show_atom</strong>: Display ATOM feed button.</p>
-<h3 id="thumbnail">Thumbnail</h3>
-<p><strong>enable_thumbnails</strong>: Enable or disable thumbnail display.<br />
-<strong>enable_localcache</strong>: Enable or disable local cache.</p>
-<h3 id="redirector">Redirector</h3>
-<p><strong>url</strong>: Redirector URL, such as <code>anonym.to</code>.<br />
-<strong>encode_url</strong>: Enable this if the redirector needs encoded URL to work properly.</p>
-<h2 id="configuration-file-example">Configuration file example</h2>
-<div class="sourceCode"><pre class="sourceCode json"><code class="sourceCode json"><span class="er">&lt;?php</span> <span class="er">/*</span>
-<span class="fu">{</span>
-    <span class="dt">&quot;credentials&quot;</span><span class="fu">:</span> <span class="fu">{</span>
-        <span class="dt">&quot;login&quot;</span><span class="fu">:</span> <span class="st">&quot;&lt;login&gt;&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;hash&quot;</span><span class="fu">:</span> <span class="st">&quot;&lt;password hash&gt;&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;salt&quot;</span><span class="fu">:</span> <span class="st">&quot;&lt;password salt&gt;&quot;</span>
-    <span class="fu">},</span>
-    <span class="dt">&quot;security&quot;</span><span class="fu">:</span> <span class="fu">{</span>
-        <span class="dt">&quot;ban_after&quot;</span><span class="fu">:</span> <span class="dv">4</span><span class="fu">,</span>
-        <span class="dt">&quot;session_protection_disabled&quot;</span><span class="fu">:</span> <span class="kw">false</span><span class="fu">,</span>
-        <span class="dt">&quot;ban_duration&quot;</span><span class="fu">:</span> <span class="dv">1800</span><span class="fu">,</span>
-        <span class="dt">&quot;trusted_proxies&quot;</span><span class="fu">:</span> <span class="ot">[[]</span><span class="er">(.html)</span>
-            <span class="st">&quot;1.2.3.4&quot;</span><span class="ot">,</span>
-            <span class="st">&quot;5.6.7.8&quot;</span>
-        <span class="ot">]</span>
-    <span class="fu">},</span>
-    <span class="dt">&quot;resources&quot;</span><span class="fu">:</span> <span class="fu">{</span>
-        <span class="dt">&quot;data_dir&quot;</span><span class="fu">:</span> <span class="st">&quot;data&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;config&quot;</span><span class="fu">:</span> <span class="st">&quot;data</span><span class="ch">\/</span><span class="st">config.php&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;datastore&quot;</span><span class="fu">:</span> <span class="st">&quot;data</span><span class="ch">\/</span><span class="st">datastore.php&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;ban_file&quot;</span><span class="fu">:</span> <span class="st">&quot;data</span><span class="ch">\/</span><span class="st">ipbans.php&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;updates&quot;</span><span class="fu">:</span> <span class="st">&quot;data</span><span class="ch">\/</span><span class="st">updates.txt&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;log&quot;</span><span class="fu">:</span> <span class="st">&quot;data</span><span class="ch">\/</span><span class="st">log.txt&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;update_check&quot;</span><span class="fu">:</span> <span class="st">&quot;data</span><span class="ch">\/</span><span class="st">lastupdatecheck.txt&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;raintpl_tmp&quot;</span><span class="fu">:</span> <span class="st">&quot;tmp</span><span class="ch">\/</span><span class="st">&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;raintpl_tpl&quot;</span><span class="fu">:</span> <span class="st">&quot;tpl</span><span class="ch">\/</span><span class="st">&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;thumbnails_cache&quot;</span><span class="fu">:</span> <span class="st">&quot;cache&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;page_cache&quot;</span><span class="fu">:</span> <span class="st">&quot;pagecache&quot;</span>
-    <span class="fu">},</span>
-    <span class="dt">&quot;general&quot;</span><span class="fu">:</span> <span class="fu">{</span>
-        <span class="dt">&quot;check_updates&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
-        <span class="dt">&quot;rss_permalinks&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
-        <span class="dt">&quot;links_per_page&quot;</span><span class="fu">:</span> <span class="dv">20</span><span class="fu">,</span>
-        <span class="dt">&quot;default_private_links&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
-        <span class="dt">&quot;enable_thumbnails&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
-        <span class="dt">&quot;enable_localcache&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
-        <span class="dt">&quot;check_updates_branch&quot;</span><span class="fu">:</span> <span class="st">&quot;stable&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;check_updates_interval&quot;</span><span class="fu">:</span> <span class="dv">86400</span><span class="fu">,</span>
-        <span class="dt">&quot;enabled_plugins&quot;</span><span class="fu">:</span> <span class="ot">[[]</span><span class="er">(.html)</span>
-            <span class="st">&quot;markdown&quot;</span><span class="ot">,</span>
-            <span class="st">&quot;wallabag&quot;</span><span class="ot">,</span>
-            <span class="st">&quot;archiveorg&quot;</span>
-        <span class="ot">]</span><span class="fu">,</span>
-        <span class="dt">&quot;timezone&quot;</span><span class="fu">:</span> <span class="st">&quot;Europe</span><span class="ch">\/</span><span class="st">Paris&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;title&quot;</span><span class="fu">:</span> <span class="st">&quot;My Shaarli&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;header_link&quot;</span><span class="fu">:</span> <span class="st">&quot;?&quot;</span>
-    <span class="fu">},</span>
-    <span class="dt">&quot;extras&quot;</span><span class="fu">:</span> <span class="fu">{</span>
-        <span class="dt">&quot;show_atom&quot;</span><span class="fu">:</span> <span class="kw">false</span><span class="fu">,</span>
-        <span class="dt">&quot;hide_public_links&quot;</span><span class="fu">:</span> <span class="kw">false</span><span class="fu">,</span>
-        <span class="dt">&quot;hide_timestamps&quot;</span><span class="fu">:</span> <span class="kw">false</span><span class="fu">,</span>
-        <span class="dt">&quot;open_shaarli&quot;</span><span class="fu">:</span> <span class="kw">false</span><span class="fu">,</span>
-        <span class="dt">&quot;redirector&quot;</span><span class="fu">:</span> <span class="st">&quot;http://anonym.to/?&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;redirector_encode_url&quot;</span><span class="fu">:</span> <span class="kw">false</span>
-    <span class="fu">},</span>
-    <span class="dt">&quot;general&quot;</span><span class="fu">:</span> <span class="fu">{</span>
-        <span class="dt">&quot;header_link&quot;</span><span class="fu">:</span> <span class="st">&quot;?&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;links_per_page&quot;</span><span class="fu">:</span> <span class="dv">20</span><span class="fu">,</span>
-        <span class="dt">&quot;enabled_plugins&quot;</span><span class="fu">:</span> <span class="ot">[[]</span><span class="er">(.html)</span>
-            <span class="st">&quot;markdown&quot;</span><span class="ot">,</span>
-            <span class="st">&quot;wallabag&quot;</span>
-        <span class="ot">]</span><span class="fu">,</span>
-        <span class="dt">&quot;timezone&quot;</span><span class="fu">:</span> <span class="st">&quot;Europe</span><span class="ch">\/</span><span class="st">Paris&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;title&quot;</span><span class="fu">:</span> <span class="st">&quot;My Shaarli&quot;</span>
-    <span class="fu">},</span>
-    <span class="dt">&quot;updates&quot;</span><span class="fu">:</span> <span class="fu">{</span>
-        <span class="dt">&quot;check_updates&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
-        <span class="dt">&quot;check_updates_branch&quot;</span><span class="fu">:</span> <span class="st">&quot;stable&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;check_updates_interval&quot;</span><span class="fu">:</span> <span class="dv">86400</span>
-    <span class="fu">},</span>
-    <span class="dt">&quot;feed&quot;</span><span class="fu">:</span> <span class="fu">{</span>
-        <span class="dt">&quot;rss_permalinks&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
-        <span class="dt">&quot;show_atom&quot;</span><span class="fu">:</span> <span class="kw">false</span>
-    <span class="fu">},</span>
-    <span class="dt">&quot;privacy&quot;</span><span class="fu">:</span> <span class="fu">{</span>
-        <span class="dt">&quot;default_private_links&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
-        <span class="dt">&quot;hide_public_links&quot;</span><span class="fu">:</span> <span class="kw">false</span><span class="fu">,</span>
-        <span class="dt">&quot;hide_timestamps&quot;</span><span class="fu">:</span> <span class="kw">false</span>
-    <span class="fu">},</span>
-    <span class="dt">&quot;thumbnail&quot;</span><span class="fu">:</span> <span class="fu">{</span>
-        <span class="dt">&quot;enable_thumbnails&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
-        <span class="dt">&quot;enable_localcache&quot;</span><span class="fu">:</span> <span class="kw">true</span>
-    <span class="fu">},</span>
-    <span class="dt">&quot;redirector&quot;</span><span class="fu">:</span> <span class="fu">{</span>
-        <span class="dt">&quot;url&quot;</span><span class="fu">:</span> <span class="st">&quot;http://anonym.to/?&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;encode_url&quot;</span><span class="fu">:</span> <span class="kw">false</span>
-    <span class="fu">},</span>
-    <span class="dt">&quot;plugins&quot;</span><span class="fu">:</span> <span class="fu">{</span>
-        <span class="dt">&quot;WALLABAG_URL&quot;</span><span class="fu">:</span> <span class="st">&quot;http://demo.wallabag.org&quot;</span><span class="fu">,</span>
-        <span class="dt">&quot;WALLABAG_VERSION&quot;</span><span class="fu">:</span> <span class="st">&quot;1&quot;</span>
-    <span class="fu">}</span>
-<span class="fu">}</span> <span class="er">?&gt;</span></code></pre></div>
-<h2 id="additional-configuration">Additional configuration</h2>
-<p>The playvideos plugin may require that you adapt your server's<br />
-<a href="https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md#troubleshooting">Content Security Policy</a> <a href=".html"></a><br />
-configuration to work properly.<a href="(.html).html">(.html)</a></p>
-</body>
-</html>

+ 0 - 94
doc/Sharing-button.html

@@ -1,94 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Sharing button</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="sharing-button">Sharing button</h1>
-<h3 id="add-the-sharing-button-bookmarklet-to-your-browser">Add the sharing button (<em>bookmarklet</em>) to your browser</h3>
-<ul>
-<li>Open your Shaarli and <code>Login</code></li>
-<li>Click the <code>Tools</code> button in the top bar</li>
-<li>Drag the <strong><code>✚Shaare link</code> button</strong>, and drop it to your browser's bookmarks bar.</li>
-</ul>
-<p><em>This bookmarklet button is compatible with Firefox, Opera, Chrome and Safari. Under Opera, you can't drag'n drop the button: You have to right-click on it and add a bookmark to your personal toolbar.</em></p>
-<p><embed src="(images/bookmarklet.png).html" /></p>
-<h3 id="share-links-using-the-bookmarklet">Share links using the <em>bookmarklet</em></h3>
-<ul>
-<li>When you are visiting a webpage you would like to share with Shaarli, click the <em>bookmarklet</em> you just added.</li>
-<li>A window opens.</li>
-<li>You can freely edit title, description, tags... to find it later using the text search or tag filtering.</li>
-<li>You will be able to edit this link later using the <embed src="(https://raw.githubusercontent.com/shaarli/Shaarli/master/images/edit_icon.png)-edit-button..html" /></li>
-<li>You can also check the “Private” box so that the link is saved but only visible to you.</li>
-<li>Click <code>Save</code>.<strong>Voilà! Your link is now shared.</strong></li>
-</ul>
-<h3 id="troubleshooting-the-bookmarklet-doesnt-work-with-a-few-website-e.g.-github.com">Troubleshooting: The bookmarklet doesn't work with a few website (e.g. Github.com)</h3>
-<p>Websites which enforce Content Security Policy (CSP), such as github.com, disallow usage of bookmarklets. Unfortunatly, there is nothing Shaarli can do about it.</p>
-<p>See <a href="https://github.com/shaarli/Shaarli#196">#196</a>.<a href=".html"></a></p>
-<p>There is an open bug for both Firefox and Chromium:</p>
-<ul>
-<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=866522" class="uri">https://bugzilla.mozilla.org/show_bug.cgi?id=866522</a></li>
-<li><a href="https://code.google.com/p/chromium/issues/detail?id=233903" class="uri">https://code.google.com/p/chromium/issues/detail?id=233903</a></li>
-</ul>
-</body>
-</html>

+ 0 - 82
doc/Static-analysis.html

@@ -1,82 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Static analysis</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="static-analysis">Static analysis</h1>
-<h2 id="wip">WIP</h2>
-<p>This topic is currently being discussed here:</p>
-<ul>
-<li><a href="https://github.com/shaarli/Shaarli/issues/95">Fix coding style (static analysis)</a> (#95)<a href=".html"></a></li>
-<li><a href="https://github.com/shaarli/Shaarli/issues/130">Continuous Integration tools &amp; features</a> (#130)<a href=".html"></a></li>
-</ul>
-<h3 id="usage">Usage</h3>
-<p>Static analysis tools can be installed with Composer, and used through Shaarli's <a href="https://github.com/shaarli/Shaarli/blob/master/Makefile">Makefile</a>.<a href=".html"></a></p>
-<p>For an overview of the available features, see:</p>
-<ul>
-<li><a href="https://github.com/shaarli/Shaarli/pull/124">Code quality: Makefile to run static code checkers</a> (#124)<a href=".html"></a></li>
-<li><a href="https://github.com/shaarli/Shaarli/pull/276">Run PHPCS against different coding standards</a> (#276)<a href=".html"></a></li>
-</ul>
-</body>
-</html>

+ 0 - 182
doc/Theming.html

@@ -1,182 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Theming</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="theming">Theming</h1>
-<h2 id="foreword">Foreword</h2>
-<p>There are two ways of customizing how Shaarli looks:</p>
-<ol>
-<li>by using a custom CSS to override Shaarli's CSS</li>
-<li>by using a full theme that provides its own RainTPL templates, CSS and Javascript resources</li>
-</ol>
-<h2 id="custom-css">Custom CSS</h2>
-<p>Shaarli's appearance can be modified by adding CSS rules to:</p>
-<ul>
-<li>Shaarli &lt; <code>v0.9.0</code>: <code>inc/user.css</code></li>
-<li>Shaarli &gt;= <code>v0.9.0</code>: <code>data/user.css</code></li>
-</ul>
-<p>This file allows overriding rules defined in the template CSS files (only add changed rules), or define a whole new theme.</p>
-<p><strong>Note</strong>: Do not edit <code>tpl/default/css/shaarli.css</code>! Your changes would be overridden when updating Shaarli.</p>
-<p>See also <a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></p>
-<h2 id="themes">Themes</h2>
-<p><em>WARNING - This feature is currently being worked on and will be improved in the next releases. Experimental.</em></p>
-<p>Installation:</p>
-<ul>
-<li>find a theme you'd like to install</li>
-<li>copy or clone the theme folder under <code>tpl/&lt;a_sweet_theme&gt;</code></li>
-<li>enable the theme:
-<ul>
-<li>Shaarli &lt; <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 />
-<code>&quot;raintpl_tpl&quot;: &quot;tpl\/my-template\/&quot;</code></li>
-<li>Shaarli &gt;= <code>v0.9.0</code>: select the theme through the <em>Tools</em> page</li>
-</ul></li>
-</ul>
-<h2 id="community-css-themes">Community CSS &amp; themes</h2>
-<h3 id="custom-css-1">Custom CSS</h3>
-<ul>
-<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>
-<li><a href="https://github.com/shaarli/shaarli-themes">shaarli/shaarli-themes</a><a href=".html"></a></li>
-</ul>
-<h3 id="themes-1">Themes</h3>
-<ul>
-<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>
-<li><a href="https://github.com/alexisju/albinomouse-template">alexisju/albinomouse-template</a> - A full template for Shaarli<a href=".html"></a></li>
-<li><a href="https://github.com/ArthurHoaro/shaarli-launch">ArthurHoaro/shaarli-launch</a> - Customizable Shaarli theme<a href=".html"></a></li>
-<li><a href="https://github.com/dhoko/ShaarliTemplate">dhoko/ShaarliTemplate</a> - A template/theme for Shaarli<a href=".html"></a></li>
-<li><a href="https://github.com/kalvn/shaarli-blocks">kalvn/shaarli-blocks</a> - A template/theme for Shaarli<a href=".html"></a></li>
-<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>
-<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>
-</ul>
-<h3 id="shaarli-forks">Shaarli forks</h3>
-<ul>
-<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>
-<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>
-</ul>
-<h2 id="example-installation-albinomouse-theme">Example installation: AlbinoMouse theme</h2>
-<p>With the following configuration:</p>
-<ul>
-<li>Apache 2 / PHP 5.6</li>
-<li>user sites are enabled, e.g. <code>/home/user/public_html/somedir</code> is served as <code>http://localhost/~user/somedir</code></li>
-<li><code>http</code> is the name of the Apache user</li>
-</ul>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">cd</span> ~/public_html
-
-<span class="co"># clone repositories</span>
-$ <span class="fu">git</span> clone https://github.com/shaarli/Shaarli.git shaarli
-$ <span class="bu">pushd</span> shaarli/tpl
-$ <span class="fu">git</span> clone https://github.com/alexisju/albinomouse-template.git
-$ <span class="bu">popd</span>
-
-<span class="co"># set access rights for Apache</span>
-$ <span class="fu">chgrp</span> -R http shaarli
-$ <span class="fu">chmod</span> g+rwx shaarli shaarli/cache shaarli/data shaarli/pagecache shaarli/tmp</code></pre></div>
-<p>Get config written:</p>
-<ul>
-<li>go to the freshly installed site</li>
-<li>fill the install form</li>
-<li>log in to Shaarli</li>
-</ul>
-<p>Edit Shaarli's <a href="configuration%7CShaarli-configuration.html">configuration|Shaarli configuration</a>:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># the file should be owned by Apache, thus not writeable =&gt; sudo</span>
-$ <span class="fu">sudo</span> sed -i s=tpl=tpl/albinomouse-template=g shaarli/data/config.php</code></pre></div>
-</body>
-</html>

+ 0 - 202
doc/Troubleshooting.html

@@ -1,202 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Troubleshooting</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="troubleshooting">Troubleshooting</h1>
-<h2 id="browser">Browser</h2>
-<h3 id="redirection-issues-http-referer">Redirection issues (HTTP Referer)</h3>
-<p>Depending on its configuration and installed plugins, the browser may remove or alter (spoof) HTTP referers, thus preventing Shaarli from properly redirecting between pages.</p>
-<p>See:</p>
-<ul>
-<li><a href="https://en.wikipedia.org/wiki/HTTP_referer">HTTP referer</a> (Wikipedia)<a href=".html"></a></li>
-<li><a href="http://www.ghacks.net/2015/01/22/improve-online-privacy-by-controlling-referrer-information/">Improve online privacy by controlling referrer information</a><a href=".html"></a></li>
-<li><a href="http://b.agilob.net/better-security-privacy-and-anonymity-in-firefox/">Better security, privacy and anonymity in Firefox</a><a href=".html"></a></li>
-</ul>
-<h3 id="firefox-http-referer-options">Firefox HTTP Referer options</h3>
-<p>HTTP settings are available by browsing <code>about:config</code>, here are the available settings and their values.</p>
-<p><code>network.http.sendRefererHeader</code> - determines when to send the Referer HTTP header</p>
-<ul>
-<li>0: Never send the referring URL
-<ul>
-<li>not recommended, may break some sites</li>
-</ul></li>
-<li>1: Send only on clicked links</li>
-<li>2 (default): Send for links and images</li>
-</ul>
-<p><code>network.http.referer.XOriginPolicy</code> - Cross-domain origin policy</p>
-<ul>
-<li>0 (default): Always send</li>
-<li>1: Send if base domains match</li>
-<li>2: Send if hosts match</li>
-</ul>
-<p><code>network.http.referer.spoofSource</code> - Referer spoofing (~faking)</p>
-<ul>
-<li>false (default): real referer</li>
-<li>true: spoof referer (use target URI as referer)</li>
-<li>known to break some functionality in Shaarli</li>
-</ul>
-<p><code>network.http.referer.trimmingPolicy</code> - trim the URI not to send a full Referer</p>
-<ul>
-<li>0 (default): send full URI</li>
-<li>1: scheme+host+port+path</li>
-<li>2: scheme+host+port</li>
-</ul>
-<h3 id="firefox-localhost-and-redirections">Firefox, localhost and redirections</h3>
-<p><code>localhost</code> is not a proper Fully Qualified Domain Name (FQDN); if Firefox has been set up to spoof referers, or only accept requests from the same base domain/host, Shaarli redirections will not work properly.</p>
-<p>To solve this, assign a local domain to your host, e.g.</p>
-<pre><code>127.0.0.1 localhost desktop localhost.lan
-::1       localhost desktop localhost.lan</code></pre>
-<p>and browse Shaarli at <a href="http://localhost.lan/" class="uri">http://localhost.lan/</a>.</p>
-<p>Related threads:</p>
-<ul>
-<li><a href="https://bbs.archlinux.org/viewtopic.php?id=156064">What is localhost.localdomain for?</a><a href=".html"></a></li>
-<li><a href="https://github.com/shaarli/Shaarli/issues/311">Stop returning to the first page after editing a bookmark from another page</a><a href=".html"></a></li>
-</ul>
-<h2 id="login">Login</h2>
-<h3 id="i-forgot-my-password">I forgot my password!</h3>
-<p>Delete the file <code>data/config.php</code> and display the page again. You will be asked for a new login/password.</p>
-<h3 id="im-locked-out---login-bruteforce-protection">I'm locked out - Login bruteforce protection</h3>
-<p>Login form is protected against brute force attacks: 4 failed logins will ban the IP address from login for 30 minutes. Banned IPs can still browse links.</p>
-<p>To remove the current IP bans, delete the file <code>data/ipbans.php</code></p>
-<h3 id="list-of-all-login-attempts">List of all login attempts</h3>
-<p>The file <code>data/log.txt</code> shows all logins (successful or failed) and bans/lifted bans.<br />
-Search for <code>failed</code> in this file to look for unauthorized login attempts.</p>
-<h2 id="hosting-problems">Hosting problems</h2>
-<h3 id="old-php-versions">Old PHP versions</h3>
-<ul>
-<li>On <strong>free.fr</strong> : free.fr now support php 5.6.x(<a href="http://les.pages.perso.chez.free.fr/migrations/php5v6.io">link</a>)and so support now the tag autocompletion but you have to do the following : At the root of your webspace create a <code>sessions</code> directory and a <code>.htaccess</code> file containing:<a href=".html"></a></li>
-</ul>
-<div class="sourceCode"><pre class="sourceCode ini"><code class="sourceCode ini"><span class="dt">&lt;IfDefine Free&gt;</span>
-<span class="dt">php56 1</span>
-<span class="dt">&lt;/IfDefine&gt;</span></code></pre></div>
-<ul>
-<li>If you have an error such as: <code>Parse error: syntax error, unexpected '=', expecting '(' in /links/index.php on line xxx</code>, it means that your host is using php4, not php5. Shaarli requires php 5.1. Try changing the file extension to <code>.php5</code></li>
-<li>On <strong>1and1</strong> : If you add the link from the page (and not from the bookmarklet), Shaarli will no be able to get the title of the page. You will have to enter it manually. (Because they have disabled the ability to download a file through HTTP).</li>
-<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>
-</ul>
-<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>
-<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) &lt;head&gt; in html </span>
-<span class="co">//if (strpos($status,&#39;200 OK&#39;)) $title=html_extract_title($data);</span></code></pre></div>
-<ul>
-<li>On hosts which forbid outgoing HTTP requests (such as free.fr), some thumbnails will not work.</li>
-<li>On <strong>lost-oasis</strong>, RSS doesn't work correctly, because of this message at the begining of the RSS/ATOM feed : <code>&lt;? // tout ce qui est charge ici (generalement des includes et require) est charge en permanence. ?&gt;</code>. To fix this, remove this message from <code>php-include/prepend.php</code></li>
-</ul>
-<h3 id="dates-are-not-properly-formatted">Dates are not properly formatted</h3>
-<p>Shaarli tries to sniff the language of the browser (using HTTP_ACCEPT_LANGUAGE headers) and choose a date format accordingly. But Shaarli can only use the date formats (and more generaly speaking, the locales) provided by the webserver. So even if you have a browser in French, you may end up with dates in US format (it's the case on sebsauvage.net :-( )</p>
-<h3 id="problems-on-centos-servers">Problems on CentOS servers</h3>
-<p>On <strong>CentOS</strong>/RedHat derivatives, you may need to install the <code>php-mbstring</code> package.</p>
-<h3 id="my-session-expires-i-cant-stay-logged-in">My session expires! I can't stay logged in</h3>
-<p>This can be caused by several things:</p>
-<ul>
-<li>Your php installation may not have a proper directory setup for session files. (eg. on Free.fr you need to create a <code>session</code> directory on the root of your website.) You may need to create the session directory of set it up.</li>
-<li>Most hosts regularly clean the temporary and session directories. Your host may be cleaning those directories too aggressively (eg.OVH hosts), forcing an expire of the session. You may want to set the session directory in your web root. (eg. Create the <code>sessions</code> subdirectory and add <code>ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'].'/../sessions');</code>. Make sure this directory is not browsable !)<a href=".html"></a></li>
-<li>If your IP address changes during surfing, Shaarli will force expire your session for security reasons (to prevent session cookie hijacking). This can happen when surfing from WiFi or 3G (you may have switched WiFi/3G access point), or in some corporate/university proxies which use load balancing (and may have proxies with several external IP addresses).</li>
-<li>Some browser addons may interfer with HTTP headers (ipfuck/ipflood/GreaseMonkey…). Try disabling those.</li>
-<li>You may be using OperaTurbo or OperaMini, which use their own proxies which may change from time to time.</li>
-<li>If you have another application on the same webserver where Shaarli is installed, these application may forcefully expire php sessions.</li>
-</ul>
-<h2 id="sessions-do-not-seem-to-work-correctly-on-your-server">Sessions do not seem to work correctly on your server</h2>
-<p>Follow the instructions in the error message. Make sure you are accessing shaarli via a direct IP address or a proper hostname. If you have <strong>no dots</strong> in the hostname (e.g. <code>localhost</code> or <code>http://my-webserver/shaarli/</code>), some browsers will not store cookies at all (this respects the <a href="http://curl.haxx.se/rfc/cookie_spec.html">HTTP cookie specification</a>).<a href=".html"></a></p>
-<h3 id="pubsubhubbub-support">pubsubhubbub support</h3>
-<p>Download <a href="https://pubsubhubbub.googlecode.com/git/publisher_clients/php/library/publisher.php">publisher.php</a> at the root of your Shaarli installation and set <code>$GLOBALS['config'['PUBSUBHUB_URL']</code> in your <code>config.php</code>]('PUBSUBHUB_URL']<code>-in-your-</code>config.php`.html)</p>
-</body>
-</html>

+ 0 - 226
doc/Unit-tests.html

@@ -1,226 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Unit tests</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="unit-tests">Unit tests</h1>
-<h3 id="setup-your-environment-for-tests">Setup your environment for tests</h3>
-<p>The framework used is <a href="https://phpunit.de/">PHPUnit</a>; it can be installed with <a href="https://getcomposer.org/">Composer</a>, which is a dependency management tool.<a href=".html"></a></p>
-<p>Regarding Composer, you can either use:</p>
-<ul>
-<li>a system-wide version, e.g. installed through your distro's package manager</li>
-<li>a local version, downloadable <a href="https://getcomposer.org/download/">here</a><a href=".html"></a></li>
-</ul>
-<h4 id="sample-usage">Sample usage</h4>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># system-wide version</span>
-$ <span class="ex">composer</span> install
-$ <span class="ex">composer</span> update
-
-<span class="co"># local version</span>
-$ <span class="ex">php</span> composer.phar self-update
-$ <span class="ex">php</span> composer.phar install
-$ <span class="ex">php</span> composer.phar update</code></pre></div>
-<h4 id="install-shaarli-dev-dependencies">Install Shaarli dev dependencies</h4>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">cd</span> /path/to/shaarli
-$ <span class="ex">composer</span> update</code></pre></div>
-<h4 id="install-and-enable-xdebug-to-generate-phpunit-coverage-reports">Install and enable Xdebug to generate PHPUnit coverage reports</h4>
-<p>For Debian-based distros:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">aptitude</span> install php5-xdebug</code></pre></div>
-<p>For ArchLinux:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">pacman</span> -S xdebug</code></pre></div>
-<p>Then add the following line to <code>/etc/php/php.ini</code>:</p>
-<div class="sourceCode"><pre class="sourceCode ini"><code class="sourceCode ini"><span class="dt">zend_extension</span><span class="ot">=</span><span class="st">xdebug.so</span></code></pre></div>
-<h4 id="run-unit-tests">Run unit tests</h4>
-<p>Successful test suite:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">make</span> test
-
-<span class="ex">-------</span>
-<span class="ex">PHPUNIT</span>
-<span class="ex">-------</span>
-<span class="ex">PHPUnit</span> 4.6.9 by Sebastian Bergmann and contributors.
-
-<span class="ex">Configuration</span> read from /home/virtualtam/public_html/shaarli/phpunit.xml
-
-<span class="ex">....................................</span>
-
-<span class="ex">Time</span>: 759 ms, Memory: 8.25Mb
-
-<span class="ex">OK</span> (36 tests, 65 assertions)</code></pre></div>
-<p>Test suite with failures and errors:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">make</span> test
-<span class="ex">-------</span>
-<span class="ex">PHPUNIT</span>
-<span class="ex">-------</span>
-<span class="ex">PHPUnit</span> 4.6.9 by Sebastian Bergmann and contributors.
-
-<span class="ex">Configuration</span> read from /home/virtualtam/public_html/shaarli/phpunit.xml
-
-<span class="ex">E..FF...............................</span>
-
-<span class="ex">Time</span>: 802 ms, Memory: 8.25Mb
-
-<span class="ex">There</span> was 1 error:
-
-<span class="ex">1</span>) <span class="ex">LinkDBTest</span>::testConstructLoggedIn
-<span class="ex">Missing</span> argument 2 for LinkDB::__construct(), <span class="ex">called</span> in /home/virtualtam/public_html/shaarli/tests/Link\
-DBTest.php on line 79 and defined
-
-<span class="ex">/home/virtualtam/public_html/shaarli/application</span>/LinkDB.php:<span class="ex">58</span>
-<span class="ex">/home/virtualtam/public_html/shaarli/tests</span>/LinkDBTest.php:<span class="ex">79</span>
-
-<span class="ex">--</span>
-
-<span class="ex">There</span> were 2 failures:
-
-<span class="ex">1</span>) <span class="ex">LinkDBTest</span>::testCheckDBNew
-<span class="ex">Failed</span> asserting that two strings are equal.
-<span class="ex">---</span> Expected
-<span class="ex">+++</span> Actual
-<span class="ex">@@</span> @@
-<span class="ex">-</span><span class="st">&#39;e3edea8ea7bb50be4bcb404df53fbb4546a7156e&#39;</span>
-<span class="ex">+</span><span class="st">&#39;85eab0c610d4f68025f6ed6e6b6b5fabd4b55834&#39;</span>
-
-<span class="ex">/home/virtualtam/public_html/shaarli/tests</span>/LinkDBTest.php:<span class="ex">121</span>
-
-<span class="ex">2</span>) <span class="ex">LinkDBTest</span>::testCheckDBLoad
-<span class="ex">Failed</span> asserting that two strings are equal.
-<span class="ex">---</span> Expected
-<span class="ex">+++</span> Actual
-<span class="ex">@@</span> @@
-<span class="ex">-</span><span class="st">&#39;e3edea8ea7bb50be4bcb404df53fbb4546a7156e&#39;</span>
-<span class="ex">+</span><span class="st">&#39;85eab0c610d4f68025f6ed6e6b6b5fabd4b55834&#39;</span>
-
-<span class="ex">/home/virtualtam/public_html/shaarli/tests</span>/LinkDBTest.php:<span class="ex">133</span>
-
-<span class="ex">FAILURES</span>!
-<span class="ex">Tests</span>: 36, Assertions: 63, Errors: 1, Failures: 2.</code></pre></div>
-<h4 id="test-results-and-coverage">Test results and coverage</h4>
-<p>By default, PHPUnit will run all suitable tests found under the <code>tests</code> directory.</p>
-<p>Each test has 3 possible outcomes:</p>
-<ul>
-<li><code>.</code> - success</li>
-<li><code>F</code> - failure: the test was run but its results are invalid</li>
-<li>the code does not behave as expected</li>
-<li>dependencies to external elements: globals, session, cache...</li>
-<li><code>E</code> - error: something went wrong and the tested code has crashed</li>
-<li>typos in the code, or in the test code</li>
-<li>dependencies to missing external elements</li>
-</ul>
-<p>If Xdebug has been installed and activated, two coverage reports will be generated:</p>
-<ul>
-<li>a summary in the console</li>
-<li>a detailed HTML report with metrics for tested code</li>
-<li>to open it in a web browser: <code>firefox coverage/index.html &amp;</code></li>
-</ul>
-<h3 id="executing-specific-tests">Executing specific tests</h3>
-<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>
-<div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="co">/**</span>
-<span class="co"> * Netscape bookmark import</span>
-<span class="co"> * </span><span class="an">@group</span><span class="co"> WIP</span>
-<span class="co"> */</span>
-<span class="kw">class</span> BookmarkImportTest <span class="kw">extends</span> PHPUnit_Framework_TestCase
-{
-   <span class="ot">[</span><span class="st">...</span><span class="ot">][](</span>.html<span class="ot">)</span>
-}</code></pre></div>
-<p>To run all tests annotated with <code>@group WIP</code>:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">vendor/bin/phpunit</span> --group WIP tests/</code></pre></div>
-</body>
-</html>

+ 0 - 259
doc/Upgrade-and-migration.html

@@ -1,259 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Upgrade and migration</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="upgrade-and-migration">Upgrade and migration</h1>
-<h2 id="preparation">Preparation</h2>
-<h3 id="note-your-current-version">Note your current version</h3>
-<p>If anything goes wrong, it's important for us to know which version you're upgrading from.<br />
-The current version is present in the <code>version.php</code> file.</p>
-<h3 id="backup-your-data">Backup your data</h3>
-<p>Shaarli stores all user data under the <code>data</code> directory:</p>
-<ul>
-<li><code>data/config.php</code> - main configuration file</li>
-<li><code>data/datastore.php</code> - bookmarked links</li>
-<li><code>data/ipbans.php</code> - banned IP addresses</li>
-<li><code>data/updates.txt</code> - contains all automatic update to the configuration and datastore files already run</li>
-</ul>
-<p>See <a href="Shaarli-configuration.html">Shaarli configuration</a> for more information about Shaarli resources.</p>
-<p>It is recommended to backup this repository <em>before</em> starting updating/upgrading Shaarli:</p>
-<ul>
-<li>users with SSH access: copy or archive the directory to a temporary location</li>
-<li>users with FTP access: download a local copy of your Shaarli installation using your favourite client</li>
-</ul>
-<h3 id="migrating-data-from-a-previous-installation">Migrating data from a previous installation</h3>
-<p>As all user data is kept under <code>data</code>, this is the only directory you need to worry about when migrating to a new installation, which corresponds to the following steps:</p>
-<ul>
-<li>backup the <code>data</code> directory</li>
-<li>install or update Shaarli:
-<ul>
-<li>fresh installation - see <a href="Download-and-installation.html">Download and installation</a></li>
-<li>update - see the following sections</li>
-</ul></li>
-<li>check or restore the <code>data</code> directory</li>
-</ul>
-<h2 id="recommended-upgrading-from-release-archives">Recommended : Upgrading from release archives</h2>
-<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>
-<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>
-<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>
-<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>
-<h2 id="upgrading-with-git">Upgrading with Git</h2>
-<h3 id="updating-a-community-shaarli">Updating a community Shaarli</h3>
-<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>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">cd</span> /path/to/shaarli
-$ <span class="fu">git</span> pull
-
-<span class="ex">From</span> github.com:shaarli/Shaarli
- <span class="ex">*</span> branch            master     -<span class="op">&gt;</span> FETCH_HEAD
-<span class="ex">Updating</span> ebd67c6..521f0e6
-<span class="ex">Fast-forward</span>
- <span class="ex">application/Url.php</span>   <span class="kw">|</span> <span class="ex">1</span> +
- <span class="ex">shaarli_version.php</span>   <span class="kw">|</span> <span class="ex">2</span> +-
- <span class="ex">tests/Url/UrlTest.php</span> <span class="kw">|</span> <span class="ex">1</span> +
- <span class="ex">3</span> files changed, 3 insertions(+), <span class="ex">1</span> deletion(-)</code></pre></div>
-<p>Shaarli &gt;= <code>v0.8.x</code>: install/update third-party PHP dependencies using <a href="https://getcomposer.org/">Composer</a>:<a href=".html"></a></p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">composer</span> install --no-dev
-
-<span class="ex">Loading</span> composer repositories with package information
-<span class="ex">Updating</span> dependencies
-  <span class="ex">-</span> Installing shaarli/netscape-bookmark-parser (v1.0.1)
-    <span class="ex">Downloading</span>: 100%</code></pre></div>
-<h3 id="migrating-and-upgrading-from-sebsauvages-repository">Migrating and upgrading from Sebsauvage's repository</h3>
-<p>If you have installed Shaarli from <a href="https://github.com/sebsauvage/Shaarli">Sebsauvage's original Git repository</a>, you can use <a href="https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes">Git remotes</a> to update your working copy.<a href=".html"></a></p>
-<p>The following guide assumes that:</p>
-<ul>
-<li>you have a basic knowledge of Git <a href="https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell">branching</a> and <a href="https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes">remote repositories</a><a href=".html"></a></li>
-<li>the default remote is named <code>origin</code> and points to Sebsauvage's repository</li>
-<li>the current branch is <code>master</code>
-<ul>
-<li>if you have personal branches containing customizations, you will need to <a href="https://git-scm.com/book/en/v2/Git-Branching-Rebasing">rebase them</a> after the upgrade; beware though, a lot of changes have been made since the community fork has been created, so things are very likely to break<embed src=".html" /></li>
-</ul></li>
-<li>the working copy is clean:
-<ul>
-<li>no versioned file has been locally modified</li>
-<li>no untracked files are present</li>
-</ul></li>
-</ul>
-<h4 id="step-0-show-repository-information">Step 0: show repository information</h4>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">cd</span> /path/to/shaarli
-
-$ <span class="fu">git</span> remote -v
-<span class="ex">origin</span>  https://github.com/sebsauvage/Shaarli (fetch)
-<span class="ex">origin</span>  https://github.com/sebsauvage/Shaarli (push)
-
-$ <span class="fu">git</span> branch -vv
-<span class="ex">*</span> master 029f75f [origin/master] Update README.md[](.html)
-
-$ <span class="fu">git</span> status
-<span class="ex">On</span> branch master
-<span class="ex">Your</span> branch is up-to-date with <span class="st">&#39;origin/master&#39;</span>.
-<span class="ex">nothing</span> to commit, working directory clean</code></pre></div>
-<h4 id="step-1-update-git-remotes">Step 1: update Git remotes</h4>
-<pre><code>$ git remote rename origin sebsauvage
-$ git remote -v
-sebsauvage  https://github.com/sebsauvage/Shaarli (fetch)
-sebsauvage  https://github.com/sebsauvage/Shaarli (push)
-
-$ git remote add origin https://github.com/shaarli/Shaarli
-$ git fetch origin
-
-remote: Counting objects: 3015, done.
-remote: Compressing objects: 100% (19/19), done.
-remote: Total 3015 (delta 446), reused 457 (delta 446), pack-reused 2550
-Receiving objects: 100% (3015/3015), 2.59 MiB | 918.00 KiB/s, done.
-Resolving deltas: 100% (1899/1899), completed with 48 local objects.
-From https://github.com/shaarli/Shaarli
- * [new branch]      master     -&gt; origin/master[](.html)
- * [new branch]      stable     -&gt; origin/stable[](.html)
-[...][](.html)
- * [new tag]         v0.6.4     -&gt; v0.6.4[](.html)
- * [new tag]         v0.7.0     -&gt; v0.7.0[](.html)</code></pre>
-<h4 id="step-2-use-the-stable-community-branch">Step 2: use the stable community branch</h4>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">git</span> checkout origin/stable -b stable
-<span class="ex">Branch</span> stable set up to track remote branch stable from origin.
-<span class="ex">Switched</span> to a new branch <span class="st">&#39;stable&#39;</span>
-
-$ <span class="fu">git</span> branch -vv
-  <span class="ex">master</span> 029f75f [sebsauvage/master] Update README.md[](.html)
-<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>
-<p>Shaarli &gt;= <code>v0.8.x</code>: install/update third-party PHP dependencies using <a href="https://getcomposer.org/">Composer</a>:<a href=".html"></a></p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">composer</span> install --no-dev
-
-<span class="ex">Loading</span> composer repositories with package information
-<span class="ex">Updating</span> dependencies
-  <span class="ex">-</span> Installing shaarli/netscape-bookmark-parser (v1.0.1)
-    <span class="ex">Downloading</span>: 100%</code></pre></div>
-<p>Optionally, you can delete information related to the legacy version:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">git</span> branch -D master
-<span class="ex">Deleted</span> branch master (was 029f75f)<span class="ex">.</span>
-
-$ <span class="fu">git</span> remote remove sebsauvage
-
-$ <span class="fu">git</span> remote -v
-<span class="ex">origin</span>  https://github.com/shaarli/Shaarli (fetch)
-<span class="ex">origin</span>  https://github.com/shaarli/Shaarli (push)
-
-$ <span class="fu">git</span> gc
-<span class="ex">Counting</span> objects: 3317, done.
-<span class="ex">Delta</span> compression using up to 8 threads.
-<span class="ex">Compressing</span> objects: 100% (1237/1237), <span class="kw">done</span><span class="ex">.</span>
-<span class="ex">Writing</span> objects: 100% (3317/3317), <span class="kw">done</span><span class="ex">.</span>
-<span class="ex">Total</span> 3317 (delta 2050), <span class="ex">reused</span> 3301 (delta 2034)<span class="ex">to</span></code></pre></div>
-<h4 id="step-3-configuration">Step 3: configuration</h4>
-<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>
-<h2 id="troubleshooting">Troubleshooting</h2>
-<p>If the solutions provided here doesn't work, please open an issue specifying which version you're upgrading from and to.</p>
-<h3 id="you-must-specify-an-integer-as-a-key">You must specify an integer as a key</h3>
-<p>In <code>v0.8.1</code> we changed how link keys are handled (from timestamps to incremental integers).<br />
-Take a look at <code>data/updates.txt</code> content.</p>
-<h4 id="updates.txt-contains-updatemethoddatastoreids"><code>updates.txt</code> contains <code>updateMethodDatastoreIds</code></h4>
-<p>Try to delete it and refresh your page while being logged in.</p>
-<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>
-<ol>
-<li>Create <code>data/updates.txt</code> if it doesn't exist.</li>
-<li>Paste this string in the update file <code>;updateMethodRenameDashTags;</code></li>
-<li>Login to Shaarli.</li>
-<li>Delete the update file.</li>
-<li>Refresh.</li>
-</ol>
-</body>
-</html>

+ 0 - 95
doc/Usage.html

@@ -1,95 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Usage</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="usage">Usage</h1>
-<h3 id="main-features">Main features</h3>
-<p>Shaarli is intended:</p>
-<ul>
-<li>to share, comment and save interesting links and news</li>
-<li>to bookmark useful/frequent personal links (as private links) and share them between computers</li>
-<li>as a minimal blog/microblog/writing platform (no character limit)</li>
-<li>as a read-it-later list (for example items tagged <code>readlater</code>)</li>
-<li>to draft and save articles/ideas</li>
-<li>to keep code snippets</li>
-<li>to keep notes and documentation</li>
-<li>as a shared clipboard between machines</li>
-<li>as a todo list</li>
-<li>to store playlists (e.g. with the <code>music</code> or <code>video</code> tags)</li>
-<li>to keep extracts/comments from webpages that may disappear</li>
-<li>to keep track of ongoing discussions (for example items tagged <code>discussion</code>)</li>
-<li><a href="http://shaarli.chassegnouf.net/?9Efeiw">to feed RSS aggregators</a> (planets) with specific tags<a href=".html"></a></li>
-<li>to feed other social networks, blogs... using RSS feeds and external services (dlvr.it, ifttt.com ...)</li>
-</ul>
-<h3 id="using-shaarli-as-a-blog-notepad-pastebin...">Using Shaarli as a blog, notepad, pastebin...</h3>
-<ul>
-<li>Go to your Shaarli setup and log in</li>
-<li>Click the <code>Add Link</code> button</li>
-<li>To share text only, do not enter any URL in the corresponding input field and click <code>Add Link</code></li>
-<li>Pick a title and enter your article, or note, in the description field; add a few tags; optionally check <code>Private</code> then click <code>Save</code></li>
-<li>Voilà! Your article is now published (privately if you selected that option) and accessible using its permalink.</li>
-</ul>
-</body>
-</html>

+ 0 - 156
doc/Versioning-and-Branches.html

@@ -1,156 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – Versioning and Branches</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <style type="text/css">
-div.sourceCode { overflow-x: auto; }
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
-code > span.dt { color: #902000; } /* DataType */
-code > span.dv { color: #40a070; } /* DecVal */
-code > span.bn { color: #40a070; } /* BaseN */
-code > span.fl { color: #40a070; } /* Float */
-code > span.ch { color: #4070a0; } /* Char */
-code > span.st { color: #4070a0; } /* String */
-code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
-code > span.ot { color: #007020; } /* Other */
-code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
-code > span.fu { color: #06287e; } /* Function */
-code > span.er { color: #ff0000; font-weight: bold; } /* Error */
-code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
-code > span.cn { color: #880000; } /* Constant */
-code > span.sc { color: #4070a0; } /* SpecialChar */
-code > span.vs { color: #4070a0; } /* VerbatimString */
-code > span.ss { color: #bb6688; } /* SpecialString */
-code > span.im { } /* Import */
-code > span.va { color: #19177c; } /* Variable */
-code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
-code > span.op { color: #666666; } /* Operator */
-code > span.bu { } /* BuiltIn */
-code > span.ex { } /* Extension */
-code > span.pp { color: #bc7a00; } /* Preprocessor */
-code > span.at { color: #7d9029; } /* Attribute */
-code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
-code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
-code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
-code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
-  </style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="versioning-and-branches">Versioning and Branches</h1>
-<p>[<strong>WORK IN PROGRESS</strong>][](.html)</p>
-<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>
-<h2 id="master-branch"><code>master</code> branch</h2>
-<p>The <code>master</code> branch is the development branch. Any new change MUST go through this branch using Pull Requests.</p>
-<p>Remarks:</p>
-<ul>
-<li>This branch shouldn't be used for production as it isn't necessary stable.</li>
-<li>3rd party aren't required to be compatible with the latest changes.</li>
-<li>Official plugins, themes and libraries (contained within Shaarli organization repos) must be compatible with the master branch.</li>
-<li>The version in this branch is always <code>dev</code>.</li>
-</ul>
-<h2 id="v0.x-branch"><code>v0.x</code> branch</h2>
-<p>This <code>v0.x</code> branch, points to the latest <code>v0.x.y</code> release.</p>
-<p>Explanation:</p>
-<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>
-<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>
-<p>This workflow allow us to fix any major bug detected, without having to release bleeding edge feature too soon.</p>
-<h2 id="latest-branch"><code>latest</code> branch</h2>
-<p>This branch point the latest release. It recommended to use it to get the latest tested changes.</p>
-<h2 id="stable-branch"><code>stable</code> branch</h2>
-<p>The <code>stable</code> branch doesn't contain any major bug, and is one major digit version behind the latest release.</p>
-<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>
-<p>Remarks:</p>
-<ul>
-<li>Shaarli release pace isn't fast, and the stable branch might be a few months behind the latest release.</li>
-</ul>
-<h2 id="releases">Releases</h2>
-<p>Releases are always made from the latest <code>v0.x</code> branch.</p>
-<p>Note that for every release, we manually generate a tarball which contains all Shaarli dependencies, making Shaarli's installation only one step.</p>
-<h2 id="advices-on-3rd-party-git-repos-workflow">Advices on 3rd party git repos workflow</h2>
-<h3 id="versioning">Versioning</h3>
-<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>
-<ul>
-<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>
-<li>use your own versioning scheme, and state Shaarli compatibility in the release description.</li>
-</ul>
-<p>Using this, any user will be able to pick the release matching his own Shaarli version.</p>
-<h3 id="major-bugfix-backport-releases">Major bugfix backport releases</h3>
-<p>To be able to support backported fixes, it recommended to use our workflow:</p>
-<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># In master, fix the major bug</span>
-<span class="fu">git</span> commit -m <span class="st">&quot;Katastrophe&quot;</span>
-<span class="fu">git</span> push origin master
-<span class="co"># Get your commit hash</span>
-<span class="fu">git</span> log --format=<span class="st">&quot;%H&quot;</span> -n 1
-<span class="co"># Create a new branch from your latest release, let&#39;s say v0.8.2-1 (the tag name)</span>
-<span class="fu">git</span> checkout -b katastrophe v0.8.2-1
-<span class="co"># Backport the fix commit to your brand new branch</span>
-<span class="fu">git</span> cherry-pick <span class="op">&lt;</span>fix commit hash<span class="op">&gt;</span>
-<span class="fu">git</span> push origin katastrophe
-<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>
-</body>
-</html>

+ 0 - 70
doc/_Footer.html

@@ -1,70 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – _Footer</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="footer-shaarli-the-personal-minimalist-super-fast-database-free-bookmarking-service">_Footer<br />
-<em>Shaarli, the personal, minimalist, super-fast, database-free bookmarking service</em></h1>
-</body>
-</html>

+ 0 - 119
doc/_Sidebar.html

@@ -1,119 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-  <title>Shaarli – _Sidebar</title>
-  <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="github-markdown.css">
-  <!--[if lt IE 9]>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-  <![endif]-->
-</head>
-<body>
-<div id="local-sidebar">
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</div>
-<h1 id="sidebar">_Sidebar</h1>
-<ul>
-<li><a href="Home.html">Home</a></li>
-<li>Setup
-<ul>
-<li><a href="Download-and-Installation.html">Download and Installation</a></li>
-<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
-<li><a href="Server-requirements.html">Server requirements</a></li>
-<li><a href="Server-configuration.html">Server configuration</a></li>
-<li><a href="Server-security.html">Server security</a></li>
-<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
-<li><a href="Plugins.html">Plugins</a></li>
-</ul></li>
-<li><a href="Docker.html">Docker</a></li>
-<li><a href="Usage.html">Usage</a>
-<ul>
-<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
-<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
-<li><a href="Firefox-share.html">Firefox share</a></li>
-<li><a href="RSS-feeds.html">RSS feeds</a></li>
-<li><a href="REST-API.html">REST API</a></li>
-</ul></li>
-<li>How To
-<ul>
-<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
-<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>
-<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
-<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
-<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
-</ul></li>
-<li><a href="Troubleshooting.html">Troubleshooting</a></li>
-<li><a href="Development.html">Development</a>
-<ul>
-<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
-<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
-<li><a href="Directory-structure.html">Directory structure</a></li>
-<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
-<li><a href="Plugin-System.html">Plugin System</a></li>
-<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
-<li><a href="Versioning-and-Branches.html">Versioning and Branches</a></li>
-<li><a href="Security.html">Security</a></li>
-<li><a href="Static-analysis.html">Static analysis</a></li>
-<li><a href="Theming.html">Theming</a></li>
-<li><a href="Unit-tests.html">Unit tests</a></li>
-</ul></li>
-<li>About
-<ul>
-<li><a href="FAQ.html">FAQ</a></li>
-<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
-</ul></li>
-</ul>
-</body>
-</html>

+ 369 - 0
doc/html/3rd-party-libraries/index.html

@@ -0,0 +1,369 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>3rd party libraries - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "3rd party libraries";
+    var mkdocs_page_input_path = "3rd-party-libraries.md";
+    var mkdocs_page_url = "/3rd-party-libraries/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">3rd party libraries</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#css">CSS</a></li>
+    
+
+    <li class="toctree-l3"><a href="#javascript">Javascript</a></li>
+    
+
+    <li class="toctree-l3"><a href="#php">PHP</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Development &raquo;</li>
+        
+      
+    
+    <li>3rd party libraries</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/3rd-party-libraries.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="css">CSS</h2>
+<ul>
+<li>Yahoo UI <a href="http://yuilibrary.com/yui/docs/cssreset/">CSS Reset</a><ul>
+<li>resets default CSS properties for all HTML elements (overriding browsers' default values)</li>
+<li>ensures custom CSS stylessheets will provide the same results on all browsers</li>
+</ul>
+</li>
+</ul>
+<h2 id="javascript">Javascript</h2>
+<ul>
+<li><a href="https://leaverou.github.io/awesomplete/">Awesomeplete</a> (<a href="https://github.com/LeaVerou/awesomplete">GitHub</a>) - autocompletion in input forms</li>
+<li><a href="http://dinbror.dk/blazy/">bLazy</a> (<a href="https://github.com/dinbror/blazy">GitHub</a>) - lazy loading for thumbnails</li>
+<li><a href="http://neocotic.com/qr.js/">qr.js</a> (<a href="https://github.com/neocotic/qr.js">GitHub</a>) - QR code generation</li>
+</ul>
+<h2 id="php">PHP</h2>
+<ul>
+<li><a href="https://github.com/shaarli/netscape-bookmark-parser">shaarli/netscape-bookmark-parser</a> - Netscape bookmark parser</li>
+<li><a href="https://github.com/rainphp/raintpl">RainTPL</a> - HTML templating for PHP</li>
+</ul>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Plugin-System/" class="btn btn-neutral float-right" title="Plugin System">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Directory-structure/" class="btn btn-neutral" title="Directory structure"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Directory-structure/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Plugin-System/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 411 - 0
doc/html/Backup,-restore,-import-and-export/index.html

@@ -0,0 +1,411 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Backup, restore, import and export - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Backup, restore, import and export";
+    var mkdocs_page_input_path = "Backup,-restore,-import-and-export.md";
+    var mkdocs_page_url = "/Backup,-restore,-import-and-export/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class=" current">
+                    
+    <a class="current" href="./">Backup, restore, import and export</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#backup-and-restore-the-datastore-file">Backup and restore the datastore file</a></li>
+    
+
+    <li class="toctree-l3"><a href="#export-links-as">Export links as...</a></li>
+    
+
+    <li class="toctree-l3"><a href="#import-links-from">Import links from...</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#diigo">Diigo</a></li>
+        
+            <li><a class="toctree-l4" href="#mister-wong">Mister Wong</a></li>
+        
+            <li><a class="toctree-l4" href="#semanticscuttle">SemanticScuttle</a></li>
+        
+            <li><a class="toctree-l4" href="#scuttle">Scuttle</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#import-shaarli-links-to-firefox">Import Shaarli links to Firefox</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>How To &raquo;</li>
+        
+      
+    
+    <li>Backup, restore, import and export</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Backup,-restore,-import-and-export.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <ul>
+<li><a href="#backup-and-restore-the-datastore-file">Backup and restore the datastore file</a></li>
+<li><a href="#export-links-as">Export links as...</a></li>
+<li><a href="#import-links-from">Import links from...</a></li>
+<li><a href="#import-shaarli-links-to-firefox">Import Shaarli links to Firefox</a></li>
+</ul>
+<hr />
+<h2 id="backup-and-restore-the-datastore-file">Backup and restore the datastore file</h2>
+<p>Backup the file <code>data/datastore.php</code> (by FTP or SSH). Restore by putting the file back in place.</p>
+<p>Example command:</p>
+<pre><code class="bash">rsync -avzP my.server.com:/var/www/shaarli/data/datastore.php datastore-$(date +%Y-%m-%d_%H%M).php
+</code></pre>
+
+<h2 id="export-links-as">Export links as...</h2>
+<p>To export links as an HTML file, under <em>Tools &gt; Export</em>, choose:
+- <em>Export all</em> to export both public and private links
+- <em>Export public</em> to export public links only
+- <em>Export private</em> to export private links only</p>
+<p>Restore by using the <code>Import</code> feature.
+* This can be done using the <a href="https://github.com/nodiscc/shaarchiver">shaarchiver</a> tool.</p>
+<p>Example command: </p>
+<pre><code class="bash">./export-bookmarks.py --url=https://my.server.com/shaarli --username=myusername --password=mysupersecretpassword --download-dir=./ --type=all
+</code></pre>
+
+<h2 id="import-links-from">Import links from...</h2>
+<h3 id="diigo">Diigo</h3>
+<p>If you export your bookmark from Diigo, make sure you use the Delicious export, not the Netscape export. (Their Netscape export is broken, and they don't seem to be interested in fixing it.)</p>
+<h3 id="mister-wong">Mister Wong</h3>
+<p>See <a href="https://github.com/sebsauvage/Shaarli/issues/146">this issue</a> for import tweaks.</p>
+<h3 id="semanticscuttle">SemanticScuttle</h3>
+<p>To correctly import the tags from a <a href="http://semanticscuttle.sourceforge.net/">SemanticScuttle</a> HTML export, edit the HTML file before importing and replace all occurences of <code>tags=</code> (lowercase) to <code>TAGS=</code> (uppercase).</p>
+<h3 id="scuttle">Scuttle</h3>
+<p>Shaarli cannot import data directly from <a href="https://github.com/scronide/scuttle">Scuttle</a>. However, you can use this third party tool: https://github.com/q2apro/scuttle-to-shaarli to export the Scuttle database to the Netscape HTML format compatible with the Shaarli importer.</p>
+<h2 id="import-shaarli-links-to-firefox">Import Shaarli links to Firefox</h2>
+<ul>
+<li>Export your Shaarli links as described above.</li>
+<li>For compatibility reasons, check <code>Prepend note permalinks with this Shaarli instance's URL (useful to import bookmarks in a web browser)</code></li>
+<li>In Firefox, open the bookmark manager (not the sidebar! <code>Bookmarks menu &gt; Show all bookmarks</code> or <code>Ctrl+Shift+B</code>)</li>
+<li>Select <code>Import and Backup &gt; Import bookmarks in HTML format</code></li>
+</ul>
+<p>Your bookmarks will be imported in Firefox, ready to use, with tags and descriptions retained. "Self" (notes) shaares will still point to the Shaarli instance you exported them from, but the note text can be viewed directly in the bookmark properties inside your browser. Depending on the number of bookmarks, the import can take some time.</p>
+<p>You may be interested in these Firefox addons to manage links imported from Shaarli</p>
+<ul>
+<li><a href="https://addons.mozilla.org/en-US/firefox/addon/bookmark-deduplicator/">Bookmark Deduplicator</a> - provides an easy way to deduplicate your bookmarks</li>
+<li><a href="https://addons.mozilla.org/en-US/firefox/addon/tagsieve/">TagSieve</a> - browse your bookmarks by their tags</li>
+</ul>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/" class="btn btn-neutral float-right" title="Copy an existing installation over SSH and serve it locally">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../REST-API/" class="btn btn-neutral" title="REST API"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../REST-API/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 375 - 0
doc/html/Bookmarklet/index.html

@@ -0,0 +1,375 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Bookmarklet - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Bookmarklet";
+    var mkdocs_page_input_path = "Bookmarklet.md";
+    var mkdocs_page_url = "/Bookmarklet/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Bookmarklet</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#add-the-sharing-button-bookmarklet-to-your-browser">Add the sharing button (bookmarklet) to your browser</a></li>
+    
+
+    <li class="toctree-l3"><a href="#share-links-using-the-bookmarklet">Share links using the bookmarklet</a></li>
+    
+
+    <li class="toctree-l3"><a href="#troubleshooting-the-bookmarklet-doesnt-work-with-a-few-website-eg-githubcom">Troubleshooting: The bookmarklet doesn't work with a few website (e.g. Github.com)</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Usage &raquo;</li>
+        
+      
+    
+    <li>Bookmarklet</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Bookmarklet.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h3 id="add-the-sharing-button-bookmarklet-to-your-browser">Add the sharing button (<em>bookmarklet</em>) to your browser</h3>
+<ul>
+<li>Open your Shaarli and <code>Login</code></li>
+<li>Click the <code>Tools</code> button in the top bar</li>
+<li>Drag the <strong><code>✚Shaare link</code> button</strong>, and drop it to your browser's bookmarks bar.</li>
+</ul>
+<p><em>This bookmarklet button is compatible with Firefox, Opera, Chrome and Safari. Under Opera, you can't drag'n drop the button: You have to right-click on it and add a bookmark to your personal toolbar.</em></p>
+<p><img alt="" src="../images/bookmarklet.png" /></p>
+<h3 id="share-links-using-the-bookmarklet">Share links using the <em>bookmarklet</em></h3>
+<ul>
+<li>When you are visiting a webpage you would like to share with Shaarli, click the <em>bookmarklet</em> you just added.</li>
+<li>A window opens.</li>
+<li>You can freely edit title, description, tags... to find it later using the text search or tag filtering.</li>
+<li>You will be able to edit this link later using the <img alt="" src="https://raw.githubusercontent.com/shaarli/Shaarli/master/images/edit_icon.png" /> edit button.</li>
+<li>You can also check the “Private” box so that the link is saved but only visible to you. </li>
+<li>Click <code>Save</code>.<strong>Voilà! Your link is now shared.</strong></li>
+</ul>
+<h3 id="troubleshooting-the-bookmarklet-doesnt-work-with-a-few-website-eg-githubcom">Troubleshooting: The bookmarklet doesn't work with a few website (e.g. Github.com)</h3>
+<p>Websites which enforce Content Security Policy (CSP), such as github.com, disallow usage of bookmarklets. Unfortunatly, there is nothing Shaarli can do about it.</p>
+<p>See <a href="https://github.com/shaarli/Shaarli#196">#196</a>.</p>
+<p>There is an open bug for both Firefox and Chromium:</p>
+<ul>
+<li>https://bugzilla.mozilla.org/show_bug.cgi?id=866522</li>
+<li>https://code.google.com/p/chromium/issues/detail?id=233903</li>
+</ul>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Browsing-and-searching/" class="btn btn-neutral float-right" title="Browsing and searching">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Features/" class="btn btn-neutral" title="Features"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Features/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Browsing-and-searching/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 362 - 0
doc/html/Browsing-and-searching/index.html

@@ -0,0 +1,362 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Browsing and searching - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Browsing and searching";
+    var mkdocs_page_input_path = "Browsing-and-searching.md";
+    var mkdocs_page_url = "/Browsing-and-searching/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Browsing and searching</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#plain-text-search">Plain text search</a></li>
+    
+
+    <li class="toctree-l3"><a href="#tags-search">Tags search</a></li>
+    
+
+    <li class="toctree-l3"><a href="#filtering-rss-feedspicture-wall">Filtering RSS feeds/Picture wall</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Usage &raquo;</li>
+        
+      
+    
+    <li>Browsing and searching</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Browsing-and-searching.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="plain-text-search">Plain text search</h2>
+<p>Use the <code>Search text</code> field to search in <em>any</em> of the fields of all links (Title, URL, Description...)</p>
+<p><strong>Exclude text/tags:</strong> Use the <code>-</code> operator before a word or tag (example <code>-uninteresting</code>) to prevent entries containing (or tagged) <code>uninteresting</code> from showing up in the search results.</p>
+<p><strong>Exact text search:</strong> Use double-quotes (example <code>"exact search"</code>) to search for the exact expression.</p>
+<p>Both exclude patterns and exact searches can be combined with normal searches (example <code>"exact search" term otherterm -notthis "very exact" stuff -notagain</code>)</p>
+<h2 id="tags-search">Tags search</h2>
+<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>
+<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>
+<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>
+<p>To search for links that are not tagged, enter <code>""</code> in the tag search field.</p>
+<h2 id="filtering-rss-feedspicture-wall">Filtering RSS feeds/Picture wall</h2>
+<p>RSS feeds can also be restricted to only return items matching a text/tag search: see <a href="../RSS feeds">RSS feeds</a>.</p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Firefox-share/" class="btn btn-neutral float-right" title="Firefox share">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Bookmarklet/" class="btn btn-neutral" title="Bookmarklet"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Bookmarklet/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Firefox-share/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 348 - 0
doc/html/Coding-guidelines/index.html

@@ -0,0 +1,348 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Coding guidelines - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Coding guidelines";
+    var mkdocs_page_input_path = "Coding-guidelines.md";
+    var mkdocs_page_url = "/Coding-guidelines/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Coding guidelines</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#wip">WIP</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Development &raquo;</li>
+        
+      
+    
+    <li>Coding guidelines</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Coding-guidelines.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="wip">WIP</h2>
+<p>This topic is currently being discussed here:
+- <a href="https://github.com/shaarli/Shaarli/issues/95">Fix coding style (static analysis)</a> (#95)
+- <a href="https://github.com/shaarli/Shaarli/issues/130">Continuous Integration tools &amp; features</a> (#130)</p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Directory-structure/" class="btn btn-neutral float-right" title="Directory structure">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../GnuPG-signature/" class="btn btn-neutral" title="GnuPG signature"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../GnuPG-signature/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Directory-structure/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 419 - 0
doc/html/Community-&-Related-software/index.html

@@ -0,0 +1,419 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Community & Related software - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Community & Related software";
+    var mkdocs_page_input_path = "Community-&-Related-software.md";
+    var mkdocs_page_url = "/Community-&-Related-software/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Community & Related software</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#community">Community</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#articles-and-social-media-discussions">Articles and social media discussions</a></li>
+        
+            <li><a class="toctree-l4" href="#third-party-plugins">Third party plugins</a></li>
+        
+            <li><a class="toctree-l4" href="#themes">Themes</a></li>
+        
+            <li><a class="toctree-l4" href="#server-apps">Server apps</a></li>
+        
+            <li><a class="toctree-l4" href="#mobile-apps">Mobile Apps</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#integration-with-other-platforms">Integration with other platforms</a></li>
+    
+
+    <li class="toctree-l3"><a href="#alternatives-to-shaarli">Alternatives to Shaarli</a></li>
+    
+
+    </ul>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>About &raquo;</li>
+        
+      
+    
+    <li>Community & Related software</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Community-&-Related-software.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <p><em>Unofficial but related work on Shaarli. If you maintain one of these, please get in touch with us to help us find a way to adapt your work to our fork.</em></p>
+<p><em>TODO: contact repos owners to see if they'd like to standardize their work with the community fork.</em></p>
+<h2 id="community">Community</h2>
+<ul>
+<li><a href="http://sebsauvage.net/links/">Liens en vrac de sebsauvage</a> - the original Shaarli</li>
+<li><a href="http://porneia.free.fr/pub/links/ou-est-shaarli.html">A large list of Shaarlis</a></li>
+<li><a href="https://raw.githubusercontent.com/Oros42/find_shaarlis/master/annuaires.json">A list of working Shaarli aggregators</a></li>
+<li><a href="https://github.com/Oros42/shaarlis_list">A list of some known Shaarlis</a></li>
+<li><a href="http://sebsauvage.net/rhaa/index.php?2011/09/16/09/29/58-adieu-delicious-diigo-et-stumbleupon-salut-shaarli-">Adieu Delicious, Diigo et StumbleUpon. Salut Shaarli ! - sebsauvage.net</a> (fr) <em>16/09/2011 - the original post about Shaarli</em></li>
+<li><a href="http://sebsauvage.net/wiki/doku.php?id=php:shaarli:ideas">Original ideas/fixme/TODO page</a></li>
+<li><a href="http://sebsauvage.net/wiki/doku.php?id=php:shaarli:discussion">Original discussion page</a> (fr)</li>
+<li><a href="http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history">Original revisions history</a></li>
+<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></li>
+</ul>
+<h3 id="articles-and-social-media-discussions">Articles and social media discussions</h3>
+<ul>
+<li>2016-09-22 - Hacker News - https://news.ycombinator.com/item?id=12552176</li>
+<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></li>
+<li>2015-06-22 - Hacker News - https://news.ycombinator.com/item?id=9755366</li>
+<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></li>
+</ul>
+<h3 id="third-party-plugins">Third party plugins</h3>
+<ul>
+<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.</li>
+<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.</li>
+<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.</li>
+<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.</li>
+<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</li>
+<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.</li>
+<li><a href="https://github.com/ilesinge/shaarli-related">related</a> by <a href="https://github.com/ilesinge">@ilesinge</a> - Show related links based on the number of identical tags.</li>
+<li><a href="https://github.com/alexisju/social">social</a> by <a href="https://github.com/alexisju">@alexisju</a>: share links to social networks.</li>
+<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</li>
+</ul>
+<h3 id="themes">Themes</h3>
+<p>See <a href="../Theming">Theming</a> for the list of community-contributed themes, and an installation guide.</p>
+<h3 id="server-apps">Server apps</h3>
+<ul>
+<li><a href="https://github.com/nodiscc/shaarchiver">shaarchiver</a> - Archive your Shaarli bookmarks and their content</li>
+<li><a href="https://github.com/mknexen/shaarli-river">shaarli-river</a> - An aggregator for shaarlis with many features </li>
+<li><a href="https://github.com/DMeloni/shaarlo">Shaarlo</a> - An aggregator for shaarlis with many features (a very popular running instance among french shaarliers: <a href="http://shaarli.fr/">shaarli.fr</a>)</li>
+<li><a href="https://github.com/BoboTiG/shaarlimages">Shaarlimages</a> - An image-oriented aggregator for Shaarlis</li>
+<li><a href="https://github.com/mknexen/shaarli-api">mknexen/shaarli-api</a> - A REST API for Shaarli</li>
+<li><a href="https://github.com/qwertygc/shaarli-dev-code/blob/master/self-dead-link.php">Self dead link</a> - Detect dead links on shaarli. This version use the database of shaarli. <a href="https://github.com/qwertygc/shaarli-dev-code/blob/master/dead-link.php">Another version</a>, can be used for other shaarli instances (but is more resource consuming).</li>
+<li><a href="https://github.com/pirate/bookmark-archiver">Bookmark Archiver</a> - Save an archived copy of all websites starred using browser bookmarks/Shaarli/Delicious/Instapaper/Unmark.it/Pocket/Pinboard. Outputs browseable html. </li>
+</ul>
+<h3 id="mobile-apps">Mobile Apps</h3>
+<ul>
+<li><a href="https://github.com/mro/ShaarliOS">ShaarliOS</a> iOS share extension - see <a href="https://github.com/shaarli/Shaarli/issues/308#issuecomment-184592070">#308</a> for some promo codes,</li>
+<li><a href="http://sebsauvage.net/links/?ZAyDzg">Shaarli for Android</a> - Android application that adds Shaarli as a sharing provider</li>
+<li><a href="https://github.com/dimtion/Shaarlier">Shaarlier for Android</a> - Android application to simply add links directly into your Shaarli</li>
+</ul>
+<h2 id="integration-with-other-platforms">Integration with other platforms</h2>
+<ul>
+<li><a href="https://github.com/jcsaaddupuy/tt-rss-shaarli">tt-rss-shaarli</a> - <a href="http://tt-rss.org/">Tiny-Tiny RSS</a> plugin that adds support for sharing articles with Shaarli</li>
+<li><a href="https://github.com/ahmet2mir/octopress-shaarli">octopress-shaarli</a> - Octopress plugin to retrieve Shaarli links on the sidebar</li>
+<li><a href="https://github.com/q2apro/scuttle-to-shaarli">Scuttle to Shaarli</a> - Import bookmarks from Scuttle</li>
+</ul>
+<h2 id="alternatives-to-shaarli">Alternatives to Shaarli</h2>
+<p>See the <a href="https://github.com/Kickball/awesome-selfhosted/#bookmarks--link-sharing">bookmarks &amp; link sharing</a> section on <a href="https://github.com/Kickball/awesome-selfhosted/">awesome-selfhosted</a>.</p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+      
+        <a href="../FAQ/" class="btn btn-neutral" title="FAQ"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../FAQ/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 367 - 0
doc/html/Continuous-integration-tools/index.html

@@ -0,0 +1,367 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Continuous integration tools - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Continuous integration tools";
+    var mkdocs_page_input_path = "Continuous-integration-tools.md";
+    var mkdocs_page_url = "/Continuous-integration-tools/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Continuous integration tools</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#local-development">Local development</a></li>
+    
+
+    <li class="toctree-l3"><a href="#automatic-builds">Automatic builds</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Development &raquo;</li>
+        
+      
+    
+    <li>Continuous integration tools</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Continuous-integration-tools.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="local-development">Local development</h2>
+<p>A <a href="https://github.com/shaarli/Shaarli/blob/master/Makefile"><code>Makefile</code></a> is available to perform project-related operations:
+- Documentation - generate a local HTML copy of the GitHub wiki
+- <a href="../Static analysis">Static analysis</a> - check that the code is compliant to PHP conventions
+- <a href="../Unit tests">Unit tests</a> - ensure there are no regressions introduced by new commits</p>
+<h2 id="automatic-builds">Automatic builds</h2>
+<p><a href="http://docs.travis-ci.com/">Travis CI</a> is a Continuous Integration build server, that runs a build:
+- each time a commit is merged to the mainline (<code>master</code> branch)
+- each time a Pull Request is submitted or updated</p>
+<p>A build is composed of several jobs: one for each supported PHP version (see <a href="../Server requirements">Server requirements</a>).</p>
+<p>Each build job:
+- updates Composer
+- installs 3rd-party test dependencies with Composer
+- runs <a href="../Unit tests">Unit tests</a></p>
+<p>After all jobs have finished, Travis returns the results to GitHub:
+- a status icon represents the result for the <code>master</code> branch: <a href="https://travis-ci.org/shaarli/Shaarli"><img alt="" src="https://api.travis-ci.org/shaarli/Shaarli.svg" /></a>
+- Pull Requests are updated with the Travis result
+    - Green: all tests have passed
+    - Red: some tests failed
+    - Orange: tests are pending</p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../GnuPG-signature/" class="btn btn-neutral float-right" title="GnuPG signature">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Development-guidelines/" class="btn btn-neutral" title="Development guidelines"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Development-guidelines/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../GnuPG-signature/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 403 - 0
doc/html/Copy-an-existing-installation-over-SSH-and-serve-it-locally/index.html

@@ -0,0 +1,403 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Copy an existing installation over SSH and serve it locally - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Copy an existing installation over SSH and serve it locally";
+    var mkdocs_page_input_path = "Copy-an-existing-installation-over-SSH-and-serve-it-locally.md";
+    var mkdocs_page_url = "/Copy-an-existing-installation-over-SSH-and-serve-it-locally/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Copy an existing installation over SSH and serve it locally</a>
+    <ul class="subnav">
+            
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>How To &raquo;</li>
+        
+      
+    
+    <li>Copy an existing installation over SSH and serve it locally</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Copy-an-existing-installation-over-SSH-and-serve-it-locally.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <p>Example bash script:</p>
+<pre><code class="bash">#!/bin/bash
+#Description: Copy a Shaarli installation over SSH/SCP, serve it locally with php-cli
+#Will create a local-shaarli/ directory when you run it, backup your Shaarli there, and serve it locally.
+#Will NOT download linked pages. It's just a directly usable backup/copy/mirror of your Shaarli
+#Requires: ssh, scp and a working SSH access to the server where your Shaarli is installed
+#Usage: ./local-shaarli.sh
+#Author: nodiscc (nodiscc@gmail.com)
+#License: MIT (http://opensource.org/licenses/MIT)
+set -o errexit
+set -o nounset
+
+##### CONFIG #################
+#The port used by php's local server
+php_local_port=7431
+
+#Name of the SSH server and path where Shaarli is installed
+#TODO: pass these as command-line arguments
+remotehost=&quot;my.ssh.server&quot;
+remote_shaarli_dir=&quot;/var/www/shaarli&quot;
+
+
+###### FUNCTIONS #############
+_main() {
+    _CBSyncShaarli
+    _CBServeShaarli
+}
+
+_CBSyncShaarli() {
+    remote_temp_dir=$(ssh $remotehost mktemp -d)
+    remote_ssh_user=$(ssh $remotehost whoami)
+    ssh -t &quot;$remotehost&quot; sudo cp -r &quot;$remote_shaarli_dir&quot; &quot;$remote_temp_dir&quot;
+    ssh -t &quot;$remotehost&quot; sudo chown -R &quot;$remote_ssh_user&quot;:&quot;$remote_ssh_user&quot; &quot;$remote_temp_dir&quot;
+    scp -rq &quot;$remotehost&quot;:&quot;$remote_temp_dir&quot; local-shaarli
+    ssh &quot;$remotehost&quot; rm -r &quot;$remote_temp_dir&quot;
+}
+
+_CBServeShaarli() {
+    #TODO: allow serving a previously downloaded Shaarli
+    #TODO: ask before overwriting local copy, if it exists
+    cd local-shaarli/
+    php -S localhost:${php_local_port}
+    echo &quot;Please go to http://localhost:${php_local_port}&quot;
+}
+
+
+##### MAIN #################
+
+_main
+</code></pre>
+
+<p>This outputs:</p>
+<pre><code class="bash">$ ./local-shaarli.sh
+PHP 5.6.0RC4 Development Server started at Mon Sep  1 21:56:19 2014
+Listening on http://localhost:7431
+Document root is /home/user/local-shaarli/shaarli
+Press Ctrl-C to quit.
+
+[Mon Sep  1 21:56:27 2014] ::1:57868 [200]: /
+[Mon Sep  1 21:56:27 2014] ::1:57869 [200]: /index.html
+[Mon Sep  1 21:56:37 2014] ::1:57881 [200]: /...
+</code></pre>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Create-and-serve-multiple-Shaarlis-(farm)/" class="btn btn-neutral float-right" title="Create and serve multiple Shaarlis (farm)">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Backup,-restore,-import-and-export/" class="btn btn-neutral" title="Backup, restore, import and export"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Backup,-restore,-import-and-export/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Create-and-serve-multiple-Shaarlis-(farm)/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 396 - 0
doc/html/Create-and-serve-multiple-Shaarlis-(farm)/index.html

@@ -0,0 +1,396 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Create and serve multiple Shaarlis (farm) - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Create and serve multiple Shaarlis (farm)";
+    var mkdocs_page_input_path = "Create-and-serve-multiple-Shaarlis-(farm).md";
+    var mkdocs_page_url = "/Create-and-serve-multiple-Shaarlis-(farm)/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Create and serve multiple Shaarlis (farm)</a>
+    <ul class="subnav">
+            
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>How To &raquo;</li>
+        
+      
+    
+    <li>Create and serve multiple Shaarlis (farm)</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Create-and-serve-multiple-Shaarlis-(farm).md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <p>Example bash script (creates multiple shaarli instances and generates an HTML index of them)</p>
+<pre><code class="bash">#!/bin/bash
+set -o errexit
+set -o nounset
+
+#config
+shaarli_base_dir='/var/www/shaarli'
+accounts='bob john whatever username'
+shaarli_repo_url='https://github.com/shaarli/Shaarli'
+ref=&quot;master&quot;
+
+#clone multiple shaarli instances
+if [ ! -d &quot;$shaarli_base_dir&quot; ]; then mkdir &quot;$shaarli_base_dir&quot;; fi
+
+for account in $accounts; do
+    if [ -d &quot;$shaarli_base_dir/$account&quot; ];
+    then echo &quot;[info] account $account already exists, skipping&quot;;
+    else echo &quot;[info] creating new account $account ...&quot;; git clone --quiet &quot;$shaarli_repo_url&quot; -b &quot;$ref&quot; &quot;$shaarli_base_dir/$account&quot;; fi
+done
+
+#generate html index of shaarlis
+htmlhead='&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;
+&lt;!-- Minimal html template thanks to http://www.sitepoint.com/a-minimal-html-document/ --&gt;
+&lt;html lang=&quot;en&quot;&gt;
+    &lt;head&gt;
+        &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
+        &lt;title&gt;My Shaarli farm&lt;/title&gt;
+        &lt;style&gt;body {font-family: &quot;Open Sans&quot;}&lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+    &lt;div&gt;
+    &lt;h1&gt;My Shaarli farm&lt;/h1&gt;
+    &lt;ul style=&quot;list-style-type: none;&quot;&gt;'
+
+accountlinks=''
+
+htmlfooter='
+    &lt;/ul&gt;
+    &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;'    
+
+
+
+for account in $accounts; do accountlinks=&quot;$accountlinks\n&lt;li&gt;&lt;a href=\&quot;$account\&quot;&gt;$account&lt;/a&gt;&lt;/li&gt;&quot;; done
+if [ -d &quot;$shaarli_base_dir/index.html&quot; ]; then echo &quot;[removing old index.html]&quot;; rm &quot;$shaarli_base_dir/index.html&quot; ]; fi
+echo &quot;[info] generating new index of shaarlis&quot;
+echo -e &quot;$htmlhead $accountlinks $htmlfooter&quot; &gt; &quot;$shaarli_base_dir/index.html&quot;
+echo '[info] done.'
+echo &quot;[info] list of accounts: $accounts&quot;
+echo &quot;[info] contents of $shaarli_base_dir:&quot;
+tree -a -L 1 &quot;$shaarli_base_dir&quot;
+</code></pre>
+
+<p>This script just serves as an example. More precise or complex (applying custom configuration, etc) automation is possible using configuration management software like <a href="https://www.ansible.com/">Ansible</a></p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Download-CSS-styles-from-an-OPML-list/" class="btn btn-neutral float-right" title="Download CSS styles from an OPML list">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/" class="btn btn-neutral" title="Copy an existing installation over SSH and serve it locally"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Download-CSS-styles-from-an-OPML-list/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 369 - 0
doc/html/Datastore-hacks/index.html

@@ -0,0 +1,369 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Datastore hacks - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Datastore hacks";
+    var mkdocs_page_input_path = "Datastore-hacks.md";
+    var mkdocs_page_url = "/Datastore-hacks/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Datastore hacks</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#decode-datastore-content">Decode datastore content</a></li>
+    
+
+    <li class="toctree-l3"><a href="#changing-the-timestamp-for-a-link">Changing the timestamp for a link</a></li>
+    
+
+    </ul>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>How To &raquo;</li>
+        
+      
+    
+    <li>Datastore hacks</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Datastore-hacks.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h3 id="decode-datastore-content">Decode datastore content</h3>
+<p>To display the array representing the data saved in <code>data/datastore.php</code>, use the following snippet:</p>
+<pre><code class="php">$data = &quot;tZNdb9MwFIb... &lt;Commented content inside datastore.php&gt;&quot;;
+$out = unserialize(gzinflate(base64_decode($data)));
+echo &quot;&lt;pre&gt;&quot;; // Pretty printing is love, pretty printing is life
+print_r($out);
+echo &quot;&lt;/pre&gt;&quot;;
+exit;
+</code></pre>
+
+<p>This will output the internal representation of the datastore, "unobfuscated" (if this can really be considered obfuscation).</p>
+<p>Alternatively, you can transform to JSON format (and pretty-print if you have <code>jq</code> installed):</p>
+<pre><code>php -r 'print(json_encode(unserialize(gzinflate(base64_decode(preg_replace(&quot;!.*/\* (.+) \*/.*!&quot;, &quot;$1&quot;, file_get_contents(&quot;data/datastore.php&quot;)))))));' | jq .
+</code></pre>
+
+<h3 id="changing-the-timestamp-for-a-link">Changing the timestamp for a link</h3>
+<ul>
+<li>Look for <code>&lt;input type="hidden" name="lf_linkdate" value="{$link.linkdate}"&gt;</code> in <code>tpl/editlink.tpl</code> (line 14)</li>
+<li>Replace <code>type="hidden"</code> with <code>type="text"</code> from this line</li>
+<li>A new date/time field becomes available in the edit/new link dialog.</li>
+<li>You can set the timestamp manually by entering it in the format <code>YYYMMDD_HHMMS</code>.</li>
+</ul>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Troubleshooting/" class="btn btn-neutral float-right" title="Troubleshooting">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Download-CSS-styles-from-an-OPML-list/" class="btn btn-neutral" title="Download CSS styles from an OPML list"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Download-CSS-styles-from-an-OPML-list/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Troubleshooting/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 352 - 0
doc/html/Development-guidelines/index.html

@@ -0,0 +1,352 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Development guidelines - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Development guidelines";
+    var mkdocs_page_input_path = "Development-guidelines.md";
+    var mkdocs_page_url = "/Development-guidelines/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class=" current">
+                    
+    <a class="current" href="./">Development guidelines</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#development-guidelines">Development guidelines</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Development &raquo;</li>
+        
+      
+    
+    <li>Development guidelines</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Development-guidelines.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="development-guidelines">Development guidelines</h2>
+<p>Please have a look at the following pages:
+- <a href="https://github.com/shaarli/Shaarli/tree/master/CONTRIBUTING.md">Contributing to Shaarli</a>
+- <a href="../Static analysis">Static analysis</a> - patches should try to stick to the <a href="http://www.php-fig.org/psr/">PHP Standard Recommendations</a> (PSR), especially:
+    - <a href="http://www.php-fig.org/psr/psr-1/">PSR-1</a> - Basic Coding Standard
+    - <a href="http://www.php-fig.org/psr/psr-2/">PSR-2</a> - Coding Style Guide
+- <a href="../Unit tests">Unit tests</a>
+- <a href="../GnuPG signature">GnuPG signature</a> for tags/releases</p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Continuous-integration-tools/" class="btn btn-neutral float-right" title="Continuous integration tools">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Troubleshooting/" class="btn btn-neutral" title="Troubleshooting"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Troubleshooting/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Continuous-integration-tools/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 371 - 0
doc/html/Directory-structure/index.html

@@ -0,0 +1,371 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Directory structure - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Directory structure";
+    var mkdocs_page_input_path = "Directory-structure.md";
+    var mkdocs_page_url = "/Directory-structure/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Directory structure</a>
+    <ul class="subnav">
+            
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Development &raquo;</li>
+        
+      
+    
+    <li>Directory structure</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Directory-structure.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <p>Here is the directory structure of Shaarli and the purpose of the different files:</p>
+<pre><code class="bash">    index.php        # Main program
+    application/     # Shaarli classes
+        ├── LinkDB.php
+        └── Utils.php
+    tests/       # Shaarli unitary &amp; functional tests
+        ├── LinkDBTest.php
+        ├── utils  # utilities to ease testing
+        │   └── ReferenceLinkDB.php
+        └── UtilsTest.php
+    COPYING          # Shaarli license
+    inc/             # static assets and 3rd party libraries
+        ├── awesomplete.*          # tags autocompletion library
+        ├── blazy.*                # picture wall lazy image loading library
+        ├── shaarli.css, reset.css # Shaarli stylesheet.
+        ├── qr.*                   # qr code generation library
+        └──rain.tpl.class.php      # RainTPL templating library
+    tpl/             # RainTPL templates for Shaarli. They are used to build the pages.
+    images/          # Images and icons used in Shaarli
+    data/            # data storage: bookmark database, configuration, logs, banlist…
+        ├── config.php             # Shaarli configuration (login, password, timezone, title…)
+        ├── datastore.php          # Your link database (compressed).
+        ├── ipban.php              # IP address ban system data
+        ├── lastupdatecheck.txt    # Update check timestamp file
+        └──log.txt                 # login/IPban log.
+    cache/           # thumbnails cache
+                     # This directory is automatically created. You can erase it anytime you want.
+    tmp/             # Temporary directory for compiled RainTPL templates.
+                     # This directory is automatically created. You can erase it anytime you want.
+</code></pre>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../3rd-party-libraries/" class="btn btn-neutral float-right" title="3rd party libraries">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Coding-guidelines/" class="btn btn-neutral" title="Coding guidelines"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Coding-guidelines/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../3rd-party-libraries/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 410 - 0
doc/html/Docker-101/index.html

@@ -0,0 +1,410 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Docker 101 - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Docker 101";
+    var mkdocs_page_input_path = "Docker-101.md";
+    var mkdocs_page_url = "/Docker-101/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class=" current">
+                    
+    <a class="current" href="./">Docker 101</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#basics">Basics</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#search-an-image-on-dockerhub">Search an image on DockerHub</a></li>
+        
+            <li><a class="toctree-l4" href="#show-available-tags-for-a-repository">Show available tags for a repository</a></li>
+        
+            <li><a class="toctree-l4" href="#pull-an-image-from-dockerhub">Pull an image from DockerHub</a></li>
+        
+        </ul>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Docker &raquo;</li>
+        
+      
+    
+    <li>Docker 101</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Docker-101.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="basics">Basics</h2>
+<p>Install <a href="https://www.docker.com/">Docker</a>, by following the instructions relevant
+to your OS / distribution, and start the service.</p>
+<h3 id="search-an-image-on-dockerhub">Search an image on <a href="https://hub.docker.com/">DockerHub</a></h3>
+<pre><code class="bash">$ docker search debian
+
+NAME            DESCRIPTION                                     STARS   OFFICIAL   AUTOMATED
+ubuntu          Ubuntu is a Debian-based Linux operating s...   2065    [OK]
+debian          Debian is a Linux distribution that's comp...   603     [OK]
+google/debian                                                   47                 [OK]
+</code></pre>
+
+<h3 id="show-available-tags-for-a-repository">Show available tags for a repository</h3>
+<pre><code class="bash">$ curl https://index.docker.io/v1/repositories/debian/tags | python -m json.tool
+
+% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
+Dload  Upload   Total   Spent    Left  Speed
+100  1283    0  1283    0     0    433      0 --:--:--  0:00:02 --:--:--   433
+</code></pre>
+
+<p>Sample output:</p>
+<pre><code class="json">[
+    {
+        &quot;layer&quot;: &quot;85a02782&quot;,
+        &quot;name&quot;: &quot;stretch&quot;
+    },
+    {
+        &quot;layer&quot;: &quot;59abecbc&quot;,
+        &quot;name&quot;: &quot;testing&quot;
+    },
+    {
+        &quot;layer&quot;: &quot;bf0fd686&quot;,
+        &quot;name&quot;: &quot;unstable&quot;
+    },
+    {
+        &quot;layer&quot;: &quot;60c52dbe&quot;,
+        &quot;name&quot;: &quot;wheezy&quot;
+    },
+    {
+        &quot;layer&quot;: &quot;c5b806fe&quot;,
+        &quot;name&quot;: &quot;wheezy-backports&quot;
+    }
+]
+
+</code></pre>
+
+<h3 id="pull-an-image-from-dockerhub">Pull an image from DockerHub</h3>
+<pre><code class="bash">$ docker pull repository[:tag]
+
+$ docker pull debian:wheezy
+wheezy: Pulling from debian
+4c8cbfd2973e: Pull complete
+60c52dbe9d91: Pull complete
+Digest: sha256:c584131da2ac1948aa3e66468a4424b6aea2f33acba7cec0b631bdb56254c4fe
+Status: Downloaded newer image for debian:wheezy
+</code></pre>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Shaarli-images/" class="btn btn-neutral float-right" title="Shaarli images">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Plugins/" class="btn btn-neutral" title="Plugins"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Plugins/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Shaarli-images/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 370 - 0
doc/html/Docker-resources/index.html

@@ -0,0 +1,370 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Docker resources - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Docker resources";
+    var mkdocs_page_input_path = "Docker-resources.md";
+    var mkdocs_page_url = "/Docker-resources/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Docker resources</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#docker">Docker</a></li>
+    
+
+    <li class="toctree-l3"><a href="#dockerhub">DockerHub</a></li>
+    
+
+    <li class="toctree-l3"><a href="#service-management">Service management</a></li>
+    
+
+    </ul>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Docker &raquo;</li>
+        
+      
+    
+    <li>Docker resources</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Docker-resources.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h3 id="docker">Docker</h3>
+<ul>
+<li><a href="https://www.katacoda.com/courses/docker/">Interactive Docker training portal</a> on <a href="https://www.katacoda.com/">Katakoda</a></li>
+<li><a href="http://blog.thoward37.me/articles/where-are-docker-images-stored/">Where are Docker images stored?</a></li>
+<li><a href="https://docs.docker.com/reference/builder/">Dockerfile reference</a></li>
+<li><a href="https://docs.docker.com/articles/dockerfile_best-practices/">Dockerfile best practices</a></li>
+<li><a href="https://docs.docker.com/userguide/dockervolumes/">Volumes</a></li>
+</ul>
+<h3 id="dockerhub">DockerHub</h3>
+<ul>
+<li><a href="https://docs.docker.com/userguide/dockerrepos/">Repositories</a></li>
+<li><a href="https://docs.docker.com/docker-hub/orgs/">Teams and organizations</a></li>
+<li><a href="https://docs.docker.com/docker-hub/github/">GitHub automated build</a></li>
+</ul>
+<h3 id="service-management">Service management</h3>
+<ul>
+<li><a href="https://docs.docker.com/articles/using_supervisord/">Using supervisord</a></li>
+<li><a href="http://nginx.org/en/docs/ngx_core_module.html#daemon">Nginx in the foreground</a></li>
+<li><a href="http://supervisord.org/">supervisord</a></li>
+</ul>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Features/" class="btn btn-neutral float-right" title="Features">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Reverse-proxy-configuration/" class="btn btn-neutral" title="Reverse proxy configuration"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Reverse-proxy-configuration/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Features/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 496 - 0
doc/html/Download-CSS-styles-from-an-OPML-list/index.html

@@ -0,0 +1,496 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Download CSS styles from an OPML list - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Download CSS styles from an OPML list";
+    var mkdocs_page_input_path = "Download-CSS-styles-from-an-OPML-list.md";
+    var mkdocs_page_url = "/Download-CSS-styles-from-an-OPML-list/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Download CSS styles from an OPML list</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#download-css-styles-for-shaarlis-listed-in-an-opml-file">Download CSS styles for shaarlis listed in an opml file</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>How To &raquo;</li>
+        
+      
+    
+    <li>Download CSS styles from an OPML list</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Download-CSS-styles-from-an-OPML-list.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h3 id="download-css-styles-for-shaarlis-listed-in-an-opml-file">Download CSS styles for shaarlis listed in an opml file</h3>
+<p>Example php script:</p>
+<pre><code class="php">&lt;!---- ?php --&gt;
+&lt;!---- Copyright (c) 2014 Nicolas Delsaux (https://github.com/Riduidel) --&gt;
+&lt;!---- License: zlib (http://www.gzip.org/zlib/zlib_license.html) --&gt;
+
+/**
+ * Source: https://github.com/Riduidel
+ * Download css styles for shaarlis listed in an opml file
+ */
+define(&quot;SHAARLI_RSS_OPML&quot;, &quot;https://www.ecirtam.net/shaarlirss/custom/people.opml&quot;);
+
+define(&quot;THEMES_TEMP_FOLDER&quot;, &quot;new_themes&quot;);
+
+if(!file_exists(THEMES_TEMP_FOLDER)) {
+    mkdir(THEMES_TEMP_FOLDER);
+}
+
+function siteUrl($pathInSite) {
+    $indexPos = strpos($pathInSite, &quot;index.php&quot;);
+    if(!$indexPos) {
+        return $pathInSite;
+    } else {
+        return substr($pathInSite, 0, $indexPos);
+    }
+}
+
+function createShaarliHashFromOPMLL($opmlFile) {
+    $result = array();
+    $opml = file_get_contents($opmlFile);
+    $opmlXml = simplexml_load_string($opml);
+    $outlineElements = $opmlXml-&gt;xpath(&quot;body/outline&quot;);
+    foreach($outlineElements as $site) {
+        $siteUrl = siteUrl((string) $site['htmlUrl']);
+        $result[$siteUrl]=((string) $site['text']);
+    }
+    return $result;
+}
+
+function getSiteFolder($url) {
+    $domain = parse_url($url,  PHP_URL_HOST);
+    return THEMES_TEMP_FOLDER.&quot;/&quot;.str_replace(&quot;.&quot;, &quot;_&quot;, $domain);
+}
+
+function get_http_response_code($theURL) {
+     $headers = get_headers($theURL);
+     return substr($headers[0], 9, 3);
+}
+
+/**
+ * This makes the code PHP-5 only (particularly the call to &quot;get_headers&quot;)
+ */
+function copyUserStyleFrom($url, $name, $knownStyles) {
+    $userStyle = $url.&quot;inc/user.css&quot;;
+    if(in_array($url, $knownStyles)) {
+        // TODO add log message
+    } else {
+        $statusCode = get_http_response_code($userStyle);
+        if(intval($statusCode)&lt;300) {
+            $styleSheet = file_get_contents($userStyle);
+            $siteFolder = getSiteFolder($url);
+            if(!file_exists($siteFolder)) {
+                mkdir($siteFolder);
+            }
+            if(!file_exists($siteFolder.'/user.css')) {
+                // Copy stylesheet
+                file_put_contents($siteFolder.'/user.css', $styleSheet);
+            }
+            if(!file_exists($siteFolder.'/README.md')) {
+                // Then write a readme.md file
+                file_put_contents($siteFolder.'/README.md', 
+                    &quot;User style from &quot;.$name.&quot;\n&quot;
+                    .&quot;=============================&quot;
+                    .&quot;\n\n&quot;
+                    .&quot;This stylesheet was downloaded from &quot;.$userStyle.&quot; on &quot;.date(DATE_RFC822)
+                    );
+            }
+            if(!file_exists($siteFolder.'/config.ini')) {
+                // Write a config file containing useful informations
+                file_put_contents($siteFolder.'/config.ini', 
+                    &quot;site_url=&quot;.$url.&quot;\n&quot;
+                    .&quot;site_name=&quot;.$name.&quot;\n&quot;
+                    );
+            }
+            if(!file_exists($siteFolder.'/home.png')) {
+                // And finally copy generated thumbnail
+                $homeThumb = $siteFolder.'/home.png';
+                file_put_contents($siteFolder.'/home.png', file_get_contents(getThumbnailUrl($url)));
+            }
+            echo 'Theme have been downloaded from  &lt;a href=&quot;'.$url.'&quot;&gt;'.$url.'&lt;/a&gt; into '.$siteFolder
+                .'. It looks like &lt;img src=&quot;'.$homeThumb.'&quot;&gt;&lt;br/&gt;';
+        }
+    }
+}
+
+function getThumbnailUrl($url) {
+    return 'http://api.webthumbnail.org/?url='.$url;
+}
+
+function copyUserStylesFrom($urlToNames, $knownStyles) {
+    foreach($urlToNames as $url =&gt; $name) {
+        copyUserStyleFrom($url, $name, $knownStyles);
+    }
+}
+
+/**
+ * Reading directory list, courtesy of http://www.laughing-buddha.net/php/dirlist/
+ * @param directory the directory we want to list files of
+ * @return a simple array containing the list of absolute file paths. Notice that current file (&quot;.&quot;) and parent one(&quot;..&quot;)
+ * are not listed here
+ */
+function getDirectoryList ($directory)  {
+    $realPath = realpath($directory);
+    // create an array to hold directory list
+    $results = array();
+    // create a handler for the directory
+    $handler = opendir($directory);
+    // open directory and walk through the filenames
+    while ($file = readdir($handler)) {
+        // if file isn't this directory or its parent, add it to the results
+        if ($file != &quot;.&quot; &amp;&amp; $file != &quot;..&quot;) {
+            $results[] = realpath($realPath . &quot;/&quot; . $file);
+        }
+    }
+    // tidy up: close the handler
+    closedir($handler);
+    // done!
+    return $results;
+}
+
+/**
+ * Start in themes folder and look in all subfolders for config.ini files. 
+ * These config.ini files allow us not to download styles again and again
+ */
+function findKnownStyles() {
+    $result = array();
+    $subFolders = getDirectoryList(&quot;themes&quot;);
+    foreach($subFolders as $folder) {
+        $configFile = $folder.&quot;/config.ini&quot;;
+        if(file_exists($configFile)) {
+            $iniParameters = parse_ini_file($configFile);
+            array_push($result, $iniParameters['site_url']);
+        }
+    }
+    return $result;
+}
+
+$knownStyles = findKnownStyles();
+copyUserStylesFrom(createShaarliHashFromOPMLL(SHAARLI_RSS_OPML), $knownStyles);
+
+&lt;!--- ? ----&gt;
+</code></pre>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Datastore-hacks/" class="btn btn-neutral float-right" title="Datastore hacks">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Create-and-serve-multiple-Shaarlis-(farm)/" class="btn btn-neutral" title="Create and serve multiple Shaarlis (farm)"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Create-and-serve-multiple-Shaarlis-(farm)/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Datastore-hacks/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 444 - 0
doc/html/Download-and-Installation/index.html

@@ -0,0 +1,444 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Download and Installation - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Download and Installation";
+    var mkdocs_page_input_path = "Download-and-Installation.md";
+    var mkdocs_page_url = "/Download-and-Installation/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class=" current">
+                    
+    <a class="current" href="./">Download and Installation</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#latest-release-recommended">Latest release (recommended)</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#download-as-an-archive">Download as an archive</a></li>
+        
+            <li><a class="toctree-l4" href="#using-git">Using git</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#stable-version">Stable version</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#download-as-an-archive_1">Download as an archive</a></li>
+        
+            <li><a class="toctree-l4" href="#clone-with-git">Clone with Git</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#development-version-mainline">Development version (mainline)</a></li>
+    
+
+    <li class="toctree-l3"><a href="#finish-installation">Finish Installation</a></li>
+    
+
+    <li class="toctree-l3"><a href="#updating-shaarli">Updating Shaarli</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Setup &raquo;</li>
+        
+      
+    
+    <li>Download and Installation</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Download-and-Installation.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <p>To install Shaarli, simply place the files in a directory under your webserver's Document Root (or directly at the document root). Make sure your <a href="../Server-requirements">server</a> is properly <a href="../Server-configuration">configured</a>.</p>
+<p>Several releases are available:</p>
+<hr />
+<h2 id="latest-release-recommended">Latest release (recommended)</h2>
+<h3 id="download-as-an-archive">Download as an archive</h3>
+<p>Get the latest released version from the <a href="https://github.com/shaarli/Shaarli/releases">releases</a> page.</p>
+<p><strong>Download our <em>shaarli-full</em> archive</strong> to include dependencies.</p>
+<p>The current latest released version is <code>v0.8.4</code></p>
+<p>Or in command lines:</p>
+<pre><code class="bash">$ wget https://github.com/shaarli/Shaarli/releases/download/v0.8.4/shaarli-v0.8.4-full.zip
+$ unzip shaarli-v0.8.4-full.zip
+$ mv Shaarli /path/to/shaarli/
+</code></pre>
+
+<table>
+<thead>
+<tr>
+<th>!</th>
+<th>In most cases, download Shaarli from the <a href="https://github.com/shaarli/Shaarli/releases">releases</a> page. Cloning using <code>git</code> or downloading Github branches as zip files requires additional steps (see below).</th>
+</tr>
+</thead>
+<tbody></tbody>
+</table>
+<h3 id="using-git">Using git</h3>
+<pre><code>mkdir -p /path/to/shaarli &amp;&amp; cd /path/to/shaarli/
+git clone -b v0.8 https://github.com/shaarli/Shaarli.git .
+composer install --no-dev
+</code></pre>
+
+<hr />
+<h2 id="stable-version">Stable version</h2>
+<p>The stable version has been experienced by Shaarli users, and will receive security updates.</p>
+<h3 id="download-as-an-archive_1">Download as an archive</h3>
+<p>As a .zip archive:</p>
+<pre><code class="bash">$ wget https://github.com/shaarli/Shaarli/archive/stable.zip
+$ unzip stable.zip
+$ mv Shaarli-stable /path/to/shaarli/
+</code></pre>
+
+<p>As a .tar.gz archive :</p>
+<pre><code class="bash">$ wget https://github.com/shaarli/Shaarli/archive/stable.tar.gz
+$ tar xvf stable.tar.gz
+$ mv Shaarli-stable /path/to/shaarli/
+</code></pre>
+
+<h3 id="clone-with-git">Clone with Git</h3>
+<p><a href="https://getcomposer.org/">Composer</a> is required to build a functional Shaarli installation when pulling from git.</p>
+<pre><code class="bash">$ git clone https://github.com/shaarli/Shaarli.git -b stable /path/to/shaarli/
+# install/update third-party dependencies
+$ cd /path/to/shaarli/
+$ composer install --no-dev
+</code></pre>
+
+<hr />
+<h2 id="development-version-mainline">Development version (mainline)</h2>
+<p><em>Use at your own risk!</em></p>
+<p>To get the latest changes from the <code>master</code> branch:</p>
+<pre><code class="bash"># clone the repository  
+$ git clone https://github.com/shaarli/Shaarli.git -b master /path/to/shaarli/
+# install/update third-party dependencies
+$ cd /path/to/shaarli
+$ composer install --no-dev
+</code></pre>
+
+<hr />
+<h2 id="finish-installation">Finish Installation</h2>
+<p>Once Shaarli is downloaded and files have been placed at the correct location, open it this location your favorite browser.</p>
+<p><img alt="install screenshot" src="http://i.imgur.com/wuMpDSN.png" /></p>
+<p>Setup your Shaarli installation, and it's ready to use!</p>
+<hr />
+<h2 id="updating-shaarli">Updating Shaarli</h2>
+<p>See <a href="../Upgrade-and-migration">Upgrade and Migration</a></p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Upgrade-and-migration/" class="btn btn-neutral float-right" title="Upgrade and migration">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href=".." class="btn btn-neutral" title="Home"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href=".." style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Upgrade-and-migration/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 388 - 0
doc/html/FAQ/index.html

@@ -0,0 +1,388 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>FAQ - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "FAQ";
+    var mkdocs_page_input_path = "FAQ.md";
+    var mkdocs_page_url = "/FAQ/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class=" current">
+                    
+    <a class="current" href="./">FAQ</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#why-did-you-create-shaarli">Why did you create Shaarli ?</a></li>
+    
+
+    <li class="toctree-l3"><a href="#why-use-shaarli-and-not-deliciousdiigo">Why use Shaarli and not Delicious/Diigo ?</a></li>
+    
+
+    <li class="toctree-l3"><a href="#what-does-shaarli-mean">What does Shaarli mean?</a></li>
+    
+
+    <li class="toctree-l3"><a href="#my-shaarli-is-broken">My Shaarli is broken!</a></li>
+    
+
+    <li class="toctree-l3"><a href="#why-not-use-a-real-database-files-are-slow">Why not use a real database? Files are slow!</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>About &raquo;</li>
+        
+      
+    
+    <li>FAQ</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/FAQ.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h3 id="why-did-you-create-shaarli">Why did you create Shaarli ?</h3>
+<p>I was a StumbleUpon user. Then I got fed up with they big toolbar. I switched to delicious, which was lighter, faster and more beautiful. Until Yahoo bought it. Then the export API broke all the time, delicious became slow and was ditched by Yahoo. I switched to Diigo, which is not bad, but does too much. And Diigo is sslllooooowww and their Firefox extension a bit buggy. And… oh… <strong>their Firefox addon sends to Diigo every single URL you visit</strong> (Don't believe me ? Use <a href="https://addons.mozilla.org/en-US/firefox/addon/tamper-data/">Tamper Data</a> and open any page).</p>
+<p>Enough is enough. Saving simple links should not be a complicated heavy thing. I ditched them all and wrote my own: Shaarli. It's simple, but it does the job and does it well. And my data is not hosted on a foreign server, but on my server.</p>
+<h3 id="why-use-shaarli-and-not-deliciousdiigo">Why use Shaarli and not Delicious/Diigo ?</h3>
+<p>With Shaarli:</p>
+<ul>
+<li>The data is yours: It's hosted on your server.</li>
+<li>Never fear of having your data locked-in.</li>
+<li>Never fear to have your data sold to third party.</li>
+<li>Your private links are not hosted on a third party server.</li>
+<li>You are not tracked by browser addons (like Diigo does)</li>
+<li>You can change the look and feel of the pages if you want.</li>
+<li>You can change the behaviour of the program.</li>
+<li>It's magnitude faster than most bookmarking services.</li>
+</ul>
+<h3 id="what-does-shaarli-mean">What does Shaarli mean?</h3>
+<p>Shaarli is for shaaring your links.</p>
+<h3 id="my-shaarli-is-broken">My Shaarli is broken!</h3>
+<p>First of all, ensure that both the <a href="../Server-configuration">web server</a> and <a href="../Shaarli-configuration">Shaarli</a> are correctly configured, and that your installation is <a href="../Server-requirements">supported</a>.</p>
+<p>If everything looks right but the issue(s) remain(s), please:
+- take a look at the <a href="../Troubleshooting">troubleshooting</a> section
+- come <a href="https://gitter.im/shaarli/Shaarli">chat with us</a> on Gitter, we'll be happy to help ;-)
+- browse active <a href="https://github.com/shaarli/Shaarli/issues">issues</a> and <a href="https://github.com/shaarli/Shaarli/pulls">Pull Requests</a>
+    - if you find one that is related to the issue, feel free to comment and provide additional details (host/Shaarli setup)
+    - else, <a href="https://github.com/shaarli/Shaarli/issues/new">open a new issue</a>, and provide information about the problem:
+        - <em>what happens?</em> - display glitches, invalid data, security flaws...
+        - <em>what is your configuration?</em>  - OS, server version, activated extensions, web browser...
+        - <em>is it reproducible?</em></p>
+<h3 id="why-not-use-a-real-database-files-are-slow">Why not use a real database? Files are slow!</h3>
+<p>Does browsing <a href="http://sebsauvage.net/links/">this page</a> feel slow? Try browsing older pages, too.</p>
+<p>It's not slow at all, is it? And don't forget the database contains more than 16000 links, and it's on a shared host, with 32000 visitors/day for my website alone. And it's still damn fast. Why?</p>
+<p>The data file is only 3.7 Mb. It's read 99% of the time, and is probably already in the operation system disk cache. So generating a page involves no I/O at all most of the time.</p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Community-&-Related-software/" class="btn btn-neutral float-right" title="Community & Related software">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Unit-tests/" class="btn btn-neutral" title="Unit tests"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Unit-tests/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Community-&-Related-software/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 371 - 0
doc/html/Features/index.html

@@ -0,0 +1,371 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Features - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Features";
+    var mkdocs_page_input_path = "Features.md";
+    var mkdocs_page_url = "/Features/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class=" current">
+                    
+    <a class="current" href="./">Features</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#main-features">Main features</a></li>
+    
+
+    <li class="toctree-l3"><a href="#using-shaarli-as-a-blog-notepad-pastebin">Using Shaarli as a blog, notepad, pastebin...</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Usage &raquo;</li>
+        
+      
+    
+    <li>Features</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Features.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h3 id="main-features">Main features</h3>
+<p>Shaarli is intended:
+ * to share, comment and save interesting links and news
+ * to bookmark useful/frequent personal links (as private links) and share them between computers
+ * as a minimal blog/microblog/writing platform (no character limit)
+ * as a read-it-later list (for example items tagged <code>readlater</code>)
+ * to draft and save articles/ideas
+ * to keep code snippets
+ * to keep notes and documentation
+ * as a shared clipboard between machines
+ * as a todo list
+ * to store playlists (e.g. with the <code>music</code> or <code>video</code> tags)
+ * to keep extracts/comments from webpages that may disappear
+ * to keep track of ongoing discussions (for example items tagged <code>discussion</code>)
+ * <a href="http://shaarli.chassegnouf.net/?9Efeiw">to feed RSS aggregators</a> (planets) with specific tags
+ * to feed other social networks, blogs... using RSS feeds and external services (dlvr.it, ifttt.com ...)</p>
+<h3 id="using-shaarli-as-a-blog-notepad-pastebin">Using Shaarli as a blog, notepad, pastebin...</h3>
+<ul>
+<li>Go to your Shaarli setup and log in</li>
+<li>Click the <code>Add Link</code> button</li>
+<li>To share text only, do not enter any URL in the corresponding input field and click <code>Add Link</code></li>
+<li>Pick a title and enter your article, or note, in the description field; add a few tags; optionally check <code>Private</code> then click <code>Save</code></li>
+<li>Voilà!  Your article is now published (privately if you selected that option) and accessible using its permalink.</li>
+</ul>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Bookmarklet/" class="btn btn-neutral float-right" title="Bookmarklet">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Docker-resources/" class="btn btn-neutral" title="Docker resources"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Docker-resources/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Bookmarklet/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 368 - 0
doc/html/Firefox-share/index.html

@@ -0,0 +1,368 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Firefox share - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Firefox share";
+    var mkdocs_page_input_path = "Firefox-share.md";
+    var mkdocs_page_url = "/Firefox-share/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Firefox share</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#add-shaarli-as-a-sharing-service-to-firefox">Add Shaarli as a sharing service to Firefox</a></li>
+    
+
+    <li class="toctree-l3"><a href="#sharing-links-using-firefox-share">Sharing links using Firefox share</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Usage &raquo;</li>
+        
+      
+    
+    <li>Firefox share</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Firefox-share.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h3 id="add-shaarli-as-a-sharing-service-to-firefox">Add Shaarli as a sharing service to Firefox</h3>
+<ul>
+<li>Open your Shaarli and <code>Login</code></li>
+<li>Click the <code>Tools</code> button in the top bar</li>
+<li>Click the <code>✚Add to Firefox social</code> button and accept the activation.</li>
+</ul>
+<h3 id="sharing-links-using-firefox-share">Sharing links using Firefox share</h3>
+<ul>
+<li>Add the sharing service as described above</li>
+<li>When you are visiting a webpage you would like to share with Shaarli, click the Firefox <em>Share</em> button <a href="../images/firefoxshare.png">images/firefoxshare.png</a></li>
+<li>You can edit your link before and after saving, just like the bookmarklet above.</li>
+</ul>
+<table>
+<thead>
+<tr>
+<th></th>
+<th>Your Shaarli instance must be hosted on an HTTPS (SSL/TLS secure connection) enabled server for Firefox Share to work. Firefox Share will not work over plain HTTP connections.</th>
+</tr>
+</thead>
+<tbody></tbody>
+</table>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../RSS-feeds/" class="btn btn-neutral float-right" title="RSS feeds">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Browsing-and-searching/" class="btn btn-neutral" title="Browsing and searching"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Browsing-and-searching/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../RSS-feeds/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 439 - 0
doc/html/GnuPG-signature/index.html

@@ -0,0 +1,439 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>GnuPG signature - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "GnuPG signature";
+    var mkdocs_page_input_path = "GnuPG-signature.md";
+    var mkdocs_page_url = "/GnuPG-signature/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">GnuPG signature</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#introduction">Introduction</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#pgp-and-gpg">PGP and GPG</a></li>
+        
+            <li><a class="toctree-l4" href="#trust">Trust</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#generate-a-gpg-key">Generate a GPG key</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#gpg-provide-identity-information">gpg - provide identity information</a></li>
+        
+            <li><a class="toctree-l4" href="#gpg-entropy-interlude">gpg - entropy interlude</a></li>
+        
+            <li><a class="toctree-l4" href="#gpg-key-creation-confirmation">gpg - key creation confirmation</a></li>
+        
+            <li><a class="toctree-l4" href="#gpg-submit-your-public-key-to-a-pgp-server-optional">gpg - submit your public key to a PGP server (Optional)</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#create-and-push-a-gpg-signed-tag">Create and push a GPG-signed tag</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Development &raquo;</li>
+        
+      
+    
+    <li>GnuPG signature</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/GnuPG-signature.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="introduction">Introduction</h2>
+<h3 id="pgp-and-gpg">PGP and GPG</h3>
+<p><a href="https://gnupg.org/">Gnu Privacy Guard</a> (GnuPG) is an Open Source implementation of the <a href="https://en.wikipedia.org/wiki/Pretty_Good_Privacy#OpenPGP">Pretty Good 
+Privacy</a> (OpenPGP) specification. Its main purposes are digital authentication, 
+signature and encryption.</p>
+<p>It is often used by the <a href="https://en.wikipedia.org/wiki/Free_and_open-source_software">FLOSS</a> community to verify:
+- Linux package signatures: Debian <a href="https://wiki.debian.org/SecureApt">SecureApt</a>, ArchLinux <a href="https://www.archlinux.org/master-keys/">Master 
+Keys</a>
+- <a href="https://en.wikipedia.org/wiki/Revision_control">SCM</a> releases &amp; maintainer identity</p>
+<h3 id="trust">Trust</h3>
+<p>To quote Phil Pennock (the author of the <a href="https://bitbucket.org/skskeyserver/sks-keyserver/wiki/Home">SKS</a> key server - http://sks.spodhuis.org/):</p>
+<blockquote>
+<p>You MUST understand that presence of data in the keyserver (pools) in no way connotes trust. Anyone can generate a key, with any name or email address, and upload it. All security and trust comes from evaluating security at the “object level”, via PGP Web-Of-Trust signatures. This keyserver makes it possible to retrieve keys, looking them up via various indices, but the collection of keys in this public pool is KNOWN to contain malicious and fraudulent keys. It is the common expectation of server operators that users understand this and use software which, like all known common OpenPGP implementations, evaluates trust accordingly. This expectation is so common that it is not normally explicitly stated.</p>
+</blockquote>
+<p>Trust can be gained by having your key signed by other people (and signing their key back, too :) ), for instance during <a href="https://en.wikipedia.org/wiki/Key_signing_party">key signing parties</a>, see:
+- <a href="http://www.cryptnet.net/fdp/crypto/keysigning_party/en/keysigning_party.html">The Keysigning party HOWTO</a>
+- <a href="https://en.wikipedia.org/wiki/Web_of_trust">Web of trust</a></p>
+<h2 id="generate-a-gpg-key">Generate a GPG key</h2>
+<ul>
+<li><a href="http://stackoverflow.com/a/16725717">Generating a GPG key for Git tagging</a> (StackOverflow)</li>
+<li><a href="https://help.github.com/articles/generating-a-gpg-key/">Generating a GPG key</a> (GitHub)</li>
+</ul>
+<h3 id="gpg-provide-identity-information">gpg - provide identity information</h3>
+<pre><code class="bash">$ gpg --gen-key
+
+gpg (GnuPG) 2.1.6; Copyright (C) 2015 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Note: Use &quot;gpg2 --full-gen-key&quot; for a full featured key generation dialog.
+
+GnuPG needs to construct a user ID to identify your key.
+
+Real name: Marvin the Paranoid Android
+Email address: marvin@h2g2.net
+You selected this USER-ID:
+    &quot;Marvin the Paranoid Android &lt;marvin@h2g2.net&gt;&quot;
+
+Change (N)ame, (E)mail, or (O)kay/(Q)uit? o
+We need to generate a lot of random bytes. It is a good idea to perform
+some other action (type on the keyboard, move the mouse, utilize the
+disks) during the prime generation; this gives the random number
+generator a better chance to gain enough entropy.
+</code></pre>
+
+<h3 id="gpg-entropy-interlude">gpg - entropy interlude</h3>
+<p>At this point, you will:
+- be prompted for a secure password to protect your key (the input method will depend on your Desktop Environment and configuration)
+- be asked to use your machine's input devices (mouse, keyboard, etc.) to generate random entropy; this step <em>may take some time</em> </p>
+<h3 id="gpg-key-creation-confirmation">gpg - key creation confirmation</h3>
+<pre><code class="bash">gpg: key A9D53A3E marked as ultimately trusted
+public and secret key created and signed.
+
+gpg: checking the trustdb
+gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
+gpg: depth: 0  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 2u
+pub   rsa2048/A9D53A3E 2015-07-31
+      Key fingerprint = AF2A 5381 E54B 2FD2 14C4  A9A3 0E35 ACA4 A9D5 3A3E
+uid       [ultimate] Marvin the Paranoid Android &lt;marvin@h2g2.net&gt;
+sub   rsa2048/8C0EACF1 2015-07-31
+</code></pre>
+
+<h3 id="gpg-submit-your-public-key-to-a-pgp-server-optional">gpg - submit your public key to a PGP server (Optional)</h3>
+<pre><code class="bash">$ gpg --keyserver pgp.mit.edu --send-keys A9D53A3E
+gpg: sending key A9D53A3E to hkp server pgp.mit.edu
+</code></pre>
+
+<h2 id="create-and-push-a-gpg-signed-tag">Create and push a GPG-signed tag</h2>
+<p>See <a href="../Release Shaarli">Release Shaarli</a>.</p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Coding-guidelines/" class="btn btn-neutral float-right" title="Coding guidelines">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Continuous-integration-tools/" class="btn btn-neutral" title="Continuous integration tools"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Continuous-integration-tools/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Coding-guidelines/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 968 - 0
doc/html/Plugin-System/index.html

@@ -0,0 +1,968 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Plugin System - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Plugin System";
+    var mkdocs_page_input_path = "Plugin-System.md";
+    var mkdocs_page_url = "/Plugin-System/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Plugin System</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#developer-api">Developer API</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#what-can-i-do-with-plugins">What can I do with plugins?</a></li>
+        
+            <li><a class="toctree-l4" href="#how-can-i-create-a-plugin-for-shaarli">How can I create a plugin for Shaarli?</a></li>
+        
+            <li><a class="toctree-l4" href="#plugin-initialization">Plugin initialization</a></li>
+        
+            <li><a class="toctree-l4" href="#understanding-hooks">Understanding hooks</a></li>
+        
+            <li><a class="toctree-l4" href="#plugins-data">Plugin's data</a></li>
+        
+            <li><a class="toctree-l4" href="#metadata">Metadata</a></li>
+        
+            <li><a class="toctree-l4" href="#its-not-working">It's not working!</a></li>
+        
+            <li><a class="toctree-l4" href="#hooks">Hooks</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#guide-for-template-designer">Guide for template designer</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#plugin-administration">Plugin administration</a></li>
+        
+            <li><a class="toctree-l4" href="#placeholder-system">Placeholder system</a></li>
+        
+            <li><a class="toctree-l4" href="#list-of-placeholders">List of placeholders</a></li>
+        
+        </ul>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Development &raquo;</li>
+        
+      
+    
+    <li>Plugin System</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Plugin-System.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <p><a href="#developer-api"><strong>I am a developer.</strong> Developer API.</a></p>
+<p><a href="#guide-for-template-designer"><strong>I am a template designer.</strong> Guide for template designer.</a></p>
+<h2 id="developer-api">Developer API</h2>
+<h3 id="what-can-i-do-with-plugins">What can I do with plugins?</h3>
+<p>The plugin system let you:</p>
+<ul>
+<li>insert content into specific places across templates.</li>
+<li>alter data before templates rendering.</li>
+<li>alter data before saving new links.</li>
+</ul>
+<h3 id="how-can-i-create-a-plugin-for-shaarli">How can I create a plugin for Shaarli?</h3>
+<p>First, chose a plugin name, such as <code>demo_plugin</code>.</p>
+<p>Under <code>plugin</code> folder, create a folder named with your plugin name. Then create a <plugin_name>.php file in that folder.</p>
+<p>You should have the following tree view:</p>
+<pre><code>| index.php
+| plugins/
+|---| demo_plugin/
+|   |---| demo_plugin.php
+</code></pre>
+
+<h3 id="plugin-initialization">Plugin initialization</h3>
+<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>
+<pre><code>&lt;plugin_name&gt;_init($conf)
+</code></pre>
+<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>
+<h3 id="understanding-hooks">Understanding hooks</h3>
+<p>A plugin is a set of functions. Each function will be triggered by the plugin system at certain point in Shaarli execution.</p>
+<p>These functions need to be named with this pattern:</p>
+<pre><code>hook_&lt;plugin_name&gt;_&lt;hook_name&gt;($data, $conf)
+</code></pre>
+
+<p>Parameters:</p>
+<ul>
+<li>data: see <a href="https://github.com/shaarli/Shaarli/wiki/Plugin-System#plugins-data">$data section</a></li>
+<li>conf: the <code>ConfigManager</code> instance.</li>
+</ul>
+<p>For exemple, if my plugin want to add data to the header, this function is needed:</p>
+<pre><code>hook_demo_plugin_render_header
+</code></pre>
+<p>If this function is declared, and the plugin enabled, it will be called every time Shaarli is rendering the header.</p>
+<h3 id="plugins-data">Plugin's data</h3>
+<h4 id="parameters">Parameters</h4>
+<p>Every hook function has a <code>$data</code> parameter. Its content differs for each hooks.</p>
+<p><strong>This parameter needs to be returned every time</strong>, otherwise data is lost.</p>
+<pre><code>return $data;
+</code></pre>
+<h4 id="filling-templates-placeholder">Filling templates placeholder</h4>
+<p>Template placeholders are displayed in template in specific places.</p>
+<p>RainTPL displays every element contained in the placeholder's array. These element can be added by plugins.</p>
+<p>For example, let's add a value in the placeholder <code>top_placeholder</code> which is displayed at the top of my page:</p>
+<pre><code class="php">$data['top_placeholder'][] = 'My content';
+# OR
+array_push($data['top_placeholder'], 'My', 'content');
+
+return $data;
+</code></pre>
+
+<h4 id="data-manipulation">Data manipulation</h4>
+<p>When a page is displayed, every variable send to the template engine is passed to plugins before that in <code>$data</code>.</p>
+<p>The data contained by this array can be altered before template rendering.</p>
+<p>For exemple, in linklist, it is possible to alter every title:</p>
+<pre><code class="php">// mind the reference if you want $data to be altered
+foreach ($data['links'] as &amp;$value) {
+    // String reverse every title.
+    $value['title'] = strrev($value['title']);
+}
+
+return $data;
+</code></pre>
+
+<h3 id="metadata">Metadata</h3>
+<p>Every plugin needs a <code>&lt;plugin_name&gt;.meta</code> file, which is in fact an <code>.ini</code> file (<code>KEY="VALUE"</code>), to be listed in plugin administration.</p>
+<p>Each file contain two keys:</p>
+<ul>
+<li><code>description</code>: plugin description</li>
+<li><code>parameters</code>: user parameter names, separated by a <code>;</code>.</li>
+<li><code>parameter.&lt;PARAMETER_NAME&gt;</code>: add a text description the specified parameter.</li>
+</ul>
+<blockquote>
+<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>
+</blockquote>
+<h3 id="its-not-working">It's not working!</h3>
+<p>Use <code>demo_plugin</code> as a functional example. It covers most of the plugin system features.</p>
+<p>If it's still not working, please <a href="https://github.com/shaarli/Shaarli/issues/new">open an issue</a>.</p>
+<h3 id="hooks">Hooks</h3>
+<table>
+<thead>
+<tr>
+<th>Hooks</th>
+<th align="center">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><a href="#render_header">render_header</a></td>
+<td align="center">Allow plugin to add content in page headers.</td>
+</tr>
+<tr>
+<td><a href="#render_includes">render_includes</a></td>
+<td align="center">Allow plugin to include their own CSS files.</td>
+</tr>
+<tr>
+<td><a href="#render_footer">render_footer</a></td>
+<td align="center">Allow plugin to add content in page footer and include their own JS files.</td>
+</tr>
+<tr>
+<td><a href="#render_linklist">render_linklist</a></td>
+<td align="center">It allows to add content at the begining and end of the page, after every link displayed and to alter link data.</td>
+</tr>
+<tr>
+<td><a href="#render_editlink">render_editlink</a></td>
+<td align="center">Allow to add fields in the form, or display elements.</td>
+</tr>
+<tr>
+<td><a href="#render_tools">render_tools</a></td>
+<td align="center">Allow to add content at the end of the page.</td>
+</tr>
+<tr>
+<td><a href="#render_picwall">render_picwall</a></td>
+<td align="center">Allow to add content at the top and bottom of the page.</td>
+</tr>
+<tr>
+<td><a href="#render_tagcloud">render_tagcloud</a></td>
+<td align="center">Allow to add content at the top and bottom of the page, and after all tags.</td>
+</tr>
+<tr>
+<td><a href="#render_taglist">render_taglist</a></td>
+<td align="center">Allow to add content at the top and bottom of the page, and after all tags.</td>
+</tr>
+<tr>
+<td><a href="#render_daily">render_daily</a></td>
+<td align="center">Allow to add content at the top and bottom of the page, the bottom of each link and to alter data.</td>
+</tr>
+<tr>
+<td><a href="#render_feed">render_feed</a></td>
+<td align="center">Allow to do add tags in RSS and ATOM feeds.</td>
+</tr>
+<tr>
+<td><a href="#save_link">save_link</a></td>
+<td align="center">Allow to alter the link being saved in the datastore.</td>
+</tr>
+<tr>
+<td><a href="#delete_link">delete_link</a></td>
+<td align="center">Allow to do an action before a link is deleted from the datastore.</td>
+</tr>
+</tbody>
+</table>
+<h4 id="render_header">render_header</h4>
+<p>Triggered on every page.</p>
+<p>Allow plugin to add content in page headers.</p>
+<h5 id="data">Data</h5>
+<p><code>$data</code> is an array containing:</p>
+<ul>
+<li><code>_PAGE_</code>: current target page (eg: <code>linklist</code>, <code>picwall</code>, etc.).</li>
+<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
+</ul>
+<h5 id="template-placeholders">Template placeholders</h5>
+<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.</p>
+<p>List of placeholders:</p>
+<ul>
+<li><code>buttons_toolbar</code>: after the list of buttons in the header.</li>
+</ul>
+<p><img alt="buttons_toolbar_example" src="http://i.imgur.com/ssJUOrt.png" /></p>
+<ul>
+<li><code>fields_toolbar</code>: after search fields in the header.</li>
+</ul>
+<blockquote>
+<p>Note: This will only be called in linklist.</p>
+</blockquote>
+<p><img alt="fields_toolbar_example" src="http://i.imgur.com/3GMifI2.png" /></p>
+<h4 id="render_includes">render_includes</h4>
+<p>Triggered on every page.</p>
+<p>Allow plugin to include their own CSS files.</p>
+<h5 id="data_1">Data</h5>
+<p><code>$data</code> is an array containing:</p>
+<ul>
+<li><code>_PAGE_</code>: current target page (eg: <code>linklist</code>, <code>picwall</code>, etc.).</li>
+<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
+</ul>
+<h5 id="template-placeholders_1">Template placeholders</h5>
+<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.</p>
+<p>List of placeholders:</p>
+<ul>
+<li><code>css_files</code>: called after loading default CSS.</li>
+</ul>
+<blockquote>
+<p>Note: only add the path of the CSS file. E.g: <code>plugins/demo_plugin/custom_demo.css</code>.</p>
+</blockquote>
+<h4 id="render_footer">render_footer</h4>
+<p>Triggered on every page.</p>
+<p>Allow plugin to add content in page footer and include their own JS files.</p>
+<h5 id="data_2">Data</h5>
+<p><code>$data</code> is an array containing:</p>
+<ul>
+<li><code>_PAGE_</code>: current target page (eg: <code>linklist</code>, <code>picwall</code>, etc.).</li>
+<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
+</ul>
+<h5 id="template-placeholders_2">Template placeholders</h5>
+<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.</p>
+<p>List of placeholders:</p>
+<ul>
+<li><code>text</code>: called after the end of the footer text.</li>
+<li><code>endofpage</code>: called at the end of the page.</li>
+</ul>
+<p><img alt="text_example" src="http://i.imgur.com/L5S2YEH.png" /></p>
+<ul>
+<li><code>js_files</code>: called at the end of the page, to include custom JS scripts.</li>
+</ul>
+<blockquote>
+<p>Note: only add the path of the JS file. E.g: <code>plugins/demo_plugin/custom_demo.js</code>.</p>
+</blockquote>
+<h4 id="render_linklist">render_linklist</h4>
+<p>Triggered when <code>linklist</code> is displayed (list of links, permalink, search, tag filtered, etc.).</p>
+<p>It allows to add content at the begining and end of the page, after every link displayed and to alter link data.</p>
+<h5 id="data_3">Data</h5>
+<p><code>$data</code> is an array containing:</p>
+<ul>
+<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
+<li>All templates data, including links.</li>
+</ul>
+<h5 id="template-placeholders_3">Template placeholders</h5>
+<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.</p>
+<p>List of placeholders:</p>
+<ul>
+<li><code>action_plugin</code>: next to the button "private only" at the top and bottom of the page.</li>
+</ul>
+<p><img alt="action_plugin_example" src="http://i.imgur.com/Q12PWg0.png" /></p>
+<ul>
+<li><code>link_plugin</code>: for every link, between permalink and link URL.</li>
+</ul>
+<p><img alt="link_plugin_example" src="http://i.imgur.com/3oDPhWx.png" /></p>
+<ul>
+<li><code>plugin_start_zone</code>: before displaying the template content.</li>
+</ul>
+<p><img alt="plugin_start_zone_example" src="http://i.imgur.com/OVBkGy3.png" /></p>
+<ul>
+<li><code>plugin_end_zone</code>: after displaying the template content.</li>
+</ul>
+<p><img alt="plugin_end_zone_example" src="http://i.imgur.com/6IoRuop.png" /></p>
+<h4 id="render_editlink">render_editlink</h4>
+<p>Triggered when the link edition form is displayed.</p>
+<p>Allow to add fields in the form, or display elements.</p>
+<h5 id="data_4">Data</h5>
+<p><code>$data</code> is an array containing:</p>
+<ul>
+<li>All templates data.</li>
+</ul>
+<h5 id="template-placeholders_4">Template placeholders</h5>
+<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.</p>
+<p>List of placeholders:</p>
+<ul>
+<li><code>edit_link_plugin</code>: after tags field.</li>
+</ul>
+<p><img alt="edit_link_plugin_example" src="http://i.imgur.com/5u17Ens.png" /></p>
+<h4 id="render_tools">render_tools</h4>
+<p>Triggered when the "tools" page is displayed.</p>
+<p>Allow to add content at the end of the page.</p>
+<h5 id="data_5">Data</h5>
+<p><code>$data</code> is an array containing:</p>
+<ul>
+<li>All templates data.</li>
+</ul>
+<h5 id="template-placeholders_5">Template placeholders</h5>
+<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.</p>
+<p>List of placeholders:</p>
+<ul>
+<li><code>tools_plugin</code>: at the end of the page.</li>
+</ul>
+<p><img alt="tools_plugin_example" src="http://i.imgur.com/Bqhu9oQ.png" /></p>
+<h4 id="render_picwall">render_picwall</h4>
+<p>Triggered when picwall is displayed.</p>
+<p>Allow to add content at the top and bottom of the page.</p>
+<h5 id="data_6">Data</h5>
+<p><code>$data</code> is an array containing:</p>
+<ul>
+<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
+<li>All templates data.</li>
+</ul>
+<h5 id="template-placeholders_6">Template placeholders</h5>
+<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.</p>
+<p>List of placeholders:</p>
+<ul>
+<li>
+<p><code>plugin_start_zone</code>: before displaying the template content.</p>
+</li>
+<li>
+<p><code>plugin_end_zone</code>: after displaying the template content.</p>
+</li>
+</ul>
+<p><img alt="plugin_start_end_zone_example" src="http://i.imgur.com/tVTQFER.png" /></p>
+<h4 id="render_tagcloud">render_tagcloud</h4>
+<p>Triggered when tagcloud is displayed.</p>
+<p>Allow to add content at the top and bottom of the page.</p>
+<h5 id="data_7">Data</h5>
+<p><code>$data</code> is an array containing:</p>
+<ul>
+<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
+<li>All templates data.</li>
+</ul>
+<h5 id="template-placeholders_7">Template placeholders</h5>
+<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.</p>
+<p>List of placeholders:</p>
+<ul>
+<li>
+<p><code>plugin_start_zone</code>: before displaying the template content.</p>
+</li>
+<li>
+<p><code>plugin_end_zone</code>: after displaying the template content.</p>
+</li>
+</ul>
+<p>For each tag, the following placeholder can be used:</p>
+<ul>
+<li><code>tag_plugin</code>: after each tag</li>
+</ul>
+<p><img alt="plugin_start_end_zone_example" src="http://i.imgur.com/vHmyT3a.png" /></p>
+<h4 id="render_taglist">render_taglist</h4>
+<p>Triggered when taglist is displayed.</p>
+<p>Allow to add content at the top and bottom of the page.</p>
+<h5 id="data_8">Data</h5>
+<p><code>$data</code> is an array containing:</p>
+<ul>
+<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
+<li>All templates data.</li>
+</ul>
+<h5 id="template-placeholders_8">Template placeholders</h5>
+<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.</p>
+<p>List of placeholders:</p>
+<ul>
+<li>
+<p><code>plugin_start_zone</code>: before displaying the template content.</p>
+</li>
+<li>
+<p><code>plugin_end_zone</code>: after displaying the template content.</p>
+</li>
+</ul>
+<p>For each tag, the following placeholder can be used:</p>
+<ul>
+<li><code>tag_plugin</code>: after each tag</li>
+</ul>
+<h4 id="render_daily">render_daily</h4>
+<p>Triggered when tagcloud is displayed.</p>
+<p>Allow to add content at the top and bottom of the page, the bottom of each link and to alter data.</p>
+<h5 id="data_9">Data</h5>
+<p><code>$data</code> is an array containing:</p>
+<ul>
+<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
+<li>All templates data, including links.</li>
+</ul>
+<h5 id="template-placeholders_9">Template placeholders</h5>
+<p>Items can be displayed in templates by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.</p>
+<p>List of placeholders:</p>
+<ul>
+<li><code>link_plugin</code>: used at bottom of each link.</li>
+</ul>
+<p><img alt="link_plugin_example" src="http://i.imgur.com/hzhMfSZ.png" /></p>
+<ul>
+<li>
+<p><code>plugin_start_zone</code>: before displaying the template content.</p>
+</li>
+<li>
+<p><code>plugin_end_zone</code>: after displaying the template content.</p>
+</li>
+</ul>
+<h4 id="render_feed">render_feed</h4>
+<p>Triggered when the ATOM or RSS feed is displayed.</p>
+<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>
+<h5 id="data_10">Data</h5>
+<p><code>$data</code> is an array containing:</p>
+<ul>
+<li><code>_LOGGEDIN_</code>: true if user is logged in, false otherwise.</li>
+<li><code>_PAGE_</code>: containing either <code>rss</code> or <code>atom</code>.</li>
+<li>All templates data, including links.</li>
+</ul>
+<h5 id="template-placeholders_10">Template placeholders</h5>
+<p>Tags can be added in feeds by adding an entry in <code>$data['&lt;placeholder&gt;']</code> array.</p>
+<p>List of placeholders:</p>
+<ul>
+<li><code>feed_plugins_header</code>: used as a header tag in the feed.</li>
+</ul>
+<p>For each links:</p>
+<ul>
+<li><code>feed_plugins</code>: additional tag for every link entry.</li>
+</ul>
+<h4 id="save_link">save_link</h4>
+<p>Triggered when a link is save (new link or edit).</p>
+<p>Allow to alter the link being saved in the datastore.</p>
+<h5 id="data_11">Data</h5>
+<p><code>$data</code> is an array containing the link being saved:</p>
+<ul>
+<li>id</li>
+<li>title</li>
+<li>url</li>
+<li>shorturl</li>
+<li>description</li>
+<li>private</li>
+<li>tags</li>
+<li>created</li>
+<li>updated</li>
+</ul>
+<h4 id="delete_link">delete_link</h4>
+<p>Triggered when a link is deleted.</p>
+<p>Allow to execute any action before the link is actually removed from the datastore</p>
+<h5 id="data_12">Data</h5>
+<p><code>$data</code> is an array containing the link being saved:</p>
+<ul>
+<li>id</li>
+<li>title</li>
+<li>url</li>
+<li>shorturl</li>
+<li>description</li>
+<li>private</li>
+<li>tags</li>
+<li>created</li>
+<li>updated</li>
+</ul>
+<h2 id="guide-for-template-designer">Guide for template designer</h2>
+<h3 id="plugin-administration">Plugin administration</h3>
+<p>Your theme must include a plugin administration page: <code>pluginsadmin.html</code>.</p>
+<blockquote>
+<p>Note: repo's template link needs to be added when the PR is merged.</p>
+</blockquote>
+<p>Use the default one as an example.</p>
+<p>Aside from classic RainTPL loops, plugins order is handle by JavaScript. You can just include <code>plugin_admin.js</code>, only if:</p>
+<ul>
+<li>you're using a table.</li>
+<li>you call orderUp() and orderUp() onclick on arrows.</li>
+<li>you add data-line and data-order to your rows.</li>
+</ul>
+<p>Otherwise, you can use your own JS as long as this field is send by the form:</p>
+<p><input type="hidden" name="order_{$key}" value="{$counter}"></p>
+<h3 id="placeholder-system">Placeholder system</h3>
+<p>In order to make plugins work with every custom themes, you need to add variable placeholder in your templates. </p>
+<p>It's a RainTPL loop like this:</p>
+<pre><code>{loop="$plugin_variable"}
+    {$value}
+{/loop}
+</code></pre>
+<p>You should enable <code>demo_plugin</code> for testing purpose, since it uses every placeholder available.</p>
+<h3 id="list-of-placeholders">List of placeholders</h3>
+<p><strong>page.header.html</strong></p>
+<p>At the end of the menu:</p>
+<pre><code>{loop="$plugins_header.buttons_toolbar"}
+    {$value}
+{/loop}
+</code></pre>
+<p>At the end of file, before clearing floating blocks:</p>
+<pre><code>{if="!empty($plugin_errors) &amp;&amp; isLoggedIn()"}
+    &lt;ul class="errors"&gt;
+        {loop="plugin_errors"}
+            &lt;li&gt;{$value}&lt;/li&gt;
+        {/loop}
+    &lt;/ul&gt;
+{/if}
+</code></pre>
+<p><strong>includes.html</strong></p>
+<p>At the end of the file:</p>
+<pre><code class="html">{loop=&quot;$plugins_includes.css_files&quot;}
+&lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;{$value}#&quot;/&gt;
+{/loop}
+</code></pre>
+
+<p><strong>page.footer.html</strong></p>
+<p>At the end of your footer notes:</p>
+<pre><code class="html">{loop=&quot;$plugins_footer.text&quot;}
+     {$value}
+{/loop}
+</code></pre>
+
+<p>At the end of file:</p>
+<pre><code class="html">{loop=&quot;$plugins_footer.js_files&quot;}
+     &lt;script src=&quot;{$value}#&quot;&gt;&lt;/script&gt;
+{/loop}
+</code></pre>
+
+<p><strong>linklist.html</strong></p>
+<p>After search fields:</p>
+<pre><code class="html">{loop=&quot;$plugins_header.fields_toolbar&quot;}
+     {$value}
+{/loop}
+</code></pre>
+
+<p>Before displaying the link list (after paging):</p>
+<pre><code class="html">{loop=&quot;$plugin_start_zone&quot;}
+     {$value}
+{/loop}
+</code></pre>
+
+<p>For every links (icons):</p>
+<pre><code class="html">{loop=&quot;$value.link_plugin&quot;}
+    &lt;span&gt;{$value}&lt;/span&gt;
+{/loop}
+</code></pre>
+
+<p>Before end paging:</p>
+<pre><code class="html">{loop=&quot;$plugin_end_zone&quot;}
+     {$value}
+{/loop}
+</code></pre>
+
+<p><strong>linklist.paging.html</strong></p>
+<p>After the "private only" icon:</p>
+<pre><code class="html">{loop=&quot;$action_plugin&quot;}
+     {$value}
+{/loop}
+</code></pre>
+
+<p><strong>editlink.html</strong></p>
+<p>After tags field:</p>
+<pre><code class="html">{loop=&quot;$edit_link_plugin&quot;}
+     {$value}
+{/loop}
+</code></pre>
+
+<p><strong>tools.html</strong></p>
+<p>After the last tool:</p>
+<pre><code class="html">{loop=&quot;$tools_plugin&quot;}
+     {$value}
+{/loop}
+</code></pre>
+
+<p><strong>picwall.html</strong></p>
+<p>Top:</p>
+<pre><code class="html">&lt;div id=&quot;plugin_zone_start_picwall&quot; class=&quot;plugin_zone&quot;&gt;
+    {loop=&quot;$plugin_start_zone&quot;}
+        {$value}
+    {/loop}
+&lt;/div&gt;
+</code></pre>
+
+<p>Bottom:</p>
+<pre><code class="html">&lt;div id=&quot;plugin_zone_end_picwall&quot; class=&quot;plugin_zone&quot;&gt;
+    {loop=&quot;$plugin_end_zone&quot;}
+        {$value}
+    {/loop}
+&lt;/div&gt;
+</code></pre>
+
+<p><strong>tagcloud.html</strong></p>
+<p>Top:</p>
+<pre><code class="html">   &lt;div id=&quot;plugin_zone_start_tagcloud&quot; class=&quot;plugin_zone&quot;&gt;
+        {loop=&quot;$plugin_start_zone&quot;}
+            {$value}
+        {/loop}
+    &lt;/div&gt;
+</code></pre>
+
+<p>Bottom:</p>
+<pre><code class="html">    &lt;div id=&quot;plugin_zone_end_tagcloud&quot; class=&quot;plugin_zone&quot;&gt;
+        {loop=&quot;$plugin_end_zone&quot;}
+            {$value}
+        {/loop}
+    &lt;/div&gt;
+</code></pre>
+
+<p><strong>daily.html</strong></p>
+<p>Top:</p>
+<pre><code class="html">&lt;div id=&quot;plugin_zone_start_picwall&quot; class=&quot;plugin_zone&quot;&gt;
+     {loop=&quot;$plugin_start_zone&quot;}
+         {$value}
+     {/loop}
+&lt;/div&gt;
+</code></pre>
+
+<p>After every link:</p>
+<pre><code class="html">&lt;div class=&quot;dailyEntryFooter&quot;&gt;
+     {loop=&quot;$link.link_plugin&quot;}
+          {$value}
+     {/loop}
+&lt;/div&gt;
+</code></pre>
+
+<p>Bottom:</p>
+<pre><code class="html">&lt;div id=&quot;plugin_zone_end_picwall&quot; class=&quot;plugin_zone&quot;&gt;
+    {loop=&quot;$plugin_end_zone&quot;}
+        {$value}
+    {/loop}
+&lt;/div&gt;
+</code></pre>
+
+<p><strong>feed.atom.xml</strong> and <strong>feed.rss.xml</strong>:</p>
+<p>In headers tags section:</p>
+<pre><code class="xml">{loop=&quot;$feed_plugins_header&quot;}
+  {$value}
+{/loop}
+</code></pre>
+
+<p>After each entry:</p>
+<pre><code class="xml">{loop=&quot;$value.feed_plugins&quot;}
+  {$value}
+{/loop}
+</code></pre>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Release-Shaarli/" class="btn btn-neutral float-right" title="Release Shaarli">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../3rd-party-libraries/" class="btn btn-neutral" title="3rd party libraries"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../3rd-party-libraries/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Release-Shaarli/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 414 - 0
doc/html/Plugins/index.html

@@ -0,0 +1,414 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Plugins - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Plugins";
+    var mkdocs_page_input_path = "Plugins.md";
+    var mkdocs_page_url = "/Plugins/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Plugins</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#plugin-installation">Plugin installation</a></li>
+    
+
+    <li class="toctree-l3"><a href="#plugin-configuration">Plugin configuration</a></li>
+    
+
+    <li class="toctree-l3"><a href="#plugin-order">Plugin order</a></li>
+    
+
+    <li class="toctree-l3"><a href="#file-mode">File mode</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#plugin-usage">Plugin usage</a></li>
+        
+        </ul>
+    
+
+    </ul>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Setup &raquo;</li>
+        
+      
+    
+    <li>Plugins</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Plugins.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="plugin-installation">Plugin installation</h2>
+<p>There is a bunch of plugins shipped with Shaarli, where there is nothing to do to install them.</p>
+<p>If you want to install a third party plugin:</p>
+<ul>
+<li>Download it.</li>
+<li>Put it in the <code>plugins</code> directory in Shaarli's installation folder.</li>
+<li>Make sure you put it correctly:</li>
+</ul>
+<pre><code>| index.php
+| plugins/
+|---| custom_plugin/
+|   |---| custom_plugin.php
+|   |---| ...
+
+</code></pre>
+
+<ul>
+<li>Make sure your webserver can read and write the files in your plugin folder.</li>
+</ul>
+<h2 id="plugin-configuration">Plugin configuration</h2>
+<p>In Shaarli's administration page (<code>Tools</code> link), go to <code>Plugin administration</code>.</p>
+<p>Here you can enable and disable all plugins available, and configure them.</p>
+<p><img alt="administration screenshot" src="https://camo.githubusercontent.com/5da68e191969007492ca0fbeb25f3b2357b748cc/687474703a2f2f692e696d6775722e636f6d2f766837544643712e706e67" /></p>
+<h2 id="plugin-order">Plugin order</h2>
+<p>In the plugin administration page, you can move enabled plugins to the top or bottom of the list. The first plugins in the list will be processed first.</p>
+<p>This is important in case plugins are depending on each other. Read plugins README details for more information.</p>
+<p><strong>Use case</strong>: The (non existent) plugin <code>shaares_footer</code> adds a footer to every shaare in Markdown syntax. It needs to be processed <em>before</em> (higher in the list) the Markdown plugin. Otherwise its syntax won't be translated in HTML.</p>
+<h2 id="file-mode">File mode</h2>
+<p>Enabled plugin are stored in your <code>config.php</code> parameters file, under the <code>array</code>:</p>
+<pre><code class="php">$GLOBALS['config']['ENABLED_PLUGINS']
+</code></pre>
+
+<p>You can edit them manually here.
+Example:</p>
+<pre><code class="php">$GLOBALS['config']['ENABLED_PLUGINS'] = array(
+    'qrcode', 
+    'archiveorg',
+    'wallabag',
+    'markdown',
+);
+</code></pre>
+
+<h3 id="plugin-usage">Plugin usage</h3>
+<h4 id="official-plugins">Official plugins</h4>
+<p>Usage of each plugin is documented in it's README file:</p>
+<ul>
+<li><code>addlink-toolbar</code>: Adds the addlink input on the linklist page</li>
+<li><code>archiveorg</code>: For each link, add an Archive.org icon</li>
+<li><a href="https://github.com/shaarli/Shaarli/blob/master/plugins/markdown/README.md"><code>markdown</code></a>: Render shaare description with Markdown syntax.</li>
+<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.</li>
+<li><code>qrcode</code>: For each link, add a QRCode icon.</li>
+<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.</li>
+</ul>
+<h4 id="third-party-plugins">Third party plugins</h4>
+<p>See <a href="https://github.com/shaarli/Shaarli/wiki/Community-%26-Related-software#third-party-plugins">Community &amp; related software</a></p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Docker-101/" class="btn btn-neutral float-right" title="Docker 101">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Shaarli-configuration/" class="btn btn-neutral" title="Shaarli configuration"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Shaarli-configuration/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Docker-101/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 431 - 0
doc/html/REST-API/index.html

@@ -0,0 +1,431 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>REST API - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "REST API";
+    var mkdocs_page_input_path = "REST-API.md";
+    var mkdocs_page_url = "/REST-API/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">REST API</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#usage">Usage</a></li>
+    
+
+    <li class="toctree-l3"><a href="#authentication">Authentication</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#shaarli-jwt-token">Shaarli JWT Token</a></li>
+        
+            <li><a class="toctree-l4" href="#complete-example">Complete example</a></li>
+        
+        </ul>
+    
+
+    </ul>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Usage &raquo;</li>
+        
+      
+    
+    <li>REST API</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/REST-API.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="usage">Usage</h2>
+<p>See the <a href="http://shaarli.github.io/api-documentation/">REST API documentation</a>.</p>
+<h2 id="authentication">Authentication</h2>
+<p>All requests to Shaarli's API must include a JWT token to verify their authenticity.</p>
+<p>This token has to be included as an HTTP header called <code>Authentication: Bearer &lt;jwt token&gt;</code>.</p>
+<p>JWT resources :</p>
+<ul>
+<li><a href="https://jwt.io">jwt.io</a> (including a list of client per language).</li>
+<li>RFC : https://tools.ietf.org/html/rfc7519</li>
+<li>https://float-middle.com/json-web-tokens-jwt-vs-sessions/</li>
+<li>HackerNews thread: https://news.ycombinator.com/item?id=11929267</li>
+</ul>
+<h3 id="shaarli-jwt-token">Shaarli JWT Token</h3>
+<p>JWT tokens are composed by three parts, separated by a dot <code>.</code> and encoded in base64:</p>
+<pre><code>[header].[payload].[signature]
+</code></pre>
+
+<h4 id="header">Header</h4>
+<p>Shaarli only allow one hash algorithm, so the header will always be the same:</p>
+<pre><code class="json">{
+    &quot;typ&quot;: &quot;JWT&quot;,
+    &quot;alg&quot;: &quot;HS512&quot;
+}
+</code></pre>
+
+<p>Encoded in base64, it gives:</p>
+<pre><code>ewogICAgICAgICJ0eXAiOiAiSldUIiwKICAgICAgICAiYWxnIjogIkhTNTEyIgogICAgfQ==
+</code></pre>
+
+<h4 id="payload">Payload</h4>
+<p><strong>Validity duration</strong></p>
+<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>
+<pre><code class="json">{
+    &quot;iat&quot;: 1468663519
+}
+</code></pre>
+
+<p>See <a href="https://tools.ietf.org/html/rfc7519#section-4.1.6">RFC reference</a>.</p>
+<h4 id="signature">Signature</h4>
+<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>
+<p>Signature example with PHP:</p>
+<pre><code class="php">$content = base64_encode($header) . '.' . base64_encode($payload);
+$signature = hash_hmac('sha512', $content, $secret);
+</code></pre>
+
+<h3 id="complete-example">Complete example</h3>
+<h4 id="php">PHP</h4>
+<pre><code class="php">function generateToken($secret) {
+    $header = base64_encode('{
+        &quot;typ&quot;: &quot;JWT&quot;,
+        &quot;alg&quot;: &quot;HS512&quot;
+    }');
+    $payload = base64_encode('{
+        &quot;iat&quot;: '. time() .'
+    }');
+    $signature = hash_hmac('sha512', $header .'.'. $payload , $secret);
+    return $header .'.'. $payload .'.'. $signature;
+}
+
+$secret = 'mysecret';
+$token = generateToken($secret);
+echo $token;
+</code></pre>
+
+<blockquote>
+<p><code>ewogICAgICAgICJ0eXAiOiAiSldUIiwKICAgICAgICAiYWxnIjogIkhTNTEyIgogICAgfQ==.ewogICAgICAgICJpYXQiOiAxNDY4NjY3MDQ3CiAgICB9.1d2c54fa947daf594fdbf7591796195652c8bc63bffad7f6a6db2a41c313f495a542cbfb595acade79e83f3810d709b4251d7b940bbc10b531a6e6134af63a68</code></p>
+</blockquote>
+<pre><code class="php">$options = [
+    'http' =&gt; [
+        'method' =&gt; 'GET',
+        'jwt' =&gt; $token,
+    ],
+];
+$context = stream_context_create($options);
+file_get_contents($apiEndpoint, false, $context);
+</code></pre>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Backup,-restore,-import-and-export/" class="btn btn-neutral float-right" title="Backup, restore, import and export">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../RSS-feeds/" class="btn btn-neutral" title="RSS feeds"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../RSS-feeds/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Backup,-restore,-import-and-export/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 367 - 0
doc/html/RSS-feeds/index.html

@@ -0,0 +1,367 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>RSS feeds - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "RSS feeds";
+    var mkdocs_page_input_path = "RSS-feeds.md";
+    var mkdocs_page_url = "/RSS-feeds/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">RSS feeds</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#feeds-options">Feeds options</a></li>
+    
+
+    <li class="toctree-l3"><a href="#rss-feeds-or-picture-wall-for-a-specific-searchtag">RSS Feeds or Picture Wall for a specific search/tag</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Usage &raquo;</li>
+        
+      
+    
+    <li>RSS feeds</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/RSS-feeds.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h3 id="feeds-options">Feeds options</h3>
+<p>Feeds are available in ATOM with <code>?do=atom</code> and RSS with <code>do=RSS</code>.</p>
+<p>Options:
+- You can use <code>permalinks</code> in the feed URL to get permalink to Shaares instead of direct link to shaared URL.
+    - E.G. <code>https://my.shaarli.domain/?do=atom&amp;permalinks</code>.
+- You can use <code>nb</code> parameter in the feed URL to specify the number of Shaares you want in a feed (default if not specified: <code>50</code>). The keyword <code>all</code> is available if you want everything.
+    - <code>https://my.shaarli.domain/?do=atom&amp;permalinks&amp;nb=42</code>
+    - <code>https://my.shaarli.domain/?do=atom&amp;permalinks&amp;nb=all</code></p>
+<h3 id="rss-feeds-or-picture-wall-for-a-specific-searchtag">RSS Feeds or Picture Wall for a specific search/tag</h3>
+<p>It is possible to filter RSS/ATOM feeds and Picture Wall on a Shaarli to <strong>only display results of a specific search, or for a specific tag</strong>.</p>
+<p>For example, if you want to subscribe only to links tagged <code>photography</code>:
+- Go to the desired Shaarli instance.
+- Search for the <code>photography</code> tag in the <em>Filter by tag</em> box. Links tagged <code>photography</code> are displayed.
+- Click on the <code>RSS Feed</code> button.
+- You are presented with an RSS feed showing only these links. Subscribe to it to receive only updates with this tag.
+- The same method <strong>also works for a full-text search</strong> (<em>Search</em> box) <strong>and for the Picture Wall</strong> (want to only see pictures about <code>nature</code>?)
+- You can also build the URLs manually: 
+    - <code>https://my.shaarli.domain/?do=rss&amp;searchtags=nature</code>
+    - <code>https://my.shaarli.domain/links/?do=picwall&amp;searchterm=poney</code></p>
+<p><img alt="" src="../images/rss-filter-1.png" /> <img alt="" src="../images/rss-filter-2.png" /></p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../REST-API/" class="btn btn-neutral float-right" title="REST API">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Firefox-share/" class="btn btn-neutral" title="Firefox share"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Firefox-share/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../REST-API/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 529 - 0
doc/html/Release-Shaarli/index.html

@@ -0,0 +1,529 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Release Shaarli - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Release Shaarli";
+    var mkdocs_page_input_path = "Release-Shaarli.md";
+    var mkdocs_page_url = "/Release-Shaarli/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Release Shaarli</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#prerequisites">Prerequisites</a></li>
+    
+
+    <li class="toctree-l3"><a href="#github-release-draft-and-changelogmd">GitHub release draft and CHANGELOG.md</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#github-release-draft">GitHub release draft</a></li>
+        
+            <li><a class="toctree-l4" href="#changelogmd">CHANGELOG.md</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#increment-the-version-code-updated-docs-create-and-push-a-signed-tag">Increment the version code, updated docs, create and push a signed tag</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#generate-documentation">Generate documentation</a></li>
+        
+            <li><a class="toctree-l4" href="#create-and-merge-a-pull-request">Create and merge a Pull Request</a></li>
+        
+            <li><a class="toctree-l4" href="#bump-shaarli-version-to-v0x-branch">Bump Shaarli version to v0.x branch</a></li>
+        
+            <li><a class="toctree-l4" href="#create-and-push-a-signed-tag">Create and push a signed tag</a></li>
+        
+            <li><a class="toctree-l4" href="#verify-a-signed-tag">Verify a signed tag</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#publish-the-github-release">Publish the GitHub release</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#update-release-badges">Update release badges</a></li>
+        
+            <li><a class="toctree-l4" href="#create-a-github-release-from-a-git-tag">Create a GitHub release from a Git tag</a></li>
+        
+            <li><a class="toctree-l4" href="#generate-and-upload-all-in-one-release-archives">Generate and upload all-in-one release archives</a></li>
+        
+            <li><a class="toctree-l4" href="#update-stable-and-latest-branches">Update stable and latest branches</a></li>
+        
+        </ul>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Development &raquo;</li>
+        
+      
+    
+    <li>Release Shaarli</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Release-Shaarli.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <p>See  <a href="http://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Tagging-Your-Releases">Git - Maintaining a project - Tagging your 
+releases</a>.</p>
+<h2 id="prerequisites">Prerequisites</h2>
+<p>This guide assumes that you have:
+- a GPG key matching your GitHub authentication credentials
+    - i.e., the email address identified by the GPG key is the same as the one in your <code>~/.gitconfig</code> 
+- a GitHub fork of Shaarli
+- a local clone of your Shaarli fork, with the following remotes:
+    - <code>origin</code> pointing to your GitHub fork
+    - <code>upstream</code> pointing to the main Shaarli repository
+- maintainer permissions on the main Shaarli repository, to:
+    - push the signed tag
+    - create a new release
+- <a href="https://getcomposer.org/">Composer</a> and <a href="http://pandoc.org/">Pandoc</a> need to be installed</p>
+<h2 id="github-release-draft-and-changelogmd">GitHub release draft and <code>CHANGELOG.md</code></h2>
+<p>See http://keepachangelog.com/en/0.3.0/ for changelog formatting.</p>
+<h3 id="github-release-draft">GitHub release draft</h3>
+<p>GitHub allows drafting the release note for the upcoming release, from the <a href="https://github.com/shaarli/Shaarli/releases">Releases</a> page. This way, the release note can be drafted while contributions are merged to <code>master</code>.</p>
+<h3 id="changelogmd"><code>CHANGELOG.md</code></h3>
+<p>This file should contain the same information as the release note draft for the upcoming version.</p>
+<p>Update it to:
+- add new entries (additions, fixes, etc.)
+- mark the current version as released by setting its date and link
+- add a new section for the future unreleased version</p>
+<pre><code class="bash">$ cd /path/to/shaarli
+
+$ nano CHANGELOG.md
+
+[...]
+## vA.B.C - UNRELEASED
+TBA
+
+## [vX.Y.Z](https://github.com/shaarli/Shaarli/releases/tag/vX.Y.Z) - YYYY-MM-DD
+[...]
+</code></pre>
+
+<h2 id="increment-the-version-code-updated-docs-create-and-push-a-signed-tag">Increment the version code, updated docs, create and push a signed tag</h2>
+<h3 id="generate-documentation">Generate documentation</h3>
+<pre><code class="bash">$ cd /path/to/shaarli
+
+# create a new branch
+$ git fetch upstream
+$ git checkout upstream/master -b v0.5.0
+
+# rebuild the documentation from the wiki
+$ make htmldoc
+
+# commit the changes
+$ git add doc
+$ git commit -s -m &quot;Generate documentation for v0.5.0&quot;
+
+# push the commit on your GitHub fork
+$ git push origin v0.5.0
+</code></pre>
+
+<h3 id="create-and-merge-a-pull-request">Create and merge a Pull Request</h3>
+<p>This one is pretty straightforward ;-)</p>
+<h3 id="bump-shaarli-version-to-v0x-branch">Bump Shaarli version to v0.x branch</h3>
+<pre><code>$ git checkout master
+$ git fetch upstream
+$ git pull upstream master
+
+# IF the branch doesn't exists
+$ git checkout -b v0.5
+# OR if the branch already exists
+$ git checkout v0.5
+$ git rebase upstream/master
+
+# Bump shaarli version from dev to 0.5.0, **without the `v`**
+$ vim shaarli_version.php
+$ git add shaarli_version
+$ git commit -s -m &quot;Bump Shaarli version to v0.5.0&quot;
+$ git push upstream v0.5
+</code></pre>
+
+<h3 id="create-and-push-a-signed-tag">Create and push a signed tag</h3>
+<pre><code class="bash"># update your local copy
+$ git checkout v0.5
+$ git fetch upstream
+$ git pull upstream v0.5
+
+# create a signed tag
+$ git tag -s -m &quot;Release v0.5.0&quot; v0.5.0
+
+# push it to &quot;upstream&quot;
+$ git push --tags upstream
+</code></pre>
+
+<h3 id="verify-a-signed-tag">Verify a signed tag</h3>
+<p><a href="https://github.com/shaarli/Shaarli/releases/tag/v0.5.0"><code>v0.5.0</code></a> is the first GPG-signed tag pushed on the Community Shaarli.</p>
+<p>Let's have a look at its signature!</p>
+<pre><code class="bash">$ cd /path/to/shaarli
+$ git fetch upstream
+
+# get the SHA1 reference of the tag
+$ git show-ref tags/v0.5.0
+f7762cf803f03f5caf4b8078359a63783d0090c1 refs/tags/v0.5.0
+
+# verify the tag signature information
+$ git verify-tag f7762cf803f03f5caf4b8078359a63783d0090c1
+gpg: Signature made Thu 30 Jul 2015 11:46:34 CEST using RSA key ID 4100DF6F
+gpg: Good signature from &quot;VirtualTam &lt;virtualtam@flibidi.net&gt;&quot; [ultimate]
+</code></pre>
+
+<h2 id="publish-the-github-release">Publish the GitHub release</h2>
+<h3 id="update-release-badges">Update release badges</h3>
+<p>Update <code>README.md</code> so version badges display and point to the newly released Shaarli version(s), in the <code>master</code> branch.</p>
+<h3 id="create-a-github-release-from-a-git-tag">Create a GitHub release from a Git tag</h3>
+<p>From the previously drafted release:
+- edit the release notes (if needed)
+- specify the appropriate Git tag
+- publish the release
+- profit!</p>
+<h3 id="generate-and-upload-all-in-one-release-archives">Generate and upload all-in-one release archives</h3>
+<p>Users with a shared hosting may have:
+- no SSH access
+- no possibility to install PHP packages or server extensions
+- no possibility to run scripts</p>
+<p>To ease Shaarli installations, it is possible to generate and upload additional release archives,
+that will contain Shaarli code plus all required third-party libraries.</p>
+<p><strong>From the <code>v0.5</code> branch:</strong></p>
+<pre><code class="bash">$ make release_archive
+</code></pre>
+
+<p>This will create the following archives:
+- <code>shaarli-vX.Y.Z-full.tar</code>
+- <code>shaarli-vX.Y.Z-full.zip</code></p>
+<p>The archives need to be manually uploaded on the previously created GitHub release.</p>
+<h3 id="update-stable-and-latest-branches">Update <code>stable</code> and <code>latest</code> branches</h3>
+<pre><code>$ git checkout latest
+# latest release
+$ git merge v0.5.0
+# fix eventual conflicts
+$ make test
+$ git push upstream latest
+$ git checkout stable
+# latest previous major
+$ git merge v0.4.5 
+# fix eventual conflicts
+$ make test
+$ git push upstream stable
+</code></pre>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Versioning-and-Branches/" class="btn btn-neutral float-right" title="Versioning and Branches">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Plugin-System/" class="btn btn-neutral" title="Plugin System"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Plugin-System/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Versioning-and-Branches/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 350 - 0
doc/html/Reverse-proxy-configuration/index.html

@@ -0,0 +1,350 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Reverse proxy configuration - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Reverse proxy configuration";
+    var mkdocs_page_input_path = "Reverse-proxy-configuration.md";
+    var mkdocs_page_url = "/Reverse-proxy-configuration/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Reverse proxy configuration</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#haproxy">HAProxy</a></li>
+    
+
+    <li class="toctree-l3"><a href="#nginx">Nginx</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Docker &raquo;</li>
+        
+      
+    
+    <li>Reverse proxy configuration</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Reverse-proxy-configuration.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <p>TODO, see https://github.com/shaarli/Shaarli/issues/888</p>
+<h2 id="haproxy">HAProxy</h2>
+<h2 id="nginx">Nginx</h2>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Docker-resources/" class="btn btn-neutral float-right" title="Docker resources">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Shaarli-images/" class="btn btn-neutral" title="Shaarli images"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Shaarli-images/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Docker-resources/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 386 - 0
doc/html/Security/index.html

@@ -0,0 +1,386 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Security - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Security";
+    var mkdocs_page_input_path = "Security.md";
+    var mkdocs_page_url = "/Security/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Security</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#client-browser">Client browser</a></li>
+    
+
+    <li class="toctree-l3"><a href="#php">PHP</a></li>
+    
+
+    <li class="toctree-l3"><a href="#server-and-sessions">Server and sessions</a></li>
+    
+
+    <li class="toctree-l3"><a href="#shaarli-datastore-and-configuration">Shaarli datastore and configuration</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Development &raquo;</li>
+        
+      
+    
+    <li>Security</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Security.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="client-browser">Client browser</h2>
+<ul>
+<li>Shaarli relies on <code>HTTP_REFERER</code> for some functions (like redirects and clicking on tags). If you have disabled or masqueraded <code>HTTP_REFERER</code> in your browser, some features of Shaarli may not work</li>
+</ul>
+<h2 id="php">PHP</h2>
+<ul>
+<li><code>magic_quotes</code> is an horrible option of PHP which is often activated on servers. No serious developer should rely on this horror to secure their code against SQL injections. You should disable it (and Shaarli expects this option to be disabled). Nevertheless, I have added code to cope with <code>magic_quotes</code> on, so you should not be bothered even on crappy hosts.</li>
+</ul>
+<h2 id="server-and-sessions">Server and sessions</h2>
+<ul>
+<li>Directories are protected using <code>.htaccess</code> files</li>
+<li>Forms are protected against XSRF (Cross-site requests forgery):</li>
+<li>Forms which act on data (save,delete…) contain a token generated by the server.</li>
+<li>Any posted form which does not contain a valid token is rejected.</li>
+<li>Any token can only be used once.</li>
+<li>Tokens are attached to the session and cannot be reused in another session.</li>
+<li>Sessions automatically expire after 60 minutes.</li>
+<li>Sessions are protected against hijacking: the session ID cannot be used from a different IP address.</li>
+</ul>
+<h2 id="shaarli-datastore-and-configuration">Shaarli datastore and configuration</h2>
+<ul>
+<li>The password is salted, hashed and stored in the data subdirectory, in a PHP file, and protected by htaccess. Even if the webserver does not support htaccess, the hash is not readable by URL. Even if the .php file is stolen, the password cannot deduced from the hash. The salt prevents rainbow-tables attacks.</li>
+<li>Links are stored as an associative array which is serialized, compressed (with deflate), base64-encoded and saved as a comment in a <code>.php</code> file.</li>
+<li>Even if the server does not support <code>.htaccess</code> files, the data file will still not be readable by URL.</li>
+<li>The database looks like this:</li>
+</ul>
+<pre><code class="php">&lt;?php /* zP1ZjxxJtiYIvvevEPJ2lDOaLrZv7o...
+...ka7gaco/Z+TFXM2i7BlfMf8qxpaSSYfKlvqv/x8= */ ?&gt;
+</code></pre>
+
+<ul>
+<li>Small hashes are used to make a link to an entry in Shaarli. They are unique. In fact, the date of the items (eg. <code>20110923_150523</code>) is hashed with CRC32, then converted to base64 and some characters are replaced. They are always 6 characters longs and use only <code>A-Z a-z 0-9 - _</code> and <code>@</code>.</li>
+</ul>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Static-analysis/" class="btn btn-neutral float-right" title="Static analysis">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Versioning-and-Branches/" class="btn btn-neutral" title="Versioning and Branches"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Versioning-and-Branches/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Static-analysis/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 747 - 0
doc/html/Server-configuration/index.html

@@ -0,0 +1,747 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Server configuration - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Server configuration";
+    var mkdocs_page_input_path = "Server-configuration.md";
+    var mkdocs_page_url = "/Server-configuration/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Server configuration</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#prerequisites">Prerequisites</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#shaarli">Shaarli</a></li>
+        
+            <li><a class="toctree-l4" href="#https-tls-and-self-signed-certificates">HTTPS, TLS and self-signed certificates</a></li>
+        
+            <li><a class="toctree-l4" href="#proxies">Proxies</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#apache">Apache</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#minimal">Minimal</a></li>
+        
+            <li><a class="toctree-l4" href="#debug-log-all-the-things">Debug - Log all the things!</a></li>
+        
+            <li><a class="toctree-l4" href="#standard-keep-access-and-error-logs">Standard - Keep access and error logs</a></li>
+        
+            <li><a class="toctree-l4" href="#paranoid-redirect-http-80-to-https-443">Paranoid - Redirect HTTP (:80) to HTTPS (:443)</a></li>
+        
+            <li><a class="toctree-l4" href="#htaccess">.htaccess</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#lighthttpd">LightHttpd</a></li>
+    
+
+    <li class="toctree-l3"><a href="#nginx">Nginx</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#foreword">Foreword</a></li>
+        
+            <li><a class="toctree-l4" href="#common-setup">Common setup</a></li>
+        
+            <li><a class="toctree-l4" href="#optional-increase-the-maximum-file-upload-size">(Optional) Increase the maximum file upload size</a></li>
+        
+            <li><a class="toctree-l4" href="#minimal_1">Minimal</a></li>
+        
+            <li><a class="toctree-l4" href="#modular">Modular</a></li>
+        
+            <li><a class="toctree-l4" href="#redirect-http-to-https">Redirect HTTP to HTTPS</a></li>
+        
+        </ul>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Setup &raquo;</li>
+        
+      
+    
+    <li>Server configuration</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Server-configuration.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <p><em>Example virtual host configurations for popular web servers</em></p>
+<ul>
+<li><a href="#apache">Apache</a></li>
+<li><a href="#nginx">Nginx</a></li>
+</ul>
+<h2 id="prerequisites">Prerequisites</h2>
+<h3 id="shaarli">Shaarli</h3>
+<ul>
+<li>Shaarli is installed in a directory readable/writeable by the user</li>
+<li>the correct read/write permissions have been granted to the web server <em>user and/or group</em></li>
+<li>for HTTPS / SSL:</li>
+<li>a key pair (public, private) and a certificate have been generated</li>
+<li>the appropriate server SSL extension is installed and active</li>
+</ul>
+<h3 id="https-tls-and-self-signed-certificates">HTTPS, TLS and self-signed certificates</h3>
+<p>Related guides:
+<em> <a href="http://www.xenocafe.com/tutorials/linux/centos/openssl/self_signed_certificates/index.php">How to Create Self-Signed SSL Certificates with OpenSSL</a>
+</em> <a href="https://workaround.org/certificate-authority">How do I create my own Certificate Authority?</a>
+* Generate a self-signed certificate (will trigger browser warnings) with apache2: <code>make-ssl-cert generate-default-snakeoil --force-overwrite</code> will create <code>/etc/ssl/certs/ssl-cert-snakeoil.pem</code> and <code>/etc/ssl/private/ssl-cert-snakeoil.key</code></p>
+<h3 id="proxies">Proxies</h3>
+<p>If Shaarli is served behind a proxy (i.e. there is a proxy server between clients and the web server hosting Shaarli), please refer to the proxy server documentation for proper configuration. In particular, you have to ensure that the following server variables are properly set:
+- <code>X-Forwarded-Proto</code>;
+- <code>X-Forwarded-Host</code>;
+- <code>X-Forwarded-For</code>.</p>
+<p>See also <a href="https://github.com/shaarli/Shaarli/issues?utf8=%E2%9C%93&amp;q=label%3Aproxy+">proxy-related</a> issues.</p>
+<h2 id="apache">Apache</h2>
+<h3 id="minimal">Minimal</h3>
+<pre><code class="apache">&lt;VirtualHost *:80&gt;
+    ServerName   shaarli.my-domain.org
+    DocumentRoot /absolute/path/to/shaarli/
+&lt;/VirtualHost&gt;
+</code></pre>
+
+<h3 id="debug-log-all-the-things">Debug - Log all the things!</h3>
+<p>This configuration will log both Apache and PHP errors, which may prove useful to identify server configuration errors.</p>
+<p>See:
+<em> <a href="http://stackoverflow.com/q/176">Apache/PHP - error log per VirtualHost</a> (StackOverflow)
+</em> <a href="https://ma.ttias.be/php-php_value-vs-php_admin_value-and-the-use-of-php_flag-explained/">PHP: php_value vs php_admin_value and the use of php_flag explained</a></p>
+<pre><code class="apache">&lt;VirtualHost *:80&gt;
+    ServerName   shaarli.my-domain.org
+    DocumentRoot /absolute/path/to/shaarli/
+
+    LogLevel  warn
+    ErrorLog  /var/log/apache2/shaarli-error.log
+    CustomLog /var/log/apache2/shaarli-access.log combined
+
+    php_flag  log_errors on
+    php_flag  display_errors on
+    php_value error_reporting 2147483647
+    php_value error_log /var/log/apache2/shaarli-php-error.log
+&lt;/VirtualHost&gt;
+</code></pre>
+
+<h3 id="standard-keep-access-and-error-logs">Standard - Keep access and error logs</h3>
+<pre><code class="apache">&lt;VirtualHost *:80&gt;
+    ServerName   shaarli.my-domain.org
+    DocumentRoot /absolute/path/to/shaarli/
+
+    LogLevel  warn
+    ErrorLog  /var/log/apache2/shaarli-error.log
+    CustomLog /var/log/apache2/shaarli-access.log combined
+&lt;/VirtualHost&gt;
+</code></pre>
+
+<h3 id="paranoid-redirect-http-80-to-https-443">Paranoid - Redirect HTTP (:80) to HTTPS (:443)</h3>
+<p>See <a href="https://wiki.mozilla.org/Security/Server_Side_TLS#Apache">Server-side TLS</a> (Mozilla).</p>
+<pre><code class="apache">&lt;VirtualHost *:443&gt;
+    ServerName   shaarli.my-domain.org
+    DocumentRoot /absolute/path/to/shaarli/
+
+    SSLEngine             on
+    SSLCertificateFile    /absolute/path/to/the/website/certificate.pem
+    SSLCertificateKeyFile /absolute/path/to/the/website/key.key
+
+    &lt;Directory /absolute/path/to/shaarli/&gt;
+        AllowOverride All
+        Options Indexes FollowSymLinks MultiViews
+        Order allow,deny
+        allow from all
+    &lt;/Directory&gt;
+
+    LogLevel  warn
+    ErrorLog  /var/log/apache2/shaarli-error.log
+    CustomLog /var/log/apache2/shaarli-access.log combined
+&lt;/VirtualHost&gt;
+&lt;VirtualHost *:80&gt;
+    ServerName   shaarli.my-domain.org
+    Redirect 301 / https://shaarli.my-domain.org
+
+    LogLevel  warn
+    ErrorLog  /var/log/apache2/shaarli-error.log
+    CustomLog /var/log/apache2/shaarli-access.log combined
+&lt;/VirtualHost&gt;
+</code></pre>
+
+<h3 id="htaccess">.htaccess</h3>
+<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>
+<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.</p>
+<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>
+<h2 id="lighthttpd">LightHttpd</h2>
+<h2 id="nginx">Nginx</h2>
+<h3 id="foreword">Foreword</h3>
+<p>Nginx does not natively interpret PHP scripts; to this effect, we will run a <a href="https://en.wikipedia.org/wiki/FastCGI">FastCGI</a> service, to which Nginx's FastCGI module will proxy all requests to PHP resources.</p>
+<p>Required packages:
+- <a href="http://nginx.org">nginx</a>
+- <a href="http://php-fpm.org">php-fpm</a> - PHP FastCGI Process Manager</p>
+<p>Official documentation:
+- <a href="http://nginx.org/en/docs/beginners_guide.html">Beginner's guide</a>
+- <a href="http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html">ngx_http_fastcgi_module</a>
+- <a href="http://wiki.nginx.org/Pitfalls">Pitfalls</a></p>
+<p>Community resources:
+- <a href="https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx">Server-side TLS (Nginx)</a> (Mozilla)
+- <a href="http://kbeezie.com/nginx-configuration-examples/">PHP configuration examples</a> (Karl Blessing)</p>
+<h3 id="common-setup">Common setup</h3>
+<p>Once Nginx and PHP-FPM are installed, we need to ensure:
+- Nginx and PHP-FPM are running using the <em>same user and group</em>
+- both these user and group have
+    - <code>read</code> permissions for Shaarli resources
+    - <code>execute</code> permissions for Shaarli directories <em>AND</em> their parent directories</p>
+<p>On a production server:
+- <code>user:group</code> will likely be <code>http:http</code>, <code>www:www</code> or <code>www-data:www-data</code>
+- files will be located under <code>/var/www</code>, <code>/var/http</code> or <code>/usr/share/nginx</code></p>
+<p>On a development server:
+- files may be located in a user's home directory
+- in this case, make sure both Nginx and PHP-FPM are running as the local user/group!</p>
+<p>For all following configuration examples, this user/group pair will be used:
+- <code>user:group = john:users</code>,</p>
+<p>which corresponds to the following service configuration:</p>
+<pre><code class="ini">; /etc/php/php-fpm.conf
+user = john
+group = users
+
+[...]
+listen.owner = john
+listen.group = users
+</code></pre>
+
+<pre><code class="nginx"># /etc/nginx/nginx.conf
+user john users;
+
+http {
+    [...]
+}
+</code></pre>
+
+<h3 id="optional-increase-the-maximum-file-upload-size">(Optional) Increase the maximum file upload size</h3>
+<p>Some bookmark dumps generated by web browsers can be <em>huge</em> due to the presence of Base64-encoded images and favicons, as well as extra verbosity when nesting links in (sub-)folders.</p>
+<p>To increase upload size, you will need to modify both nginx and PHP configuration:</p>
+<pre><code class="nginx"># /etc/nginx/nginx.conf
+
+http {
+    [...]
+
+    client_max_body_size 10m;
+
+    [...]
+}
+</code></pre>
+
+<pre><code class="ini"># /etc/php5/fpm/php.ini
+
+[...]
+post_max_size = 10M
+[...]
+upload_max_filesize = 10M
+</code></pre>
+
+<h3 id="minimal_1">Minimal</h3>
+<p><em>WARNING: Use for development only!</em> </p>
+<pre><code class="nginx">user john users;
+worker_processes  1;
+events {
+    worker_connections  1024;
+}
+
+http {
+    include            mime.types;
+    default_type       application/octet-stream;
+    keepalive_timeout  20;
+
+    index index.html index.php;
+
+    server {
+        listen       80;
+        server_name  localhost;
+        root         /home/john/web;
+
+        access_log  /var/log/nginx/access.log;
+        error_log   /var/log/nginx/error.log;
+
+        location /shaarli/ {
+            try_files $uri /shaarli/index.php$is_args$args;
+            access_log  /var/log/nginx/shaarli.access.log;
+            error_log   /var/log/nginx/shaarli.error.log;
+        }
+
+        location ~ (index)\.php$ {
+            try_files $uri =404;
+            fastcgi_split_path_info ^(.+\.php)(/.+)$;
+            fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
+            fastcgi_index  index.php;
+            include        fastcgi.conf;
+        }
+    }
+}
+</code></pre>
+
+<h3 id="modular">Modular</h3>
+<p>The previous setup is sufficient for development purposes, but has several major caveats:
+- every content that does not match the PHP rule will be sent to client browsers:
+    - dotfiles - in our case, <code>.htaccess</code>
+    - temporary files, e.g. Vim or Emacs files: <code>index.php~</code>
+- asset / static resource caching is not optimized
+- if serving several PHP sites, there will be a lot of duplication: <code>location /shaarli/</code>, <code>location /mysite/</code>, etc.</p>
+<p>To solve this, we will split Nginx configuration in several parts, that will be included when needed:</p>
+<pre><code class="nginx"># /etc/nginx/deny.conf
+location ~ /\. {
+    # deny access to dotfiles
+    access_log off;
+    log_not_found off;
+    deny all;
+}
+
+location ~ ~$ {
+    # deny access to temp editor files, e.g. &quot;script.php~&quot;
+    access_log off;
+    log_not_found off;
+    deny all;
+}
+</code></pre>
+
+<pre><code class="nginx"># /etc/nginx/php.conf
+location ~ (index)\.php$ {
+    # Slim - split URL path into (script_filename, path_info)
+    try_files $uri =404;
+    fastcgi_split_path_info ^(.+\.php)(/.+)$;
+
+    # filter and proxy PHP requests to PHP-FPM
+    fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
+    fastcgi_index  index.php;
+    include        fastcgi.conf;
+}
+
+location ~ \.php$ {
+    # deny access to all other PHP scripts
+    deny all;
+}
+</code></pre>
+
+<pre><code class="nginx"># /etc/nginx/static_assets.conf
+location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
+    expires    max;
+    add_header Pragma public;
+    add_header Cache-Control &quot;public, must-revalidate, proxy-revalidate&quot;;
+}
+</code></pre>
+
+<pre><code class="nginx"># /etc/nginx/nginx.conf
+[...]
+
+http {
+    [...]
+
+    root        /home/john/web;
+    access_log  /var/log/nginx/access.log;
+    error_log   /var/log/nginx/error.log;
+
+    server {
+        # virtual host for a first domain
+        listen       80;
+        server_name  my.first.domain.org;
+
+        location /shaarli/ {
+            # Slim - rewrite URLs
+            try_files $uri /shaarli/index.php$is_args$args;
+
+            access_log  /var/log/nginx/shaarli.access.log;
+            error_log   /var/log/nginx/shaarli.error.log;
+        }
+
+        location = /shaarli/favicon.ico {
+            # serve the Shaarli favicon from its custom location
+            alias /var/www/shaarli/images/favicon.ico;
+        }
+
+        include deny.conf;
+        include static_assets.conf;
+        include php.conf;
+    }
+
+    server {
+        # virtual host for a second domain
+        listen       80;
+        server_name  second.domain.com;
+
+        location /minigal/ {
+            access_log  /var/log/nginx/minigal.access.log;
+            error_log   /var/log/nginx/minigal.error.log;
+        }
+
+        include deny.conf;
+        include static_assets.conf;
+        include php.conf;
+    }
+}
+</code></pre>
+
+<h3 id="redirect-http-to-https">Redirect HTTP to HTTPS</h3>
+<p>Assuming you have generated a (self-signed) key and certificate, and they are located under <code>/home/john/ssl/localhost.{key,crt}</code>, it is pretty straightforward to set an HTTP (:80) to HTTPS (:443) redirection to force SSL/TLS usage.</p>
+<pre><code class="nginx"># /etc/nginx/nginx.conf
+[...]
+
+http {
+    [...]
+
+    index index.html index.php;
+
+    root        /home/john/web;
+    access_log  /var/log/nginx/access.log;
+    error_log   /var/log/nginx/error.log;
+
+    server {
+        listen       80;
+        server_name  localhost;
+
+        return 301 https://localhost$request_uri;
+    }
+
+    server {
+        listen       443 ssl;
+        server_name  localhost;
+
+        ssl_certificate      /home/john/ssl/localhost.crt;
+        ssl_certificate_key  /home/john/ssl/localhost.key;
+
+        location /shaarli/ {
+            # Slim - rewrite URLs
+            try_files $uri /index.php$is_args$args;
+
+            access_log  /var/log/nginx/shaarli.access.log;
+            error_log   /var/log/nginx/shaarli.error.log;
+        }
+
+        location = /shaarli/favicon.ico {
+            # serve the Shaarli favicon from its custom location
+            alias /var/www/shaarli/images/favicon.ico;
+        }
+
+        include deny.conf;
+        include static_assets.conf;
+        include php.conf;
+    }
+}
+</code></pre>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Server-security/" class="btn btn-neutral float-right" title="Server security">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Server-requirements/" class="btn btn-neutral" title="Server requirements"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Server-requirements/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Server-security/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 475 - 0
doc/html/Server-requirements/index.html

@@ -0,0 +1,475 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Server requirements - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Server requirements";
+    var mkdocs_page_input_path = "Server-requirements.md";
+    var mkdocs_page_url = "/Server-requirements/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Server requirements</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#php">PHP</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#release-information">Release information</a></li>
+        
+            <li><a class="toctree-l4" href="#supported-versions">Supported versions</a></li>
+        
+            <li><a class="toctree-l4" href="#dependency-management">Dependency management</a></li>
+        
+            <li><a class="toctree-l4" href="#extensions">Extensions</a></li>
+        
+        </ul>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Setup &raquo;</li>
+        
+      
+    
+    <li>Server requirements</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Server-requirements.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="php">PHP</h2>
+<h3 id="release-information">Release information</h3>
+<ul>
+<li><a href="http://php.net/supported-versions.php">PHP: Supported versions</a></li>
+<li><a href="http://php.net/eol.php">PHP: Unsupported versions</a> <em>(EOL - End Of Life)</em></li>
+<li><a href="http://php.net/ChangeLog-7.php">PHP 7 Changelog</a></li>
+<li><a href="http://php.net/ChangeLog-5.php">PHP 5 Changelog</a></li>
+<li><a href="https://bugs.php.net/">PHP: Bugs</a></li>
+</ul>
+<h3 id="supported-versions">Supported versions</h3>
+<table>
+<thead>
+<tr>
+<th align="center">Version</th>
+<th align="center">Status</th>
+<th align="center">Shaarli compatibility</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center">7.1</td>
+<td align="center">Supported (v0.9.x)</td>
+<td align="center">:white_check_mark:</td>
+</tr>
+<tr>
+<td align="center">7.0</td>
+<td align="center">Supported</td>
+<td align="center">:white_check_mark:</td>
+</tr>
+<tr>
+<td align="center">5.6</td>
+<td align="center">Supported</td>
+<td align="center">:white_check_mark:</td>
+</tr>
+<tr>
+<td align="center">5.5</td>
+<td align="center">EOL: 2016-07-10</td>
+<td align="center">:white_check_mark:</td>
+</tr>
+<tr>
+<td align="center">5.4</td>
+<td align="center">EOL: 2015-09-14</td>
+<td align="center">:white_check_mark: (up to Shaarli 0.8.x)</td>
+</tr>
+<tr>
+<td align="center">5.3</td>
+<td align="center">EOL: 2014-08-14</td>
+<td align="center">:white_check_mark: (up to Shaarli 0.8.x)</td>
+</tr>
+</tbody>
+</table>
+<p>See also:
+- <a href="https://github.com/shaarli/Shaarli/blob/master/.travis.yml">Travis configuration</a></p>
+<h3 id="dependency-management">Dependency management</h3>
+<p>Starting with Shaarli <code>v0.8.x</code>, <a href="https://getcomposer.org/">Composer</a> is used to resolve,
+download and install third-party PHP dependencies.</p>
+<table>
+<thead>
+<tr>
+<th>Library</th>
+<th align="center">Required?</th>
+<th>Usage</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><a href="https://packagist.org/packages/shaarli/netscape-bookmark-parser"><code>shaarli/netscape-bookmark-parser</code></a></td>
+<td align="center">All</td>
+<td>Import bookmarks from Netscape files</td>
+</tr>
+<tr>
+<td><a href="https://packagist.org/packages/erusev/parsedown"><code>erusev/parsedown</code></a></td>
+<td align="center">All</td>
+<td>Parse MarkDown syntax for the MarkDown plugin</td>
+</tr>
+<tr>
+<td><a href="https://packagist.org/packages/slim/slim"><code>slim/slim</code></a></td>
+<td align="center">All</td>
+<td>Handle routes and middleware for the REST API</td>
+</tr>
+</tbody>
+</table>
+<h3 id="extensions">Extensions</h3>
+<table>
+<thead>
+<tr>
+<th>Extension</th>
+<th align="center">Required?</th>
+<th>Usage</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><a href="http://php.net/manual/en/book.openssl.php"><code>openssl</code></a></td>
+<td align="center">All</td>
+<td>OpenSSL, HTTPS</td>
+</tr>
+<tr>
+<td><a href="http://php.net/manual/en/book.mbstring.php"><code>php-mbstring</code></a></td>
+<td align="center">CentOS, Fedora, RHEL, Windows</td>
+<td>multibyte (Unicode) string support</td>
+</tr>
+<tr>
+<td><a href="http://php.net/manual/en/book.image.php"><code>php-gd</code></a></td>
+<td align="center">optional</td>
+<td>thumbnail resizing</td>
+</tr>
+<tr>
+<td><a href="http://php.net/manual/en/book.intl.php"><code>php-intl</code></a></td>
+<td align="center">optional</td>
+<td>localized text sorting (e.g. <code>e-&gt;è-&gt;f</code>)</td>
+</tr>
+<tr>
+<td><a href="http://php.net/manual/en/book.curl.php"><code>php-curl</code></a></td>
+<td align="center">optional</td>
+<td>using cURL for fetching webpages and thumbnails in a more robust way</td>
+</tr>
+</tbody>
+</table>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Server-configuration/" class="btn btn-neutral float-right" title="Server configuration">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Upgrade-and-migration/" class="btn btn-neutral" title="Upgrade and migration"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Upgrade-and-migration/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Server-configuration/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 429 - 0
doc/html/Server-security/index.html

@@ -0,0 +1,429 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Server security - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Server security";
+    var mkdocs_page_input_path = "Server-security.md";
+    var mkdocs_page_url = "/Server-security/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Server security</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#phpini">php.ini</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#locate-ini-files">Locate .ini files</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#fail2ban">fail2ban</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#read-shaarli-logs-to-ban-ips">Read Shaarli logs to ban IPs</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#robots-restricting-search-engines-and-web-crawler-traffic">Robots - Restricting search engines and web crawler traffic</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Setup &raquo;</li>
+        
+      
+    
+    <li>Server security</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Server-security.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="phpini">php.ini</h2>
+<p>PHP settings are defined in:
+- a main configuration file, usually found under <code>/etc/php5/php.ini</code>; some distributions provide different configuration environments, e.g.
+    - <code>/etc/php5/php.ini</code> - used when running console scripts
+    - <code>/etc/php5/apache2/php.ini</code> - used when a client requests PHP resources from Apache
+    - <code>/etc/php5/php-fpm.conf</code> - used when PHP requests are proxied to PHP-FPM
+- additional configuration files/entries, depending on the installed/enabled extensions:
+    - <code>/etc/php/conf.d/xdebug.ini</code></p>
+<h3 id="locate-ini-files">Locate .ini files</h3>
+<h4 id="console-environment">Console environment</h4>
+<pre><code class="bash">$ php --ini
+Configuration File (php.ini) Path: /etc/php
+Loaded Configuration File:         /etc/php/php.ini
+Scan for additional .ini files in: /etc/php/conf.d
+Additional .ini files parsed:      /etc/php/conf.d/xdebug.ini
+</code></pre>
+
+<h4 id="server-environment">Server environment</h4>
+<ul>
+<li>create a <code>phpinfo.php</code> script located in a path supported by the web server, e.g.<ul>
+<li>Apache (with user dirs enabled): <code>/home/myself/public_html/phpinfo.php</code></li>
+<li><code>/var/www/test/phpinfo.php</code></li>
+</ul>
+</li>
+<li>make sure the script is readable by the web server user/group (usually, <code>www</code>, <code>www-data</code> or <code>httpd</code>)</li>
+<li>access the script from a web browser</li>
+<li>look at the <em>Loaded Configuration File</em> and <em>Scan this dir for additional .ini files</em> entries</li>
+</ul>
+<pre><code class="php">&lt;?php phpinfo(); ?&gt;
+</code></pre>
+
+<h2 id="fail2ban">fail2ban</h2>
+<p><code>fail2ban</code> is an intrusion prevention framework that reads server (Apache, SSH, etc.) and uses <code>iptables</code> profiles to block brute-force attempts:
+- <a href="http://www.fail2ban.org/wiki/index.php/Main_Page">Official website</a>
+- <a href="https://github.com/fail2ban/fail2ban">Source code</a></p>
+<h3 id="read-shaarli-logs-to-ban-ips">Read Shaarli logs to ban IPs</h3>
+<p>Example configuration:
+- allow 3 login attempts per IP address
+- after 3 failures, permanently ban the corresponding IP adddress</p>
+<p><code>/etc/fail2ban/jail.local</code></p>
+<pre><code class="ini">[shaarli-auth]
+enabled  = true
+port     = https,http
+filter   = shaarli-auth
+logpath  = /var/www/path/to/shaarli/data/log.txt
+maxretry = 3
+bantime = -1
+</code></pre>
+
+<p><code>/etc/fail2ban/filter.d/shaarli-auth.conf</code></p>
+<pre><code class="ini">[INCLUDES]
+before = common.conf
+[Definition]
+failregex = \s-\s&lt;HOST&gt;\s-\sLogin failed for user.*$
+ignoreregex = 
+</code></pre>
+
+<h2 id="robots-restricting-search-engines-and-web-crawler-traffic">Robots - Restricting search engines and web crawler traffic</h2>
+<p>Creating a <code>robots.txt</code> with the following contents at the root of your Shaarli installation will prevent <em>honest</em> web crawlers from indexing each and every link and Daily page from a Shaarli instance, thus getting rid of a certain amount of unsollicited network traffic.</p>
+<pre><code>User-agent: *
+Disallow: /
+</code></pre>
+
+<p>See:
+- http://www.robotstxt.org/
+- http://www.robotstxt.org/robotstxt.html
+- http://www.robotstxt.org/meta.html</p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Shaarli-configuration/" class="btn btn-neutral float-right" title="Shaarli configuration">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Server-configuration/" class="btn btn-neutral" title="Server configuration"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Server-configuration/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Shaarli-configuration/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 563 - 0
doc/html/Shaarli-configuration/index.html

@@ -0,0 +1,563 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Shaarli configuration - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Shaarli configuration";
+    var mkdocs_page_input_path = "Shaarli-configuration.md";
+    var mkdocs_page_url = "/Shaarli-configuration/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Shaarli configuration</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#foreword">Foreword</a></li>
+    
+
+    <li class="toctree-l3"><a href="#file-and-directory-permissions">File and directory permissions</a></li>
+    
+
+    <li class="toctree-l3"><a href="#configuration">Configuration</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#credentials">Credentials</a></li>
+        
+            <li><a class="toctree-l4" href="#general">General</a></li>
+        
+            <li><a class="toctree-l4" href="#security">Security</a></li>
+        
+            <li><a class="toctree-l4" href="#resources">Resources</a></li>
+        
+            <li><a class="toctree-l4" href="#updates">Updates</a></li>
+        
+            <li><a class="toctree-l4" href="#privacy">Privacy</a></li>
+        
+            <li><a class="toctree-l4" href="#feed">Feed</a></li>
+        
+            <li><a class="toctree-l4" href="#thumbnail">Thumbnail</a></li>
+        
+            <li><a class="toctree-l4" href="#redirector">Redirector</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#configuration-file-example">Configuration file example</a></li>
+    
+
+    <li class="toctree-l3"><a href="#additional-configuration">Additional configuration</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Setup &raquo;</li>
+        
+      
+    
+    <li>Shaarli configuration</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Shaarli-configuration.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="foreword">Foreword</h2>
+<p><strong>Do not edit configuration options in index.php! Your changes would be lost.</strong> </p>
+<p>Once your Shaarli instance is installed, the file <code>data/config.json.php</code> is generated:
+<em> it contains all settings in JSON format, and can be edited to customize values
+</em> it defines which <a href="../Plugin-System">plugins</a> are enabled<a href="../.html"></a>
+<em> its values override those defined in <code>index.php</code>
+</em> it is wrap in a PHP comment to prevent anyone accessing it, regardless of server configuration</p>
+<h2 id="file-and-directory-permissions">File and directory permissions</h2>
+<p>The server process running Shaarli must have:
+- <code>read</code> access to the following resources:
+    - PHP scripts: <code>index.php</code>, <code>application/*.php</code>, <code>plugins/*.php</code>
+    - 3rd party PHP and Javascript libraries: <code>inc/*.php</code>, <code>inc/*.js</code>
+    - static assets:
+        - CSS stylesheets: <code>inc/*.css</code>
+        - <code>images/*</code>
+    - RainTPL templates: <code>tpl/*.html</code>
+- <code>read</code>, <code>write</code> and <code>execution</code> access to the following directories:
+    - <code>cache</code> - thumbnail cache
+    - <code>data</code> - link data store, configuration options
+    - <code>pagecache</code> - Atom/RSS feed cache
+    - <code>tmp</code> - RainTPL page cache</p>
+<p>On a Linux distribution:
+- the web server user will likely be <code>www</code> or <code>http</code> (for Apache2)
+- it will be a member of a group of the same name: <code>www:www</code>, <code>http:http</code>
+- to give it access to Shaarli, either:
+    - unzip Shaarli in the default web server location (usually <code>/var/www/</code>) and set the web server user as the owner
+    - put users in the same group as the web server, and set the appropriate access rights
+- if you have a domain / subdomain to serve Shaarli, <a href="../Server-configuration">configure the server</a> accordingly<a href="../.html"></a></p>
+<h2 id="configuration">Configuration</h2>
+<p>In <code>data/config.json.php</code>.</p>
+<p>See also <a href="../Plugin-System.html">Plugin System</a>.</p>
+<h3 id="credentials">Credentials</h3>
+<blockquote>
+<p>You shouldn't edit those.</p>
+</blockquote>
+<p><strong>login</strong>: Login username.<br />
+<strong>hash</strong>: Generated password hash.<br />
+<strong>salt</strong>: Password salt.</p>
+<h3 id="general">General</h3>
+<p><strong>title</strong>: Shaarli's instance title.<br />
+<strong>header_link</strong>: Link to the homepage.<br />
+<strong>links_per_page</strong>: Number of shaares displayed per page.<br />
+<strong>timezone</strong>: See <a href="http://php.net/manual/en/timezones.php">the list of supported timezones</a>.<br />
+<strong>enabled_plugins</strong>: List of enabled plugins.</p>
+<h3 id="security">Security</h3>
+<p><strong>session_protection_disabled</strong>: Disable session cookie hijacking protection (not recommended). 
+It might be useful if your IP adress often changes.<br />
+<strong>ban_after</strong>: Failed login attempts before being IP banned.<br />
+<strong>ban_duration</strong>: IP ban duration in seconds.<br />
+<strong>open_shaarli</strong>: Anyone can add a new link while logged out if enabled.<br />
+<strong>trusted_proxies</strong>: List of trusted IP which won't be banned after failed login attemps. Useful if Shaarli is behind a reverse proxy.<br />
+<strong>allowed_protocols</strong>: List of allowed protocols in shaare URLs or markdown-rendered descriptions. Useful if you want to store <code>javascript:</code> links (bookmarklets) in Shaarli (default: <code>["ftp", "ftps", "magnet"]</code>).</p>
+<h3 id="resources">Resources</h3>
+<p><strong>data_dir</strong>: Data directory.<br />
+<strong>datastore</strong>: Shaarli's links database file path.<br />
+<strong>history</strong>: Shaarli's operation history file path.
+<strong>updates</strong>: File path for the ran updates file.<br />
+<strong>log</strong>: Log file path.<br />
+<strong>update_check</strong>: Last update check file path.<br />
+<strong>raintpl_tpl</strong>: Templates directory.<br />
+<strong>raintpl_tmp</strong>: Template engine cache directory.<br />
+<strong>thumbnails_cache</strong>: Thumbnails cache directory.<br />
+<strong>page_cache</strong>: Shaarli's internal cache directory.<br />
+<strong>ban_file</strong>: Banned IP file path.</p>
+<h3 id="updates">Updates</h3>
+<p><strong>check_updates</strong>: Enable or disable update check to the git repository.<br />
+<strong>check_updates_branch</strong>: Git branch used to check updates (e.g. <code>stable</code> or <code>master</code>).<br />
+<strong>check_updates_interval</strong>: Look for new version every N seconds (default: every day).</p>
+<h3 id="privacy">Privacy</h3>
+<p><strong>default_private_links</strong>: Check the private checkbox by default for every new link.<br />
+<strong>hide_public_links</strong>: All links are hidden while logged out.<br />
+<strong>hide_timestamps</strong>: Timestamps are hidden.</p>
+<h3 id="feed">Feed</h3>
+<p><strong>rss_permalinks</strong>: Enable this to redirect RSS links to Shaarli's permalinks instead of shaared URL.<br />
+<strong>show_atom</strong>: Display ATOM feed button.</p>
+<h3 id="thumbnail">Thumbnail</h3>
+<p><strong>enable_thumbnails</strong>: Enable or disable thumbnail display.<br />
+<strong>enable_localcache</strong>: Enable or disable local cache.</p>
+<h3 id="redirector">Redirector</h3>
+<p><strong>url</strong>: Redirector URL, such as <code>anonym.to</code>.<br />
+<strong>encode_url</strong>: Enable this if the redirector needs encoded URL to work properly.</p>
+<h2 id="configuration-file-example">Configuration file example</h2>
+<pre><code class="json">&lt;?php /*
+{
+    &quot;credentials&quot;: {
+        &quot;login&quot;: &quot;&lt;login&gt;&quot;,
+        &quot;hash&quot;: &quot;&lt;password hash&gt;&quot;,
+        &quot;salt&quot;: &quot;&lt;password salt&gt;&quot;
+    },
+    &quot;security&quot;: {
+        &quot;ban_after&quot;: 4,
+        &quot;session_protection_disabled&quot;: false,
+        &quot;ban_duration&quot;: 1800,
+        &quot;trusted_proxies&quot;: [
+            &quot;1.2.3.4&quot;,
+            &quot;5.6.7.8&quot;
+        ],
+        &quot;allowed_protocols&quot;: [
+            &quot;ftp&quot;,
+            &quot;ftps&quot;,
+            &quot;magnet&quot;
+        ]
+    },
+    &quot;resources&quot;: {
+        &quot;data_dir&quot;: &quot;data&quot;,
+        &quot;config&quot;: &quot;data\/config.php&quot;,
+        &quot;datastore&quot;: &quot;data\/datastore.php&quot;,
+        &quot;ban_file&quot;: &quot;data\/ipbans.php&quot;,
+        &quot;updates&quot;: &quot;data\/updates.txt&quot;,
+        &quot;log&quot;: &quot;data\/log.txt&quot;,
+        &quot;update_check&quot;: &quot;data\/lastupdatecheck.txt&quot;,
+        &quot;raintpl_tmp&quot;: &quot;tmp\/&quot;,
+        &quot;raintpl_tpl&quot;: &quot;tpl\/&quot;,
+        &quot;thumbnails_cache&quot;: &quot;cache&quot;,
+        &quot;page_cache&quot;: &quot;pagecache&quot;
+    },
+    &quot;general&quot;: {
+        &quot;check_updates&quot;: true,
+        &quot;rss_permalinks&quot;: true,
+        &quot;links_per_page&quot;: 20,
+        &quot;default_private_links&quot;: true,
+        &quot;enable_thumbnails&quot;: true,
+        &quot;enable_localcache&quot;: true,
+        &quot;check_updates_branch&quot;: &quot;stable&quot;,
+        &quot;check_updates_interval&quot;: 86400,
+        &quot;enabled_plugins&quot;: [
+            &quot;markdown&quot;,
+            &quot;wallabag&quot;,
+            &quot;archiveorg&quot;
+        ],
+        &quot;timezone&quot;: &quot;Europe\/Paris&quot;,
+        &quot;title&quot;: &quot;My Shaarli&quot;,
+        &quot;header_link&quot;: &quot;?&quot;
+    },
+    &quot;extras&quot;: {
+        &quot;show_atom&quot;: false,
+        &quot;hide_public_links&quot;: false,
+        &quot;hide_timestamps&quot;: false,
+        &quot;open_shaarli&quot;: false,
+        &quot;redirector&quot;: &quot;http://anonym.to/?&quot;,
+        &quot;redirector_encode_url&quot;: false
+    },
+    &quot;general&quot;: {
+        &quot;header_link&quot;: &quot;?&quot;,
+        &quot;links_per_page&quot;: 20,
+        &quot;enabled_plugins&quot;: [
+            &quot;markdown&quot;,
+            &quot;wallabag&quot;
+        ],
+        &quot;timezone&quot;: &quot;Europe\/Paris&quot;,
+        &quot;title&quot;: &quot;My Shaarli&quot;
+    },
+    &quot;updates&quot;: {
+        &quot;check_updates&quot;: true,
+        &quot;check_updates_branch&quot;: &quot;stable&quot;,
+        &quot;check_updates_interval&quot;: 86400
+    },
+    &quot;feed&quot;: {
+        &quot;rss_permalinks&quot;: true,
+        &quot;show_atom&quot;: false
+    },
+    &quot;privacy&quot;: {
+        &quot;default_private_links&quot;: true,
+        &quot;hide_public_links&quot;: false,
+        &quot;hide_timestamps&quot;: false
+    },
+    &quot;thumbnail&quot;: {
+        &quot;enable_thumbnails&quot;: true,
+        &quot;enable_localcache&quot;: true
+    },
+    &quot;redirector&quot;: {
+        &quot;url&quot;: &quot;http://anonym.to/?&quot;,
+        &quot;encode_url&quot;: false
+    },
+    &quot;plugins&quot;: {
+        &quot;WALLABAG_URL&quot;: &quot;http://demo.wallabag.org&quot;,
+        &quot;WALLABAG_VERSION&quot;: &quot;1&quot;
+    }
+} ?&gt;
+</code></pre>
+
+<h2 id="additional-configuration">Additional configuration</h2>
+<p>The playvideos plugin may require that you adapt your server's 
+<a href="https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md#troubleshooting">Content Security Policy</a> 
+configuration to work properly.<a href="../.html"></a></p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Plugins/" class="btn btn-neutral float-right" title="Plugins">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Server-security/" class="btn btn-neutral" title="Server security"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Server-security/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Plugins/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 425 - 0
doc/html/Shaarli-images/index.html

@@ -0,0 +1,425 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Shaarli images - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Shaarli images";
+    var mkdocs_page_input_path = "Shaarli-images.md";
+    var mkdocs_page_url = "/Shaarli-images/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Shaarli images</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#get-and-run-a-shaarli-image">Get and run a Shaarli image</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#dockerhub-repository">DockerHub repository</a></li>
+        
+            <li><a class="toctree-l4" href="#available-image-tags">Available image tags</a></li>
+        
+            <li><a class="toctree-l4" href="#download-from-dockerhub">Download from DockerHub</a></li>
+        
+            <li><a class="toctree-l4" href="#create-and-start-a-new-container-from-the-image">Create and start a new container from the image</a></li>
+        
+            <li><a class="toctree-l4" href="#stop-and-destroy-a-container">Stop and destroy a container</a></li>
+        
+        </ul>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Docker &raquo;</li>
+        
+      
+    
+    <li>Shaarli images</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Shaarli-images.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="get-and-run-a-shaarli-image">Get and run a Shaarli image</h2>
+<h3 id="dockerhub-repository">DockerHub repository</h3>
+<p>The images can be found in the <a href="https://hub.docker.com/r/shaarli/shaarli/"><code>shaarli/shaarli</code></a>
+repository.</p>
+<h3 id="available-image-tags">Available image tags</h3>
+<ul>
+<li><code>latest</code>: master branch (tarball release)</li>
+<li><code>stable</code>: stable branch (tarball release)</li>
+<li><code>dev</code>: master branch (Git clone)</li>
+</ul>
+<p>All images rely on:
+- <a href="https://hub.docker.com/_/debian/">Debian 8 Jessie</a>
+- <a href="http://php-fpm.org/">PHP5-FPM</a>
+- <a href="http://nginx.org/">Nginx</a></p>
+<h3 id="download-from-dockerhub">Download from DockerHub</h3>
+<pre><code class="bash">$ docker pull shaarli/shaarli
+latest: Pulling from shaarli/shaarli
+32716d9fcddb: Pull complete
+84899d045435: Pull complete
+4b6ad7444763: Pull complete
+e0345ef7a3e0: Pull complete
+5c1dd344094f: Pull complete
+6422305a200b: Pull complete
+7d63f861dbef: Pull complete
+3eb97210645c: Pull complete
+869319d746ff: Already exists
+869319d746ff: Pulling fs layer
+902b87aaaec9: Already exists
+Digest: sha256:f836b4627b958b3f83f59c332f22f02fcd495ace3056f2be2c4912bd8704cc98
+Status: Downloaded newer image for shaarli/shaarli:latest
+</code></pre>
+
+<h3 id="create-and-start-a-new-container-from-the-image">Create and start a new container from the image</h3>
+<pre><code class="bash"># map the host's :8000 port to the container's :80 port
+$ docker create -p 8000:80 shaarli/shaarli
+d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101
+
+# launch the container in the background
+$ docker start d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101
+d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101
+
+# list active containers
+$ docker ps
+CONTAINER ID  IMAGE            COMMAND               CREATED         STATUS        PORTS                 NAMES
+d40b7af693d6  shaarli/shaarli  /usr/bin/supervisor  15 seconds ago  Up 4 seconds  0.0.0.0:8000-&gt;80/tcp  backstabbing_galileo
+</code></pre>
+
+<h3 id="stop-and-destroy-a-container">Stop and destroy a container</h3>
+<pre><code class="bash">$ docker stop backstabbing_galileo  # those docker guys are really rude to physicists!
+backstabbing_galileo
+
+# check the container is stopped
+$ docker ps
+CONTAINER ID  IMAGE            COMMAND               CREATED         STATUS        PORTS                 NAMES
+
+# list ALL containers
+$ docker ps -a
+CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                      PORTS               NAMES
+d40b7af693d6        shaarli/shaarli     /usr/bin/supervisor   5 minutes ago       Exited (0) 48 seconds ago                       backstabbing_galileo
+
+# destroy the container
+$ docker rm backstabbing_galileo  # let's put an end to these barbarian practices
+backstabbing_galileo
+
+$ docker ps -a
+CONTAINER ID  IMAGE            COMMAND               CREATED         STATUS        PORTS                 NAMES
+</code></pre>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Reverse-proxy-configuration/" class="btn btn-neutral float-right" title="Reverse proxy configuration">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Docker-101/" class="btn btn-neutral" title="Docker 101"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Docker-101/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Reverse-proxy-configuration/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 359 - 0
doc/html/Static-analysis/index.html

@@ -0,0 +1,359 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Static analysis - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Static analysis";
+    var mkdocs_page_input_path = "Static-analysis.md";
+    var mkdocs_page_url = "/Static-analysis/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Static analysis</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#wip">WIP</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#usage">Usage</a></li>
+        
+        </ul>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Development &raquo;</li>
+        
+      
+    
+    <li>Static analysis</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Static-analysis.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="wip">WIP</h2>
+<p>This topic is currently being discussed here:
+- <a href="https://github.com/shaarli/Shaarli/issues/95">Fix coding style (static analysis)</a> (#95)
+- <a href="https://github.com/shaarli/Shaarli/issues/130">Continuous Integration tools &amp; features</a> (#130)</p>
+<h3 id="usage">Usage</h3>
+<p>Static analysis tools can be installed with Composer, and used through Shaarli's <a href="https://github.com/shaarli/Shaarli/blob/master/Makefile">Makefile</a>.</p>
+<p>For an overview of the available features, see:
+- <a href="https://github.com/shaarli/Shaarli/pull/124">Code quality: Makefile to run static code checkers</a> (#124)
+- <a href="https://github.com/shaarli/Shaarli/pull/276">Run PHPCS against different coding standards</a> (#276)</p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Theming/" class="btn btn-neutral float-right" title="Theming">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Security/" class="btn btn-neutral" title="Security"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Security/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Theming/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 435 - 0
doc/html/Theming/index.html

@@ -0,0 +1,435 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Theming - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Theming";
+    var mkdocs_page_input_path = "Theming.md";
+    var mkdocs_page_url = "/Theming/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Theming</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#foreword">Foreword</a></li>
+    
+
+    <li class="toctree-l3"><a href="#custom-css">Custom CSS</a></li>
+    
+
+    <li class="toctree-l3"><a href="#themes">Themes</a></li>
+    
+
+    <li class="toctree-l3"><a href="#community-css-themes">Community CSS &amp; themes</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#custom-css_1">Custom CSS</a></li>
+        
+            <li><a class="toctree-l4" href="#themes_1">Themes</a></li>
+        
+            <li><a class="toctree-l4" href="#shaarli-forks">Shaarli forks</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#example-installation-albinomouse-theme">Example installation: AlbinoMouse theme</a></li>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Development &raquo;</li>
+        
+      
+    
+    <li>Theming</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Theming.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="foreword">Foreword</h2>
+<p>There are two ways of customizing how Shaarli looks:</p>
+<ol>
+<li>by using a custom CSS to override Shaarli's CSS</li>
+<li>by using a full theme that provides its own RainTPL templates, CSS and Javascript resources</li>
+</ol>
+<h2 id="custom-css">Custom CSS</h2>
+<p>Shaarli's appearance can be modified by adding CSS rules to:
+- Shaarli &lt; <code>v0.9.0</code>: <code>inc/user.css</code>
+- Shaarli &gt;= <code>v0.9.0</code>: <code>data/user.css</code></p>
+<p>This file allows overriding rules defined in the template CSS files (only add changed rules), or define a whole new theme.</p>
+<p><strong>Note</strong>: Do not edit <code>tpl/default/css/shaarli.css</code>! Your changes would be overridden when updating Shaarli.</p>
+<p>See also <a href="../Download CSS styles from an OPML list">Download CSS styles from an OPML list</a></p>
+<h2 id="themes">Themes</h2>
+<p><em>WARNING - This feature is currently being worked on and will be improved in the next releases. Experimental.</em></p>
+<p>Installation:
+- find a theme you'd like to install
+- copy or clone the theme folder under <code>tpl/&lt;a_sweet_theme&gt;</code>
+- enable the theme:
+    - Shaarli &lt; <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:
+      <code>"raintpl_tpl": "tpl\/my-template\/"</code>
+    - Shaarli &gt;= <code>v0.9.0</code>: select the theme through the <em>Tools</em> page</p>
+<h2 id="community-css-themes">Community CSS &amp; themes</h2>
+<h3 id="custom-css_1">Custom CSS</h3>
+<ul>
+<li><a href="https://github.com/mrjovanovic/serious-theme-shaarli">mrjovanovic/serious-theme-shaarli</a> - A serious theme for Shaarli</li>
+<li><a href="https://github.com/shaarli/shaarli-themes">shaarli/shaarli-themes</a></li>
+</ul>
+<h3 id="themes_1">Themes</h3>
+<ul>
+<li><a href="https://github.com/AkibaTech/Shaarli---SuperHero-Theme">AkibaTech/Shaarli Superhero Theme</a> - A template/theme for Shaarli</li>
+<li><a href="https://github.com/alexisju/albinomouse-template">alexisju/albinomouse-template</a> - A full template for Shaarli</li>
+<li><a href="https://github.com/ArthurHoaro/shaarli-launch">ArthurHoaro/shaarli-launch</a> - Customizable Shaarli theme</li>
+<li><a href="https://github.com/dhoko/ShaarliTemplate">dhoko/ShaarliTemplate</a> - A template/theme for Shaarli</li>
+<li><a href="https://github.com/kalvn/shaarli-blocks">kalvn/shaarli-blocks</a> - A template/theme for Shaarli</li>
+<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</li>
+<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</li>
+</ul>
+<h3 id="shaarli-forks">Shaarli forks</h3>
+<ul>
+<li><a href="https://github.com/misterair/limonade">misterair/Limonade</a> - A fork of (legacy) Shaarli with a new template</li>
+<li><a href="https://github.com/vivienhaese/shaarlitheme">vivienhaese/shaarlitheme</a> - A Shaarli fork meant to be run in an openshift instance</li>
+</ul>
+<h2 id="example-installation-albinomouse-theme">Example installation: AlbinoMouse theme</h2>
+<p>With the following configuration:
+- Apache 2 / PHP 5.6
+- user sites are enabled, e.g. <code>/home/user/public_html/somedir</code> is served as <code>http://localhost/~user/somedir</code>
+- <code>http</code> is the name of the Apache user</p>
+<pre><code class="bash">$ cd ~/public_html
+
+# clone repositories
+$ git clone https://github.com/shaarli/Shaarli.git shaarli
+$ pushd shaarli/tpl
+$ git clone https://github.com/alexisju/albinomouse-template.git
+$ popd
+
+# set access rights for Apache
+$ chgrp -R http shaarli
+$ chmod g+rwx shaarli shaarli/cache shaarli/data shaarli/pagecache shaarli/tmp
+</code></pre>
+
+<p>Get config written:
+- go to the freshly installed site
+- fill the install form
+- log in to Shaarli</p>
+<p>Edit Shaarli's <a href="../configuration|Shaarli configuration">configuration|Shaarli configuration</a>:</p>
+<pre><code class="bash"># the file should be owned by Apache, thus not writeable =&gt; sudo
+$ sudo sed -i s=tpl=tpl/albinomouse-template=g shaarli/data/config.php
+</code></pre>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Unit-tests/" class="btn btn-neutral float-right" title="Unit tests">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Static-analysis/" class="btn btn-neutral" title="Static analysis"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Static-analysis/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Unit-tests/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 441 - 0
doc/html/Troubleshooting/index.html

@@ -0,0 +1,441 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Troubleshooting - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Troubleshooting";
+    var mkdocs_page_input_path = "Troubleshooting.md";
+    var mkdocs_page_url = "/Troubleshooting/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1 current">
+		
+    <a class="current" href="./">Troubleshooting</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l2"><a href="#troubleshooting">Troubleshooting</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l3" href="#browser">Browser</a></li>
+        
+            <li><a class="toctree-l3" href="#login">Login</a></li>
+        
+            <li><a class="toctree-l3" href="#hosting-problems">Hosting problems</a></li>
+        
+            <li><a class="toctree-l3" href="#sessions-do-not-seem-to-work-correctly-on-your-server">Sessions do not seem to work correctly on your server</a></li>
+        
+        </ul>
+    
+
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+    
+    <li>Troubleshooting</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Troubleshooting.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h1 id="troubleshooting">Troubleshooting</h1>
+<h2 id="browser">Browser</h2>
+<h3 id="redirection-issues-http-referer">Redirection issues (HTTP Referer)</h3>
+<p>Depending on its configuration and installed plugins, the browser may remove or alter (spoof) HTTP referers, thus preventing Shaarli from properly redirecting between pages.</p>
+<p>See:
+- <a href="https://en.wikipedia.org/wiki/HTTP_referer">HTTP referer</a> (Wikipedia)
+- <a href="http://www.ghacks.net/2015/01/22/improve-online-privacy-by-controlling-referrer-information/">Improve online privacy by controlling referrer information</a>
+- <a href="http://b.agilob.net/better-security-privacy-and-anonymity-in-firefox/">Better security, privacy and anonymity in Firefox</a></p>
+<h3 id="firefox-http-referer-options">Firefox HTTP Referer options</h3>
+<p>HTTP settings are available by browsing <code>about:config</code>, here are the available settings and their values.</p>
+<p><code>network.http.sendRefererHeader</code> - determines when to send the Referer HTTP header
+- 0: Never send the referring URL
+    - not recommended, may break some sites
+- 1: Send only on clicked links
+- 2 (default): Send for links and images</p>
+<p><code>network.http.referer.XOriginPolicy</code> - Cross-domain origin policy
+- 0 (default): Always send
+- 1: Send if base domains match
+- 2: Send if hosts match</p>
+<p><code>network.http.referer.spoofSource</code> - Referer spoofing (~faking)
+- false (default): real referer
+- true: spoof referer (use target URI as referer)
+  - known to break some functionality in Shaarli</p>
+<p><code>network.http.referer.trimmingPolicy</code> - trim the URI not to send a full Referer
+- 0 (default): send full URI
+- 1: scheme+host+port+path
+- 2: scheme+host+port</p>
+<h3 id="firefox-localhost-and-redirections">Firefox, localhost and redirections</h3>
+<p><code>localhost</code> is not a proper Fully Qualified Domain Name (FQDN); if Firefox has been set up to spoof referers, or only accept requests from the same base domain/host, Shaarli redirections will not work properly.</p>
+<p>To solve this, assign a local domain to your host, e.g.</p>
+<pre><code>127.0.0.1 localhost desktop localhost.lan
+::1       localhost desktop localhost.lan
+</code></pre>
+
+<p>and browse Shaarli at http://localhost.lan/.</p>
+<p>Related threads:
+- <a href="https://bbs.archlinux.org/viewtopic.php?id=156064">What is localhost.localdomain for?</a>
+- <a href="https://github.com/shaarli/Shaarli/issues/311">Stop returning to the first page after editing a bookmark from another page</a></p>
+<h2 id="login">Login</h2>
+<h3 id="i-forgot-my-password">I forgot my password!</h3>
+<p>Delete the file <code>data/config.php</code> and display the page again. You will be asked for a new login/password.</p>
+<h3 id="im-locked-out-login-bruteforce-protection">I'm locked out - Login bruteforce protection</h3>
+<p>Login form is protected against brute force attacks: 4 failed logins will ban the IP address from login for 30 minutes. Banned IPs can still browse links.</p>
+<p>To remove the current IP bans, delete the file <code>data/ipbans.php</code></p>
+<h3 id="list-of-all-login-attempts">List of all login attempts</h3>
+<p>The file <code>data/log.txt</code> shows all logins (successful or failed) and bans/lifted bans.
+Search for <code>failed</code> in this file to look for unauthorized login attempts.</p>
+<h2 id="hosting-problems">Hosting problems</h2>
+<h3 id="old-php-versions">Old PHP versions</h3>
+<ul>
+<li>On <strong>free.fr</strong> : free.fr now support php 5.6.x(<a href="http://les.pages.perso.chez.free.fr/migrations/php5v6.io">link</a>)and so support now the tag autocompletion but you have to do the following : At the root of your webspace create a <code>sessions</code> directory and a <code>.htaccess</code> file containing:</li>
+</ul>
+<pre><code class="ini">&lt;IfDefine Free&gt;
+php56 1
+&lt;/IfDefine&gt;
+</code></pre>
+
+<ul>
+<li>If you have an error such as: <code>Parse error: syntax error, unexpected '=', expecting '(' in /links/index.php on line xxx</code>, it means that your host is using php4, not php5. Shaarli requires php 5.1. Try changing the file extension to <code>.php5</code></li>
+<li>On <strong>1and1</strong> : If you add the link from the page (and not from the bookmarklet), Shaarli will no be able to get the title of the page. You will have to enter it manually. (Because they have disabled the ability to download a file through HTTP).</li>
+<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:</li>
+</ul>
+<pre><code class="php">//list($status,$headers,$data) = getHTTP($url,4); // Short timeout to keep the application responsive.
+// FIXME: Decode charset according to charset specified in either 1) HTTP response headers or 2) &lt;head&gt; in html 
+//if (strpos($status,'200 OK')) $title=html_extract_title($data);
+</code></pre>
+
+<ul>
+<li>On hosts which forbid outgoing HTTP requests (such as free.fr), some thumbnails will not work.</li>
+<li>On <strong>lost-oasis</strong>, RSS doesn't work correctly, because of this message at the begining of the RSS/ATOM feed : <code>&lt;? // tout ce qui est charge ici (generalement des includes et require) est charge en permanence. ?&gt;</code>. To fix this, remove this message from <code>php-include/prepend.php</code></li>
+</ul>
+<h3 id="dates-are-not-properly-formatted">Dates are not properly formatted</h3>
+<p>Shaarli tries to sniff the language of the browser (using HTTP_ACCEPT_LANGUAGE headers) and choose a date format accordingly. But Shaarli can only use the date formats (and more generaly speaking, the locales) provided by the webserver. So even if you have a browser in French, you may end up with dates in US format (it's the case on sebsauvage.net :-( )</p>
+<h3 id="problems-on-centos-servers">Problems on CentOS servers</h3>
+<p>On <strong>CentOS</strong>/RedHat derivatives, you may need to install the <code>php-mbstring</code> package.</p>
+<h3 id="my-session-expires-i-cant-stay-logged-in">My session expires! I can't stay logged in</h3>
+<p>This can be caused by several things:</p>
+<ul>
+<li>Your php installation may not have a proper directory setup for session files. (eg. on Free.fr you need to create a  <code>session</code> directory on the root of your website.) You may need to create the session directory of set it up.</li>
+<li>Most hosts regularly clean the temporary and session directories. Your host may be cleaning those directories too aggressively (eg.OVH hosts), forcing an expire of the session. You may want to set the session directory in your web root. (eg. Create the <code>sessions</code> subdirectory and add <code>ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'].'/../sessions');</code>. Make sure this directory is not browsable !)</li>
+<li>If your IP address changes during surfing, Shaarli will force expire your session for security reasons (to prevent session cookie hijacking). This can happen when surfing from WiFi or 3G (you may have switched WiFi/3G access point), or in some corporate/university proxies which use load balancing (and may have proxies with several external IP addresses).</li>
+<li>Some browser addons may interfer with HTTP headers (ipfuck/ipflood/GreaseMonkey…). Try disabling those.</li>
+<li>You may be using OperaTurbo or OperaMini, which use their own proxies which may change from time to time.</li>
+<li>If you have another application on the same webserver where Shaarli is installed, these application may forcefully expire php sessions.</li>
+</ul>
+<h2 id="sessions-do-not-seem-to-work-correctly-on-your-server">Sessions do not seem to work correctly on your server</h2>
+<p>Follow the instructions in the error message. Make sure you are accessing shaarli via a direct IP address or a proper hostname. If you have <strong>no dots</strong> in the hostname (e.g. <code>localhost</code> or <code>http://my-webserver/shaarli/</code>), some browsers will not store cookies at all (this respects the <a href="http://curl.haxx.se/rfc/cookie_spec.html">HTTP cookie specification</a>).</p>
+<h3 id="pubsubhubbub-support">pubsubhubbub support</h3>
+<p>Download <a href="https://pubsubhubbub.googlecode.com/git/publisher_clients/php/library/publisher.php">publisher.php</a> at the root of your Shaarli installation and set <code>$GLOBALS['config']['PUBSUBHUB_URL']</code> in your <code>config.php</code></p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Development-guidelines/" class="btn btn-neutral float-right" title="Development guidelines">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Datastore-hacks/" class="btn btn-neutral" title="Datastore hacks"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Datastore-hacks/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Development-guidelines/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 492 - 0
doc/html/Unit-tests/index.html

@@ -0,0 +1,492 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Unit tests - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Unit tests";
+    var mkdocs_page_input_path = "Unit-tests.md";
+    var mkdocs_page_url = "/Unit-tests/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Unit tests</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#setup-your-environment-for-tests">Setup your environment for tests</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#sample-usage">Sample usage</a></li>
+        
+            <li><a class="toctree-l4" href="#install-shaarli-dev-dependencies">Install Shaarli dev dependencies</a></li>
+        
+            <li><a class="toctree-l4" href="#install-and-enable-xdebug-to-generate-phpunit-coverage-reports">Install and enable Xdebug to generate PHPUnit coverage reports</a></li>
+        
+            <li><a class="toctree-l4" href="#run-unit-tests">Run unit tests</a></li>
+        
+            <li><a class="toctree-l4" href="#test-results-and-coverage">Test results and coverage</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#executing-specific-tests">Executing specific tests</a></li>
+    
+
+    </ul>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Development &raquo;</li>
+        
+      
+    
+    <li>Unit tests</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Unit-tests.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h3 id="setup-your-environment-for-tests">Setup your environment for tests</h3>
+<p>The framework used is <a href="https://phpunit.de/">PHPUnit</a>; it can be installed with <a href="https://getcomposer.org/">Composer</a>, which is a dependency management tool.</p>
+<p>Regarding Composer, you can either use:
+<em> a system-wide version, e.g. installed through your distro's package manager
+</em> a local version, downloadable <a href="https://getcomposer.org/download/">here</a></p>
+<h4 id="sample-usage">Sample usage</h4>
+<pre><code class="bash"># system-wide version
+$ composer install
+$ composer update
+
+# local version
+$ php composer.phar self-update
+$ php composer.phar install
+$ php composer.phar update
+</code></pre>
+
+<h4 id="install-shaarli-dev-dependencies">Install Shaarli dev dependencies</h4>
+<pre><code class="bash">$ cd /path/to/shaarli
+$ composer update
+</code></pre>
+
+<h4 id="install-and-enable-xdebug-to-generate-phpunit-coverage-reports">Install and enable Xdebug to generate PHPUnit coverage reports</h4>
+<p>For Debian-based distros:</p>
+<pre><code class="bash">$ aptitude install php5-xdebug
+</code></pre>
+
+<p>For ArchLinux:</p>
+<pre><code class="bash">$ pacman -S xdebug
+</code></pre>
+
+<p>Then add the following line to <code>/etc/php/php.ini</code>:</p>
+<pre><code class="ini">zend_extension=xdebug.so
+</code></pre>
+
+<h4 id="run-unit-tests">Run unit tests</h4>
+<p>Successful test suite:</p>
+<pre><code class="bash">$ make test
+
+-------
+PHPUNIT
+-------
+PHPUnit 4.6.9 by Sebastian Bergmann and contributors.
+
+Configuration read from /home/virtualtam/public_html/shaarli/phpunit.xml
+
+....................................
+
+Time: 759 ms, Memory: 8.25Mb
+
+OK (36 tests, 65 assertions)
+</code></pre>
+
+<p>Test suite with failures and errors:</p>
+<pre><code class="bash">$ make test
+-------
+PHPUNIT
+-------
+PHPUnit 4.6.9 by Sebastian Bergmann and contributors.
+
+Configuration read from /home/virtualtam/public_html/shaarli/phpunit.xml
+
+E..FF...............................
+
+Time: 802 ms, Memory: 8.25Mb
+
+There was 1 error:
+
+1) LinkDBTest::testConstructLoggedIn
+Missing argument 2 for LinkDB::__construct(), called in /home/virtualtam/public_html/shaarli/tests/Link\
+DBTest.php on line 79 and defined
+
+/home/virtualtam/public_html/shaarli/application/LinkDB.php:58
+/home/virtualtam/public_html/shaarli/tests/LinkDBTest.php:79
+
+--
+
+There were 2 failures:
+
+1) LinkDBTest::testCheckDBNew
+Failed asserting that two strings are equal.
+--- Expected
++++ Actual
+@@ @@
+-'e3edea8ea7bb50be4bcb404df53fbb4546a7156e'
++'85eab0c610d4f68025f6ed6e6b6b5fabd4b55834'
+
+/home/virtualtam/public_html/shaarli/tests/LinkDBTest.php:121
+
+2) LinkDBTest::testCheckDBLoad
+Failed asserting that two strings are equal.
+--- Expected
++++ Actual
+@@ @@
+-'e3edea8ea7bb50be4bcb404df53fbb4546a7156e'
++'85eab0c610d4f68025f6ed6e6b6b5fabd4b55834'
+
+/home/virtualtam/public_html/shaarli/tests/LinkDBTest.php:133
+
+FAILURES!
+Tests: 36, Assertions: 63, Errors: 1, Failures: 2.
+</code></pre>
+
+<h4 id="test-results-and-coverage">Test results and coverage</h4>
+<p>By default, PHPUnit will run all suitable tests found under the <code>tests</code> directory.</p>
+<p>Each test has 3 possible outcomes:
+<em> <code>.</code> - success
+</em> <code>F</code> - failure: the test was run but its results are invalid
+ * the code does not behave as expected
+ * dependencies to external elements: globals, session, cache...
+* <code>E</code> - error: something went wrong and the tested code has crashed
+ * typos in the code, or in the test code
+ * dependencies to missing external elements</p>
+<p>If Xdebug has been installed and activated, two coverage reports will be generated:
+<em> a summary in the console
+</em> a detailed HTML report with metrics for tested code
+ * to open it in a web browser: <code>firefox coverage/index.html &amp;</code></p>
+<h3 id="executing-specific-tests">Executing specific tests</h3>
+<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:</p>
+<pre><code class="php">/**
+ * Netscape bookmark import
+ * @group WIP
+ */
+class BookmarkImportTest extends PHPUnit_Framework_TestCase
+{
+   [...]
+}
+</code></pre>
+
+<p>To run all tests annotated with <code>@group WIP</code>:</p>
+<pre><code class="bash">$ vendor/bin/phpunit --group WIP tests/
+</code></pre>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../FAQ/" class="btn btn-neutral float-right" title="FAQ">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Theming/" class="btn btn-neutral" title="Theming"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Theming/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../FAQ/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 534 - 0
doc/html/Upgrade-and-migration/index.html

@@ -0,0 +1,534 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Upgrade and migration - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Upgrade and migration";
+    var mkdocs_page_input_path = "Upgrade-and-migration.md";
+    var mkdocs_page_url = "/Upgrade-and-migration/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Upgrade and migration</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#preparation">Preparation</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#note-your-current-version">Note your current version</a></li>
+        
+            <li><a class="toctree-l4" href="#backup-your-data">Backup your data</a></li>
+        
+            <li><a class="toctree-l4" href="#migrating-data-from-a-previous-installation">Migrating data from a previous installation</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#recommended-upgrading-from-release-archives">Recommended : Upgrading from release archives</a></li>
+    
+
+    <li class="toctree-l3"><a href="#upgrading-with-git">Upgrading with Git</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#updating-a-community-shaarli">Updating a community Shaarli</a></li>
+        
+            <li><a class="toctree-l4" href="#migrating-and-upgrading-from-sebsauvages-repository">Migrating and upgrading from Sebsauvage's repository</a></li>
+        
+        </ul>
+    
+
+    <li class="toctree-l3"><a href="#troubleshooting">Troubleshooting</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#you-must-specify-an-integer-as-a-key">You must specify an integer as a key</a></li>
+        
+        </ul>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Setup &raquo;</li>
+        
+      
+    
+    <li>Upgrade and migration</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Upgrade-and-migration.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h2 id="preparation">Preparation</h2>
+<h3 id="note-your-current-version">Note your current version</h3>
+<p>If anything goes wrong, it's important for us to know which version you're upgrading from.<br />
+The current version is present in the <code>version.php</code> file.</p>
+<h3 id="backup-your-data">Backup your data</h3>
+<p>Shaarli stores all user data under the <code>data</code> directory:
+- <code>data/config.php</code> - main configuration file
+- <code>data/datastore.php</code> - bookmarked links
+- <code>data/ipbans.php</code> - banned IP addresses
+- <code>data/updates.txt</code> - contains all automatic update to the configuration and datastore files already run</p>
+<p>See <a href="../Shaarli configuration">Shaarli configuration</a> for more information about Shaarli resources.</p>
+<p>It is recommended to backup this repository <em>before</em> starting updating/upgrading Shaarli:
+- users with SSH access: copy or archive the directory to a temporary location
+- users with FTP access: download a local copy of your Shaarli installation using your favourite client</p>
+<h3 id="migrating-data-from-a-previous-installation">Migrating data from a previous installation</h3>
+<p>As all user data is kept under <code>data</code>, this is the only directory you need to worry about when migrating to a new installation, which corresponds to the following steps:</p>
+<ul>
+<li>backup the <code>data</code> directory</li>
+<li>install or update Shaarli:<ul>
+<li>fresh installation - see <a href="../Download and installation">Download and installation</a></li>
+<li>update - see the following sections</li>
+</ul>
+</li>
+<li>check or restore the <code>data</code> directory</li>
+</ul>
+<h2 id="recommended-upgrading-from-release-archives">Recommended : Upgrading from release archives</h2>
+<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.</p>
+<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">Download and installation</a> for <code>git</code> complete instructions.</p>
+<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>
+<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">Shaarli configuration</a> for more details).</p>
+<h2 id="upgrading-with-git">Upgrading with Git</h2>
+<h3 id="updating-a-community-shaarli">Updating a community Shaarli</h3>
+<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:</p>
+<pre><code class="bash">$ cd /path/to/shaarli
+$ git pull
+
+From github.com:shaarli/Shaarli
+ * branch            master     -&gt; FETCH_HEAD
+Updating ebd67c6..521f0e6
+Fast-forward
+ application/Url.php   | 1 +
+ shaarli_version.php   | 2 +-
+ tests/Url/UrlTest.php | 1 +
+ 3 files changed, 3 insertions(+), 1 deletion(-)
+</code></pre>
+
+<p>Shaarli &gt;= <code>v0.8.x</code>: install/update third-party PHP dependencies using <a href="https://getcomposer.org/">Composer</a>:</p>
+<pre><code class="bash">$ composer install --no-dev
+
+Loading composer repositories with package information
+Updating dependencies
+  - Installing shaarli/netscape-bookmark-parser (v1.0.1)
+    Downloading: 100%
+</code></pre>
+
+<h3 id="migrating-and-upgrading-from-sebsauvages-repository">Migrating and upgrading from Sebsauvage's repository</h3>
+<p>If you have installed Shaarli from <a href="https://github.com/sebsauvage/Shaarli">Sebsauvage's original Git repository</a>, you can use <a href="https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes">Git remotes</a> to update your working copy.</p>
+<p>The following guide assumes that:
+- you have a basic knowledge of Git <a href="https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell">branching</a> and <a href="https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes">remote repositories</a>
+- the default remote is named <code>origin</code> and points to Sebsauvage's repository
+- the current branch is <code>master</code>
+    - if you have personal branches containing customizations, you will need to <a href="https://git-scm.com/book/en/v2/Git-Branching-Rebasing">rebase them</a> after the upgrade; beware though, a lot of changes have been made since the community fork has been created, so things are very likely to break!
+- the working copy is clean:
+    - no versioned file has been locally modified
+    - no untracked files are present</p>
+<h4 id="step-0-show-repository-information">Step 0: show repository information</h4>
+<pre><code class="bash">$ cd /path/to/shaarli
+
+$ git remote -v
+origin  https://github.com/sebsauvage/Shaarli (fetch)
+origin  https://github.com/sebsauvage/Shaarli (push)
+
+$ git branch -vv
+* master 029f75f [origin/master] Update README.md
+
+$ git status
+On branch master
+Your branch is up-to-date with 'origin/master'.
+nothing to commit, working directory clean
+</code></pre>
+
+<h4 id="step-1-update-git-remotes">Step 1: update Git remotes</h4>
+<pre><code>$ git remote rename origin sebsauvage
+$ git remote -v
+sebsauvage  https://github.com/sebsauvage/Shaarli (fetch)
+sebsauvage  https://github.com/sebsauvage/Shaarli (push)
+
+$ git remote add origin https://github.com/shaarli/Shaarli
+$ git fetch origin
+
+remote: Counting objects: 3015, done.
+remote: Compressing objects: 100% (19/19), done.
+remote: Total 3015 (delta 446), reused 457 (delta 446), pack-reused 2550
+Receiving objects: 100% (3015/3015), 2.59 MiB | 918.00 KiB/s, done.
+Resolving deltas: 100% (1899/1899), completed with 48 local objects.
+From https://github.com/shaarli/Shaarli
+ * [new branch]      master     -&gt; origin/master
+ * [new branch]      stable     -&gt; origin/stable
+[...]
+ * [new tag]         v0.6.4     -&gt; v0.6.4
+ * [new tag]         v0.7.0     -&gt; v0.7.0
+</code></pre>
+
+<h4 id="step-2-use-the-stable-community-branch">Step 2: use the stable community branch</h4>
+<pre><code class="bash">$ git checkout origin/stable -b stable
+Branch stable set up to track remote branch stable from origin.
+Switched to a new branch 'stable'
+
+$ git branch -vv
+  master 029f75f [sebsauvage/master] Update README.md
+* stable 890afc3 [origin/stable] Merge pull request #509 from ArthurHoaro/v0.6.5
+</code></pre>
+
+<p>Shaarli &gt;= <code>v0.8.x</code>: install/update third-party PHP dependencies using <a href="https://getcomposer.org/">Composer</a>:</p>
+<pre><code class="bash">$ composer install --no-dev
+
+Loading composer repositories with package information
+Updating dependencies
+  - Installing shaarli/netscape-bookmark-parser (v1.0.1)
+    Downloading: 100%
+</code></pre>
+
+<p>Optionally, you can delete information related to the legacy version:</p>
+<pre><code class="bash">$ git branch -D master
+Deleted branch master (was 029f75f).
+
+$ git remote remove sebsauvage
+
+$ git remote -v
+origin  https://github.com/shaarli/Shaarli (fetch)
+origin  https://github.com/shaarli/Shaarli (push)
+
+$ git gc
+Counting objects: 3317, done.
+Delta compression using up to 8 threads.
+Compressing objects: 100% (1237/1237), done.
+Writing objects: 100% (3317/3317), done.
+Total 3317 (delta 2050), reused 3301 (delta 2034)to
+</code></pre>
+
+<h4 id="step-3-configuration">Step 3: configuration</h4>
+<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">Shaarli configuration</a> for more details).</p>
+<h2 id="troubleshooting">Troubleshooting</h2>
+<p>If the solutions provided here doesn't work, please open an issue specifying which version you're upgrading from and to.</p>
+<h3 id="you-must-specify-an-integer-as-a-key">You must specify an integer as a key</h3>
+<p>In <code>v0.8.1</code> we changed how link keys are handled (from timestamps to incremental integers).
+Take a look at <code>data/updates.txt</code> content.</p>
+<h4 id="updatestxt-contains-updatemethoddatastoreids"><code>updates.txt</code> contains <code>updateMethodDatastoreIds</code></h4>
+<p>Try to delete it and refresh your page while being logged in.</p>
+<h4 id="updatestxt-doesnt-exists-or-doesnt-contain-updatemethoddatastoreids"><code>updates.txt</code> doesn't exists or doesn't contain <code>updateMethodDatastoreIds</code></h4>
+<ol>
+<li>Create <code>data/updates.txt</code> if it doesn't exist.</li>
+<li>Paste this string in the update file <code>;updateMethodRenameDashTags;</code></li>
+<li>Login to Shaarli.</li>
+<li>Delete the update file.</li>
+<li>Refresh.</li>
+</ol>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Server-requirements/" class="btn btn-neutral float-right" title="Server requirements">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Download-and-Installation/" class="btn btn-neutral" title="Download and Installation"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Download-and-Installation/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Server-requirements/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 418 - 0
doc/html/Versioning-and-Branches/index.html

@@ -0,0 +1,418 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  <link rel="shortcut icon" href="../img/favicon.ico">
+  <title>Versioning and Branches - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+  <link href="../github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Versioning and Branches";
+    var mkdocs_page_input_path = "Versioning-and-Branches.md";
+    var mkdocs_page_url = "/Versioning-and-Branches/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="..">Home</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="../Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class=" current">
+                    
+    <a class="current" href="./">Versioning and Branches</a>
+    <ul class="subnav">
+            
+    <li class="toctree-l3"><a href="#master-branch">master branch</a></li>
+    
+
+    <li class="toctree-l3"><a href="#v0x-branch">v0.x branch</a></li>
+    
+
+    <li class="toctree-l3"><a href="#latest-branch">latest branch</a></li>
+    
+
+    <li class="toctree-l3"><a href="#stable-branch">stable branch</a></li>
+    
+
+    <li class="toctree-l3"><a href="#releases">Releases</a></li>
+    
+
+    <li class="toctree-l3"><a href="#advices-on-3rd-party-git-repos-workflow">Advices on 3rd party git repos workflow</a></li>
+    
+        <ul>
+        
+            <li><a class="toctree-l4" href="#versioning">Versioning</a></li>
+        
+            <li><a class="toctree-l4" href="#major-bugfix-backport-releases">Major bugfix backport releases</a></li>
+        
+        </ul>
+    
+
+    </ul>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="../FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="../Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+        
+          <li>Development &raquo;</li>
+        
+      
+    
+    <li>Versioning and Branches</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/Versioning-and-Branches.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <p><strong>WORK IN PROGRESS</strong></p>
+<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>
+<h2 id="master-branch"><code>master</code> branch</h2>
+<p>The <code>master</code> branch is the development branch. Any new change MUST go through this branch using Pull Requests.</p>
+<p>Remarks:</p>
+<ul>
+<li>This branch shouldn't be used for production as it isn't necessary stable.</li>
+<li>3rd party aren't required to be compatible with the latest changes.</li>
+<li>Official plugins, themes and libraries (contained within Shaarli organization repos) must be compatible with the master branch.</li>
+<li>The version in this branch is always <code>dev</code>.</li>
+</ul>
+<h2 id="v0x-branch"><code>v0.x</code> branch</h2>
+<p>This <code>v0.x</code> branch, points to the latest <code>v0.x.y</code> release.</p>
+<p>Explanation:</p>
+<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>
+<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>
+<p>This workflow allow us to fix any major bug detected, without having to release bleeding edge feature too soon.</p>
+<h2 id="latest-branch"><code>latest</code> branch</h2>
+<p>This branch point the latest release. It recommended to use it to get the latest tested changes.</p>
+<h2 id="stable-branch"><code>stable</code> branch</h2>
+<p>The <code>stable</code> branch doesn't contain any major bug, and is one major digit version behind the latest release.</p>
+<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>
+<p>Remarks:</p>
+<ul>
+<li>Shaarli release pace isn't fast, and the stable branch might be a few months behind the latest release.</li>
+</ul>
+<h2 id="releases">Releases</h2>
+<p>Releases are always made from the latest <code>v0.x</code> branch.</p>
+<p>Note that for every release, we manually generate a tarball which contains all Shaarli dependencies, making Shaarli's installation only one step.</p>
+<h2 id="advices-on-3rd-party-git-repos-workflow">Advices on 3rd party git repos workflow</h2>
+<h3 id="versioning">Versioning</h3>
+<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:</p>
+<ul>
+<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>
+<li>use your own versioning scheme, and state Shaarli compatibility in the release description.</li>
+</ul>
+<p>Using this, any user will be able to pick the release matching his own Shaarli version.</p>
+<h3 id="major-bugfix-backport-releases">Major bugfix backport releases</h3>
+<p>To be able to support backported fixes, it recommended to use our workflow:</p>
+<pre><code class="bash"># In master, fix the major bug
+git commit -m &quot;Katastrophe&quot;
+git push origin master
+# Get your commit hash
+git log --format=&quot;%H&quot; -n 1
+# Create a new branch from your latest release, let's say v0.8.2-1 (the tag name)
+git checkout -b katastrophe v0.8.2-1
+# Backport the fix commit to your brand new branch
+git cherry-pick &lt;fix commit hash&gt;
+git push origin katastrophe
+# Then you just have to make a new release from the `katastrophe` branch tagged `v0.8.3-1`
+</code></pre>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../Security/" class="btn btn-neutral float-right" title="Security">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="../Release-Shaarli/" class="btn btn-neutral" title="Release Shaarli"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../Release-Shaarli/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+        <span style="margin-left: 15px"><a href="../Security/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="../js/theme.js"></script>
+
+</body>
+</html>

+ 0 - 0
doc/config.json → doc/html/config.json


+ 124 - 0
doc/html/css/highlight.css

@@ -0,0 +1,124 @@
+/*
+This is the GitHub theme for highlight.js
+
+github.com style (c) Vasily Polovnyov <vast@whiteants.net>
+
+*/
+
+.hljs {
+  display: block;
+  overflow-x: auto;
+  color: #333;
+  -webkit-text-size-adjust: none;
+}
+
+.hljs-comment,
+.diff .hljs-header,
+.hljs-javadoc {
+  color: #998;
+  font-style: italic;
+}
+
+.hljs-keyword,
+.css .rule .hljs-keyword,
+.hljs-winutils,
+.nginx .hljs-title,
+.hljs-subst,
+.hljs-request,
+.hljs-status {
+  color: #333;
+  font-weight: bold;
+}
+
+.hljs-number,
+.hljs-hexcolor,
+.ruby .hljs-constant {
+  color: #008080;
+}
+
+.hljs-string,
+.hljs-tag .hljs-value,
+.hljs-phpdoc,
+.hljs-dartdoc,
+.tex .hljs-formula {
+  color: #d14;
+}
+
+.hljs-title,
+.hljs-id,
+.scss .hljs-preprocessor {
+  color: #900;
+  font-weight: bold;
+}
+
+.hljs-list .hljs-keyword,
+.hljs-subst {
+  font-weight: normal;
+}
+
+.hljs-class .hljs-title,
+.hljs-type,
+.vhdl .hljs-literal,
+.tex .hljs-command {
+  color: #458;
+  font-weight: bold;
+}
+
+.hljs-tag,
+.hljs-tag .hljs-title,
+.hljs-rule .hljs-property,
+.django .hljs-tag .hljs-keyword {
+  color: #000080;
+  font-weight: normal;
+}
+
+.hljs-attribute,
+.hljs-variable,
+.lisp .hljs-body,
+.hljs-name {
+  color: #008080;
+}
+
+.hljs-regexp {
+  color: #009926;
+}
+
+.hljs-symbol,
+.ruby .hljs-symbol .hljs-string,
+.lisp .hljs-keyword,
+.clojure .hljs-keyword,
+.scheme .hljs-keyword,
+.tex .hljs-special,
+.hljs-prompt {
+  color: #990073;
+}
+
+.hljs-built_in {
+  color: #0086b3;
+}
+
+.hljs-preprocessor,
+.hljs-pragma,
+.hljs-pi,
+.hljs-doctype,
+.hljs-shebang,
+.hljs-cdata {
+  color: #999;
+  font-weight: bold;
+}
+
+.hljs-deletion {
+  background: #fdd;
+}
+
+.hljs-addition {
+  background: #dfd;
+}
+
+.diff .hljs-change {
+  background: #0086b3;
+}
+
+.hljs-chunk {
+  color: #aaa;
+}

文件差异内容过多而无法显示
+ 8 - 0
doc/html/css/theme.css


+ 193 - 0
doc/html/css/theme_extra.css

@@ -0,0 +1,193 @@
+/*
+ * Sphinx doesn't have support for section dividers like we do in
+ * MkDocs, this styles the section titles in the nav
+ *
+ * https://github.com/mkdocs/mkdocs/issues/175
+ */
+.wy-menu-vertical span {
+    line-height: 18px;
+    padding: 0.4045em 1.618em;
+    display: block;
+    position: relative;
+    font-size: 90%;
+    color: #838383;
+}
+
+.wy-menu-vertical .subnav a {
+    padding: 0.4045em 2.427em;
+}
+
+/*
+ * Long navigations run off the bottom of the screen as the nav
+ * area doesn't scroll.
+ *
+ * https://github.com/mkdocs/mkdocs/pull/202
+ *
+ * Builds upon pull 202 https://github.com/mkdocs/mkdocs/pull/202
+ * to make toc scrollbar end before navigations buttons to not be overlapping.
+ */
+.wy-nav-side {
+    height: calc(100% - 45px);
+    overflow-y: auto;
+    min-height: 0;
+}
+
+.rst-versions{
+    border-top: 0;
+    height: 45px;
+}
+
+@media screen and (max-width: 768px) {
+    .wy-nav-side {
+        height: 100%;
+    }
+}
+
+/*
+ * readthedocs theme hides nav items when the window height is
+ * too small to contain them.
+ *
+ * https://github.com/mkdocs/mkdocs/issues/#348
+ */
+.wy-menu-vertical ul {
+  margin-bottom: 2em;
+}
+
+/*
+ * Wrap inline code samples otherwise they shoot of the side and
+ * can't be read at all.
+ *
+ * https://github.com/mkdocs/mkdocs/issues/313
+ * https://github.com/mkdocs/mkdocs/issues/233
+ * https://github.com/mkdocs/mkdocs/issues/834
+ */
+code {
+    white-space: pre-wrap;
+    word-wrap: break-word;
+    padding: 2px 5px;
+}
+
+/**
+ * Make code blocks display as blocks and give them the appropriate
+ * font size and padding.
+ *
+ * https://github.com/mkdocs/mkdocs/issues/855
+ * https://github.com/mkdocs/mkdocs/issues/834
+ * https://github.com/mkdocs/mkdocs/issues/233
+ */
+pre code {
+  white-space: pre;
+  word-wrap: normal;
+  display: block;
+  padding: 12px;
+  font-size: 12px;
+}
+
+/*
+ * Fix link colors when the link text is inline code.
+ *
+ * https://github.com/mkdocs/mkdocs/issues/718
+ */
+a code {
+    color: #2980B9;
+}
+a:hover code {
+    color: #3091d1;
+}
+a:visited code {
+    color: #9B59B6;
+}
+
+/*
+ * The CSS classes from highlight.js seem to clash with the
+ * ReadTheDocs theme causing some code to be incorrectly made
+ * bold and italic.
+ *
+ * https://github.com/mkdocs/mkdocs/issues/411
+ */
+pre .cs, pre .c {
+    font-weight: inherit;
+    font-style: inherit;
+}
+
+/*
+ * Fix some issues with the theme and non-highlighted code
+ * samples. Without and highlighting styles attached the
+ * formatting is broken.
+ *
+ * https://github.com/mkdocs/mkdocs/issues/319
+ */
+.no-highlight {
+  display: block;
+  padding: 0.5em;
+  color: #333;
+}
+
+
+/*
+ * Additions specific to the search functionality provided by MkDocs
+ */
+
+.search-results article {
+    margin-top: 23px;
+    border-top: 1px solid #E1E4E5;
+    padding-top: 24px;
+}
+
+.search-results article:first-child {
+    border-top: none;
+}
+
+form .search-query {
+    width: 100%;
+    border-radius: 50px;
+    padding: 6px 12px;  /* csslint allow: box-model */
+    border-color: #D1D4D5;
+}
+
+.wy-menu-vertical li ul {
+    display: inherit;
+}
+
+.wy-menu-vertical li ul.subnav ul.subnav{
+    padding-left: 1em;
+}
+
+.wy-menu-vertical .subnav li.current > a {
+    padding-left: 2.42em;
+}
+.wy-menu-vertical .subnav li.current > ul li a {
+    padding-left: 3.23em;
+}
+
+/*
+ * Improve inline code blocks within admonitions.
+ *
+ * https://github.com/mkdocs/mkdocs/issues/656
+ */
+ .admonition code {
+  color: #404040;
+  border: 1px solid #c7c9cb;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  background: #f8fbfd;
+  background: rgba(255, 255, 255, 0.7);
+}
+
+/*
+ * Account for wide tables which go off the side.
+ * Override borders to avoid wierdness on narrow tables.
+ * 
+ * https://github.com/mkdocs/mkdocs/issues/834
+ * https://github.com/mkdocs/mkdocs/pull/1034
+ */
+.rst-content .section .docutils {
+    width: 100%;
+    overflow: auto;
+    display: block;
+    border: none;
+}
+
+td, th {
+   border: 1px solid #e1e4e5 !important; /* csslint allow: important */
+   border-collapse: collapse;
+}

二进制
doc/html/fonts/fontawesome-webfont.eot


文件差异内容过多而无法显示
+ 195 - 0
doc/html/fonts/fontawesome-webfont.svg


二进制
doc/html/fonts/fontawesome-webfont.ttf


二进制
doc/html/fonts/fontawesome-webfont.woff


+ 0 - 0
doc/github-markdown.css → doc/html/github-markdown.css


+ 0 - 0
doc/images/bookmarklet.png → doc/html/images/bookmarklet.png


+ 0 - 0
doc/images/doc-logo.png → doc/html/images/doc-logo.png


+ 0 - 0
doc/images/doc-logo.svg → doc/html/images/doc-logo.svg


+ 0 - 0
doc/images/firefoxshare.png → doc/html/images/firefoxshare.png


+ 0 - 0
doc/images/rss-filter-1.png → doc/html/images/rss-filter-1.png


+ 0 - 0
doc/images/rss-filter-2.png → doc/html/images/rss-filter-2.png


二进制
doc/html/img/favicon.ico


+ 344 - 0
doc/html/index.html

@@ -0,0 +1,344 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <meta name="description" content="The personal, minimalist, super-fast, database free, bookmarking service">
+  
+  <link rel="shortcut icon" href="./img/favicon.ico">
+  <title>Home - Shaarli Documentation</title>
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="./css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="./css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="./css/highlight.css">
+  <link href="./github-markdown.css" rel="stylesheet">
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Home";
+    var mkdocs_page_input_path = "index.md";
+    var mkdocs_page_url = "/";
+  </script>
+  
+  <script src="./js/jquery-2.1.1.min.js"></script>
+  <script src="./js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="./js/highlight.pack.js"></script> 
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href="." class="icon icon-home"> Shaarli Documentation</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="./search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+	<ul class="current">
+	  
+          
+            <li class="toctree-l1 current">
+		
+    <a class="current" href=".">Home</a>
+    <ul class="subnav">
+            
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Setup</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="Download-and-Installation/">Download and Installation</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Upgrade-and-migration/">Upgrade and migration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Server-requirements/">Server requirements</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Server-configuration/">Server configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Server-security/">Server security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Shaarli-configuration/">Shaarli configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Plugins/">Plugins</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Docker</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="Docker-101/">Docker 101</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Shaarli-images/">Shaarli images</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Reverse-proxy-configuration/">Reverse proxy configuration</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Docker-resources/">Docker resources</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Usage</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="Features/">Features</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Bookmarklet/">Bookmarklet</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Browsing-and-searching/">Browsing and searching</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Firefox-share/">Firefox share</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="RSS-feeds/">RSS feeds</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="REST-API/">REST API</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">How To</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="Backup,-restore,-import-and-export/">Backup, restore, import and export</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Copy-an-existing-installation-over-SSH-and-serve-it-locally/">Copy an existing installation over SSH and serve it locally</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Create-and-serve-multiple-Shaarlis-(farm)/">Create and serve multiple Shaarlis (farm)</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Download-CSS-styles-from-an-OPML-list/">Download CSS styles from an OPML list</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Datastore-hacks/">Datastore hacks</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <a class="" href="Troubleshooting/">Troubleshooting</a>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">Development</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="Development-guidelines/">Development guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Continuous-integration-tools/">Continuous integration tools</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="GnuPG-signature/">GnuPG signature</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Coding-guidelines/">Coding guidelines</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Directory-structure/">Directory structure</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="3rd-party-libraries/">3rd party libraries</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Plugin-System/">Plugin System</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Release-Shaarli/">Release Shaarli</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Versioning-and-Branches/">Versioning and Branches</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Security/">Security</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Static-analysis/">Static analysis</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Theming/">Theming</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Unit-tests/">Unit tests</a>
+                </li>
+    </ul>
+	    </li>
+          
+            <li class="toctree-l1">
+		
+    <span class="caption-text">About</span>
+    <ul class="subnav">
+                <li class="">
+                    
+    <a class="" href="FAQ/">FAQ</a>
+                </li>
+                <li class="">
+                    
+    <a class="" href="Community-&-Related-software/">Community & Related software</a>
+                </li>
+    </ul>
+	    </li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href=".">Shaarli Documentation</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href=".">Docs</a> &raquo;</li>
+    
+      
+    
+    <li>Home</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        <a href="https://github.com/shaarli/Shaarli/edit/master/docs/index.md"
+          class="icon icon-github"> Edit on GitHub</a>
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <p>Welcome to the <a href="https://github.com/shaarli/Shaarli/">Shaarli</a> wiki!</p>
+<p>Here you can find some info on how to use, configure, tweak and solve problems with your Shaarli.</p>
+<p>For general info, read the <a href="https://github.com/shaarli/Shaarli/blob/master/README.md">README</a>.</p>
+<p>If you have any questions or ideas, please join the <a href="https://gitter.im/shaarli/Shaarli">chat</a> (also reachable via <a href="https://irc.gitter.im/">IRC</a>), post them in our <a href="https://github.com/shaarli/Shaarli/issues/308">general discussion</a> (<a href="https://github.com/shaarli/Shaarli/issues/44">archive</a>) or read the current <a href="https://github.com/shaarli/Shaarli/issues">issues</a>. If you've found a bug, please create a <a href="https://github.com/shaarli/Shaarli/issues/new">new issue</a>.</p>
+<p>If you would like a feature added to Shaarli, check the issues labeled <a href="https://github.com/shaarli/Shaarli/labels/feature"><code>feature</code></a>, <a href="https://github.com/shaarli/Shaarli/labels/enhancement"><code>enhancement</code></a>, and <a href="https://github.com/shaarli/Shaarli/labels/plugin"><code>plugin</code></a>.</p>
+<p><em>Note: This documentation is available online at https://github.com/shaarli/Shaarli/wiki, and locally in the <code>doc/</code> directory of your Shaarli installation.</em></p>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="Download-and-Installation/" class="btn btn-neutral float-right" title="Download and Installation">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+    
+  </div>
+
+  <div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/shaarli/Shaarli" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+      
+        <span style="margin-left: 15px"><a href="Download-and-Installation/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
+    </span>
+</div>
+    <script src="./js/theme.js"></script>
+
+</body>
+</html>
+
+<!--
+MkDocs version : 0.16.3
+Build Date UTC : 2017-06-17 22:04:25
+-->

文件差异内容过多而无法显示
+ 0 - 0
doc/html/js/highlight.pack.js


文件差异内容过多而无法显示
+ 1 - 0
doc/html/js/jquery-2.1.1.min.js


文件差异内容过多而无法显示
+ 0 - 0
doc/html/js/modernizr-2.8.3.min.js


+ 82 - 0
doc/html/js/theme.js

@@ -0,0 +1,82 @@
+$( document ).ready(function() {
+    // Shift nav in mobile when clicking the menu.
+    $(document).on('click', "[data-toggle='wy-nav-top']", function() {
+      $("[data-toggle='wy-nav-shift']").toggleClass("shift");
+      $("[data-toggle='rst-versions']").toggleClass("shift");
+    });
+
+    // Close menu when you click a link.
+    $(document).on('click', ".wy-menu-vertical .current ul li a", function() {
+      $("[data-toggle='wy-nav-shift']").removeClass("shift");
+      $("[data-toggle='rst-versions']").toggleClass("shift");
+    });
+
+    $(document).on('click', "[data-toggle='rst-current-version']", function() {
+      $("[data-toggle='rst-versions']").toggleClass("shift-up");
+    });
+
+    // Make tables responsive
+    $("table.docutils:not(.field-list)").wrap("<div class='wy-table-responsive'></div>");
+
+    hljs.initHighlightingOnLoad();
+
+    $('table').addClass('docutils');
+});
+
+window.SphinxRtdTheme = (function (jquery) {
+    var stickyNav = (function () {
+        var navBar,
+            win,
+            stickyNavCssClass = 'stickynav',
+            applyStickNav = function () {
+                if (navBar.height() <= win.height()) {
+                    navBar.addClass(stickyNavCssClass);
+                } else {
+                    navBar.removeClass(stickyNavCssClass);
+                }
+            },
+            enable = function () {
+                applyStickNav();
+                win.on('resize', applyStickNav);
+            },
+            init = function () {
+                navBar = jquery('nav.wy-nav-side:first');
+                win    = jquery(window);
+            };
+        jquery(init);
+        return {
+            enable : enable
+        };
+    }());
+    return {
+        StickyNav : stickyNav
+    };
+}($));
+
+// The code below is a copy of @seanmadsen code posted Jan 10, 2017 on issue 803.
+// https://github.com/mkdocs/mkdocs/issues/803
+// This just incorporates the auto scroll into the theme itself without
+// the need for additional custom.js file.
+//
+$(function() {
+  $.fn.isFullyWithinViewport = function(){
+      var viewport = {};
+      viewport.top = $(window).scrollTop();
+      viewport.bottom = viewport.top + $(window).height();
+      var bounds = {};
+      bounds.top = this.offset().top;
+      bounds.bottom = bounds.top + this.outerHeight();
+      return ( ! (
+        (bounds.top <= viewport.top) ||
+        (bounds.bottom >= viewport.bottom)
+      ) );
+  };
+  if( $('li.toctree-l1.current').length && !$('li.toctree-l1.current').isFullyWithinViewport() ) {
+    $('.wy-nav-side')
+      .scrollTop(
+        $('li.toctree-l1.current').offset().top -
+        $('.wy-nav-side').offset().top -
+        60
+      );
+  }
+});

部分文件因为文件数量过多而无法显示