From 1acc87eeac036b3ccfad5553b9092899cf2ecaa0 Mon Sep 17 00:00:00 2001 From: nodiscc Date: Sat, 7 Mar 2015 14:50:31 +0100 Subject: [PATCH] Include documentation/wiki locally: * sync current wiki (https://github.com/shaarli/Shaarli/wiki) to the doc/ directory * fix missing logo in README * add link to local documentation in the page footer * add Makefile targets for doc generation by @virtualtam --- Makefile | 13 + README.md | 2 +- ...-SSH-SCP,-serve-it-locally-with-php-cli.md | 66 ++++ ...les-for-shaarlis-listed-in-an-opml-file.md | 154 ++++++++ ...ple-patch---add-new-via-field-for-links.md | 189 ++++++++++ doc/Home.md | 347 ++++++++++++++++++ doc/Ideas-for-plugins.md | 11 + "doc/Mentions-of-Shaarli-in-\"the-press\".md" | 3 + doc/_Sidebar.md | 37 ++ doc/config.json | 6 + doc/images/bookmarklet.png | Bin 0 -> 53346 bytes doc/images/doc-logo.png | Bin 0 -> 19543 bytes doc/images/rss-filter-1.png | Bin 0 -> 18682 bytes doc/images/rss-filter-2.png | Bin 0 -> 15604 bytes doc/index.html | 212 +++++++++++ tpl/page.footer.html | 2 +- 16 files changed, 1040 insertions(+), 2 deletions(-) create mode 100644 doc/Copy-a-Shaarli-installation-over-SSH-SCP,-serve-it-locally-with-php-cli.md create mode 100644 doc/Download-CSS-styles-for-shaarlis-listed-in-an-opml-file.md create mode 100644 doc/Example-patch---add-new-via-field-for-links.md create mode 100644 doc/Home.md create mode 100644 doc/Ideas-for-plugins.md create mode 100644 "doc/Mentions-of-Shaarli-in-\"the-press\".md" create mode 100644 doc/_Sidebar.md create mode 100644 doc/config.json create mode 100644 doc/images/bookmarklet.png create mode 100644 doc/images/doc-logo.png create mode 100644 doc/images/rss-filter-1.png create mode 100644 doc/images/rss-filter-2.png create mode 100644 doc/index.html diff --git a/Makefile b/Makefile index e17c8628..8f9ab9e7 100644 --- a/Makefile +++ b/Makefile @@ -92,3 +92,16 @@ mess_detector_summary: mess_title warnings=$$($(BIN)/phpmd $(PHP_SOURCE) text $$rule | wc -l); \ printf "$$warnings\t$$rule\n"; \ done; + +## +# Targets for repository and documentation maintenance +# +# remove all unversioned files +clean: + @git clean -df + +# 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 diff --git a/README.md b/README.md index 7f0b7d5f..218475af 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Shaarli logo](https://cdn.mediacru.sh/W2NGCIHB3quT.png) +![Shaarli logo](doc/images/doc-logo.png) Shaarli, the personal, minimalist, super-fast, no-database delicious clone. diff --git a/doc/Copy-a-Shaarli-installation-over-SSH-SCP,-serve-it-locally-with-php-cli.md b/doc/Copy-a-Shaarli-installation-over-SSH-SCP,-serve-it-locally-with-php-cli.md new file mode 100644 index 00000000..5b0aec6f --- /dev/null +++ b/doc/Copy-a-Shaarli-installation-over-SSH-SCP,-serve-it-locally-with-php-cli.md @@ -0,0 +1,66 @@ +Example bash script: + +``` +#!/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="my.ssh.server" +remote_shaarli_dir="/var/www/shaarli" + + +###### FUNCTIONS ############# +_main() { + _CBSyncShaarli + _CBServeShaarli +} + +_CBSyncShaarli() { + remote_temp_dir=$(ssh $remotehost mktemp -d) + remote_ssh_user=$(ssh $remotehost whoami) + ssh -t "$remotehost" sudo cp -r "$remote_shaarli_dir" "$remote_temp_dir" + ssh -t "$remotehost" sudo chown -R "$remote_ssh_user":"$remote_ssh_user" "$remote_temp_dir" + scp -rq "$remotehost":"$remote_temp_dir" local-shaarli + ssh "$remotehost" rm -r "$remote_temp_dir" +} + +_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 "Please go to http://localhost:${php_local_port}" +} + + +##### MAIN ################# + +_main +``` + +This outputs: + +``` +$ ./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]: /... +``` \ No newline at end of file diff --git a/doc/Download-CSS-styles-for-shaarlis-listed-in-an-opml-file.md b/doc/Download-CSS-styles-for-shaarlis-listed-in-an-opml-file.md new file mode 100644 index 00000000..8645b10d --- /dev/null +++ b/doc/Download-CSS-styles-for-shaarlis-listed-in-an-opml-file.md @@ -0,0 +1,154 @@ +###Download CSS styles for shaarlis listed in an opml file +Example php script: + +``` + + + + +/** + * Source: https://github.com/Riduidel + * Download css styles for shaarlis listed in an opml file + */ +define("SHAARLI_RSS_OPML", "https://www.ecirtam.net/shaarlirss/custom/people.opml"); + +define("THEMES_TEMP_FOLDER", "new_themes"); + +if(!file_exists(THEMES_TEMP_FOLDER)) { + mkdir(THEMES_TEMP_FOLDER); +} + +function siteUrl($pathInSite) { + $indexPos = strpos($pathInSite, "index.php"); + 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->xpath("body/outline"); + 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."/".str_replace(".", "_", $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 "get_headers") + */ +function copyUserStyleFrom($url, $name, $knownStyles) { + $userStyle = $url."inc/user.css"; + if(in_array($url, $knownStyles)) { + // TODO add log message + } else { + $statusCode = get_http_response_code($userStyle); + if(intval($statusCode)<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', + "User style from ".$name."\n" + ."=============================" + ."\n\n" + ."This stylesheet was downloaded from ".$userStyle." on ".date(DATE_RFC822) + ); + } + if(!file_exists($siteFolder.'/config.ini')) { + // Write a config file containing useful informations + file_put_contents($siteFolder.'/config.ini', + "site_url=".$url."\n" + ."site_name=".$name."\n" + ); + } + 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 '.$url.' into '.$siteFolder + .'. It looks like
'; + } + } +} + +function getThumbnailUrl($url) { + return 'http://api.webthumbnail.org/?url='.$url; +} + +function copyUserStylesFrom($urlToNames, $knownStyles) { + foreach($urlToNames as $url => $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 (".") and parent one("..") + * 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 != "." && $file != "..") { + $results[] = realpath($realPath . "/" . $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("themes"); + foreach($subFolders as $folder) { + $configFile = $folder."/config.ini"; + 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); + + +``` diff --git a/doc/Example-patch---add-new-via-field-for-links.md b/doc/Example-patch---add-new-via-field-for-links.md new file mode 100644 index 00000000..d84ef25a --- /dev/null +++ b/doc/Example-patch---add-new-via-field-for-links.md @@ -0,0 +1,189 @@ +Example patch to add a new field ("via") for links, an input field to set the "via" property from the "edit link" dialog, and display the "via" field in the link list display. **Untested, use at your own risk** + +Thanks to @Knah-Tsaeb in https://github.com/sebsauvage/Shaarli/pull/158 + +``` +From e0f363c18e8fe67990ed2bb1a08652e24e70bbcb Mon Sep 17 00:00:00 2001 +From: Knah Tsaeb +Date: Fri, 11 Oct 2013 15:18:37 +0200 +Subject: [PATCH] Add a "via"/origin property for links, add new input in "edit link" dialog +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['login'])) + // ------------------------------------------------------------------------------------------ + // Misc utility functions: + ++// Try to get just domain for @via ++function getJustDomain($url){ ++ $parts = parse_url($url); ++ return trim($parts['host']); ++ } ++ + // Returns the server URL (including port and http/https), without path. + // e.g. "http://myserver.com:8080" + // You can append $_SERVER['SCRIPT_NAME'] to get the current script URL. +@@ -799,7 +805,8 @@ class linkdb implements Iterator, Countable, ArrayAccess + $found= (strpos(strtolower($l['title']),$s)!==false) + || (strpos(strtolower($l['description']),$s)!==false) + || (strpos(strtolower($l['url']),$s)!==false) +- || (strpos(strtolower($l['tags']),$s)!==false); ++ || (strpos(strtolower($l['tags']),$s)!==false) ++ || (!empty($l['via']) && (strpos(strtolower($l['via']),$s)!==false)); + if ($found) $filtered[$l['linkdate']] = $l; + } + krsort($filtered); +@@ -814,7 +821,7 @@ class linkdb implements Iterator, Countable, ArrayAccess + $t = str_replace(',',' ',($casesensitive?$tags:strtolower($tags))); + $searchtags=explode(' ',$t); + $filtered=array(); +- foreach($this->links as $l) ++ foreach($this-> links as $l) + { + $linktags = explode(' ',($casesensitive?$l['tags']:strtolower($l['tags']))); + 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['nb'])) // In URL, you can specificy the number of links. Example: nb=200 or nb=all for all links. +- { ++ { + $nblinksToDisplay = $_GET['nb']=='all' ? count($linksToDisplay) : max($_GET['nb']+0,1) ; + } + +@@ -944,7 +951,12 @@ function showRSS() + // If user wants permalinks first, put the final link in description + if ($usepermalinks===true) $descriptionlink = '(Link)'; + if (strlen($link['description'])>0) $descriptionlink = '
'.$descriptionlink; +- echo ''."\n\n"; ++ if(!empty($link['via'])){ ++ $via = '
Origine => '.htmlspecialchars(getJustDomain($link['via'])).''; ++ } else { ++ $via = ''; ++ } ++ echo ''."\n\n"; + $i++; + } + echo ''; +@@ -980,7 +992,7 @@ function showATOM() + else $linksToDisplay = $LINKSDB; + $nblinksToDisplay = 50; // Number of links to display. + if (!empty($_GET['nb'])) // In URL, you can specificy the number of links. Example: nb=200 or nb=all for all links. +- { ++ { + $nblinksToDisplay = $_GET['nb']=='all' ? count($linksToDisplay) : max($_GET['nb']+0,1) ; + } + +@@ -1006,11 +1018,16 @@ function showATOM() + + // Add permalink in description + $descriptionlink = htmlspecialchars('(Permalink)'); ++ if(isset($link['via']) && !empty($link['via'])){ ++ $via = htmlspecialchars('
Origine => '.getJustDomain($link['via']).''); ++ } else { ++ $via = ''; ++ } + // If user wants permalinks first, put the final link in description + if ($usepermalinks===true) $descriptionlink = htmlspecialchars('(Link)'); + if (strlen($link['description'])>0) $descriptionlink = '<br>'.$descriptionlink; + +- $entries.=''.htmlspecialchars(nl2br(keepMultipleSpaces(text2clickable(htmlspecialchars($link['description']))))).$descriptionlink."\n"; ++ $entries.=''.htmlspecialchars(nl2br(keepMultipleSpaces(text2clickable(htmlspecialchars($link['description']))))).$descriptionlink.$via."\n"; + if ($link['tags']!='') // Adding tags to each ATOM entry (as mentioned in ATOM specification) + { + foreach(explode(' ',$link['tags']) as $tag) +@@ -1478,7 +1495,7 @@ function renderPage() + if (!startsWith($url,'http:') && !startsWith($url,'https:') && !startsWith($url,'ftp:') && !startsWith($url,'magnet:') && !startsWith($url,'?')) + $url = 'http://'.$url; + $link = array('title'=>trim($_POST['lf_title']),'url'=>$url,'description'=>trim($_POST['lf_description']),'private'=>(isset($_POST['lf_private']) ? 1 : 0), +- 'linkdate'=>$linkdate,'tags'=>str_replace(',',' ',$tags)); ++ 'linkdate'=>$linkdate,'tags'=>str_replace(',',' ',$tags), 'via'=>trim($_POST['lf_via'])); + if ($link['title']=='') $link['title']=$link['url']; // If title is empty, use the URL as title. + $LINKSDB[$linkdate] = $link; + $LINKSDB->savedb(); // Save to disk. +@@ -1556,7 +1573,8 @@ function renderPage() + $title = (empty($_GET['title']) ? '' : $_GET['title'] ); // Get title if it was provided in URL (by the bookmarklet). + $description = (empty($_GET['description']) ? '' : $_GET['description']); // Get description if it was provided in URL (by the bookmarklet). [Bronco added that] + $tags = (empty($_GET['tags']) ? '' : $_GET['tags'] ); // Get tags if it was provided in URL +- $private = (!empty($_GET['private']) && $_GET['private'] === "1" ? 1 : 0); // Get private if it was provided in URL ++ $via = (empty($_GET['via']) ? '' : $_GET['via'] ); ++ $private = (!empty($_GET['private']) && $_GET['private'] === "1" ? 1 : 0); // Get private if it was provided in URL + if (($url!='') && parse_url($url,PHP_URL_SCHEME)=='') $url = 'http://'.$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) && parse_url($url,PHP_URL_SCHEME)=='http') +@@ -1567,7 +1585,7 @@ function renderPage() + { + // Look for charset in html header. + preg_match('##Usi', $data, $meta); +- ++ + // If found, extract encoding. + if (!empty($meta[0])) + { +@@ -1577,7 +1595,7 @@ function renderPage() + $html_charset = (!empty($enc[1])) ? strtolower($enc[1]) : 'utf-8'; + } + else { $html_charset = 'utf-8'; } +- ++ + // Extract title + $title = html_extract_title($data); + if (!empty($title)) +@@ -1592,7 +1610,7 @@ function renderPage() + $url='?'.smallHash($linkdate); + $title='Note: '; + } +- $link = array('linkdate'=>$linkdate,'title'=>$title,'url'=>$url,'description'=>$description,'tags'=>$tags,'private'=>$private); ++ $link = array('linkdate'=>$linkdate,'title'=>$title,'url'=>$url,'description'=>$description,'tags'=>$tags,'via' => $via,'private'=>$private); + } + + $PAGE = new pageBuilder; +@@ -1842,6 +1860,9 @@ function buildLinkList($PAGE,$LINKSDB) + $taglist = explode(' ',$link['tags']); + uasort($taglist, 'strcasecmp'); + $link['taglist']=$taglist; ++ if(!empty($link['via'])){ ++ $link['via']=htmlspecialchars($link['via']); ++ } + $linkDisp[$keys[$i]] = $link; + $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 @@ + Title

+ Description

+ Tags

++ Origine

+ {if condition="($link_is_new && $GLOBALS['privateLinkByDefault']==true) || $link.private == true"} + +  
+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 @@ + {$value.title|htmlspecialchars} +
+ {if="$value.description"}
{$value.description}
{/if} ++ {if condition="isset($value.via) && !empty($value.via)"}
Origine => {$value.via|getJustDomain}
{/if} + {if="!$GLOBALS['config']['HIDE_TIMESTAMPS'] || isLoggedIn()"} + {$value.localdate|htmlspecialchars} - permalink - + {else} +-- +2.1.1 +``` \ No newline at end of file diff --git a/doc/Home.md b/doc/Home.md new file mode 100644 index 00000000..d68656e9 --- /dev/null +++ b/doc/Home.md @@ -0,0 +1,347 @@ +# Shaarli wiki + +Welcome to the [Shaarli](https://github.com/shaarli/Shaarli/) wiki! Here you can find some info on how to use, configure, tweak and solve problems with your Shaarli. For general info, read the [README](https://github.com/shaarli/Shaarli/blob/master/README.md). + +If you have any questions or ideas, please join the [chat](https://gitter.im/shaarli/Shaarli) (also reachable via [IRC](https://irc.gitter.im/)), post them in our [general discussion](https://github.com/shaarli/Shaarli/issues/44) or read the current [issues](https://github.com/shaarli/Shaarli/issues). If you've found a bug, please create a [new issue](https://github.com/shaarli/Shaarli/issues/new). + +If you'd like a feature added, see if it fits in the list of [Ideas for Plugins](Ideas-for-plugins) and update the corresponding bug report. + +_Note: This documentation is available online at https://github.com/shaarli/Shaarli/wiki, and locally in the `doc/` directory of your Shaarli installation._ + +------------------------------------------------------------------ + +# Basic Usage + +### Add the sharing button (_bookmarklet_) to your browser + + * Open your Shaarli and `Login` + * Click the `Tools` button in the top bar + * Drag the **`✚Shaare link` button**, and drop it to your browser's bookmarks bar. + +_This bookmarklet button in 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._ + +![](images/bookmarklet.png) + +### Share links using the _bookmarklet_ + + * When you are visiting a webpage you would like to share with Shaarli, click the _bookmarklet_ you just added. + * A window opens. + * You can freely edit title, description, tags... to find it later using the text search or tag filtering. + * You will be able to edit this link later using the ![](https://raw.githubusercontent.com/shaarli/Shaarli/master/images/edit_icon.png) edit button. + * You can also check the “Private” box so that the link is saved but only visible to you. + * Click `Save`.**Voila! Your link is now shared.** + + + + +# Other usage examples +Shaarli can be used: + + * 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 `readlater`) + * 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 `music` or `video` tags) + * to keep extracts/comments from webpages that may disappear + * to keep track of ongoing discussions (for example items tagged `discussion`) + * [to feed RSS aggregators](http://shaarli.chassegnouf.net/?9Efeiw) (planets) with specific tags + * to feed other social networks, blogs... using RSS feeds and external services (dlvr.it, ifttt.com ...) + +### Using Shaarli as a blog, notepad, pastebin... + + * Go to your Shaarli setup and log in + * Click the `Add Link` button + * To share text only, do not enter any URL in the corresponding input field and click `Add Link` + * Pick a title and enter your article, or note, in the description field; add a few tags; optionally check `Private` then click `Save` + * Voilà! Your article is now published (privately if you selected that option) and accessible using its permalink. + + +### RSS Feeds or Picture Wall for a specific search/tag +It is possible to filter RSS/ATOM feeds and Picture Wall on a Shaarli to **only display results of a specific search, or for a specific tag**. For example, if you want to subscribe only to links tagged `photography`: + * Go to the desired Shaarli instance. + * Search for the `photography` tag in the _Filter by tag_ box. Links tagged `photography` are displayed. + * Click on the `RSS Feed` 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 **also works for a full-text search** (_Search_ box) **and for the Picture Wall** (want to only see pictures about `nature`?) + * You can also build the URL manually: `https://my.shaarli.domain/?do=rss&searchtags=nature`, `https://my.shaarli.domain/links/?do=picwall&searchterm=poney` + +![](rss-filter-1.png) ![](rss-filter-2.png) + +# Configuration + +### Main data/options.php file + +To change the configuration, create the file `data/options.php`, example: +``` + +``` + The following parameters are available (parameters (default value)): + + * `DATADIR ('data')` : This is the name of the subdirectory where Shaarli stores is data file. You can change it for better security. + * `CONFIG_FILE ($GLOBALS['config']['DATADIR'].'/config.php')` : Name of file which is used to store login/password. + * `DATASTORE ($GLOBALS['config']['DATADIR'].'/datastore.php')` : Name of file which contains the link database. + * `LINKS_PER_PAGE (20)` : Default number of links per page displayed. + * `IPBANS_FILENAME ($GLOBALS['config']['DATADIR'].'/ipbans.php')` : Name of file which records login attempts and IP bans. + * `BAN_AFTER (4)` : An IP address will be banned after this many failed login attempts. + * `BAN_DURATION (1800)` : Duration of ban (in seconds). (1800 seconds = 30 minutes) + * `OPEN_SHAARLI (false)` : If you set this option to true, anyone will be able to add/modify/delete/import/exports links without having to login. + * `HIDE_TIMESTAMPS (false)` : If you set this option to true, the date/time of each link will not be displayed (including in RSS Feed). + * `ENABLE_THUMBNAILS (true)` : Enable/disable thumbnails. + * `CACHEDIR ('cache')` : Directory where the thumbnails are stored. + * `ENABLE_LOCALCACHE (true)` : If you have a limited quota on your webspace, you can set this option to false: Shaarli will not generate thumbnails which need to be cached locally (vimeo, flickr, etc.). Thumbnails will still be visible for the services which do not use the local cache (youtube.com, imgur.com, dailymotion.com, imageshack.us) + * `UPDATECHECK_FILENAME ($GLOBALS['config']['DATADIR'].'/lastupdatecheck.txt')` : name of the file used to store available shaarli version. + * `UPDATECHECK_INTERVAL (86400)` : Delay between new Shaarli version check. 86400 seconds = 24 hours. Note that if you do not login for a week, Shaarli will not check for new version for a week. + * `ENABLE_UPDATECHECK`: Determines whether Shaarli check for new releases at https://github.com/shaarli/Shaarli + * `SHOW_ATOM (false)` : Show an `ATOM Feed` button next to the `Subscribe` (RSS) button. ATOM feeds are available at the address `?do=atom` regardless of this option. + * `ARCHIVE_ORG (false)` : For each link, display a link to an archived version on archive.org + * `ENABLE_RSS_PERMALINKS (true)`: choose whether the RSS item title link points directly to the link, or to the entry on Shaarli (permalink). `true` is the original Shaarli bahevior (point directly to the link) + + +### Changing theme + * Shaarli's apparence can be modified by editing CSS rules in `inc/user.css`. This file allows to override rules defined in the main `inc/shaarli.css` (only add changed rules), or define a whole new theme. + * Do not edit `inc/shaarli.css`! Your changes would be overriden when updating Shaarli. + * Some themes are available at https://github.com/shaarli/shaarli-themes. + +See also: + * [Download CSS styles for shaarlis listed in an opml file](https://github.com/shaarli/Shaarli/wiki/Download-CSS-styles-for-shaarlis-listed-in-an-opml-file) + + +# Backup + +You have two ways of backing up your database: +* **Backup the file `data/datastore.php`** (by FTP or SSH). Restore by putting the file back in place. + * Example command: `rsync -avzP my.server.com:/var/www/shaarli/data/datastore.php datastore-$(date +%Y-%m-%d_%H%M).php` +* **Export your links as HTML** (Menu `Tools` > `Export`). Restore by using the `Import` feature. + * This can be done using the [shaarchiver](https://github.com/nodiscc/shaarchiver) tool. Example command: `./export-bookmarks.py --url=https://my.server.com/shaarli --username=myusername --password=mysupersecretpassword --download-dir=./ --type=all` + + + +# Login bruteforce protection +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. + +To remove the current IP bans, delete the file `data/ipbans.php` + +## List of all login attempts + +The file `data/log.txt` shows all logins (successful or failed) and bans/lifted bans. +Search for `failed` in this file to look for unauthorized login attempts. + +# Troubleshooting + +### I forgot my password ! + +Delete the file data/config.php and display the page again. You will be asked for a new login/password. + + +### Exporting from Diigo + +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.) + +### Importing from SemanticScuttle + +To correctly import the tags from a [SemanticScuttle](http://semanticscuttle.sourceforge.net/) HTML export, edit the HTML file before importing and replace all occurences of `tags=` (lowercase) to `TAGS=` (uppercase). + +### Importing from Mister Wong +See [this issue](https://github.com/sebsauvage/Shaarli/issues/146) for import tweaks. + + +### Hosting problems + * On **free.fr** : Please note that free uses php 5.1 and thus you will not have autocomplete in tag editing. Don't forget to create a `sessions` directory at the root of your webspace. Change the file extension to `.php5` or create a `.htaccess` file in the directory where Shaarli is located containing: + +``` +php 1 +SetEnv PHP_VER 5 +``` + + * If you have an error such as: `Parse error: syntax error, unexpected '=', expecting '(' in /links/index.php on line xxx`, it means that your host is using php4, not php5. Shaarli requires php 5.1. Try changing the file extension to `.php5` + * On **1and1** : 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). + * If you have the error `Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in /…/index.php on line xxx`, 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: + +``` +//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) in html +//if (strpos($status,'200 OK')) $title=html_extract_title($data); +``` + + * On hosts which forbid outgoing HTTP requests (such as free.fr), some thumbnails will not work. + * On **lost-oasis**, RSS doesn't work correctly, because of this message at the begining of the RSS/ATOM feed : ``. To fix this, remove this message from `php-include/prepend.php` + +### Dates are not properly formatted +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 :-( ) + +### Problems on CentOS servers +On **CentOS**/RedHat derivatives, you may need to install the `php-mbstring` package. + + +### My session expires ! I can't stay logged in +This can be caused by several things: + +* Your php installation may not have a proper directory setup for session files. (eg. on Free.fr you need to create a `session` directory on the root of your website.) You may need to create the session directory of set it up. +* 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 `sessions` subdirectory and add `ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'].'/../sessions');`. Make sure this directory is not browsable !) +* 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). +* Some browser addons may interfer with HTTP headers (ipfuck/ipflood/GreaseMonkey…). Try disabling those. +* You may be using OperaTurbo or OperaMini, which use their own proxies which may change from time to time. +* If you have another application on the same webserver where Shaarli is installed, these application may forcefully expire php sessions. + +### `Sessions do not seem to work correctly on your server` +Follow the instructions in the error message. Make sure you are accessing shaarli via a direct IP address or a proper hostname. If you have **no dots** in the hostname (e.g. `localhost` or `http://my-webserver/shaarli/`), some browsers will not store cookies at all (this respects the [HTTP cookie specification](http://curl.haxx.se/rfc/cookie_spec.html)). + + +### pubsubhubbub support + +Download [publisher.php](https://pubsubhubbub.googlecode.com/git/publisher_clients/php/library/publisher.php) at the root of your Shaarli installation and set `$GLOBALS['config']['PUBSUBHUB_URL']` in your `config.php` + +# Notes +### Various hacks + + * [Example patch: add a new "via" field for links](Example-patch---add-new-via-field-for-links) + * [Copy a Shaarli installation over SSH SCP, serve it locally with php cli](Copy-a-Shaarli-installation-over-SSH-SCP,-serve-it-locally-with-php-cli) + * To display the array representing the data saved in datastore.php, use the following snippet + +### Changing timestamp for a link + * Look for `` in `tpl/editlink.tpl` (line 14) + * Remove `type="hidden"` from this line + * A new date/time field becomes available in the edit/new link dialog. You can set the timestamp manually by entering it in the format `YYYMMDD_HHMMS`. + +``` +$data = "tZNdb9MwFIb... "; +$out = unserialize(gzinflate(base64_decode($data))); +echo "
"; // Pretty printing is love, pretty printing is life
+print_r($out);
+echo "
"; +exit; +``` +This will output the internal representation of the datastore, "unobfuscated" (if this can really be considered obfuscation) + + +# Related software +Unofficial but relatedd 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. **TODO** contact repos owners to see if they'd like to standardize their work for the community fork. + + * [shaarchiver](https://github.com/nodiscc/shaarchiver) - Archive your Shaarli bookmarks and their content + * [Shaarli for Android](http://sebsauvage.net/links/?ZAyDzg) - Android application that adds Shaarli as a sharing provider + * [shaarli-river](https://github.com/mknexen/shaarli-river) - an aggregator for shaarlis with many features + * [Shaarlo](https://github.com/DMeloni/shaarlo) - an aggregator for shaarlis with many features ([Demo](http://shaarli.fr/)) + * [kalvn/shaarli-blocks](https://github.com/kalvn/shaarli-blocks) - A template/theme for Shaarli + * [Vinm/Blue-theme-for Shaarli](https://github.com/Vinm/Blue-theme-for-Shaarli) - A template/theme for Shaarli + * [vivienhaese/shaarlitheme](https://github.com/vivienhaese/shaarlitheme) - A Shaarli fork meant to be run in an openshift instance + * [tt-rss-shaarli](https://github.com/jcsaaddupuy/tt-rss-shaarli) - [TinyTiny RSS](http://tt-rss.org/) plugin that adds support for sharing articles with Shaarli + * [dhoko/ShaarliTemplate](https://github.com/dhoko/ShaarliTemplate) - A template/theme for Shaarli + * [mknexen/shaarli-api](https://github.com/mknexen/shaarli-api) - a REST API for Shaarli + * [Shaarli-Albinomouse](https://github.com/alexisju/Shaarli-AlbinoMouse) - A fork of Shaarli with a different template + * [Shaarlimages](https://github.com/BoboTiG/shaarlimages) - An image-oriented aggregator for Shaarlis + * [Shaarli Superhero Theme](https://github.com/AkibaTech/Shaarli---SuperHero-Theme) - A template/theme for Shaarli + * [Limonade](https://github.com/misterair/limonade) - A fork of Shaarli with a new template + * [octopress-shaarli](https://github.com/ahmet2mir/octopress-shaarli) - octoprress plugin to retrieve SHaarli links on the sidebara + * [Bookie](https://github.com/bookieio/bookie) - Another self-hostable, Free bookmark sharing software, written in Python + + + +# Other links + * [Liens en vrac de sebsauvage](http://sebsauvage.net/links/) - the original Shaarli + * [A large list of Shaarlis](http://porneia.free.fr/pub/links/ou-est-shaarli.html) + * [A list of working Shaarli aggregators](https://raw.githubusercontent.com/Oros42/find_shaarlis/master/annuaires.json) + * [A list of some known Shaarlis](https://github.com/Oros42/shaarlis_list) + * [Adieu Delicious, Diigo et StumbleUpon. Salut Shaarli ! - sebsauvage.net](http://sebsauvage.net/rhaa/index.php?2011/09/16/09/29/58-adieu-delicious-diigo-et-stumbleupon-salut-shaarli-) (fr) _16/09/2011 - the original post about Shaarli_ + * [Mentions of Shaarli in the press](Mentions-of-Shaarli-in-%22the-press%22) + * [Original ideas/fixme/TODO page](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:ideas) + * [Original discussion page](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:discussion) (fr) + * [Original revisions history](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + * [Shaarli.fr/my](https://www.shaarli.fr/my.php) - Unofficial, unsupported (old fork) hosted Shaarlis provider, courtesy of [DMeloni](https://github.com/DMeloni) + * [Shaarli Communauty](http://shaarferme.etudiant-libre.fr.nf/index.php) - Another unofficial Shaarli hoster (unsupported, old fork), hoster unknown + + + + +# FAQ + +### Why did you create Shaarli ? + +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… **their Firefox addon sends to Diigo every single URL you visit** (Don't believe me ? Use [Tamper Data](https://addons.mozilla.org/en-US/firefox/addon/tamper-data/) and open any page). + +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. + +### Why use Shaarli and not Delicious/Diigo ? + +With Shaarli: + +* The data is yours: It's hosted on your server. +* Never fear of having your data locked-in. +* Never fear to have your data sold to third party. +* Your private links are not hosted on a third party server. +* You are not tracked by browser addons (like Diigo does) +* You can change the look and feel of the pages if you want. +* You can change the behaviour of the program. +* It's magnitude faster than most bookmarking services. + +### What does Shaarli mean ? + +Shaarli is for shaaring your links. + + + +# Technical details + * Application is protected against XSRF (Cross-site requests forgery): Forms which act on data (save,delete…) contain a token generated by the server. Any posted form which does not contain a valid token is rejected. Any token can only be used once. Token are attached to the session and cannot be reused in another session. + * Sessions automatically expires after 60 minutes. Sessions are protected against highjacking: The sessionID cannot be used from a different IP address. + * An .htaccess file protects the data file. + * Link database is an associative array which is serialized, compressed (with deflate), base64-encoded and saved as a comment in a .php file. Thus even if the server does not support htaccess files, the data file will still not be readable by URL. The database looks like this: +``` + +``` + +* 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. +* Shaarli relies on `HTTP_REFERER` for some functions (like redirects and clicking on tags). If you have disabled or masqueraded `HTTP_REFERER` in your browser, some features of Shaarli may not work +* `magic_quotes` is a 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 magic_quotes on, so you should not be bothered even on crappy hosts. +* Small hashes are used to make a link to an entry in Shaarli. They are unique. In fact, the date of the items (eg.20110923_150523) is hashed with CRC32, then converted to base64 and some characters are replaced. They are always 6 characters longs and use only A-Z a-z 0-9 - _ and @. + +### Directory structure + +Here is the directory structure of Shaarli and the purpose of the different files: + +``` + index.php : Main program. + COPYING : Shaarli license. + inc/ : Includes (libraries, CSS…) + shaarli.css : Shaarli stylesheet. + jquery.min.js : jQuery javascript library. + jquery-ui.min.js : jQuery-UI javascript library. + jquery-MIT-LICENSE.txt: jQuery license. + jquery.lazyload.min.js: LazyLoad javascript 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/ : Directory where data is stored (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 (used to check every 24 hours if a new version of Shaarli is available). + log.txt : login/IPban log. + cache/ : Directory containing the 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. +``` + +### Why not use a real database ? Files are slow ! + +Does browsing [this page](http://sebsauvage.net/links/) feel slow ? Try browsing older pages, too. + +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 ? + +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. + +# Wiki - TODO + * Translate (new page can be called Home.fr, Home.es ...) and linked from Home + * add more screenshots + * add developer documentation (storage architecture, classes and functions, security handling, ...) + * Contact related projects + * Add a Table of Contents to the wiki (can be added to the sidebar) + +... \ No newline at end of file diff --git a/doc/Ideas-for-plugins.md b/doc/Ideas-for-plugins.md new file mode 100644 index 00000000..9c3ffb07 --- /dev/null +++ b/doc/Ideas-for-plugins.md @@ -0,0 +1,11 @@ +Please list here ideas for potential plugins. Do not include lengthy discussion about why/how the plugin should work, but link instead to an issue where this would have been discussed. +By listing these ideas here, we can keep the issues list a bit more clean, and have a centralized place where people wanting to contribute can find potential enhancement ideas. +Also have a look at https://github.com/shaarli/Shaarli/issues/14 for other suggestions. + +* [Mozilla Social API integration](https://github.com/shaarli/Shaarli/issues/101) +* [File sharing/Upload service integration](https://github.com/shaarli/Shaarli/issues/58) +* [Publish to social media services (twitter, facebook, ...)](https://github.com/sebsauvage/Shaarli/pull/70) +* [Comment system](https://github.com/sebsauvage/Shaarli/issues/170) +* [Syntax highlighting support](https://github.com/sebsauvage/Shaarli/pull/144) +* [Piwik tracking code integration](https://github.com/sebsauvage/Shaarli/issues/81) +* [Pingback support](https://github.com/sebsauvage/Shaarli/issues/75) \ No newline at end of file diff --git "a/doc/Mentions-of-Shaarli-in-\"the-press\".md" "b/doc/Mentions-of-Shaarli-in-\"the-press\".md" new file mode 100644 index 00000000..60c22cf0 --- /dev/null +++ "b/doc/Mentions-of-Shaarli-in-\"the-press\".md" @@ -0,0 +1,3 @@ +This page lists the publications (physical or on the Internet) that mention Shaarli. It is by no means a complete list, and you are invited to add to it, should you spot a Shaarli mentioned in the wild. + +* http://www.linuxjournal.com/content/youre-boss-ubos \ No newline at end of file diff --git a/doc/_Sidebar.md b/doc/_Sidebar.md new file mode 100644 index 00000000..dbe145f1 --- /dev/null +++ b/doc/_Sidebar.md @@ -0,0 +1,37 @@ + +- [Basic Usage](#basic-usage) + - [Add the sharing button (_bookmarklet_) to your browser](#add-the-sharing-button-_bookmarklet_-to-your-browser) + - [Share links using the _bookmarklet_](#share-links-using-the-_bookmarklet_) +- [Other usage examples](#other-usage-examples) + - [Using Shaarli as a blog, notepad, pastebin...](#using-shaarli-as-a-blog-notepad-pastebin) + - [RSS Feeds or Picture Wall for a specific search/tag](#rss-feeds-or-picture-wall-for-a-specific-searchtag) +- [Configuration](#configuration) + - [Main data/options.php file](#main-dataoptionsphp-file) + - [Changing theme](#changing-theme) +- [Backup](#backup) +- [Login bruteforce protection](#login-bruteforce-protection) + - [List of all login attempts](#list-of-all-login-attempts) +- [Troubleshooting](#troubleshooting) + - [I forgot my password !](#i-forgot-my-password-) + - [Exporting from Diigo](#exporting-from-diigo) + - [Importing from SemanticScuttle](#importing-from-semanticscuttle) + - [Importing from Mister Wong](#importing-from-mister-wong) + - [Hosting problems](#hosting-problems) + - [Dates are not properly formatted](#dates-are-not-properly-formatted) + - [Problems on CentOS servers](#problems-on-centos-servers) + - [My session expires ! I can't stay logged in](#my-session-expires--i-cant-stay-logged-in) + - [`Sessions do not seem to work correctly on your server`](#sessions-do-not-seem-to-work-correctly-on-your-server) + - [pubsubhubbub support](#pubsubhubbub-support) +- [Notes](#notes) + - [Various hacks](#various-hacks) + - [Changing timestamp for a link](#changing-timestamp-for-a-link) +- [Related software](#related-software) +- [Other links](#other-links) +- [FAQ](#faq) + - [Why did you create Shaarli ?](#why-did-you-create-shaarli-) + - [Why use Shaarli and not Delicious/Diigo ?](#why-use-shaarli-and-not-deliciousdiigo-) + - [What does Shaarli mean ?](#what-does-shaarli-mean-) +- [Technical details](#technical-details) + - [Directory structure](#directory-structure) + - [Why not use a real database ? Files are slow !](#why-not-use-a-real-database--files-are-slow-) +- [Wiki - TODO](#wiki---todo) \ No newline at end of file diff --git a/doc/config.json b/doc/config.json new file mode 100644 index 00000000..cc4de307 --- /dev/null +++ b/doc/config.json @@ -0,0 +1,6 @@ +{ + "useSideMenu": true, + "lineBreaks": "gfm", + "additionalFooterText": "", + "title": "Shaarli documentation" +} \ No newline at end of file diff --git a/doc/images/bookmarklet.png b/doc/images/bookmarklet.png new file mode 100644 index 0000000000000000000000000000000000000000..0262578e467d9e356d49cccc1b4917d276844712 GIT binary patch literal 53346 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 z zW)^D_3fpqZ>1QP;8JuUGAj#6lFN}rGIBEsh96RUwYLtNi=3@avib}t??in*^LhE~H zD>o!i25mLB!Ffgu%*QhudV8L98+V)5_x01HsvNPSbm-G6hE2>BRS7u`m3YM_#SJG| z<-R{_PC=H*WY)X}=E?w#M}Uh5LM2kAs`3GJJkL@3yvtH3m>v_Rnd@T)efl~OTZlm z*}wQ;1uBO0sroCX0WkZQW>O=ZD-8B<&>t4l+pthdfW%+~=tH@NU8Wqtm_*!!C1$kD zqQKT%rLnd|XONsr5^}3}PD4=JlZw=tAx0rB{l$vKt9?Yd!2rfFnX*ob^d%CSR#cp* z)*ynx21`+J6bKNA5lzVBAC4z&@($L0ST1`)VU!x>3&0O__yO*GMsm4JjrpRCnknSD(pmdUR*fDB<7W!vOLGY=)UW?N;( zT}O=7o@auA=oG`8csm#yW;d$M(ZXJ(6KF-KVz5gUqF6&HIav>?(v=FnUslt37Igj$ zQR`ecWDRMJsTo@>EL20rn&8CPkFuf|g8tBA+=$x5YMEJi21KX>EkY4hR^R{m%0AGd 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 literal 0 HcmV?d00001 diff --git a/doc/images/doc-logo.png b/doc/images/doc-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8d1787a7326816d5ff6d8cb5921088e4c3bbe7 GIT binary patch literal 19543 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 literal 0 HcmV?d00001 diff --git a/doc/images/rss-filter-1.png b/doc/images/rss-filter-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a03f675debbe65287e75b2a83a88497d935c34 GIT binary patch literal 18682 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

tvT1mlaG3bX8 z*|oicghb=>{QnZoYf-;Ss#kVQL*!t zO7bc=Y`g*iO9d>MUXKEOvSjG3m?~a2J0kL`7i`cKQOs?DZ?c`tz0}k^WI}_6R%mdW zTtKs4iHKlzN`W4L3&2#A5EN1H)=Ctv5UFGap*;KUW+gwn{mu>b#zg1Lvvn5*TW`v70!LEL44OFYZAA*%XfGmLuoUJ z_usR6EO~+V>^=+uLtbEU4G_B(M*E`B4(n&1=-HM5*3~!P;Q;V8RE(z~}y!cN!WViz^ zda=;SGyYQ&{~PnaI^f|MusFNHUiBomc6tVKxay4yfF*C?D^6%*l|FoKs@5@M-TI{} zt@W!agM5ekz?@O-driXBsy4&a0s5c23jtm_!0)Q4jMuOcluX8DZ1Sx=nYh;HA13e- z(fO0od9@s}r#>6-8en2dg2kf*9JVC@oP8_${*VYvv>VOeIE!#IX){m|iuVZ)+^|ZN zAVmWj5l!YuCdEAPrdIpqKCYUILA%`j+QGx98-H;|iJ_%6YJUg@9pgl-jng4Q;H?W3 z8wVzL>$v|dqroFh>U)F=HwOCEKb$X0mf&>OuJ>iGG`gy$5MN?HQ8MJtZga>V4TJM? z_Tuw5!)veLm~3s$QuT&+M(OE@ z5n*_-rDHU&Mb9b= zE_j3`%C@wni=XTNVxhRG0Is+qr{1k-YF9`(MCz>o9yD%M6!0yd#*F=4J+GieSO6jh z>lF3tsm9Xam>ekSB-1~5gx#XhT{>dr)l$tG2mFR(!@;GJbTIf6wAKEPeDS%#hVD`m zQywh~_eYRw?i|>tOjJ7S=ede$@>72SCTO?4`OCB>W?-_LU(j3sk^rc@2%_qT4Z5Pt zAXaA{j2zXI3wCuUo5ix@toYyD5>&hK*+p@_Zag(f63oB(>3c5PbJw~yd-1S&#yqmx zYvjY%t}X<$TY6szfA~3bs7Ywa7J17|wvipbMVF1as70Bz6nEGVCCpffHtBF5CA?5| zRZ?s;H(9AqEkV^+nSD;(K5kmiI(0SJ6(45k?wvZ^xlljPanV+sc>X>{`y1|C`nN8h zW^}fXtM+6&m(gbUX-@aDSgqT}ssicp#JngPS5I=n=I+wrS&>C61>(lYe@*FC*gsv9 z*3y^l(Mk5$V&Jf)b+WG^M)JN>P6|lWF+K5U8WvO}Kt_n^LKqNo%bZ}NH}?t?j_XKMTh zo0iXW@1HHFf2}0Di$`ocm07afG7k0;UTK4Xn(?-T|6yN(n-FtA={|PRoYzlzElLZ< z*bzZs7Nc53Do5czp}aoO^ONHhN2Z6WPyBT7)F=zJ@U}-acVetg`WaXX1n1Zfc7zwdPpQ9c4E15Y8sz2U6zf4-U2wTQ4eqDKczlkq zXMO&RZXxH%B2&=Os66~dceQ1CXs`O~4&I{C-h#Gsjgmo27l(eQ+F%92J@78DGzFwhT)#$>0&zdtgA0t| zyM!NdpQfU6jhp&K9vVAEz?0}B+=6(mC(7!`*h%-avX>%WEqnrg$5?(7UVEi-32B@~ zv7{T$$maDHQwQI+%VgsOT($&*V@k#WfsCU9XHYf*#UVm)aJb~V-BaIxQV(!OKbLQ` zz7YkRr~D4N9<6X~m_QKiBl8Ju(boyqnH(s8%qYj$2pvB8eJu~YA=0YLMInQB&v4FRep#2KPvR7RaBCdbYpBmKNwtwB&BvW zi^_%)a$>PH;_&I|39P6rSENv}SdUzYY)ek{8jgGa=@+DQO=; zzvBSZUk}ZR3_rOgt3(()R~XvFBn{u4z(Ui0Nmtuen>0g8oE9XtQeB#=iw-fxb17sY9`a7Jd32+=E62baE|d#?{bT^&UiuzXhpCaLHKDEP5~19&J^ZBA+mhuamPsh1#;{DL`XX%(-ThErqkFSMUEZwYcQkb#zsie*&C_L-Fzoe6c z4m4;2&7#`3I(oYswUV>#Pij!=mCsaFNt$(dYf&2Dc>s^kXe90Ap`vR|ckzEeKfBz% z3Q`->5x3d=)ilEsufgh{H+#;m$86pmdvHzA>ki%Vsm_h2(4hOt=rTZ_`zu1|>+!IC znY`PlZ_Rz?${rrg@dxH={*ekzYQc8w39<2?S%V#{TxyZtBFq&PCK7^w21+_O6l3G$ zOSYr1^E$sXE`u4$W=L#qq$ltjV1G;j7due-G8uQHAT~kNvCfO+*<_{mF6)!k zP(r(>1mb^tNbWGqJ{Y(|P>;}53f@M33C+9@$ZBUVow6m$qM4sDUvV?998U5r(*Bfg>0&Xk9v=k(z^ypoCa86nIy&z$?9+n zN05-)r`H*mGtEC>Ai17a!+*1xwBCB7mNS=y5vlg696~m;^xUYH*b0tE>%ceBHmuDT zv>j6h>AoA(Z3C9dNeaZn8oxSoR_+J zTaEwp(Tm~JrTA*01_A%0$obwS3l^G=nU&|+JF{v2++SpltHlFJWdlTVOop^>h_yEs zqDb$jPL^nI-Sdr%B?{qYd12Y7iP;JJ%q!3{NwjkcoH zZY9Sofhu`YEkxZf^abnBSAX2lB?i$g`ySZl!8%48)r|Xxbr}{VEJgd7&Y5~I{pVj= zN0Pn%l&M#OL7#My0ileq5^%!4dWQuS%My3^q3taBdJh?;#>v#ETfR zz}krr5Cm0~u$_9x;PJ>UkJHu0kI~{YYXah0EF`Sb52Z3fO+OpCyWtBfw51UC`0(tF z{JLv7mEn5AwORXG^dNu_guzvpxE~wm3|gI4%zv?2*_$}7aRIjQmE_gPYGrd3l6AC! zd9mGeO$Km7)EJ#JdS&^q3qj)Kq};@J+3--O3==bP7kk})?*>W?AJAZ3p zHz)|0+t9LSXG;E!QkM8;bV(BrRW{- zp;D$Y_&%>y0i138n9sJ%%Ixwe67I61TCDdaaZW-pQXYcj6`QgSj@Y)8lnIL))%(}s zaXzGbCIvmZ_tFz3z1`ufd;ySi_%o_nk$D%$7s!_?d%3`<9RFoj!KL@#wvNTy8(M%R9QWf&-&{ZvqoUx4?xIZ0&`G^rLc;L&Tt3aA%+U5loyY_e`Y*Q|eg~Pd5xpD`_2E@pooWWL`xSYe z5Q&)V+{WOIkK~`L;Yaljs){2PNrsE6v8TMwnkN=&-4-qCCeU#YXjAgtZtFAy?&|$$ zP3*z4V@~`}$1EB`>M1x$g)^4$jJu&2bD&Ij3o_k= zy{qsgaaR4gcbFKtT7{OB_F!-!F2%=F3H+8IZCR`DwcF4RX$l^#h?(-r9D3H^k)}zo!`90S`%3NocciOm)@P;B)`qy>y``bOI5ArXqgL}$0 zxG0RScMR1)j{ic9$GH%FVuU_FJcxI+-Su>M;;}G&b9o$hV@ijAhC0ug-6oLb zbJ|oR5)9O0opu)5_GptMKI;AY*v99vo$cu%*R$s4*4E0?D!1xcCYRw=s%v@>xXqZ- zzwc&+nuSkwwh9`Knb$3^;rVL2>A4x>=>*!z=YyLjY2Z?Kzy8u*A8g6K&u?cH&8=4! z_jFbS24_^%aM-DJBoB=l?|JNTShl)+GgME9X8U-^udewP%IPXJWTVe43yhze9qwF& zkgS9q6%8EK5qs;po#?|4mRP!T>z?7S)T!~Rp+tG0M}$4~@)Y*BZOwTmf6Jch)^GKL z^(AZ5v&y<(U*Yq(8|AZt0razRaz)?*^tbVElF-v|5qok=`lBxv(5*(-Y`D1x@1v}C z@;|#=juE+BPP`yZ6du})1>Fg(^Zx#e7;-FXa1G5 zripX?Qw;z(-!qp+1mKQ1Y!)cFKe-^N`|a?`f}K|<+-hk^h0(tIO$cTmv0GV|F=-t) z?9dooS)DXHf41fO#53#=uCW8=olYmXrbfP5`7*Hf=UfwcJTK>}yuaC0j(E&Cmr-C` zxdVSMr->7jNYUtkRqMF5&_yF#KZz)G;4fU~MXP>&oLJ-P_&n%3+X}(&{7BCFi}R4_ z(UU~_`H$btOwLmpb-fp&P~<%x+j|kbO=`5~&AIg}fMc}d6`xg=IxpmKhH9tLFrQgX z^-pz99Q7nlbEU10QbbvjNj@E;qXxm!s*<74Lhi)Bfto7IdYN%P;~RQLYY$U0L~FWI zBp2V<7S`jZ=Ulm#?`VKSM(c47fjMV%au90tX!B!S{vs3i(5O>lLk(Zt&Ve6{s98}{ z%X7*LVA$mZSGrz9brebI7QS*Lr0);YhH1yg;n~Gp1JE~)c0+jV&Py6>!2`XS+-9m| zLA3hB%ygG#Ggx8$ZKeU!HCS@}ijPE&+KxP$fv_tv{b;@0i-Yqj8Y&-OH=8#@d}n~GnoR$t#MQp`0v?+%+tPb|-@iX3Ldo30Zs5CT z(0S(PL)LhCDbL21HxkV5uI<;JW5k`ClbG`1@f}Circ)NTU;lismli2mz`q!rrT=~4 z$;%5_&Gz|j0$T4tUdl-K-fu1uZ=Xa>7wi#=-W5^)62AkRg3l9~b?6_qvSVsU1tDp7 zi4yRu{+L0t<)nm*ELNGs@BcfPH*QJTeSsMt^$H$;mBP~~5cv@waZ!Ip|FmyvmKVI+ z|D6ae*gLS107f(v%O4FPo&2lcFC;m-;9LV90|h^hiSYC2Pi!N{haX(qls$GI?CS9prH+XMujJIBxp2WK>nPgdINd=7CCvv|!G z`QkH0i$bg@6YOc0MXUfQ;xfvH_jj{++~l2;3Os^-{D{Je6VGx^-u3W-7V~3+Q0LOX zfztWcuFep>UF9V0Kzx?|(EV;ya%~Ixe-9gKhNmCkdH_wZKO(|4+|*Ghe0rF_bt+3( z^?WD*xuYLU;cStzvCV%^+lKSQU_HnUA$iSZR&f?4v-C^?T%5^S!lpC=qHtdaDIdR` z!6BL#Ng%8g((^?8R2&XWfGvV4FL{vS*dxZ=t|Ncvh!RZ>t7j*Q_XYh9l!fPEq5n3 z6VDH#UkFf)*DCWq>&>F@U8&ARScHN}8q69IJ`4X_QR}tL^a&o{2dP&JdHk;711FSY zIUn$X*ftHH>z8ocz>gs~6{T4uZw~3Dp$_J3ZTVCg?=jmzfciw>DND+wtZ@ld8AVgC zR>h1d*}2j4g7^UAc>q>ilyK`}!Z*cqCQZ_8%3n?IoSpZ)Sv^0Wpqi^dd+rDC6U_p8 zm#gZnhW$_I3-;+M(g(L&@7~f&NmJA2hE+%$92jp{kmTSheBRN0lbQ2>a6WI~OQ()j zi+c|Ar+*7yOU9En9scFm9G}ezsd(nW$wnK|04W}e?a5~O(&A);TpP2a^O(>gKgko) zatUeX*G%u&%b5Q9)!{7Gw&uRYjrX-b_`#Owc?^i+rTIMA^QF7#OY2(uB1N!$PnRJqDtek)V^8=jyO1-v4syp3MWqv( z@xhW7+AzeD+Do12A7e2RdzP3acf@{GoXz8_bxv}aL1dQ;Yxptg(yGiA)>2Dvn z6(%@E#5fiq?Mh~9^F}|NL=e=I~$T~ zxzhzYvRS}uCfyarM+&|PF#G3lKNuL0^p_V4n!V%S^?@++=T({_+k&XQ?|ql25sUwq ze@%0|5d&yviru_)q36g67^PIb9qt)ekxh6J=z^b+`^Foih=JuoMq)=-!)PJ6&fgoo zOC3a51G|8^GonXz-^tN$b=PF^w<;S(Qg_%2>_7Al;t{tq1=nrB_K@=u?d14!68^>b z$fJA(Q-LeGzKvx`c`b}^9by{#Kphz+>wh_$ zpuaet`YNKh?SpQfgfSIh8s;ovSK8mu)C9D{S|Gd4E2-)tgBM=^vk7;e&6d}4`j0!K zxG>XxaE%Rr;S)vR7Mwxe*}oWAln8`?zDffIujkJL!2aPbeteh>@_b6c&0bb2dlr65 zW|%^)F7JfOIlEW3KP4<~?v>>;N9LT^bmEh7JYVZu&dj5i?JU^dWSqaF28wi*^%0}# z_X4e>W;(~sm;62}WMPR(uM+I;l04)%b}j(O5A4y&b?11-1=i0CAriFM;eb0H-uuc=7QT6UI|mvHgh z$g8XjO!uA8v#thmQpmICOQe13SNT5fqc!KBdhEhJ^GJp))`fdW- za}(d!&pHEWC7u|I(|yr|zb#hHoga#?b3=w2*AH+hnvv|BlMG^1)j9&krr9Ia9#RV> zQ-mLU52dW1c^PPc$C z7k{V1C!QfJ99SO@F;-1rBAN%_;dhA#@)Z&lKfB)4v?CRzpc*9nT6k~-wgq<=SK34} zC>{?iDdm`my@QvU8T%WPevmo#u$qB>j5VgZ+mW7`uEs5JXvRv`qt4i5TiVvuKQABC zE%IV#N-62XsmA;c5*fDJ-JjHlqW$K_Vb>_i8F}u8%hR)$owmF+N@8f6>srqWs?`}I zu!YnmLGbwwv!6`qWA??&O(;5v<@e!g$Gdxv;P~Yygop2YdEle!OB0%dMTh2VP!Q?( zNY~v)GuanOu!s19;?NL*)pg^#xek4cGB_;cVCssl*fJGOot0aO1{8FcOA)W*L>EwInmW zB(km3ieBQos)X5gD($-rDjmAKNpf}?!gyYhKynR^CjAhGstrtU!Qyo%gJRhgh5f&2 z78ig>o()w60 zdab0Qg~476u!Q}Vj+jt5I#;(@R>pyXWf#ali~1dR{>9@Xkw9IqGR$L=2(~dO4)D=2 z{6I?@lH^b3+0AzpUi{mW=fhGymnW`N=xD-*3y5##o_>n?PDXAn;d~k(rWx{B*v5-cNB_OXY6L8PT}L;GxoFn3O@Nm z`Ls^*J!=11qC9!#J_PWILxM$v^sS#aOkm?WSRsGcN^MQljHg`ec16L0Hi zW#}A&m8sDPVzX1u_bF})4{S21)EEa5ne3zPO%q^_rhZGIK`f}+y++QJ2tKyx`UHU@ zZk~zH7G(rh_&xqye~0L2Y?FB5cmzuCeGwrEvJJrl88uSo1_1)3!ee(*eycw#q7=Of zye9DJm}e2L5(ydRsw>h$~s9DfQ;{`9p3Zzy<;QZgF`COge!B)E7bF z_Fazf9riYn;seN>n{Y{?N*FZ`5bRQadocq{sw>L&Do zL20u<>|?w$++qB0Y`D^Y_Pd7rUnoZYFHH!t_suxzrAdRP)vjFwx=?f_NXzA@Y6#5H zpewpyknX$<-8WZfLg!I}1ks(llUzH?P5j;b_C*RE3}dZb_c@i& z=RJ{12L~d0_~*Ijyv=TLbo#oHS4$shgbM!w7$Qd8Q_tS!hkC}ve+>VDU2{u4b@KOG z27QuiclPck`~CdXez6v-Li^P#WzNh>T|ruBt7>5@VO1@%aISMQESra1))SU-v*CzU zxKRHrUF4UQ%8SK+i8mqGee(6o9;x$&dB0+S(0y2;{rZJ-{dOcX%dFYt#KtCQf7pY- zUIu`}Qff9Kv5XyIuLXM*M(fh{l`&D)%zJCCJUO5M!Z6^vq}8%`VY%%^fH@HmESTf8 z8~}uS2;$gt0I?iVX%qw^c5j{D8mzsQ0;yCYPdg86c^2C#aa=CkF@2$bE&d)mX(tF&Y99uj0 zz~>ayqjN9TD0S?a+iFj`?=5Fnw^s7gxV{4KrH?%J)MwWocKr2KP6uC$y&nJsrVd}3 zv%eWWC9Zs+j<)I`H&xI;`jWs0+tlprad+K`8-jH9)|XY3|W z0CC+JVwm_xH}+afAU)!N9*4cz5<+^%eYF>kbbj`V%mc`000^umuwX!o1M>%zGO%(mv5kgTWs5 zmKdG$fn_93!6w_QjZFoS9o5EJ1q({D@@c^)0v*vh<@};-Y=~RK$E#n!2JH}K0qqX& zIb?{kV3d!%K*K{BqEn|PS^Z>GtmYQHtH{aMG*I(0M1ZY>N;X!u;=M$V#%#T1b!!ukz2LmPl=<(ukM=!v3$wiGu7Kc8(zeV-A^R@<~&5L>w43#BAgVAOlMBMLuZJh?5CWYI3@P%mX2G^O!V!_yLDM3qYd} z99IbG129@608SYVd&Xf{B=4kaoLLHz*G4+&0oad5IsQqP)`^yw{J@EYUqA&|C?C=z zKFS3!@gChN3;ghoczCw1u?LWS!>pK{QL26Ha!F4qldRMV$<3&ew4`#orY7mTfLmgG zkz}V;NJ?UfUMnR_@AEU2zc;l~sW_|5PjW(uU5ST&cAADyODZ$J85%!sp#rdAIYj8c zBcbozcii*NeRkd4tKDbs9=@+|q3=SU=`tbR($C&KPWPRwe_{U%mc{2I>b}?uU5ye)TPi1b=h{Lmb-$m&1=#{#R zI$V;{SL;&h<+>6!*Zfper0Z(i1U)`_vGQQW8J||8>J}Ec$l{4uyG)n4C)>~Ee$6En zU~BJh{8tC&$ku)W5cXQYbHyeb_7QMicy?~QZOUPjlAS}Yn}gW%z=kFEU$E(i%{S~T zU~h+UWChMYCoFzh4$j^U_B^m3gZ&Kd4m?jh={IY!00Kr0X&jq&*n7arT=q7wsVPg} zu@I5nY3wavS6h|tW~=i%+e6EA9|C(RkVM^e*Sf*s$l^V_;@HoSr&soGcpu%9e$I>K z>&A2S=~CS*r&iasdbfBz@#HH5NNYo$fut`XU_(`+CRVkV2JeX{`;TmGE71x*X^%E; z0!V7J4IHg5Ku){mb^#>M?onQsr{8! zaGZMct@8f?@Ricf8&}5w0000bbVXQnWMOn=I%9HWVRU5xGB7bTEip1JFf~*#Fgi0d zIxsXVFflqXFp;RKV*mgEC3HntbYx+4WjbwdWNBu305UK!G%YbQEig4yFfckZG&(Re ZD=;xSFfict5#Im+002ovPDHLkV1o8P4nhC` literal 0 HcmV?d00001 diff --git a/doc/images/rss-filter-2.png b/doc/images/rss-filter-2.png new file mode 100644 index 0000000000000000000000000000000000000000..538b126ee4b0a4c92567674b14ce1354e6802c7e GIT binary patch literal 15604 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 QuK@rF5n18NpL%}(1@*7;J^%m! literal 0 HcmV?d00001 diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 00000000..78e28143 --- /dev/null +++ b/doc/index.html @@ -0,0 +1,212 @@ + + + + + MDwiki + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+
+ + diff --git a/tpl/page.footer.html b/tpl/page.footer.html index 448e9f8e..b2a2fcbb 100644 --- a/tpl/page.footer.html +++ b/tpl/page.footer.html @@ -1,5 +1,5 @@ {if="$newversion"}
Shaarli {$newversion|htmlspecialchars} is available.
-- 2.41.0