aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc/Example-patch---add-new-via-field-for-links.html
diff options
context:
space:
mode:
authorVirtualTam <virtualtam@flibidi.net>2015-07-22 05:02:10 +0200
committerVirtualTam <virtualtam@flibidi.net>2015-08-04 16:02:21 +0200
commit992af0b9d77cb4fbac2c37ef8d5896042d67a2a3 (patch)
tree4726baf18e7057eac3f9b6bdb5991fe6117814fc /doc/Example-patch---add-new-via-field-for-links.html
parent96db105e4c0833324f7168edb5673278de8ccd54 (diff)
downloadShaarli-992af0b9d77cb4fbac2c37ef8d5896042d67a2a3.tar.gz
Shaarli-992af0b9d77cb4fbac2c37ef8d5896042d67a2a3.tar.zst
Shaarli-992af0b9d77cb4fbac2c37ef8d5896042d67a2a3.zip
Doc: sync from Wiki, generate HTML
Closes #291 Fixes #227 Modifications - HTML content: match the new Wiki structure - Makefile - generate a custom HTML sidebar - include the sidebar on all pages - infer and prepend page titles - handle relative links - add title metadata, e.g. Shaarli - <Page Name> Signed-off-by: VirtualTam <virtualtam@flibidi.net>
Diffstat (limited to 'doc/Example-patch---add-new-via-field-for-links.html')
-rw-r--r--doc/Example-patch---add-new-via-field-for-links.html141
1 files changed, 92 insertions, 49 deletions
diff --git a/doc/Example-patch---add-new-via-field-for-links.html b/doc/Example-patch---add-new-via-field-for-links.html
index 7df9d253..44352d3e 100644
--- a/doc/Example-patch---add-new-via-field-for-links.html
+++ b/doc/Example-patch---add-new-via-field-for-links.html
@@ -4,7 +4,7 @@
4 <meta charset="utf-8"> 4 <meta charset="utf-8">
5 <meta name="generator" content="pandoc"> 5 <meta name="generator" content="pandoc">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
7 <title></title> 7 <title>Shaarli - Example patch add new via field for links</title>
8 <style type="text/css">code{white-space: pre;}</style> 8 <style type="text/css">code{white-space: pre;}</style>
9 <!--[if lt IE 9]> 9 <!--[if lt IE 9]>
10 <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 10 <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
@@ -12,12 +12,55 @@
12 <link rel="stylesheet" href="github-markdown.css"> 12 <link rel="stylesheet" href="github-markdown.css">
13</head> 13</head>
14<body> 14<body>
15<div id="local-sidebar">
16<ul>
17<li><a href="Home.html">Home</a></li>
18<li>Installation
19<ul>
20<li><a href="Server-requirements.html">Server requirements</a></li>
21<li><a href="Server-configuration.html">Server configuration</a></li>
22<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
23</ul></li>
24<li><a href="Usage.html">Usage</a>
25<ul>
26<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
27<li><a href="Firefox-share.html">Firefox share</a></li>
28<li><a href="RSS-feeds.html">RSS feeds</a></li>
29</ul></li>
30<li>How To
31<ul>
32<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
33<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>
34<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
35</ul></li>
36<li><a href="Troubleshooting.html">Troubleshooting</a></li>
37<li><a href="Development.html">Development</a>
38<ul>
39<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
40<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
41<li><a href="Directory-structure.html">Directory structure</a></li>
42<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
43<li><a href="Plugin-System.html">Plugin System</a></li>
44<li><a href="Security.html">Security</a></li>
45<li><a href="Static-analysis.html">Static analysis</a></li>
46<li><a href="Theming.html">Theming</a></li>
47<li><a href="Unit-tests.html">Unit tests</a></li>
48</ul></li>
49<li>About
50<ul>
51<li><a href="FAQ.html">FAQ</a></li>
52<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
53<li><a href="TODO.html">TODO</a></li>
54</ul></li>
55</ul>
56</div>
57<h1 id="example-patch-add-new-via-field-for-links">Example patch add new via field for links</h1>
15<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> 58<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>
16<p>Thanks to @Knah-Tsaeb in <a href="https://github.com/sebsauvage/Shaarli/pull/158">https://github.com/sebsauvage/Shaarli/pull/158</a></p> 59<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>
17<pre><code>From e0f363c18e8fe67990ed2bb1a08652e24e70bbcb Mon Sep 17 00:00:00 2001 60<pre><code>From e0f363c18e8fe67990ed2bb1a08652e24e70bbcb Mon Sep 17 00:00:00 2001
18From: Knah Tsaeb &lt;knah-tsaeb@knah-tsaeb.org&gt; 61From: Knah Tsaeb &lt;knah-tsaeb@knah-tsaeb.org&gt;
19Date: Fri, 11 Oct 2013 15:18:37 +0200 62Date: Fri, 11 Oct 2013 15:18:37 +0200
20Subject: [PATCH] Add a &quot;via&quot;/origin property for links, add new input in &quot;edit link&quot; dialog 63Subject: [PATCH] Add a &quot;via&quot;/origin property for links, add new input in &quot;edit link&quot; dialog[](.html)
21Thanks to: 64Thanks to:
22* https://github.com/Knah-Tsaeb/Shaarli/commit/040eb18ec8cdabd5ea855e108f81f97fbf0478c4 65* https://github.com/Knah-Tsaeb/Shaarli/commit/040eb18ec8cdabd5ea855e108f81f97fbf0478c4
23* https://github.com/Knah-Tsaeb/Shaarli/commit/4123658eae44d7564d1128ce52ddd5689efee813 66* https://github.com/Knah-Tsaeb/Shaarli/commit/4123658eae44d7564d1128ce52ddd5689efee813
@@ -33,27 +76,27 @@ diff --git a/index.php b/index.php
33index 6fae2f8..53f798e 100644 76index 6fae2f8..53f798e 100644
34--- a/index.php 77--- a/index.php
35+++ b/index.php 78+++ b/index.php
36@@ -436,6 +436,12 @@ if (isset($_POST[&#39;login&#39;])) 79@@ -436,6 +436,12 @@ if (isset($_POST[&#39;login&#39;]))[](.html)
37 // ------------------------------------------------------------------------------------------ 80 // ------------------------------------------------------------------------------------------
38 // Misc utility functions: 81 // Misc utility functions:
39 82
40+// Try to get just domain for @via 83+// Try to get just domain for @via
41+function getJustDomain($url){ 84+function getJustDomain($url){
42+ $parts = parse_url($url); 85+ $parts = parse_url($url);
43+ return trim($parts[&#39;host&#39;]); 86+ return trim($parts[&#39;host&#39;]);[](.html)
44+ } 87+ }
45+ 88+
46 // Returns the server URL (including port and http/https), without path. 89 // Returns the server URL (including port and http/https), without path.
47 // e.g. &quot;http://myserver.com:8080&quot; 90 // e.g. &quot;http://myserver.com:8080&quot;
48 // You can append $_SERVER[&#39;SCRIPT_NAME&#39;] to get the current script URL. 91 // You can append $_SERVER[&#39;SCRIPT_NAME&#39;] to get the current script URL.[](.html)
49@@ -799,7 +805,8 @@ class linkdb implements Iterator, Countable, ArrayAccess 92@@ -799,7 +805,8 @@ class linkdb implements Iterator, Countable, ArrayAccess
50 $found= (strpos(strtolower($l[&#39;title&#39;]),$s)!==false) 93 $found= (strpos(strtolower($l[&#39;title&#39;]),$s)!==false)[](.html)
51 || (strpos(strtolower($l[&#39;description&#39;]),$s)!==false) 94 || (strpos(strtolower($l[&#39;description&#39;]),$s)!==false)[](.html)
52 || (strpos(strtolower($l[&#39;url&#39;]),$s)!==false) 95 || (strpos(strtolower($l[&#39;url&#39;]),$s)!==false)[](.html)
53- || (strpos(strtolower($l[&#39;tags&#39;]),$s)!==false); 96- || (strpos(strtolower($l[&#39;tags&#39;]),$s)!==false);[](.html)
54+ || (strpos(strtolower($l[&#39;tags&#39;]),$s)!==false) 97+ || (strpos(strtolower($l[&#39;tags&#39;]),$s)!==false)[](.html)
55+ || (!empty($l[&#39;via&#39;]) &amp;&amp; (strpos(strtolower($l[&#39;via&#39;]),$s)!==false)); 98+ || (!empty($l[&#39;via&#39;]) &amp;&amp; (strpos(strtolower($l[&#39;via&#39;]),$s)!==false));[](.html)
56 if ($found) $filtered[$l[&#39;linkdate&#39;]] = $l; 99 if ($found) $filtered[$l[&#39;linkdate&#39;[ = $l;](-=-$l;.html)
57 } 100 }
58 krsort($filtered); 101 krsort($filtered);
59@@ -814,7 +821,7 @@ class linkdb implements Iterator, Countable, ArrayAccess 102@@ -814,7 +821,7 @@ class linkdb implements Iterator, Countable, ArrayAccess
@@ -63,74 +106,74 @@ index 6fae2f8..53f798e 100644
63- foreach($this-&gt;links as $l) 106- foreach($this-&gt;links as $l)
64+ foreach($this-&gt; links as $l) 107+ foreach($this-&gt; links as $l)
65 { 108 {
66 $linktags = explode(&#39; &#39;,($casesensitive?$l[&#39;tags&#39;]:strtolower($l[&#39;tags&#39;]))); 109 $linktags = explode(&#39; &#39;,($casesensitive?$l[&#39;tags&#39;]:strtolower($l[&#39;tags&#39;])));[](.html)
67 if (count(array_intersect($linktags,$searchtags)) == count($searchtags)) 110 if (count(array_intersect($linktags,$searchtags)) == count($searchtags))
68@@ -905,7 +912,7 @@ function showRSS() 111@@ -905,7 +912,7 @@ function showRSS()
69 else $linksToDisplay = $LINKSDB; 112 else $linksToDisplay = $LINKSDB;
70 $nblinksToDisplay = 50; // Number of links to display. 113 $nblinksToDisplay = 50; // Number of links to display.
71 if (!empty($_GET[&#39;nb&#39;])) // In URL, you can specificy the number of links. Example: nb=200 or nb=all for all links. 114 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)
72- { 115- {
73+ { 116+ {
74 $nblinksToDisplay = $_GET[&#39;nb&#39;]==&#39;all&#39; ? count($linksToDisplay) : max($_GET[&#39;nb&#39;]+0,1) ; 117 $nblinksToDisplay = $_GET[&#39;nb&#39;]==&#39;all&#39; ? count($linksToDisplay) : max($_GET[&#39;nb&#39;]+0,1) ;[](.html)
75 } 118 }
76 119
77@@ -944,7 +951,12 @@ function showRSS() 120@@ -944,7 +951,12 @@ function showRSS()
78 // If user wants permalinks first, put the final link in description 121 // If user wants permalinks first, put the final link in description
79 if ($usepermalinks===true) $descriptionlink = &#39;(&lt;a href=&quot;&#39;.$absurl.&#39;&quot;&gt;Link&lt;/a&gt;)&#39;; 122 if ($usepermalinks===true) $descriptionlink = &#39;(&lt;a href=&quot;&#39;.$absurl.&#39;&quot;&gt;Link&lt;/a&gt;)&#39;;
80 if (strlen($link[&#39;description&#39;])&gt;0) $descriptionlink = &#39;&lt;br&gt;&#39;.$descriptionlink; 123 if (strlen($link[&#39;description&#39;])&gt;0) $descriptionlink = &#39;&lt;br&gt;&#39;.$descriptionlink;[](.html)
81- 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;; 124- 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)
82+ if(!empty($link[&#39;via&#39;])){ 125+ if(!empty($link[&#39;via&#39;])){[](.html)
83+ $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;; 126+ $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)
84+ } else { 127+ } else {
85+ $via = &#39;&#39;; 128+ $via = &#39;&#39;;
86+ } 129+ }
87+ 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;; 130+ 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)
88 $i++; 131 $i++;
89 } 132 }
90 echo &#39;&lt;/channel&gt;&lt;/rss&gt;&lt;!-- Cached version of &#39;.htmlspecialchars(pageUrl()).&#39; --&gt;&#39;; 133 echo &#39;&lt;/channel&gt;&lt;/rss&gt;&lt;!-- Cached version of &#39;.htmlspecialchars(pageUrl()).&#39; --&gt;&#39;;
91@@ -980,7 +992,7 @@ function showATOM() 134@@ -980,7 +992,7 @@ function showATOM()
92 else $linksToDisplay = $LINKSDB; 135 else $linksToDisplay = $LINKSDB;
93 $nblinksToDisplay = 50; // Number of links to display. 136 $nblinksToDisplay = 50; // Number of links to display.
94 if (!empty($_GET[&#39;nb&#39;])) // In URL, you can specificy the number of links. Example: nb=200 or nb=all for all links. 137 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)
95- { 138- {
96+ { 139+ {
97 $nblinksToDisplay = $_GET[&#39;nb&#39;]==&#39;all&#39; ? count($linksToDisplay) : max($_GET[&#39;nb&#39;]+0,1) ; 140 $nblinksToDisplay = $_GET[&#39;nb&#39;]==&#39;all&#39; ? count($linksToDisplay) : max($_GET[&#39;nb&#39;]+0,1) ;[](.html)
98 } 141 }
99 142
100@@ -1006,11 +1018,16 @@ function showATOM() 143@@ -1006,11 +1018,16 @@ function showATOM()
101 144
102 // Add permalink in description 145 // Add permalink in description
103 $descriptionlink = htmlspecialchars(&#39;(&lt;a href=&quot;&#39;.$guid.&#39;&quot;&gt;Permalink&lt;/a&gt;)&#39;); 146 $descriptionlink = htmlspecialchars(&#39;(&lt;a href=&quot;&#39;.$guid.&#39;&quot;&gt;Permalink&lt;/a&gt;)&#39;);
104+ if(isset($link[&#39;via&#39;]) &amp;&amp; !empty($link[&#39;via&#39;])){ 147+ if(isset($link[&#39;via&#39;]) &amp;&amp; !empty($link[&#39;via&#39;])){[](.html)
105+ $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;); 148+ $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)
106+ } else { 149+ } else {
107+ $via = &#39;&#39;; 150+ $via = &#39;&#39;;
108+ } 151+ }
109 // If user wants permalinks first, put the final link in description 152 // If user wants permalinks first, put the final link in description
110 if ($usepermalinks===true) $descriptionlink = htmlspecialchars(&#39;(&lt;a href=&quot;&#39;.$absurl.&#39;&quot;&gt;Link&lt;/a&gt;)&#39;); 153 if ($usepermalinks===true) $descriptionlink = htmlspecialchars(&#39;(&lt;a href=&quot;&#39;.$absurl.&#39;&quot;&gt;Link&lt;/a&gt;)&#39;);
111 if (strlen($link[&#39;description&#39;])&gt;0) $descriptionlink = &#39;&amp;lt;br&amp;gt;&#39;.$descriptionlink; 154 if (strlen($link[&#39;description&#39;])&gt;0) $descriptionlink = &#39;&amp;lt;br&amp;gt;&#39;.$descriptionlink;[](.html)
112 155
113- $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;; 156- $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)
114+ $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;; 157+ $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)
115 if ($link[&#39;tags&#39;]!=&#39;&#39;) // Adding tags to each ATOM entry (as mentioned in ATOM specification) 158 if ($link[&#39;tags&#39;]!=&#39;&#39;) // Adding tags to each ATOM entry (as mentioned in ATOM specification)[](.html)
116 { 159 {
117 foreach(explode(&#39; &#39;,$link[&#39;tags&#39;]) as $tag) 160 foreach(explode(&#39; &#39;,$link[&#39;tags&#39;]) as $tag)[](.html)
118@@ -1478,7 +1495,7 @@ function renderPage() 161@@ -1478,7 +1495,7 @@ function renderPage()
119 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;)) 162 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;))
120 $url = &#39;http://&#39;.$url; 163 $url = &#39;http://&#39;.$url;
121 $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), 164 $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)
122- &#39;linkdate&#39;=&gt;$linkdate,&#39;tags&#39;=&gt;str_replace(&#39;,&#39;,&#39; &#39;,$tags)); 165- &#39;linkdate&#39;=&gt;$linkdate,&#39;tags&#39;=&gt;str_replace(&#39;,&#39;,&#39; &#39;,$tags));
123+ &#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;])); 166+ &#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)
124 if ($link[&#39;title&#39;]==&#39;&#39;) $link[&#39;title&#39;]=$link[&#39;url&#39;]; // If title is empty, use the URL as title. 167 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)
125 $LINKSDB[$linkdate] = $link; 168 $LINKSDB[$linkdate] = $link;[](.html)
126 $LINKSDB-&gt;savedb(); // Save to disk. 169 $LINKSDB-&gt;savedb(); // Save to disk.
127@@ -1556,7 +1573,8 @@ function renderPage() 170@@ -1556,7 +1573,8 @@ function renderPage()
128 $title = (empty($_GET[&#39;title&#39;]) ? &#39;&#39; : $_GET[&#39;title&#39;] ); // Get title if it was provided in URL (by the bookmarklet). 171 $title = (empty($_GET[&#39;title&#39;]) ? &#39;&#39; : $_GET[&#39;title&#39;] ); // Get title if it was provided in URL (by the bookmarklet).[](.html)
129 $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] 172 $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)
130 $tags = (empty($_GET[&#39;tags&#39;]) ? &#39;&#39; : $_GET[&#39;tags&#39;] ); // Get tags if it was provided in URL 173 $tags = (empty($_GET[&#39;tags&#39;]) ? &#39;&#39; : $_GET[&#39;tags&#39;] ); // Get tags if it was provided in URL[](.html)
131- $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 174- $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)
132+ $via = (empty($_GET[&#39;via&#39;]) ? &#39;&#39; : $_GET[&#39;via&#39;] ); 175+ $via = (empty($_GET[&#39;via&#39;]) ? &#39;&#39; : $_GET[&#39;via&#39;] );[](.html)
133+ $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 176+ $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)
134 if (($url!=&#39;&#39;) &amp;&amp; parse_url($url,PHP_URL_SCHEME)==&#39;&#39;) $url = &#39;http://&#39;.$url; 177 if (($url!=&#39;&#39;) &amp;&amp; parse_url($url,PHP_URL_SCHEME)==&#39;&#39;) $url = &#39;http://&#39;.$url;
135 // 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.) 178 // 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.)
136 if (empty($title) &amp;&amp; parse_url($url,PHP_URL_SCHEME)==&#39;http&#39;) 179 if (empty($title) &amp;&amp; parse_url($url,PHP_URL_SCHEME)==&#39;http&#39;)
@@ -141,10 +184,10 @@ index 6fae2f8..53f798e 100644
141- 184-
142+ 185+
143 // If found, extract encoding. 186 // If found, extract encoding.
144 if (!empty($meta[0])) 187 if (!empty($meta[0]))[](.html)
145 { 188 {
146@@ -1577,7 +1595,7 @@ function renderPage() 189@@ -1577,7 +1595,7 @@ function renderPage()
147 $html_charset = (!empty($enc[1])) ? strtolower($enc[1]) : &#39;utf-8&#39;; 190 $html_charset = (!empty($enc[1])) ? strtolower($enc[1]) : &#39;utf-8&#39;;[](.html)
148 } 191 }
149 else { $html_charset = &#39;utf-8&#39;; } 192 else { $html_charset = &#39;utf-8&#39;; }
150- 193-
@@ -162,13 +205,13 @@ index 6fae2f8..53f798e 100644
162 205
163 $PAGE = new pageBuilder; 206 $PAGE = new pageBuilder;
164@@ -1842,6 +1860,9 @@ function buildLinkList($PAGE,$LINKSDB) 207@@ -1842,6 +1860,9 @@ function buildLinkList($PAGE,$LINKSDB)
165 $taglist = explode(&#39; &#39;,$link[&#39;tags&#39;]); 208 $taglist = explode(&#39; &#39;,$link[&#39;tags&#39;]);[](.html)
166 uasort($taglist, &#39;strcasecmp&#39;); 209 uasort($taglist, &#39;strcasecmp&#39;);
167 $link[&#39;taglist&#39;]=$taglist; 210 $link[&#39;taglist&#39;]=$taglist;[](.html)
168+ if(!empty($link[&#39;via&#39;])){ 211+ if(!empty($link[&#39;via&#39;])){[](.html)
169+ $link[&#39;via&#39;]=htmlspecialchars($link[&#39;via&#39;]); 212+ $link[&#39;via&#39;]=htmlspecialchars($link[&#39;via&#39;]);[](.html)
170+ } 213+ }
171 $linkDisp[$keys[$i]] = $link; 214 $linkDisp[$keys[$i[ = $link;](-=-$link;.html)
172 $i++; 215 $i++;
173 } 216 }
174diff --git a/tpl/editlink.html b/tpl/editlink.html 217diff --git a/tpl/editlink.html b/tpl/editlink.html
@@ -180,7 +223,7 @@ index 4a2c30c..14d4f9c 100644
180 &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; 223 &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;
181 &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; 224 &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;
182+ &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; 225+ &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;
183 {if condition=&quot;($link_is_new &amp;&amp; $GLOBALS[&#39;privateLinkByDefault&#39;]==true) || $link.private == true&quot;} 226 {if condition=&quot;($link_is_new &amp;&amp; $GLOBALS[&#39;privateLinkByDefault&#39;]==true) || $link.private == true&quot;}[](.html)
184 &lt;input type=&quot;checkbox&quot; checked=&quot;checked&quot; name=&quot;lf_private&quot; id=&quot;lf_private&quot;&gt; 227 &lt;input type=&quot;checkbox&quot; checked=&quot;checked&quot; name=&quot;lf_private&quot; id=&quot;lf_private&quot;&gt;
185 &amp;nbsp;&lt;label for=&quot;lf_private&quot;&gt;&lt;i&gt;Private&lt;/i&gt;&lt;/label&gt;&lt;br&gt; 228 &amp;nbsp;&lt;label for=&quot;lf_private&quot;&gt;&lt;i&gt;Private&lt;/i&gt;&lt;/label&gt;&lt;br&gt;
186diff --git a/tpl/linklist.html b/tpl/linklist.html 229diff --git a/tpl/linklist.html b/tpl/linklist.html
@@ -192,7 +235,7 @@ index ddc38cb..0a8475f 100644
192 &lt;br&gt; 235 &lt;br&gt;
193 {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} 236 {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}
194+ {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} 237+ {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}
195 {if=&quot;!$GLOBALS[&#39;config&#39;][&#39;HIDE_TIMESTAMPS&#39;] || isLoggedIn()&quot;} 238 {if=&quot;!$GLOBALS[&#39;config&#39;[&#39;HIDE_TIMESTAMPS&#39;] || isLoggedIn()&quot;}](&#39;HIDE_TIMESTAMPS&#39;]-||-isLoggedIn()&quot;}.html)
196 &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; 239 &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;
197 {else} 240 {else}
198-- 241--