aboutsummaryrefslogtreecommitdiffhomepage
path: root/tpl/default
diff options
context:
space:
mode:
Diffstat (limited to 'tpl/default')
-rw-r--r--tpl/default/404.html17
-rw-r--r--tpl/default/addlink.html16
-rw-r--r--tpl/default/changepassword.html15
-rw-r--r--tpl/default/changetag.html34
-rw-r--r--tpl/default/configure.html121
-rw-r--r--tpl/default/css/reset.css6
-rw-r--r--tpl/default/css/shaarli.css1202
-rw-r--r--tpl/default/daily.html101
-rw-r--r--tpl/default/dailyrss.html16
-rw-r--r--tpl/default/editlink.html57
-rw-r--r--tpl/default/export.bookmarks.html10
-rw-r--r--tpl/default/export.html28
-rw-r--r--tpl/default/feed.atom.html42
-rw-r--r--tpl/default/feed.rss.html39
-rw-r--r--tpl/default/images/50pc_transparent.pngbin0 -> 599 bytes
-rw-r--r--tpl/default/images/Paper_texture_v5_by_bashcorpo_w1000.jpgbin0 -> 127449 bytes
-rw-r--r--tpl/default/images/calendar.pngbin0 -> 650 bytes
-rw-r--r--tpl/default/images/floral_left.pngbin0 -> 1284 bytes
-rw-r--r--tpl/default/images/floral_right.pngbin0 -> 1309 bytes
-rw-r--r--tpl/default/images/private.pngbin0 -> 813 bytes
-rw-r--r--tpl/default/images/squiggle.pngbin0 -> 720 bytes
-rw-r--r--tpl/default/images/squiggle_closing.pngbin0 -> 1244 bytes
-rw-r--r--tpl/default/images/tag_blue.pngbin0 -> 714 bytes
-rw-r--r--tpl/default/import.html33
-rw-r--r--tpl/default/includes.html15
-rw-r--r--tpl/default/install.html35
-rw-r--r--tpl/default/linklist.html151
-rw-r--r--tpl/default/linklist.paging.html32
-rw-r--r--tpl/default/loginform.html38
-rw-r--r--tpl/default/opensearch.html45
-rw-r--r--tpl/default/page.footer.html31
-rw-r--r--tpl/default/page.header.html59
-rw-r--r--tpl/default/page.html9
-rw-r--r--tpl/default/picwall.html44
-rw-r--r--tpl/default/pluginsadmin.html134
-rw-r--r--tpl/default/readme.txt42
-rw-r--r--tpl/default/tagcloud.html31
-rw-r--r--tpl/default/tools.html104
38 files changed, 2507 insertions, 0 deletions
diff --git a/tpl/default/404.html b/tpl/default/404.html
new file mode 100644
index 00000000..53e98e2e
--- /dev/null
+++ b/tpl/default/404.html
@@ -0,0 +1,17 @@
1<!DOCTYPE html>
2<html>
3<head>
4 {include="includes"}
5</head>
6<body>
7<div id="pageheader">
8 {include="page.header"}
9</div>
10<div class="error-container">
11 <h1>404 Not found <small>Oh crap!</small></h1>
12 <p>{$error_message}</p>
13 <p>Would you mind <a href="?">clicking here</a>?</p>
14</div>
15{include="page.footer"}
16</body>
17</html>
diff --git a/tpl/default/addlink.html b/tpl/default/addlink.html
new file mode 100644
index 00000000..da50f45e
--- /dev/null
+++ b/tpl/default/addlink.html
@@ -0,0 +1,16 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}</head>
4<body onload="document.addform.post.focus();">
5<div id="pageheader">
6 {include="page.header"}
7 <div id="headerform">
8 <form method="GET" action="" name="addform" class="addform">
9 <input type="text" name="post" class="linkurl">
10 <input type="submit" value="Add link" class="bigbutton">
11 </form>
12 </div>
13</div>
14{include="page.footer"}
15</body>
16</html>
diff --git a/tpl/default/changepassword.html b/tpl/default/changepassword.html
new file mode 100644
index 00000000..c40daf9d
--- /dev/null
+++ b/tpl/default/changepassword.html
@@ -0,0 +1,15 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}</head>
4<body onload="document.changepasswordform.oldpassword.focus();">
5<div id="pageheader">
6 {include="page.header"}
7 <form method="POST" action="#" name="changepasswordform" id="changepasswordform">
8 Old password: <input type="password" name="oldpassword">&nbsp; &nbsp;
9 New password: <input type="password" name="setpassword">
10 <input type="hidden" name="token" value="{$token}">
11 <input type="submit" name="Save" value="Save password" class="bigbutton"></form>
12</div>
13{include="page.footer"}
14</body>
15</html> \ No newline at end of file
diff --git a/tpl/default/changetag.html b/tpl/default/changetag.html
new file mode 100644
index 00000000..a0df3328
--- /dev/null
+++ b/tpl/default/changetag.html
@@ -0,0 +1,34 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}
4 <link type="text/css" rel="stylesheet" href="inc/awesomplete.css#" />
5 <script src="inc/awesomplete.min.js#"></script>
6</head>
7<body onload="document.changetag.fromtag.focus();">
8<div id="pageheader">
9 {include="page.header"}
10 <form method="POST" action="" name="changetag" id="changetag">
11 <input type="hidden" name="token" value="{$token}">
12 <div>
13 <label for="fromtag">Tag:</label>
14 </div>
15 <div>
16 <input type="text" name="fromtag" id="fromtag" list="tagsList" autocomplete="off" class="awesomplete" data-minChars="1" />
17 <datalist id="tagsList">
18 {loop="$tags"}<option>{$key}</option>{/loop}
19 </datalist>
20 </div>
21
22 <div>
23 <input type="text" name="totag" id="totag">
24 <input type="submit" name="renametag" value="Rename tag" class="bigbutton">
25 &nbsp;&nbsp;or&nbsp; <input type="submit" name="deletetag" value="Delete tag" class="bigbutton" onClick="return confirmDeleteTag();">
26 </div>
27 </form>
28 <div class="clear white">(Case sensitive)</div>
29</div>
30<script>function confirmDeleteTag() { var agree=confirm("Are you sure you want to delete this tag from all links ?"); if (agree) return true ; else return false ; }</script>
31</div>
32{include="page.footer"}
33</body>
34</html>
diff --git a/tpl/default/configure.html b/tpl/default/configure.html
new file mode 100644
index 00000000..5820e6e4
--- /dev/null
+++ b/tpl/default/configure.html
@@ -0,0 +1,121 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}</head>
4<body onload="document.configform.title.focus();">
5<div id="pageheader">
6 {include="page.header"}
7 {$timezone_js}
8 <form method="POST" action="#" name="configform" id="configform">
9 <input type="hidden" name="token" value="{$token}">
10 <table id="configuration_table">
11
12 <tr>
13 <td><b>Page title:</b></td>
14 <td><input type="text" name="title" id="title" size="50" value="{$title}"></td>
15 </tr>
16
17 <tr>
18 <td><b>Title link:</b></td>
19 <td><input type="text" name="titleLink" id="titleLink" size="50" value="{$titleLink}"><br/><label
20 for="titleLink">(default value is: ?)</label></td>
21 </tr>
22
23 <tr>
24 <td><b>Theme:</b></td>
25 <td>
26 <select name="theme" id="theme">
27 {loop="$theme_available"}
28 <option value="{$value}" {if="$value===$theme"}selected{/if}>
29 {$value|ucfirst}
30 </option>
31 {/loop}
32 </select>
33 </td>
34 </tr>
35
36 <tr>
37 <td><b>Timezone:</b></td>
38 <td>{$timezone_form}</td>
39 </tr>
40
41 <tr>
42 <td><b>Redirector</b></td>
43 <td>
44 <input type="text" name="redirector" id="redirector" size="50" value="{$redirector}"><br>
45 (e.g. <i>http://anonym.to/?</i> will mask the HTTP_REFERER)
46 </td>
47 </tr>
48
49 <tr>
50 <td><b>Security:</b></td>
51 <td>
52 <input type="checkbox" name="disablesessionprotection" id="disablesessionprotection"
53 {if="$session_protection_disabled"}checked{/if}>
54 <label
55 for="disablesessionprotection">&nbsp;Disable session cookie hijacking protection (Check this if you get
56 disconnected often or if your IP address changes often.)</label>
57 </td>
58 </tr>
59
60 <tr>
61 <td valign="top"><b>New link:</b></td>
62 <td>
63 <input type="checkbox" name="privateLinkByDefault" id="privateLinkByDefault"
64 {if="$private_links_default"}checked{/if}/>
65 <label for="privateLinkByDefault">
66 &nbsp;All new links are private by default
67 </label>
68 </td>
69 </tr>
70 <tr>
71 <td valign="top"><b>RSS direct links</b></td>
72 <td>
73 <input type="checkbox" name="enableRssPermalinks" id="enableRssPermalinks"
74 {if="$enable_rss_permalinks"}checked{/if}/>
75 <label for="enableRssPermalinks">
76 &nbsp;Disable it to use permalinks in RSS feed instead of direct links to your shaared links. Currently <b>
77 {if="$enable_rss_permalinks"}enabled{else}disabled{/if}.</b>
78 </label>
79 </td>
80 </tr>
81 <tr>
82 <td valign="top"><b>Hide public links</b></td>
83 <td>
84 <input type="checkbox" name="hidePublicLinks" id="hidePublicLinks"
85 {if="$hide_public_links"}checked{/if}/>
86 <label for="hidePublicLinks">&nbsp;Do not show any links if the user is not logged in.</label>
87 </td>
88 </tr>
89 <tr>
90 <td valign="top"><b>Update:</b></td>
91 <td>
92 <input type="checkbox" name="updateCheck" id="updateCheck"
93 {if="$enable_update_check"}checked{/if}/>
94 <label for="updateCheck">&nbsp;Notify me when a new release is ready</label>
95 </td>
96 </tr>
97 <tr>
98 <td valign="top"><b>Enable REST API</b></td>
99 <td>
100 <input type="checkbox" name="apiEnabled" id="apiEnabled"
101 {if="$api_enabled"}checked{/if}/>
102 <label for="apiEnabled">&nbsp;Allow third party software to use Shaarli such as mobile application.</label>
103 </td>
104 </tr>
105 <tr>
106 <td valign="top"><b>API secret</b></td>
107 <td>
108 <input type="text" name="apiSecret" id="apiSecret" size="50" value="{$api_secret}" />
109 </td>
110 </tr>
111
112 <tr>
113 <td></td>
114 <td class="right"><input type="submit" name="Save" value="Save config" class="bigbutton"></td>
115 </tr>
116 </table>
117 </form>
118</div>
119{include="page.footer"}
120</body>
121</html>
diff --git a/tpl/default/css/reset.css b/tpl/default/css/reset.css
new file mode 100644
index 00000000..e29699e2
--- /dev/null
+++ b/tpl/default/css/reset.css
@@ -0,0 +1,6 @@
1/* CSS Reset from Yahoo to cope with browsers CSS inconsistencies. */
2/*
3 Copyright (c) 2010, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.com/yui/license.html
4 version: 2.8.2r1
5 */
6html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var,optgroup{font-style:inherit;font-weight:inherit;}del,ins{text-decoration:none;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:baseline;}sub{vertical-align:baseline;}legend{color:#000;}input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;}input,button,textarea,select{*font-size:100%;} \ No newline at end of file
diff --git a/tpl/default/css/shaarli.css b/tpl/default/css/shaarli.css
new file mode 100644
index 00000000..10709b6a
--- /dev/null
+++ b/tpl/default/css/shaarli.css
@@ -0,0 +1,1202 @@
1/* Cascading Stylesheet for Shaarli - https://github.com/shaarli/Shaarli */
2
3body {
4 font-family: "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;
5 font-size: 10pt;
6 background-color: #ffffff;
7 word-wrap: break-word;
8}
9
10input, textarea {
11 background-color: #dedede;
12 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#dedede), to(#ffffff));
13 background: -webkit-linear-gradient(#dedede, #ffffff);
14 background: -moz-linear-gradient(#dedede, #ffffff);
15 background: -ms-linear-gradient(#dedede, #ffffff);
16 background: -o-linear-gradient(#dedede, #ffffff);
17 background: linear-gradient(#dedede, #ffffff);
18 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
19 padding: 5px;
20 border-radius: 3px 3px 3px 3px;
21 border: none;
22 color: #000;
23}
24
25a {
26 text-decoration: none;
27}
28
29h1 {
30 font-size: 20pt;
31 font-weight: bold;
32 font-style: italic;
33 margin-bottom: 20px;
34}
35
36em {
37 font-style: italic;
38}
39
40strong {
41 font-weight: bold;
42}
43
44/* Buttons */
45.bigbutton {
46 background-color: #c0c0c0;
47 background: -moz-linear-gradient(#c0c0c0, #ffffff) repeat scroll 0 0 transparent;
48 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#c0c0c0), to(#ffffff));
49 background: -webkit-linear-gradient(#c0c0c0, #ffffff);
50 background: -ms-linear-gradient(#c0c0c0, #ffffff);
51 background: -o-linear-gradient(#c0c0c0, #ffffff);
52 background: linear-gradient(#c0c0c0, #ffffff);
53 border-radius: 3px 3px 3px 3px;
54 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5);
55 cursor: pointer;
56 height: 24px;
57 margin-left: 5px;
58 padding: 0 5px;
59 color: #606060;
60 border-style: outset;
61 border-width: 1px;
62}
63
64.smallbutton {
65 background-color: #c0c0c0;
66 background: -moz-linear-gradient(#c0c0c0, #ffffff) repeat scroll 0 0 transparent;
67 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#c0c0c0), to(#ffffff));
68 background: -webkit-linear-gradient(#c0c0c0, #ffffff);
69 background: -ms-linear-gradient(#c0c0c0, #ffffff);
70 background: -o-linear-gradient(#c0c0c0, #ffffff);
71 background: linear-gradient(#c0c0c0, #ffffff);
72 border-radius: 3px 3px 3px 3px;
73 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5);
74 cursor: pointer;
75 height: 20px;
76 margin-left: 5px;
77 padding: 0 5px;
78 color: #606060;
79 border-style: outset;
80 border-width: 1px;
81}
82
83/* Small tab on the left of each link with edit/delete buttons. */
84.button_edit, .button_delete {
85 border-radius: 0;
86 box-shadow: none;
87 border-style: none;
88 border-width: 0;
89 padding: 0;
90 background: none;
91}
92
93.linkeditbuttons {
94 position: absolute;
95 left: 2px;
96 padding: 4px 2px 2px 2px;
97
98 -webkit-border-radius: 0px 6px 6px 0px;
99 -moz-border-radius: 0px 6px 6px 0px;
100 -o-border-radius: 0px 6px 6px 0px;
101 -ms-border-radius: 0px 6px 6px 0px;
102 border-radius: 0px 6px 6px 0px;
103}
104
105#pageheader #logo {
106 background-image: url('../../../images/logo.png');
107 background-repeat: no-repeat;
108 float: left;
109 margin: 0 10px 0 10px;
110 width: 105px;
111 height: 55px;
112 cursor: pointer;
113}
114
115#pageheader #menu {
116 width: 100%;
117}
118
119#pageheader #menu ul {
120 margin: auto;
121 padding: 7px 0px 0px 0px;
122 float: none;
123}
124
125#pageheader #menu ul li {
126 list-style: none;
127 display: inline;
128 position: relative;
129 box-sizing: border-box;
130}
131
132#pageheader a {
133 background-color: #333333;
134 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#333333), to(#000000));
135 background: -webkit-linear-gradient(#333333, #000000);
136 background: -moz-linear-gradient(#333333, #000000);
137 background: -ms-linear-gradient(#333333, #000000);
138 background: -o-linear-gradient(#333333, #000000);
139 background: linear-gradient(#333333, #000000);
140 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
141 padding: 5px;
142 border-radius: 3px 3px 3px 3px;
143 margin: 10px 3px 3px 3px;
144 color: #A2DD42;
145 text-decoration: none;
146 line-height: 2.5;
147 white-space: nowrap;
148}
149
150#pageheader #linkcount {
151 float: right;
152 font-style: italic;
153 color: #bbb;
154 text-align: right;
155 padding-right: 5px;
156 margin: 3px 3px 0px 0px;
157}
158
159#pageheader {
160 background-color: #333333;
161 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#333333), to(#111111));
162 background: -webkit-linear-gradient(#333333, #111111);
163 background: -moz-linear-gradient(#333333, #111111);
164 background: -ms-linear-gradient(#333333, #111111);
165 background: -o-linear-gradient(#333333, #111111);
166 background: linear-gradient(#333333, #111111);
167 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
168 width: auto;
169 padding: 0 10px 5px 10px;
170 margin: auto;
171}
172
173#pageheader .search {
174 width: 100%;
175 white-space: nowrap;
176}
177
178#toolsdiv a {
179 clear: both;
180}
181
182#toolsdiv #bookmark {
183 clear: none;
184}
185
186#toolsdiv a span {
187 color: #ffffff;
188}
189
190.linksperpage, .tagfilter, .searchform, .addform {
191 background-color: #dedede;
192 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#dedede), to(#ffffff));
193 background: -webkit-linear-gradient(#dedede, #ffffff);
194 background: -moz-linear-gradient(#dedede, #ffffff);
195 background: -ms-linear-gradient(#dedede, #ffffff);
196 background: -o-linear-gradient(#dedede, #ffffff);
197 background: linear-gradient(#dedede, #ffffff);
198 display: inline;
199 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
200 padding: 5px;
201 border: none;
202 border-radius: 3px 3px 3px 3px;
203 margin: 10px 3px 3px 3px;
204 color: #cecece;
205}
206
207.linksperpage {
208 box-shadow: 0 0 0 rgba(0, 0, 0, 0.5);
209 padding: 3px;
210}
211
212.linksperpage input, .tagfilter input, .searchform input, .addform input {
213 border: none;
214 color: #606060;
215 background: none;
216 box-shadow: none;
217 padding: 5px;
218}
219
220.linksperpage input {
221 padding: 0;
222}
223
224.searchform #searchform_value {
225 width: 30%;
226}
227
228.tagfilter {
229 margin-left:24px;
230}
231
232.tagfilter div.awesomplete {
233 width: 15%;
234}
235
236.tagfilter #tagfilter_value {
237 display: inline;
238}
239
240.tagfilter li {
241 color: black;
242}
243
244.tagfilter input.bigbutton, .searchform input.bigbutton, .addform input.bigbutton {
245 background-color: #dedede;
246 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#dedede), to(#ffffff));
247 background: -webkit-linear-gradient(#dedede, #ffffff);
248 background: -moz-linear-gradient(#dedede, #ffffff);
249 background: -ms-linear-gradient(#dedede, #ffffff);
250 background: -o-linear-gradient(#dedede, #ffffff);
251 background: linear-gradient(#dedede, #ffffff);
252 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
253 padding: 0 5px 0 5px;
254 margin: 5px 0 5px 0;
255 height: 20px;
256 border-radius: 3px 3px 3px 3px;
257 cursor: pointer;
258}
259
260#shaarli_title {
261 font-weight: bold;
262 font-style: italic;
263 margin-top: 0;
264}
265
266#shaarli_title a {
267 color: #fff !important;
268}
269
270#pageheader a:visited {
271 color: #98C943;
272 text-decoration: none;
273}
274
275#pageheader a:hover {
276 color: #FFFFC9;
277 text-decoration: none;
278}
279
280#pageheader a:active {
281 color: #bbb;
282 text-decoration: none;
283}
284
285#searchcriteria {
286 padding: 4px 0px 5px 5px;
287 font-weight: bold;
288}
289
290.paging {
291 padding: 5px;
292 background-color: #777;
293 color: #ccc;
294 text-align: center;
295 clear: both;
296}
297
298.paging a:link {
299 color: #ccc;
300 text-decoration: none;
301}
302
303.paging a:visited {
304 color: #ccc;
305}
306
307.paging a:hover {
308 color: #FFFFC9;
309}
310
311.paging a:active {
312 color: #fff;
313}
314
315.paging_privatelinks {
316 float: left;
317}
318
319.paging_linksperpage {
320 float: right;
321 padding-right: 5px;
322 margin: 0px 10px 2px 0px;
323}
324
325.paging_linksperpage form.linksperpage {
326 display: inline;
327}
328
329.paging_linksperpage form.linksperpage input {
330 height: 15px;
331}
332
333.paging_current {
334 display: inline;
335 color: #fff;
336 padding: 0 20 0 20;
337}
338
339.paging_older {
340 margin-right: 15px;
341}
342
343.paging_newer {
344 margin-left: 15px;
345}
346
347#headerform {
348 color: #ffffff;
349 padding: 5px 5px 5px 5px;
350 clear: both;
351}
352
353#headerform input.linkurl {
354 width: 50%;
355 font-size: inherit;
356}
357
358#headerform label {
359 cursor: pointer;
360 margin-right: 10px;
361}
362
363#headerform label[for=longlastingsession] {
364 display: block;
365 width: 100%;
366 margin-top: 5px;
367}
368
369#toolsdiv {
370 color: #ffffff;
371 padding: 5px 5px 5px 5px;
372 clear: left;
373}
374
375#uploaddiv {
376 color: #ffffff;
377 padding: 5px 5px 5px 5px;
378 clear: left;
379}
380
381#editlinkform {
382 height: 100%;
383 padding: 5px 5px 5px 15px;
384 width: 80%;
385 clear: left;
386}
387
388#editlinkform label {
389 cursor: pointer;
390 color: #ffffff;
391}
392
393#editlinkform textarea, #editlinkform .lf_input {
394 width: 100%;
395}
396
397#linklist li {
398 padding: 4px 10px 15px 20px;
399 border-top: 1px solid #bbb;
400 clear: both;
401 background-color: #F2F2F2;
402 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#F2F2F2), to(#ffffff));
403 background: -webkit-linear-gradient(#F2F2F2, #ffffff);
404 background: -moz-linear-gradient(#F2F2F2, #ffffff);
405 background: -ms-linear-gradient(#F2F2F2, #ffffff);
406 background: -o-linear-gradient(#F2F2F2, #ffffff);
407 background: linear-gradient(#F2F2F2, #ffffff);
408}
409
410/*
411#linklist li.publicLinkHightLight:hover, #linklist li:hover {
412 background: #E9FFCE;
413}
414*/
415
416.linkdate {
417 font-size:8pt;
418 color:#888;
419}
420
421.linkdate a {
422 color:#E28E3F;
423}
424
425#linklist li.private {
426 background: url('../images/private.png') no-repeat 4px center;
427 padding-left: 30px;
428}
429
430#linklist li {
431 padding-left: 30px;
432}
433
434.private .linktitle a {
435 color: #969696;
436}
437
438.linktitle {
439 font-size: 14pt;
440 font-weight: bold;
441}
442
443.linktitle a {
444 text-decoration: none;
445 color: #80AD48;
446}
447
448.linktitle a:hover {
449 color: #F57900;
450}
451
452.linkdate {
453 font-size: 8pt;
454 color: #888;
455}
456
457.linkdate a {
458 background-image: url('../images/calendar.png');
459 padding: 2px 0 3px 20px;
460 background-repeat: no-repeat;
461 text-decoration: none;
462 color: #E28E3F;
463}
464
465.linkdate a:hover {
466 color: #F57900 }
467
468.linkurl {
469 font-size: 8pt;
470 color: #4BAA74;
471}
472
473.linkdescription {
474 color: #000;
475 margin-top: 0;
476 margin-bottom: 12px;
477 font-weight: normal;
478 overflow: auto;
479}
480
481.linkdescription a {
482 text-decoration: none;
483 color: #3465A4;
484}
485
486.linkdescription a:hover {
487 color: #F57900;
488}
489
490.linktaglist {
491 padding-top: 10px;
492 line-height: 200%;
493}
494
495.linktag {
496 font-size: 9pt;
497 background-color: #F2F2F2;
498 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#F2F2F2), to(#ffffff));
499 background: -webkit-linear-gradient(#F2F2F2, #ffffff);
500 background: -moz-linear-gradient(#F2F2F2, #ffffff);
501 background: -ms-linear-gradient(#F2F2F2, #ffffff);
502 background: -o-linear-gradient(#F2F2F2, #ffffff);
503 background: linear-gradient(#F2F2F2, #ffffff);
504 box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
505 padding: 3px 5px 3px 20px;
506 height: 20px;
507 border-radius: 3px;
508 cursor: pointer;
509 background-image: url('../images/tag_blue.png');
510 background-repeat: no-repeat;
511 background-position: 3px center;
512 background-color: #ffffff;
513}
514
515.linktag:hover {
516 border-color: #555573;
517 color: #000;
518}
519
520.linktag a {
521 color: #777;
522 text-decoration: none;
523}
524
525.linktag .remove {
526 border-left: 1px solid #aaa;
527 padding-left: 5px;
528 color:#6767A7;
529}
530
531.linkshort {
532 font-size: 8pt;
533 color: #888;
534}
535
536.linkshort a {
537 text-decoration: none;
538 color: #393964;
539}
540
541.linkshort a:hover {
542 text-decoration: underline;
543}
544
545.buttoneditform {
546 display: inline;
547}
548
549#footer {
550 font-size: 8pt;
551 text-align: center;
552 color: #888;
553 clear: both;
554 max-width: 30em;
555 margin: 15px auto 15px auto;
556}
557
558#footer a {
559 color: #486D08;
560}
561
562#footer a:hover {
563 color: #000000;
564}
565
566#newversion {
567 background-color: #FFFFA0;
568 color: #000;
569 position: absolute;
570 top: 0;
571 right: 0;
572 padding: 2 7 2 7;
573 font-size: 9pt;
574}
575
576#newversion #version_id {
577 text-decoration: blink;
578}
579
580#cloudtag {
581 padding-left: 10%;
582 padding-right: 10%;
583}
584
585#cloudtag .count {
586 color: #99f;
587 font-size: 9pt;
588 padding-left: 5px;
589 padding-right: 2px;
590}
591
592#cloudtag a {
593 color: black;
594 text-decoration: none;
595}
596
597#install {
598 margin: 0 20px;
599}
600
601#installform {
602 border: 1px solid black;
603 padding: 10px;
604}
605
606#installform table {
607 border: none;
608}
609
610#installform td {
611 font-size: 10pt;
612 color: black;
613 padding: 10px 5px 10px 5px;
614 clear: left;
615}
616
617#installform input.bigbutton {
618 float: right;
619}
620
621#changepasswordform {
622 color: #ccc;
623 padding: 10px 5px 10px 5px;
624 clear: left;
625}
626
627#changetag {
628 color: #ccc;
629 padding: 10px 5px 10px 5px;
630 clear: left;
631}
632
633#changetag #totag {
634 margin-left: 40px;
635}
636
637#changetag div {
638 float:left;
639}
640
641#changetag label {
642 padding: 5px;
643}
644
645#changetag li {
646 color: #000;
647}
648#configform td {
649 color: #ccc;
650 font-size: 10pt;
651 padding: 10px 5px 10px 5px;
652}
653
654#configform {
655 color: #ccc;
656 padding: 10px 5px 10px 5px;
657 clear: left;
658}
659
660.thumbnail {
661 float: right;
662 margin: 0px 10px 0px 10px;
663}
664
665.thumbnail img {
666 border-radius: 3px;
667 box-shadow: 0.5px 0.5px 0.5px 1px #dde4e6;
668}
669
670/* If you want thumbnails on the left:
671.thumbnail {
672 float: left;
673 margin-right: 10px;
674}
675.linkcontainer {
676 position: static;
677 margin-left: 130px;
678}
679*/
680
681/* --- Picture wall CSS --- */
682#picwall_container {
683 color: #fff;
684 background-color: #000;
685 clear: both;
686}
687
688.picwall_pictureframe {
689 background-color: #000;
690 z-index: 5;
691 position: relative;
692 display: table-cell;
693 vertical-align: middle;
694 width: 90px;
695 height: 90px;
696 overflow: hidden;
697 text-align: center;
698 float: left;
699}
700
701.b-lazy {
702 -webkit-transition: opacity 500ms ease-in-out;
703 -moz-transition: opacity 500ms ease-in-out;
704 -o-transition: opacity 500ms ease-in-out;
705 transition: opacity 500ms ease-in-out;
706 opacity: 0;
707}
708.b-lazy.b-loaded {
709 opacity: 1;
710}
711
712.picwall_pictureframe img {
713 max-width: 100%;
714 height: auto;
715 color: transparent;
716} /* Adapt the width of the image */
717
718.picwall_pictureframe a {
719 text-decoration: none;
720}
721
722/* CSS to show title when hovering an image - no javascript required. */
723.picwall_pictureframe span.info {
724 display: none;
725}
726
727.picwall_pictureframe:hover span.info {
728 display: block;
729 position: absolute;
730 top: 0;
731 left: 0;
732 width: 90px;
733 font-weight: bold;
734 font-size: 8pt;
735 color: #fff;
736 text-align: left;
737 background-color: transparent;
738 background-color: rgba(0, 0, 0, 0.4);
739 /* FF3+, Saf3+, Opera 10.10+, Chrome, IE9 */
740 filter: progid: DXImageTransform.Microsoft.gradient(startColorstr=#66000000, endColorstr=#66000000);
741 /* IE6–IE9 */
742 text-shadow: 2px 2px 1px #000000;
743}
744
745#linklist li.publicLinkHightLight {
746 background: #ffffff;
747}
748
749div.daily {
750 font-family: Georgia, 'DejaVu Serif', Norasi, serif;
751 background-color: #E6D6BE;
752 /* Background paper texture by BashCorpo:
753 http://www.bashcorpo.dk/textures.php
754 http://bashcorpo.deviantart.com/art/Grungy-paper-texture-v-5-22966998 */
755 background-image: url("../images/Paper_texture_v5_by_bashcorpo_w1000.jpg");
756 -webkit-background-size: cover;
757 -moz-background-size: cover;
758 -o-background-size: cover;
759 background-size: cover;
760 position: relative;
761 border-bottom: 2px solid black;
762}
763
764#daily_col1 {
765 float: left;
766 position: relative;
767 width: 33%;
768 padding-left: 1%;
769}
770
771#daily_col2 {
772 float: left;
773 position: relative;
774 width: 33%;
775}
776
777#daily_col3 {
778 float: left;
779 position: relative;
780 width: 33%;
781}
782
783div.dailyAbout {
784 float: left;
785 border: 1px solid black;
786 font-size: 8pt;
787 position: absolute;
788 left: 10px;
789 top: 15px;
790 padding: 5px 5px 5px 5px;
791 text-align: center;
792}
793
794div.dailyAbout a {
795 color: #890500;
796}
797
798div.dailyAbout img {
799 position: relative;
800 top: 3px;
801 margin-right: 4px;
802 width: 14px;
803 height: 14px;
804}
805
806div.dailyEntryPermalink {
807 float: right;
808}
809
810div.dailyTitle {
811 font-weight: bold;
812 font-size: 44pt;
813 text-align: center;
814 padding: 10px 20px 0px 20px;
815}
816
817div.dailyDate {
818 font-size: 12pt;
819 font-weight: bold;
820 text-align: center;
821 padding: 0px 20px 30px 20px;
822}
823
824/* Individual entries in "Daily": */
825div.dailyEntry {
826 margin: 5px 10px 2px 5px;
827 font-size: 11pt;
828 border-top: 1px solid #555;
829}
830
831div.dailyEntry a {
832 text-decoration: none;
833 color: #890500;
834}
835
836div.dailyEntryTags {
837 font-size: 7.75pt;
838}
839
840div.dailyEntryTitle {
841 font-size: 18pt;
842 font-weight: bold;
843}
844
845div.dailyEntryLinkdate {
846 font-size: 8pt;
847}
848
849div.dailyEntryThumbnail {
850 width: 100%;
851 text-align: center;
852 background-color: rgb(128, 128, 128);
853 background: url(../images/50pc_transparent.png);
854 padding: 4px 0px 2px 0px;
855}
856
857div.dailyEntryDescription {
858 margin-top: 10px;
859 margin-bottom: 30px;
860 text-align: justify;
861 overflow: auto;
862}
863
864div.dailyNoEntry {
865 text-align: center;
866 padding: 40px 0px 90px 0px;
867}
868
869.daily #closing {
870 clear: both;
871 text-align: center;
872 padding-bottom: 20px;
873}
874
875/* Common CSS screwdriver */
876.clear {
877 clear: both;
878}
879
880.right {
881 text-align: right;
882}
883
884.white {
885 color: white;
886}
887
888/* For lazy images loading in picture wall.
889 Using http://www.appelsiini.net/projects/lazyload
890*/
891.lazyimage {
892 display: none;
893}
894
895#configuration_table td {
896 border: none;
897 padding: 10px;
898 vertical-align: top;
899}
900
901@media print {
902 html {
903 border: none;
904 background: #fff !important;
905 color: #000 !important;
906 }
907
908 body {
909 font-size: 12pt;
910 width: auto !important;
911 margin: auto !important;
912 }
913
914 /* Minimum numer of lines to display when splitting a paragraph
915 over two pages */
916 p {
917 orphans: 3;
918 widows: 3;
919 }
920
921 a {
922 color: #000 !important;
923 text-decoration: none !important;
924 }
925
926 #pageheader, .paging, #linklist li form, #footer {
927 display: none;
928 }
929
930 #linklist li {
931 padding: 2 0 10 0;
932 border-top: 2px solid #000;
933 clear: both;
934 }
935
936 #linklist li.private {
937 background-color: none;
938 border-left: 0;
939 }
940
941 .linkdate {
942 line-height: 2;
943 }
944
945 .linkurl {
946 color: #000;
947 }
948
949 .linkdescription {
950 font-size: 10pt;
951 }
952
953 .linktag {
954 border: 1px solid black;
955 font-style: italic;
956 font-size: 8pt;
957 }
958}
959
960@media handheld, only screen and (max-width: 480px), only screen and (max-device-width: 854px) {
961 /* A few fixes for mobile devices (far from perfect). */
962
963 .tagfilter div.awesomplete {
964 width: 70%;
965 }
966
967 .nomobile {
968 display: none;
969 }
970
971 #logo {
972 display: none;
973 }
974
975 #pageheader #menu ul {
976 text-align: center;
977 }
978
979 #pageheader #menu a {
980 padding: 5px;
981 border-radius: 3px 3px 3px 3px;
982 margin: 3px;
983 }
984
985 #headerform label {
986 width: 100%;
987 display: block;
988 height: auto;
989 line-height: 25px;
990 padding-bottom: 10px;
991 }
992
993 #headerform label input[type=text],
994 #headerform label input[type=password]{
995 float: right;
996 width: 70%;
997 }
998
999 .searchform, .tagfilter {
1000 display: block !important;
1001 margin: 0px 3px 7px 0px !important;
1002 padding: 0px !important;
1003 width: 97% !important;
1004 }
1005
1006 .searchform input, .tagfilter input {
1007 margin: 0px !important;
1008 padding: 0px !important;
1009 display: inline !important;
1010 }
1011
1012 .tagfilter input.bigbutton, .searchform input.bigbutton, .addform input.bigbutton {
1013 width: 30%;
1014 font-size: smaller;
1015 }
1016
1017 #searchform_value {
1018 width: 70% !important;
1019 }
1020
1021 #tagfilter_value {
1022 width: 70% !important;
1023 }
1024
1025 div.qrcode {
1026 position: relative;
1027 float: left;
1028 top: -10px;
1029 left: 0px;
1030 }
1031
1032 .paging_privatelinks {
1033 float: none;
1034 }
1035
1036 .paging_linksperpage {
1037 float: none;
1038 margin-bottom: 10px;
1039 font-size: smaller;
1040 }
1041
1042 #paging_older, #paging_newer, .paging_linksperpage a {
1043 border: 1px solid black;
1044 padding: 3px 5px 3px 5px;
1045 background-color: #666;
1046 color: #fff;
1047 border-radius: 3px 3px 3px 3px;
1048 }
1049
1050 .thumbnail {
1051 float: none;
1052 height: auto;
1053 margin: 0px;
1054 text-align: center;
1055 }
1056
1057 #cloudtag {
1058 padding: 0px;
1059 }
1060
1061 div.dailyAbout {
1062 float: none;
1063 position: relative;
1064 width: 100%;
1065 clear: both;
1066 padding: 0px;
1067 top: 0px;
1068 left: 0px;
1069 }
1070
1071 #daily_col1, #daily_col2, #daily_col3 {
1072 float: none;
1073 width: 100%;
1074 padding: 0px;
1075 }
1076
1077 div.dailyTitle {
1078 font-size: 18pt;
1079 margin-top: 5px;
1080 padding: 0px;
1081 }
1082
1083 div.dailyDate {
1084 font-size: 11pt;
1085 padding: 0px;
1086 display: block;
1087 }
1088
1089 div.dailyEntryTitle {
1090 font-size: 16pt;
1091 font-weight: bold;
1092 }
1093
1094 div.dailyEntryDescription {
1095 font-size: 10pt;
1096 }
1097}
1098
1099#toolsdiv a.button-description {
1100 clear: none;
1101}
1102
1103/* Highlight search results */
1104.highlight {
1105 background-color: #FFFF33;
1106}
1107
1108.center {
1109 text-align: center;
1110}
1111
1112ul.errors {
1113 color: red;
1114 float: left;
1115}
1116
1117#pluginsadmin {
1118 width: 80%;
1119 padding: 20px 0 0 20px;
1120}
1121
1122#pluginsadmin section {
1123 padding: 20px 0;
1124}
1125
1126#pluginsadmin .plugin_parameters {
1127 margin: 10px 0;
1128}
1129
1130#pluginsadmin h1 {
1131 font-style: normal;
1132}
1133
1134#pluginsadmin h2 {
1135 font-size: 1.4em;
1136 font-weight: bold;
1137}
1138
1139#pluginsadmin table {
1140 width: 100%;
1141}
1142
1143#pluginsadmin table, #pluginsadmin th, #pluginsadmin td {
1144 border-width: 1px 0;
1145 border-style: solid;
1146 border-color: #c0c0c0;
1147}
1148
1149#pluginsadmin table th {
1150 font-weight: bold;
1151 padding: 10px 0;
1152}
1153
1154#pluginsadmin table td {
1155 padding: 5px 0;
1156}
1157
1158#pluginsadmin input[type=submit] {
1159 margin: 10px 0;
1160}
1161
1162#pluginsadmin label {
1163 cursor: pointer;
1164}
1165
1166#pluginsadmin .plugin_parameter {
1167 padding: 10px 0;
1168 border-width: 1px 0;
1169 border-style: solid;
1170 border-color: #c0c0c0;
1171}
1172
1173#pluginsadmin .float_label {
1174 float: left;
1175 width: 40%;
1176}
1177
1178#pluginsadmin a {
1179 color: #486D08;
1180}
1181
1182#pluginsadmin a.arrow {
1183 color: black;
1184}
1185
1186/* 404 page */
1187.error-container {
1188
1189 margin: 50px;
1190 margin-top: 20px;
1191}
1192
1193.error-container h1 {
1194 text-decoration: none;
1195 font-style: normal;
1196 color: #80AD48;
1197}
1198
1199.linklist-plugin-icon {
1200 width: 13px;
1201 height: 13px;
1202}
diff --git a/tpl/default/daily.html b/tpl/default/daily.html
new file mode 100644
index 00000000..e86e90b1
--- /dev/null
+++ b/tpl/default/daily.html
@@ -0,0 +1,101 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}</head>
4<body>
5<div id="pageheader">
6 {include="page.header"}
7</div>
8<div class="daily">
9 <div id="plugin_zone_start_picwall" class="plugin_zone">
10 {loop="$plugin_start_zone"}
11 {$value}
12 {/loop}
13 </div>
14
15 <div class="dailyAbout">
16 All links of one day<br>in a single page.<br>
17 {if="$previousday"} <a href="?do=daily&amp;day={$previousday}"><b>&lt;</b>Previous day</a>{else}<b>&lt;</b>Previous day{/if}
18 -
19 {if="$nextday"}<a href="?do=daily&amp;day={$nextday}">Next day<b>&gt;</b></a>{else}Next day<b>&gt;</b>{/if}
20 <br>
21
22 {loop="$daily_about_plugin"}
23 {$value}
24 {/loop}
25
26 <br>
27 <a href="?do=dailyrss" title="1 RSS entry per day"><img src="images/feed-icon-14x14.png#" alt="rss_feed">Daily RSS Feed</a>
28 </div>
29
30 <div class="dailyTitle">
31 <img src="images/floral_left.png" width="51" height="50" class="nomobile" alt="floral_left">
32 The Daily Shaarli
33 <img src="images/floral_right.png" width="51" height="50" class="nomobile" alt="floral_right">
34 </div>
35
36 <div class="dailyDate">
37 <span class="nomobile">&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</span>
38 {function="strftime('%A %d, %B %Y', $day)"}
39 <span class="nomobile">&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</span>
40 </div>
41
42 <div class="clear"></div>
43
44 {if="$linksToDisplay"}
45 {loop="$cols"}
46 {if="isset($value[0])"}
47 <div id="daily_col{$counter+1}">
48 {loop="$value"}
49 {$link=$value}
50 <div class="dailyEntry">
51 <div class="dailyEntryPermalink">
52 <a href="?{$value.shorturl}">
53 <img src="images/squiggle.png" width="25" height="26" title="permalink" alt="permalink">
54 </a>
55 </div>
56 {if="!$hide_timestamps || isLoggedIn()"}
57 <div class="dailyEntryLinkdate">
58 <a href="?{$value.shorturl}">{function="strftime('%c', $link.timestamp)"}</a>
59 </div>
60 {/if}
61 {if="$link.tags"}
62 <div class="dailyEntryTags">
63 {loop="$link.taglist"}
64 {$value} -
65 {/loop}
66 </div>
67 {/if}
68 <div class="dailyEntryTitle">
69 <a href="{$link.real_url}">{$link.title}</a>
70 </div>
71 {if="$link.thumbnail"}
72 <div class="dailyEntryThumbnail">{$link.thumbnail}</div>
73 {/if}
74 <div class="dailyEntryDescription">{$link.formatedDescription}</div>
75
76 <div class="dailyEntryFooter">
77 {loop="$link.link_plugin"}
78 {$value}
79 {/loop}
80 </div>
81 </div>
82 {/loop}
83 </div>
84 {/if}
85 {/loop}
86 {else}
87 <div class="dailyNoEntry">No articles on this day.</div>
88 {/if}
89
90 <div class="clear"></div>
91
92 <div id="plugin_zone_end_picwall" class="plugin_zone">
93 {loop="$plugin_end_zone"}
94 {$value}
95 {/loop}
96 </div>
97 <div id="closing"><img src="images/squiggle_closing.png" width="66" height="61" alt="-"></div>
98</div>
99{include="page.footer"}
100</body>
101</html>
diff --git a/tpl/default/dailyrss.html b/tpl/default/dailyrss.html
new file mode 100644
index 00000000..ddbd6c5e
--- /dev/null
+++ b/tpl/default/dailyrss.html
@@ -0,0 +1,16 @@
1<item>
2 <title>{$title} - {function="strftime('%A %e %B %Y', $daydate)"}</title>
3 <guid>{$absurl}</guid>
4 <link>{$absurl}</link>
5 <pubDate>{$rssdate}</pubDate>
6 <description><![CDATA[
7 {loop="$links"}
8 <h3><a href="{$value.url}">{$value.title}</a></h3>
9 <small>{if="!$hide_timestamps"}{function="strftime('%c', $value.timestamp)"} - {/if}{if="$value.tags"}{$value.tags}{/if}<br>
10 {$value.url}</small><br>
11 {if="$value.thumbnail"}{$value.thumbnail}{/if}<br>
12 {if="$value.description"}{$value.formatedDescription}{/if}
13 <br><br><hr>
14 {/loop}
15 ]]></description>
16</item>
diff --git a/tpl/default/editlink.html b/tpl/default/editlink.html
new file mode 100644
index 00000000..d3f99fe6
--- /dev/null
+++ b/tpl/default/editlink.html
@@ -0,0 +1,57 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}
4 <link type="text/css" rel="stylesheet" href="inc/awesomplete.css#" />
5</head>
6<body
7{if="$link.title==''"}onload="document.linkform.lf_title.focus();"
8{elseif="$link.description==''"}onload="document.linkform.lf_description.focus();"
9{else}onload="document.linkform.lf_tags.focus();"{/if} >
10<div id="pageheader">
11 {if="$source !== 'firefoxsocialapi'"}
12 {include="page.header"}
13 {else}
14 <div id="shaarli_title"><a href="{$titleLink}">{$shaarlititle}</a></div>
15 {/if}
16 <div id="editlinkform">
17 <form method="post" name="linkform">
18 <input type="hidden" name="lf_linkdate" value="{$link.linkdate}">
19 {if="isset($link.id)"}
20 <input type="hidden" name="lf_id" value="{$link.id}">
21 {/if}
22 <label for="lf_url"><i>URL</i></label><br><input type="text" name="lf_url" id="lf_url" value="{$link.url}" class="lf_input"><br>
23 <label for="lf_title"><i>Title</i></label><br><input type="text" name="lf_title" id="lf_title" value="{$link.title}" class="lf_input"><br>
24 <label for="lf_description"><i>Description</i></label><br><textarea name="lf_description" id="lf_description" rows="4" cols="25">{$link.description}</textarea><br>
25 <label for="lf_tags"><i>Tags</i></label><br>
26 <input type="text" name="lf_tags" id="lf_tags" value="{$link.tags}" class="lf_input"
27 data-list="{loop="$tags"}{$key}, {/loop}" data-multiple autocomplete="off" ><br>
28
29 {loop="$edit_link_plugin"}
30 {$value}
31 {/loop}
32
33 {if="($link_is_new && $default_private_links) || $link.private == true"}
34 <input type="checkbox" checked="checked" name="lf_private" id="lf_private">
35 &nbsp;<label for="lf_private"><i>Private</i></label><br>
36 {else}
37 <input type="checkbox" name="lf_private" id="lf_private">
38 &nbsp;<label for="lf_private"><i>Private</i></label><br>
39 {/if}
40 <input type="submit" value="Save" name="save_edit" class="bigbutton">
41 <input type="submit" value="Cancel" name="cancel_edit" class="bigbutton">
42 {if="!$link_is_new"}<input type="submit" value="Delete" name="delete_link" class="bigbutton delete" onClick="return confirmDeleteLink();">{/if}
43 <input type="hidden" name="token" value="{$token}">
44 {if="$http_referer"}<input type="hidden" name="returnurl" value="{$http_referer}">{/if}
45 </form>
46 </div>
47</div>
48{if="$source !== 'firefoxsocialapi'"}
49{include="page.footer"}
50{/if}
51<script src="inc/awesomplete.min.js#"></script>
52<script src="inc/awesomplete-multiple-tags.js#"></script>
53<script>
54 awesompleteUniqueTag('#lf_tags');
55</script>
56</body>
57</html>
diff --git a/tpl/default/export.bookmarks.html b/tpl/default/export.bookmarks.html
new file mode 100644
index 00000000..127a5c20
--- /dev/null
+++ b/tpl/default/export.bookmarks.html
@@ -0,0 +1,10 @@
1<!DOCTYPE NETSCAPE-Bookmark-file-1>
2<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
3<!-- This is an automatically generated file.
4 It will be read and overwritten.
5 Do Not Edit! -->{ignore}The RainTPL loop is formatted to avoid generating extra newlines{/ignore}
6<TITLE>{$pagetitle}</TITLE>
7<H1>Shaarli export of {$selection} bookmarks on {$date}</H1>
8<DL><p>{loop="$links"}
9<DT><A HREF="{$value.url}" ADD_DATE="{$value.timestamp}" PRIVATE="{$value.private}" TAGS="{$value.taglist}">{$value.title}</A>{if="$value.description"}{$eol}<DD>{$value.description}{/if}{/loop}
10</DL><p>
diff --git a/tpl/default/export.html b/tpl/default/export.html
new file mode 100644
index 00000000..67c3d05f
--- /dev/null
+++ b/tpl/default/export.html
@@ -0,0 +1,28 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}</head>
4<body>
5 <div id="pageheader">
6 {include="page.header"}
7 <div id="toolsdiv">
8 <form method="GET">
9 <input type="hidden" name="do" value="export">
10 Selection:<br>
11 <input type="radio" name="selection" value="all" checked="true"> All<br>
12 <input type="radio" name="selection" value="private"> Private<br>
13 <input type="radio" name="selection" value="public"> Public<br>
14 <br>
15 <input type="checkbox" name="prepend_note_url" id="prepend_note_url">
16 <label for="prepend_note_url">
17 Prepend note permalinks with this Shaarli instance's URL
18 <em>(useful to import bookmarks in a web browser)</em>
19 </label>
20 <br><br>
21 <input class="bigbutton" type="submit" value="Export">
22 </form>
23 <div class="clear"></div>
24 </div>
25 </div>
26 {include="page.footer"}
27</body>
28</html>
diff --git a/tpl/default/feed.atom.html b/tpl/default/feed.atom.html
new file mode 100644
index 00000000..49798e85
--- /dev/null
+++ b/tpl/default/feed.atom.html
@@ -0,0 +1,42 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<feed xmlns="http://www.w3.org/2005/Atom">
3 <title>{$pagetitle}</title>
4 <subtitle>Shaared links</subtitle>
5 {if="$show_dates"}
6 <updated>{$last_update}</updated>
7 {/if}
8 <link rel="self" href="{$self_link}#" />
9 <link rel="search" type="application/opensearchdescription+xml" href="{$index_url}?do=opensearch#"
10 title="Shaarli search - {$shaarlititle}" />
11 {loop="$feed_plugins_header"}
12 {$value}
13 {/loop}
14 <author>
15 <name>{$index_url}</name>
16 <uri>{$index_url}</uri>
17 </author>
18 <id>{$index_url}</id>
19 <generator>Shaarli</generator>
20 {loop="$links"}
21 <entry>
22 <title>{$value.title}</title>
23 {if="$usepermalinks"}
24 <link href="{$value.guid}#" />
25 {else}
26 <link href="{$value.url}#" />
27 {/if}
28 <id>{$value.guid}</id>
29 {if="$show_dates"}
30 <published>{$value.pub_iso_date}</published>
31 <updated>{$value.up_iso_date}</updated>
32 {/if}
33 <content type="html" xml:lang="{$language}"><![CDATA[{$value.description}]]></content>
34 {loop="$value.taglist"}
35 <category scheme="{$index_url}?searchtags=" term="{$value|strtolower}" label="{$value}" />
36 {/loop}
37 {loop="$value.feed_plugins"}
38 {$value}
39 {/loop}
40 </entry>
41 {/loop}
42</feed>
diff --git a/tpl/default/feed.rss.html b/tpl/default/feed.rss.html
new file mode 100644
index 00000000..ee3fef88
--- /dev/null
+++ b/tpl/default/feed.rss.html
@@ -0,0 +1,39 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
3 <channel>
4 <title>{$pagetitle}</title>
5 <link>{$index_url}</link>
6 <description>Shaared links</description>
7 <language>{$language}</language>
8 <copyright>{$index_url}</copyright>
9 <generator>Shaarli</generator>
10 <atom:link rel="self" href="{$self_link}" />
11 <atom:link rel="search" type="application/opensearchdescription+xml" href="{$index_url}?do=opensearch#"
12 title="Shaarli search - {$shaarlititle}" />
13 {loop="$feed_plugins_header"}
14 {$value}
15 {/loop}
16 {loop="$links"}
17 <item>
18 <title>{$value.title}</title>
19 <guid isPermaLink="{if="$usepermalinks"}true{else}false{/if}">{$value.guid}</guid>
20 {if="$usepermalinks"}
21 <link>{$value.guid}</link>
22 {else}
23 <link>{$value.url}</link>
24 {/if}
25 {if="$show_dates"}
26 <pubDate>{$value.pub_iso_date}</pubDate>
27 <atom:modified>{$value.up_iso_date}</atom:modified>
28 {/if}
29 <description><![CDATA[{$value.description}]]></description>
30 {loop="$value.taglist"}
31 <category domain="{$index_url}?searchtags=">{$value}</category>
32 {/loop}
33 {loop="$value.feed_plugins"}
34 {$value}
35 {/loop}
36 </item>
37 {/loop}
38 </channel>
39</rss>
diff --git a/tpl/default/images/50pc_transparent.png b/tpl/default/images/50pc_transparent.png
new file mode 100644
index 00000000..8d8f99de
--- /dev/null
+++ b/tpl/default/images/50pc_transparent.png
Binary files differ
diff --git a/tpl/default/images/Paper_texture_v5_by_bashcorpo_w1000.jpg b/tpl/default/images/Paper_texture_v5_by_bashcorpo_w1000.jpg
new file mode 100644
index 00000000..dd8e67ac
--- /dev/null
+++ b/tpl/default/images/Paper_texture_v5_by_bashcorpo_w1000.jpg
Binary files differ
diff --git a/tpl/default/images/calendar.png b/tpl/default/images/calendar.png
new file mode 100644
index 00000000..81c74519
--- /dev/null
+++ b/tpl/default/images/calendar.png
Binary files differ
diff --git a/tpl/default/images/floral_left.png b/tpl/default/images/floral_left.png
new file mode 100644
index 00000000..f09a861d
--- /dev/null
+++ b/tpl/default/images/floral_left.png
Binary files differ
diff --git a/tpl/default/images/floral_right.png b/tpl/default/images/floral_right.png
new file mode 100644
index 00000000..0dfb6112
--- /dev/null
+++ b/tpl/default/images/floral_right.png
Binary files differ
diff --git a/tpl/default/images/private.png b/tpl/default/images/private.png
new file mode 100644
index 00000000..8919d658
--- /dev/null
+++ b/tpl/default/images/private.png
Binary files differ
diff --git a/tpl/default/images/squiggle.png b/tpl/default/images/squiggle.png
new file mode 100644
index 00000000..c795f0a3
--- /dev/null
+++ b/tpl/default/images/squiggle.png
Binary files differ
diff --git a/tpl/default/images/squiggle_closing.png b/tpl/default/images/squiggle_closing.png
new file mode 100644
index 00000000..3f9d02b1
--- /dev/null
+++ b/tpl/default/images/squiggle_closing.png
Binary files differ
diff --git a/tpl/default/images/tag_blue.png b/tpl/default/images/tag_blue.png
new file mode 100644
index 00000000..7ec902fc
--- /dev/null
+++ b/tpl/default/images/tag_blue.png
Binary files differ
diff --git a/tpl/default/import.html b/tpl/default/import.html
new file mode 100644
index 00000000..071e1160
--- /dev/null
+++ b/tpl/default/import.html
@@ -0,0 +1,33 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}</head>
4<body onload="document.uploadform.filetoupload.focus();">
5<div id="pageheader">
6 {include="page.header"}
7 <div id="uploaddiv">
8 Import Netscape HTML bookmarks (as exported from Firefox/Chrome/Opera/Delicious/Diigo...) (Max: {$maxfilesize} bytes).
9 <form method="POST" action="?do=import" enctype="multipart/form-data"
10 name="uploadform" id="uploadform">
11 <input type="hidden" name="token" value="{$token}">
12 <input type="hidden" name="MAX_FILE_SIZE" value="{$maxfilesize}">
13 <input type="file" name="filetoupload">
14 <input type="submit" name="import_file" value="Import" class="bigbutton"><br>
15
16 <label for="privacy">&nbsp;Visibility:</label><br>
17 <input type="radio" name="privacy" value="default" checked="true">
18 &nbsp;Use values from the imported file, default to public<br>
19 <input type="radio" name="privacy" value="private">
20 &nbsp;Import all bookmarks as private<br>
21 <input type="radio" name="privacy" value="public">
22 &nbsp;Import all bookmarks as public<br>
23
24 <input type="checkbox" name="overwrite" id="overwrite">
25 <label for="overwrite">&nbsp;Overwrite existing bookmarks</label><br>
26 <label for="default_tags">&nbsp;Add default tags</label>
27 <input type="text" name="default_tags" id="default_tags">
28 </form>
29 </div>
30</div>
31{include="page.footer"}
32</body>
33</html>
diff --git a/tpl/default/includes.html b/tpl/default/includes.html
new file mode 100644
index 00000000..c3b837f5
--- /dev/null
+++ b/tpl/default/includes.html
@@ -0,0 +1,15 @@
1<title>{$pagetitle}</title>
2<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3<meta name="format-detection" content="telephone=no" />
4<meta name="viewport" content="width=device-width,initial-scale=1.0" />
5<meta name="referrer" content="same-origin">
6<link rel="alternate" type="application/rss+xml" href="{$feedurl}?do=rss{$searchcrits}#" title="RSS Feed" />
7<link rel="alternate" type="application/atom+xml" href="{$feedurl}?do=atom{$searchcrits}#" title="ATOM Feed" />
8<link href="images/favicon.ico#" rel="shortcut icon" type="image/x-icon" />
9<link type="text/css" rel="stylesheet" href="css/reset.css" />
10<link type="text/css" rel="stylesheet" href="css/shaarli.css" />
11{if="is_file('inc/user.css')"}<link type="text/css" rel="stylesheet" href="inc/user.css#" />{/if}
12{loop="$plugins_includes.css_files"}
13<link type="text/css" rel="stylesheet" href="{$value}#"/>
14{/loop}
15<link rel="search" type="application/opensearchdescription+xml" href="?do=opensearch#" title="Shaarli search - {$shaarlititle|htmlspecialchars}"/>
diff --git a/tpl/default/install.html b/tpl/default/install.html
new file mode 100644
index 00000000..42874dcd
--- /dev/null
+++ b/tpl/default/install.html
@@ -0,0 +1,35 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}{$timezone_js}</head>
4<body onload="document.installform.setlogin.focus();">
5<div id="install">
6 <h1>Shaarli</h1>
7 It looks like it's the first time you run Shaarli. Please configure it:<br>
8 <form method="POST" action="#" name="installform" id="installform">
9 <table>
10 <tr><td><b>Login:</b></td><td><input type="text" name="setlogin" size="30"></td></tr>
11 <tr><td><b>Password:</b></td><td><input type="password" name="setpassword" size="30"></td></tr>
12 {$timezone_html}
13 <tr><td><b>Page title:</b></td><td><input type="text" name="title" size="30"></td></tr>
14 <tr><td valign="top"><b>Update:</b></td><td>
15 <input type="checkbox" name="updateCheck" id="updateCheck" checked="checked"><label for="updateCheck">&nbsp;Notify me when a new release is ready</label></td>
16 </tr>
17 <tr>
18 <td valign="top">
19 <b>API:</b>
20 </td>
21 <td>
22 <input type="checkbox" name="enableApi" id="enableApi" checked="checked">
23 <label for="enableApi">
24 &nbsp;Enable Shaarli's REST API.
25 Allow third party software to use Shaarli such as mobile application.
26 </label>
27 </td>
28 </tr>
29 <tr><td colspan="2"><input type="submit" name="Save" value="Save config" class="bigbutton"></td></tr>
30 </table>
31 </form>
32</div>
33{include="page.footer"}
34</body>
35</html>
diff --git a/tpl/default/linklist.html b/tpl/default/linklist.html
new file mode 100644
index 00000000..5accc92f
--- /dev/null
+++ b/tpl/default/linklist.html
@@ -0,0 +1,151 @@
1<!DOCTYPE html>
2<html>
3<head>
4 <link type="text/css" rel="stylesheet" href="inc/awesomplete.css#" />
5 {include="includes"}
6</head>
7<body>
8<div id="pageheader">
9 {include="page.header"}
10
11 <div id="headerform" class="search">
12 <form method="GET" class="searchform" name="searchform">
13 <input type="text" tabindex="1" id="searchform_value" name="searchterm" placeholder="Search text"
14 {if="!empty($search_term)"}
15 value="{$search_term}"
16 {/if}
17 >
18 <input type="submit" value="Search" class="bigbutton">
19 </form>
20 <form method="GET" class="tagfilter" name="tagfilter">
21 <input type="text" tabindex="2" name="searchtags" id="tagfilter_value" placeholder="Filter by tag"
22 {if="!empty($search_tags)"}
23 value="{$search_tags}"
24 {/if}
25 autocomplete="off" class="awesomplete" data-multiple data-minChars="1"
26 data-list="{loop="$tags"}{$key}, {/loop}"
27 >
28 <input type="submit" value="Search" class="bigbutton">
29 </form>
30 {loop="$plugins_header.fields_toolbar"}
31 <form
32 {loop="$value.attr"}
33 {$key}="{$value}"
34 {/loop}>
35 {loop="$value.inputs"}
36 <input
37 {loop="$value"}
38 {$key}="{$value}"
39 {/loop}>
40 {/loop}
41 </form>
42 {/loop}
43 </div>
44</div>
45
46<div id="linklist">
47
48 {include="linklist.paging"}
49
50 <div id="plugin_zone_start_linklist" class="plugin_zone">
51 {loop="$plugin_start_zone"}
52 {$value}
53 {/loop}
54 </div>
55
56 {if="count($links)==0"}
57 <div id="searchcriteria">Nothing found.</div>
58 {elseif="!empty($search_term) or !empty($search_tags)"}
59 <div id="searchcriteria">
60 {$result_count} results
61 {if="!empty($search_term)"}
62 for <em>{$search_term}</em>
63 {/if}
64 {if="!empty($search_tags)"}
65 {$exploded_tags=explode(' ', $search_tags)}
66 tagged
67 {loop="$exploded_tags"}
68 <span class="linktag" title="Remove tag">
69 <a href="?removetag={function="urlencode($value)"}">{$value} <span class="remove">x</span></a>
70 </span>
71 {/loop}
72 {/if}
73 </div>
74 {/if}
75 <ul>
76 {loop="$links"}
77 <li{if="$value.class"} class="{$value.class}"{/if}>
78 <a id="{$value.shorturl}"></a>
79 <div class="thumbnail">{$value.url|thumbnail}</div>
80 <div class="linkcontainer">
81 {if="isLoggedIn()"}
82 <div class="linkeditbuttons">
83 <form method="GET" class="buttoneditform">
84 <input type="hidden" name="edit_link" value="{$value.id}">
85 <input type="image" alt="Edit" src="images/edit_icon.png#" title="Edit" class="button_edit">
86 </form><br>
87 <form method="GET" class="buttoneditform">
88 <input type="hidden" name="lf_linkdate" value="{$value.id}">
89 <input type="hidden" name="token" value="{$token}">
90 <input type="hidden" name="delete_link">
91 <input type="image" alt="Delete" src="images/delete_icon.png#" title="Delete"
92 class="button_delete" onClick="return confirmDeleteLink();">
93 </form>
94 </div>
95 {/if}
96 <span class="linktitle">
97 <a href="{$value.real_url}">{$value.title}</a>
98 </span>
99 <br>
100 {if="$value.description"}<div class="linkdescription">{$value.description}</div>{/if}
101 {if="!$hide_timestamps || isLoggedIn()"}
102 {$updated=$value.updated_timestamp ? 'Edited: '. strftime('%c', $value.updated_timestamp) : 'Permalink'}
103 <span class="linkdate" title="Permalink">
104 <a href="?{$value.shorturl}">
105 <span title="{$updated}">
106 {function="strftime('%c', $value.timestamp)"}
107 {if="$value.updated_timestamp"}*{/if}
108 </span>
109 - permalink
110 </a> -
111 </span>
112 {else}
113 <span class="linkdate" title="Short link here"><a href="?{$value.shorturl}">permalink</a> - </span>
114 {/if}
115
116 {loop="$value.link_plugin"}
117 <span>{$value}</span> -
118 {/loop}
119
120 <a href="{$value.real_url}"><span class="linkurl" title="Short link">{$value.url}</span></a><br>
121 {if="$value.tags"}
122 <div class="linktaglist">
123 {loop="$value.taglist"}<span class="linktag" title="Add tag"><a href="?addtag={$value|urlencode}">{$value}</a></span> {/loop}
124 </div>
125 {/if}
126
127
128 </div>
129 </li>
130 {/loop}
131 </ul>
132
133 <div id="plugin_zone_end_linklist" class="plugin_zone">
134 {loop="$plugin_end_zone"}
135 {$value}
136 {/loop}
137 </div>
138
139 {include="linklist.paging"}
140
141</div>
142
143 {include="page.footer"}
144
145<script src="inc/awesomplete.min.js#"></script>
146<script src="inc/awesomplete-multiple-tags.js#"></script>
147<script>
148 awesompleteUniqueTag('#tagfilter_value');
149</script>
150</body>
151</html>
diff --git a/tpl/default/linklist.paging.html b/tpl/default/linklist.paging.html
new file mode 100644
index 00000000..86019c01
--- /dev/null
+++ b/tpl/default/linklist.paging.html
@@ -0,0 +1,32 @@
1<div class="paging">
2{if="isLoggedIn()"}
3 <div class="paging_privatelinks">
4 <a href="?privateonly">
5 {if="$privateonly"}
6 <img src="images/private_16x16_active.png#" width="16" height="16" title="Click to see all links" alt="Click to see all links">
7 {else}
8 <img src="images/private_16x16.png#" width="16" height="16" title="Click to see only private links" alt="Click to see only private links">
9 {/if}
10 </a>
11
12
13 </div>
14{/if}
15 {loop="$action_plugin"}
16 <div class="paging_privatelinks">
17 <a
18 {loop="$value.attr"}
19 {$key}="{$value}"
20 {/loop}>
21 {$value.html}
22 </a>
23 </div>
24 {/loop}
25 <div class="paging_linksperpage">
26 Links per page: <a href="?linksperpage=20">20</a> <a href="?linksperpage=50">50</a> <a href="?linksperpage=100">100</a>
27 <form method="GET" class="linksperpage"><input type="text" name="linksperpage" size="2"></form>
28 </div>
29 {if="$previous_page_url"} <a href="{$previous_page_url}" class="paging_older">&#x25C4;Older</a> {/if}
30 <div class="paging_current">page {$page_current} / {$page_max} </div>
31 {if="$next_page_url"} <a href="{$next_page_url}" class="paging_newer">Newer&#x25BA;</a> {/if}
32</div>
diff --git a/tpl/default/loginform.html b/tpl/default/loginform.html
new file mode 100644
index 00000000..84176385
--- /dev/null
+++ b/tpl/default/loginform.html
@@ -0,0 +1,38 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}</head>
4<body
5{if="ban_canLogin($conf)"}
6 {if="empty($username)"}
7 onload="document.loginform.login.focus();"
8 {else}
9 onload="document.loginform.password.focus();"
10 {/if}
11{/if}>
12<div id="pageheader">
13 {include="page.header"}
14
15 <div id="headerform">
16 {if="!ban_canLogin($conf)"}
17 You have been banned from login after too many failed attempts. Try later.
18 {else}
19 <form method="post" name="loginform">
20 <label for="login">Login: <input type="text" id="login" name="login" tabindex="1"
21 {if="!empty($username)"}value="{$username}"{/if}>
22 </label>
23 <label for="password">Password: <input type="password" id="password" name="password" tabindex="2">
24 </label>
25 <input type="submit" value="Login" class="bigbutton" tabindex="4">
26 <label for="longlastingsession">
27 <input type="checkbox" name="longlastingsession" id="longlastingsession" tabindex="3">
28 Stay signed in (Do not check on public computers)</label>
29 <input type="hidden" name="token" value="{$token}">
30 {if="$returnurl"}<input type="hidden" name="returnurl" value="{$returnurl}">{/if}
31 </form>
32 {/if}
33 </div>
34</div>
35
36{include="page.footer"}
37</body>
38</html>
diff --git a/tpl/default/opensearch.html b/tpl/default/opensearch.html
new file mode 100644
index 00000000..3fcc30b7
--- /dev/null
+++ b/tpl/default/opensearch.html
@@ -0,0 +1,45 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
3 <ShortName>Shaarli search - {$pagetitle}</ShortName>
4 <Description>Shaarli search - {$pagetitle}</Description>
5 <Url type="text/html" template="{$serverurl}?searchterm={searchTerms}" />
6 <Url type="application/atom+xml" template="{$serverurl}?do=atom&amp;searchterm={searchTerms}"/>
7 <Url type="application/rss+xml" template="{$serverurl}?do=rss&amp;searchterm={searchTerms}"/>
8 <InputEncoding>UTF-8</InputEncoding>
9 <Developer>Shaarli Community - https://github.com/shaarli/Shaarli/</Developer>
10 <Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAHRklE
11 QVRIx5WWaWxU5xWG3++7986dfYYZb+MN2xiMDRiDFePUiQsNoiwpUNpAmhInJVEqpa0oQUlbJVKq
12 olaiqpLKUtOKhAJRm1BKRVWctuykpFjAgPcFx/uMl5mxPTOeuXPv3O3rjyiV0lIpfX+dc36c55xf
13 70vwP9TZ2fFpSQCwT5u6unX4f0QeNLx27RoMQwfRveTd11T23M+8S9w+Z3NRma1W4Hk6/nEimFpM
14 Xnun9Xpmz1MPY+feOhBi/fwAAOjq7iJEqmQqCZf5i7NvyNZ/bJPYgAjCiJc2Zmhyw68SM/T1+NlK
15 uf61BPoH+tHU1PT5ACMjI8RXvACvpZ5NT0+fmrG+2TKqtDLV0BgA2AUfXS3+UtfDX2ixCf73E+oA
16 rat92CTkv9fRBwEkSaLDt/JZR/v0Q7qjb8dQ5hjSqmYSOCkzBbogL+ij2RN8bik9wK88Al9tH4tG
17 ow88lvb19yEyPwfGGLq6OungYD9fUlosrqwoQVVVUeOU8qE/mU0ZTq6KNvreNort+5hugkayQUgY
18 qQld/u6qnVRhkciscOdOkNy5E0RnZ+e/AbwsZxAaHyORZA+prW01CTlnGppOqAcwUnCmlDAkAyin
19 Dapb2t7lNeRijpwvTGlJROXugoKS+upz/S19Kj9lJjxXGY1VU49tGevt7WOCSMHTeAXclePsQts9
20 Jq9oLR7rPVkHxpUYkK2c07ZDiieRNcAx3ZlNphcnsxbiMuEsXFSTZpabp+VVS17UNSV/8n7+gN75
21 +C1DM6VEjkgatiz/5IOCAheiUdeyr+198keKZXLzTKYjMDk/ZzGJhkV9AiPSdWaYIAY4U7TYNJMR
22 pugMqgHcXTiJqDK8ycMv2+TPWyWtKFw3KEdtJxNz8u8+/PNYIqeUgY/Oz+Z7q5X3gtqvG7qip8yM
23 HqdZg5kGgwGACoQQQkEMQ2DMIFnGE04xCRQTZFaexUT6jEEImJ2njjxx9fr13hfqfULTQ4apHept
24 lxf4mrqS3Tek0w1toTc1K6WcXfAwnyWH8kSkIueEhdhNrzUAv16fSCUzNwR3vr/G2lKWojMqbxF4
25 FWlLPDvBR+RBNpTsNqfkV7htuUe/UVq456qdzzvFh2KjdSH0I6ODs1ps9NHcw2jMfRYcEQyOCiox
26 aWR0fOQWVLFNUuOnrXJxfIPnpXLRKzocLpsJanhUU/bfjJ4gfwm/ys3JGX1cuS3UBvauLa/MBe9z
27 5c/xGRdSKpiVmhhN98JK/w4DGgg4uLh8u1NfPhWbmzszeH3G1rxv3dL7+qXyGaXHJi46s4QQophp
28 TKSDkHWGlAqmGCbAGAUA3sY5LlRZv3w44Dhnm0iFzbnsGfJR5E+EEsppTBVXuBptL5b8YQMlwnO+
29 Z2wtea4cl8Rc3KXJ4zShRm0CFaCaGhSDwGSMlbtLhSr7FnVhKhscC4+AO3L0x5PSFBdfE9i40SE6
30 xLSWRCIbJ6phIqEysqvk+2aJ0vhB1NK353zyaL3GS76NgRbVYykkt2OXuaQqMwuxkk0FT+OJpS+z
31 piXPRP1KzRvz4dRvO68PaWCMEQAIDcbqFiLJtyaSA/Ef3NnMGttgvHS7mUUWw7cTMemtY/cPsw3n
32 oe2+4mGXpt7VGWPJ6zOn1V2Xfaz5AxgvBzexodmeGWmCbWWTDOGpSZIIqeAe2/IYvnXgWbomUj2T
33 lNlwUP7bV64lzuRIeoodqDxi1OKRs/e0i08dH/6JPWtk6KKaZd3xj2jAXkY3BvZGK1xrhZvRNktP
34 fNA0ubQrxyxV4jHpSkWoXJPKYqBetxeRpgsMWwE5b/bxaYxUDSWmzCLbStqQuy02LY4/cWLsqH8i
35 HYNbyEeJczkJSzH2855DwsXp932F9hXEKQSQ1UHa568iRAa3uFyeNVolMBmeIrzT4cTXm37KMuvA
36 xb8XXTqiDELRgKg8h/dGWwP9iSDaIzcYJSCbA/uNR3N2sNahV/hbsSA70vEdW66tCOOpj8FRkIgU
37 Q5ybLUopiTzeTpFWUoTXdR3knwQMzLANOyQX50fWhDktLeAX3UcIA2EEQHPgi6TBsrWzaLGm7emC
38 H7bY+GPlV6YumiEpDhslxGBgROApz+yyhROzduIEzwngDh48iD3jO0nBRAUUXtHcoq+ZWbI5EWWa
39 WTieFjoKsaVoN92T88J4vlz+asXqpb+hEcdotbdueZ47vyiqhpA2UoRQwpoLtpNHxR0382jR8RzT
40 k8xYMyCMMfR33Uc8rxdrA9tpuHPyS7pPOTRPZ1arepa4rUsybiWnnU9a39ZXxdur+XoGAGMdoXLi
41 M789axnfNxDr8omiDcvF1f3OhPf18efjF/nfz6PGvv6zlrlwWwYBgcBZbKH4WKHODLHEURDxbHDF
42 QWGePftHUlZWjsy8guYnH2EgwORfZ5cuavEqgGhLnL6+sycvRP1Fbux/fheIn3wCCN4N/qdPMwA4
43 2fYOeoe7kc6kcfCbh8n+r7YwAOjs6QCl9DNx5t7dew+MOf8CcuqqoLxlhwgAAAAASUVORK5CYII=
44 </Image>
45</OpenSearchDescription>
diff --git a/tpl/default/page.footer.html b/tpl/default/page.footer.html
new file mode 100644
index 00000000..006d1d68
--- /dev/null
+++ b/tpl/default/page.footer.html
@@ -0,0 +1,31 @@
1<div id="footer">
2 <strong><a href="https://github.com/shaarli/Shaarli">Shaarli</a></strong>
3 - The personal, minimalist, super-fast, database free, bookmarking service by the Shaarli community
4 - <a href="doc/Home.html" rel="nofollow">Help/documentation</a>
5 {loop="$plugins_footer.text"}
6 {$value}
7 {/loop}
8</div>
9
10{loop="$plugins_footer.endofpage"}
11 {$value}
12{/loop}
13
14{if="$newVersion"}
15<div id="newversion">
16 <span id="version_id">&#x25CF;</span> Shaarli {$newVersion} is
17 <a href="https://github.com/shaarli/Shaarli/releases">available</a>.
18</div>
19{/if}
20{if="$versionError"}
21<div id="newversion">
22 Error: {$versionError}
23</div>
24{/if}
25{if="isLoggedIn()"}
26<script>function confirmDeleteLink() { var agree=confirm("Are you sure you want to delete this link ?"); if (agree) return true ; else return false ; }</script>
27{/if}
28
29{loop="$plugins_footer.js_files"}
30 <script src="{$value}#"></script>
31{/loop}
diff --git a/tpl/default/page.header.html b/tpl/default/page.header.html
new file mode 100644
index 00000000..cce61ec4
--- /dev/null
+++ b/tpl/default/page.header.html
@@ -0,0 +1,59 @@
1
2<div id="logo" title="Share your links !" onclick="document.location='?';"></div>
3
4<div id="linkcount" class="nomobile">
5 {if="!empty($linkcount)"}{$linkcount} links{/if}<br>
6 {if="!empty($privateLinkcount)"}{$privateLinkcount} private links{/if}
7</div>
8
9<div id="menu">
10 <ul>
11 <li><span id="shaarli_title">
12 <a href="{$titleLink}">{$shaarlititle}</a>
13 </span>
14 </li>
15
16{if="!empty($_GET['source']) && $_GET['source']=='bookmarklet'"}
17 {ignore} When called as a popup from bookmarklet, do not display menu. {/ignore}
18{else}
19<li><a href="?" class="nomobile">Home</a></li>
20 {if="isLoggedIn()"}
21 <li><a href="?do=logout">Logout</a></li>
22 <li><a href="?do=tools">Tools</a></li>
23 <li><a href="?do=addlink">Add link</a></li>
24 {elseif="$openshaarli"}
25 <li><a href="?do=tools">Tools</a></li>
26 <li><a href="?do=addlink">Add link</a></li>
27 {else}
28 <li><a href="?do=login">Login</a></li>
29 {/if}
30 <li><a href="{$feedurl}?do=rss{$searchcrits}" class="nomobile">RSS Feed</a></li>
31 {if="$showatom"}
32 <li><a href="{$feedurl}?do=atom{$searchcrits}" class="nomobile">ATOM Feed</a></li>
33 {/if}
34 <li><a href="?do=tagcloud">Tag cloud</a></li>
35 <li><a href="?do=picwall{$searchcrits}">Picture wall</a></li>
36 <li><a href="?do=daily">Daily</a></li>
37 {loop="$plugins_header.buttons_toolbar"}
38 <li><a
39 {loop="$value.attr"}
40 {$key}="{$value}"
41 {/loop}>
42 {$value.html}
43 </a></li>
44 {/loop}
45{/if}
46 </ul>
47</div>
48
49{if="!empty($plugin_errors) && isLoggedIn()"}
50 <ul class="errors">
51 {loop="$plugin_errors"}
52 <li>{$value}</li>
53 {/loop}
54 </ul>
55{/if}
56
57<div class="clear"></div>
58
59
diff --git a/tpl/default/page.html b/tpl/default/page.html
new file mode 100644
index 00000000..834915ec
--- /dev/null
+++ b/tpl/default/page.html
@@ -0,0 +1,9 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}</head>
4<body>
5 <div id="pageheader">{include="page.header"}</div>
6 You body goes here...
7 {include="page.footer"}
8</body>
9</html> \ No newline at end of file
diff --git a/tpl/default/picwall.html b/tpl/default/picwall.html
new file mode 100644
index 00000000..4e227e37
--- /dev/null
+++ b/tpl/default/picwall.html
@@ -0,0 +1,44 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}
4<script src="inc/blazy-1.3.1.min.js#"></script>
5</head>
6<body>
7<div id="pageheader">{include="page.header"}</div>
8
9<div id="plugin_zone_start_picwall" class="plugin_zone">
10 {loop="$plugin_start_zone"}
11 {$value}
12 {/loop}
13</div>
14
15<div class="center">
16 <div id="picwall_container">
17 {loop="$linksToDisplay"}
18 <div class="picwall_pictureframe">
19 {$value.thumbnail}<a href="{$value.real_url}"><span class="info">{$value.title}</span></a>
20 {loop="$value.picwall_plugin"}
21 {$value}
22 {/loop}
23 </div>
24 {/loop}
25 </div>
26</div>
27
28<div class="clear"></div>
29
30<div id="plugin_zone_end_picwall" class="plugin_zone">
31 {loop="$plugin_end_zone"}
32 {$value}
33 {/loop}
34</div>
35
36{include="page.footer"}
37
38<script>
39window.onload = function() {
40 var bLazy = new Blazy();
41}
42</script>
43</body>
44</html>
diff --git a/tpl/default/pluginsadmin.html b/tpl/default/pluginsadmin.html
new file mode 100644
index 00000000..ead1734e
--- /dev/null
+++ b/tpl/default/pluginsadmin.html
@@ -0,0 +1,134 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}</head>
4<body>
5<div id="pageheader">
6 {include="page.header"}
7</div>
8
9<noscript>
10 <div>
11 <ul class="errors">
12 <li>You need to enable Javascript to change plugin loading order.</li>
13 </ul>
14 </div>
15 <div class="clear"></div>
16</noscript>
17
18<div id="pluginsadmin">
19 <form action="?do=save_pluginadmin" method="POST">
20 <section id="enabled_plugins">
21 <h1>Enabled Plugins</h1>
22
23 <div>
24 {if="count($enabledPlugins)==0"}
25 <p>No plugin enabled.</p>
26 {else}
27 <table id="plugin_table">
28 <thead>
29 <tr>
30 <th class="center">Disable</th>
31 <th class="center">Order</th>
32 <th>Name</th>
33 <th>Description</th>
34 </tr>
35 </thead>
36 <tbody>
37 {loop="$enabledPlugins"}
38 <tr data-line="{$key}" data-order="{$counter}">
39 <td class="center"><input type="checkbox" name="{$key}" id="{$key}" checked="checked"></td>
40 <td class="center">
41 <a href="#" class="arrow"
42 onclick="return orderUp(this.parentNode.parentNode.getAttribute('data-order'));">
43
44 </a>
45 <a href="#" class="arrow"
46 onclick="return orderDown(this.parentNode.parentNode.getAttribute('data-order'));">
47
48 </a>
49 <input type="hidden" name="order_{$key}" value="{$counter}">
50 </td>
51 <td><label for="{$key}">{function="str_replace('_', ' ', $key)"}</label></td>
52 <td><label for="{$key}">{$value.description}</label></td>
53 </tr>
54 {/loop}
55 </tbody>
56 </table>
57 {/if}
58 </div>
59 </section>
60
61 <section id="disabled_plugins">
62 <h1>Disabled Plugins</h1>
63
64 <div>
65 {if="count($disabledPlugins)==0"}
66 <p>No plugin disabled.</p>
67 {else}
68 <table>
69 <tr>
70 <th class="center">Enable</th>
71 <th>Name</th>
72 <th>Description</th>
73 </tr>
74 {loop="$disabledPlugins"}
75 <tr>
76 <td class="center"><input type="checkbox" name="{$key}" id="{$key}"></td>
77 <td><label for="{$key}">{function="str_replace('_', ' ', $key)"}</label></td>
78 <td><label for="{$key}">{$value.description}</label></td>
79 </tr>
80 {/loop}
81 </table>
82 {/if}
83 </div>
84
85 <div class="center">
86 <input type="submit" value="Save"/>
87 </div>
88 </section>
89 </form>
90
91 <form action="?do=save_pluginadmin" method="POST">
92 <section id="plugin_parameters">
93 <h1>Enabled Plugin Parameters</h1>
94
95 <div>
96 {if="count($enabledPlugins)==0"}
97 <p>No plugin enabled.</p>
98 {else}
99 {loop="$enabledPlugins"}
100 {if="count($value.parameters) > 0"}
101 <div class="plugin_parameters">
102 <h2>{function="str_replace('_', ' ', $key)"}</h2>
103 {loop="$value.parameters"}
104 <div class="plugin_parameter">
105 <div class="float_label">
106 <label for="{$key}">
107 <code>{$key}</code><br>
108 {if="isset($value.desc)"}
109 {$value.desc}
110 {/if}
111 </label>
112 </div>
113 <div class="float_input">
114 <input name="{$key}" value="{$value.value}" id="{$key}"/>
115 </div>
116 </div>
117 {/loop}
118 </div>
119 {/if}
120 {/loop}
121 {/if}
122 <div class="center">
123 <input type="submit" name="parameters_form" value="Save"/>
124 </div>
125 </div>
126 </section>
127 </form>
128
129</div>
130{include="page.footer"}
131
132<script src="inc/plugin_admin.js#"></script>
133</body>
134</html>
diff --git a/tpl/default/readme.txt b/tpl/default/readme.txt
new file mode 100644
index 00000000..b18deaed
--- /dev/null
+++ b/tpl/default/readme.txt
@@ -0,0 +1,42 @@
1===== Shaarli template organisation =====
2
3Any Shaarli page should conform to this RainTPL template:
4
5-----------------------------------------------------
6<html>
7<head>{include="includes"}</head>
8<body>
9 <div id="pageheader">{include="page.header"}</div>
10 You body goes here...
11 {include="page.footer"}
12</body>
13</html>
14-----------------------------------------------------
15
16If you want to also add something in the page header (in the dark area), do it here:
17
18<div id="pageheader">{include="page.header"}My menu goes here...</div>
19
20
21Example: "Add new link" form:
22-----------------------------------------------------
23<html>
24<head>{include="includes"}</head>
25<body onload="document.addform.post.focus();">
26<div id="pageheader">
27 {include="page.header"}
28 <div id="headerform">
29 <form method="GET" action="" name="addform" class="addform">
30 <input type="text" name="post" style="width:50%;">
31 <input type="submit" value="Add link" class="bigbutton">
32 </form>
33 </div>
34</div>
35{include="page.footer"}
36</body>
37</html>
38-----------------------------------------------------
39
40
41
42
diff --git a/tpl/default/tagcloud.html b/tpl/default/tagcloud.html
new file mode 100644
index 00000000..05e45273
--- /dev/null
+++ b/tpl/default/tagcloud.html
@@ -0,0 +1,31 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}</head>
4<body>
5 <div id="pageheader">{include="page.header"}</div>
6<div class="center">
7 <div id="plugin_zone_start_tagcloud" class="plugin_zone">
8 {loop="$plugin_start_zone"}
9 {$value}
10 {/loop}
11 </div>
12
13 <div id="cloudtag">
14 {loop="$tags"}
15 <span class="count">{$value.count}</span><a
16 href="?searchtags={$key|urlencode}" style="font-size:{$value.size}em;">{$key}</a>
17 {loop="$value.tag_plugin"}
18 {$value}
19 {/loop}
20 {/loop}
21 </div>
22
23 <div id="plugin_zone_end_tagcloud" class="plugin_zone">
24 {loop="$plugin_end_zone"}
25 {$value}
26 {/loop}
27 </div>
28</div>
29{include="page.footer"}
30</body>
31</html>
diff --git a/tpl/default/tools.html b/tpl/default/tools.html
new file mode 100644
index 00000000..e06d239d
--- /dev/null
+++ b/tpl/default/tools.html
@@ -0,0 +1,104 @@
1<!DOCTYPE html>
2<html>
3<head>{include="includes"}</head>
4<body>
5<div id="pageheader">
6 {include="page.header"}
7 <div id="toolsdiv">
8 <a href="?do=configure"><b>Configure your Shaarli</b><span>: Change Title, timezone...</span></a>
9 <br><br>
10 <a href="?do=pluginadmin"><b>Plugin administration</b><span>: Enable, disable and configure plugins.</span></a>
11 <br><br>
12 {if="!$openshaarli"}<a href="?do=changepasswd"><b>Change password</b><span>: Change your password.</span></a>
13 <br><br>{/if}
14 <a href="?do=changetag"><b>Rename/delete tags</b><span>: Rename or delete a tag in all links</span></a>
15 <br><br>
16 <a href="?do=import"><b>Import</b><span>: Import Netscape html bookmarks (as exported from Firefox, Chrome, Opera, delicious...)</span></a>
17 <br><br>
18 <a href="?do=export"><b>Export</b><span>: Export Netscape html bookmarks (which can be imported in Firefox, Chrome, Opera, delicious...)</span></a>
19 <br><br>
20 <a class="smallbutton"
21 onclick="return alertBookmarklet();"
22 href="javascript:(
23 function(){
24 var%20url%20=%20location.href;
25 var%20title%20=%20document.title%20||%20url;
26 window.open(
27 '{$pageabsaddr}?post='%20+%20encodeURIComponent(url)+
28 '&amp;title='%20+%20encodeURIComponent(title)+
29 '&amp;description='%20+%20encodeURIComponent(document.getSelection())+
30 '&amp;source=bookmarklet','_blank','menubar=no,height=390,width=600,toolbar=no,scrollbars=no,status=no,dialog=1'
31 );
32 }
33 )();">
34 <b>✚Shaare link</b>
35 </a>
36 <a href="#" onclick="return alertBookmarklet();">
37 <span>
38 &#x21D0; Drag this link to your bookmarks toolbar (or right-click it and choose Bookmark This Link....).<br>
39 &nbsp;&nbsp;&nbsp;&nbsp;Then click "✚Shaare link" button in any page you want to share.
40 </span>
41 </a><br><br>
42 <a class="smallbutton"
43 onclick="return alertBookmarklet();"
44 href="?private=1&amp;post=">
45 <b>✚Add Note</b>
46 </a>
47 <a href="#" onclick="return alertBookmarklet();">
48 <span>
49 &#x21D0; Drag this link to your bookmarks toolbar (or right-click it and choose Bookmark This Link....).<br>
50 &nbsp;&nbsp;&nbsp;&nbsp;Then click "✚Add Note" button anytime to start composing a private Note (text post) to your Shaarli.
51 </span>
52 </a><br><br>
53
54 {if="$sslenabled"}
55 <a class="smallbutton" onclick="activateFirefoxSocial(this)">
56 <b>✚Add to Firefox social</b>
57 </a>
58 <a href="#">
59 <span>&#x21D0; Click on this button to add Shaarli to the "Share this page" button in Firefox.</span>
60 </a><br><br>
61 {/if}
62
63 {loop="$tools_plugin"}
64 {$value}
65 {/loop}
66
67 <div class="clear"></div>
68
69 <script>
70 {if="$sslenabled"}
71 function activateFirefoxSocial(node) {
72 var loc = location.href;
73 var baseURL = loc.substring(0, loc.lastIndexOf("/"));
74
75 // Keeping the data separated (ie. not in the DOM) so that it's maintainable and diffable.
76 var data = {
77 name: "{$shaarlititle}",
78 description: "The personal, minimalist, super-fast, no-database delicious clone.",
79 author: "Shaarli",
80 version: "1.0.0",
81
82 iconURL: baseURL + "/images/favicon.ico",
83 icon32URL: baseURL + "/images/favicon.ico",
84 icon64URL: baseURL + "/images/favicon.ico",
85
86 shareURL: baseURL + "{noparse}?post=%{url}&title=%{title}&description=%{text}&source=firefoxsocialapi{/noparse}",
87 homepageURL: baseURL
88 };
89 node.setAttribute("data-service", JSON.stringify(data));
90
91 var activate = new CustomEvent("ActivateSocialFeature");
92 node.dispatchEvent(activate);
93 }
94 {/if}
95 function alertBookmarklet() {
96 alert('Drag this link to your bookmarks toolbar, or right-click it and choose Bookmark This Link...');
97 return false;
98 }
99 </script>
100 </div>
101</div>
102{include="page.footer"}
103</body>
104</html>