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.css1208
-rw-r--r--tpl/default/daily.html101
-rw-r--r--tpl/default/dailyrss.html16
-rw-r--r--tpl/default/editlink.html63
-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, 2519 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..6d73af3e
--- /dev/null
+++ b/tpl/default/css/shaarli.css
@@ -0,0 +1,1208 @@
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, #pageheader a.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 padding: 0 5px;
58 margin: 5px 5px 0 0;
59 color: #606060;
60 border-style: outset;
61 border-width: 1px;
62 display: inline-block;
63}
64
65a.bigbutton, #pageheader a.bigbutton {
66 height: 22px;
67 line-height: 22px;
68}
69
70.smallbutton {
71 background-color: #c0c0c0;
72 background: -moz-linear-gradient(#c0c0c0, #ffffff) repeat scroll 0 0 transparent;
73 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#c0c0c0), to(#ffffff));
74 background: -webkit-linear-gradient(#c0c0c0, #ffffff);
75 background: -ms-linear-gradient(#c0c0c0, #ffffff);
76 background: -o-linear-gradient(#c0c0c0, #ffffff);
77 background: linear-gradient(#c0c0c0, #ffffff);
78 border-radius: 3px 3px 3px 3px;
79 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5);
80 cursor: pointer;
81 height: 20px;
82 margin-left: 5px;
83 padding: 0 5px;
84 color: #606060;
85 border-style: outset;
86 border-width: 1px;
87}
88
89/* Small tab on the left of each link with edit/delete buttons. */
90.button_edit, .button_delete {
91 border-radius: 0;
92 box-shadow: none;
93 border-style: none;
94 border-width: 0;
95 padding: 0;
96 background: none;
97}
98
99.linkeditbuttons {
100 position: absolute;
101 left: 2px;
102 padding: 4px 2px 2px 2px;
103
104 -webkit-border-radius: 0px 6px 6px 0px;
105 -moz-border-radius: 0px 6px 6px 0px;
106 -o-border-radius: 0px 6px 6px 0px;
107 -ms-border-radius: 0px 6px 6px 0px;
108 border-radius: 0px 6px 6px 0px;
109}
110
111#pageheader #logo {
112 background-image: url('../../../images/logo.png');
113 background-repeat: no-repeat;
114 float: left;
115 margin: 0 10px 0 10px;
116 width: 105px;
117 height: 55px;
118 cursor: pointer;
119}
120
121#pageheader #menu {
122 width: 100%;
123}
124
125#pageheader #menu ul {
126 margin: auto;
127 padding: 7px 0px 0px 0px;
128 float: none;
129}
130
131#pageheader #menu ul li {
132 list-style: none;
133 display: inline;
134 position: relative;
135 box-sizing: border-box;
136}
137
138#pageheader a {
139 background-color: #333333;
140 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#333333), to(#000000));
141 background: -webkit-linear-gradient(#333333, #000000);
142 background: -moz-linear-gradient(#333333, #000000);
143 background: -ms-linear-gradient(#333333, #000000);
144 background: -o-linear-gradient(#333333, #000000);
145 background: linear-gradient(#333333, #000000);
146 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
147 padding: 5px;
148 border-radius: 3px 3px 3px 3px;
149 margin: 10px 3px 3px 3px;
150 color: #A2DD42;
151 text-decoration: none;
152 line-height: 2.5;
153 white-space: nowrap;
154}
155
156#pageheader #linkcount {
157 float: right;
158 font-style: italic;
159 color: #bbb;
160 text-align: right;
161 padding-right: 5px;
162 margin: 3px 3px 0px 0px;
163}
164
165#pageheader {
166 background-color: #333333;
167 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#333333), to(#111111));
168 background: -webkit-linear-gradient(#333333, #111111);
169 background: -moz-linear-gradient(#333333, #111111);
170 background: -ms-linear-gradient(#333333, #111111);
171 background: -o-linear-gradient(#333333, #111111);
172 background: linear-gradient(#333333, #111111);
173 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
174 width: auto;
175 padding: 0 10px 5px 10px;
176 margin: auto;
177}
178
179#pageheader .search {
180 width: 100%;
181 white-space: nowrap;
182}
183
184#toolsdiv a {
185 clear: both;
186}
187
188#toolsdiv #bookmark {
189 clear: none;
190}
191
192#toolsdiv a span {
193 color: #ffffff;
194}
195
196.linksperpage, .tagfilter, .searchform, .addform {
197 background-color: #dedede;
198 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#dedede), to(#ffffff));
199 background: -webkit-linear-gradient(#dedede, #ffffff);
200 background: -moz-linear-gradient(#dedede, #ffffff);
201 background: -ms-linear-gradient(#dedede, #ffffff);
202 background: -o-linear-gradient(#dedede, #ffffff);
203 background: linear-gradient(#dedede, #ffffff);
204 display: inline;
205 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
206 padding: 5px;
207 border: none;
208 border-radius: 3px 3px 3px 3px;
209 margin: 10px 3px 3px 3px;
210 color: #cecece;
211}
212
213.linksperpage {
214 box-shadow: 0 0 0 rgba(0, 0, 0, 0.5);
215 padding: 3px;
216}
217
218.linksperpage input, .tagfilter input, .searchform input, .addform input {
219 border: none;
220 color: #606060;
221 background: none;
222 box-shadow: none;
223 padding: 5px;
224}
225
226.linksperpage input {
227 padding: 0;
228}
229
230.searchform #searchform_value {
231 width: 30%;
232}
233
234.tagfilter {
235 margin-left:24px;
236}
237
238.tagfilter div.awesomplete {
239 width: 15%;
240}
241
242.tagfilter #tagfilter_value {
243 display: inline;
244}
245
246.tagfilter li {
247 color: black;
248}
249
250.tagfilter input.bigbutton, .searchform input.bigbutton, .addform input.bigbutton {
251 background-color: #dedede;
252 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#dedede), to(#ffffff));
253 background: -webkit-linear-gradient(#dedede, #ffffff);
254 background: -moz-linear-gradient(#dedede, #ffffff);
255 background: -ms-linear-gradient(#dedede, #ffffff);
256 background: -o-linear-gradient(#dedede, #ffffff);
257 background: linear-gradient(#dedede, #ffffff);
258 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
259 padding: 0 5px 0 5px;
260 margin: 5px 0 5px 0;
261 height: 20px;
262 border-radius: 3px 3px 3px 3px;
263 cursor: pointer;
264}
265
266#shaarli_title {
267 font-weight: bold;
268 font-style: italic;
269 margin-top: 0;
270}
271
272#shaarli_title a {
273 color: #fff !important;
274}
275
276#pageheader a:visited {
277 color: #98C943;
278 text-decoration: none;
279}
280
281#pageheader a:hover {
282 color: #FFFFC9;
283 text-decoration: none;
284}
285
286#pageheader a:active {
287 color: #bbb;
288 text-decoration: none;
289}
290
291#searchcriteria {
292 padding: 4px 0px 5px 5px;
293 font-weight: bold;
294}
295
296.paging {
297 padding: 5px;
298 background-color: #777;
299 color: #ccc;
300 text-align: center;
301 clear: both;
302}
303
304.paging a:link {
305 color: #ccc;
306 text-decoration: none;
307}
308
309.paging a:visited {
310 color: #ccc;
311}
312
313.paging a:hover {
314 color: #FFFFC9;
315}
316
317.paging a:active {
318 color: #fff;
319}
320
321.paging_privatelinks {
322 float: left;
323}
324
325.paging_linksperpage {
326 float: right;
327 padding-right: 5px;
328 margin: 0px 10px 2px 0px;
329}
330
331.paging_linksperpage form.linksperpage {
332 display: inline;
333}
334
335.paging_linksperpage form.linksperpage input {
336 height: 15px;
337}
338
339.paging_current {
340 display: inline;
341 color: #fff;
342 padding: 0 20 0 20;
343}
344
345.paging_older {
346 margin-right: 15px;
347}
348
349.paging_newer {
350 margin-left: 15px;
351}
352
353#headerform {
354 color: #ffffff;
355 padding: 5px 5px 5px 5px;
356 clear: both;
357}
358
359#headerform input.linkurl {
360 width: 50%;
361 font-size: inherit;
362}
363
364#headerform label {
365 cursor: pointer;
366 margin-right: 10px;
367}
368
369#headerform label[for=longlastingsession] {
370 display: block;
371 width: 100%;
372 margin-top: 5px;
373}
374
375#toolsdiv {
376 color: #ffffff;
377 padding: 5px 5px 5px 5px;
378 clear: left;
379}
380
381#uploaddiv {
382 color: #ffffff;
383 padding: 5px 5px 5px 5px;
384 clear: left;
385}
386
387#editlinkform {
388 height: 100%;
389 padding: 5px 5px 5px 15px;
390 width: 80%;
391 clear: left;
392}
393
394#editlinkform label {
395 cursor: pointer;
396 color: #ffffff;
397}
398
399#editlinkform textarea, #editlinkform .lf_input {
400 width: 100%;
401}
402
403#linklist li {
404 padding: 4px 10px 15px 20px;
405 border-top: 1px solid #bbb;
406 clear: both;
407 background-color: #F2F2F2;
408 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#F2F2F2), to(#ffffff));
409 background: -webkit-linear-gradient(#F2F2F2, #ffffff);
410 background: -moz-linear-gradient(#F2F2F2, #ffffff);
411 background: -ms-linear-gradient(#F2F2F2, #ffffff);
412 background: -o-linear-gradient(#F2F2F2, #ffffff);
413 background: linear-gradient(#F2F2F2, #ffffff);
414}
415
416/*
417#linklist li.publicLinkHightLight:hover, #linklist li:hover {
418 background: #E9FFCE;
419}
420*/
421
422.linkdate {
423 font-size:8pt;
424 color:#888;
425}
426
427.linkdate a {
428 color:#E28E3F;
429}
430
431#linklist li.private {
432 background: url('../images/private.png') no-repeat 4px center;
433 padding-left: 30px;
434}
435
436#linklist li {
437 padding-left: 30px;
438}
439
440.private .linktitle a {
441 color: #969696;
442}
443
444.linktitle {
445 font-size: 14pt;
446 font-weight: bold;
447}
448
449.linktitle a {
450 text-decoration: none;
451 color: #80AD48;
452}
453
454.linktitle a:hover {
455 color: #F57900;
456}
457
458.linkdate {
459 font-size: 8pt;
460 color: #888;
461}
462
463.linkdate a {
464 background-image: url('../images/calendar.png');
465 padding: 2px 0 3px 20px;
466 background-repeat: no-repeat;
467 text-decoration: none;
468 color: #E28E3F;
469}
470
471.linkdate a:hover {
472 color: #F57900 }
473
474.linkurl {
475 font-size: 8pt;
476 color: #4BAA74;
477}
478
479.linkdescription {
480 color: #000;
481 margin-top: 0;
482 margin-bottom: 12px;
483 font-weight: normal;
484 overflow: auto;
485}
486
487.linkdescription a {
488 text-decoration: none;
489 color: #3465A4;
490}
491
492.linkdescription a:hover {
493 color: #F57900;
494}
495
496.linktaglist {
497 padding-top: 10px;
498 line-height: 200%;
499}
500
501.linktag {
502 font-size: 9pt;
503 background-color: #F2F2F2;
504 background: -webkit-gradient(linear, 0 0, 0 bottom, from(#F2F2F2), to(#ffffff));
505 background: -webkit-linear-gradient(#F2F2F2, #ffffff);
506 background: -moz-linear-gradient(#F2F2F2, #ffffff);
507 background: -ms-linear-gradient(#F2F2F2, #ffffff);
508 background: -o-linear-gradient(#F2F2F2, #ffffff);
509 background: linear-gradient(#F2F2F2, #ffffff);
510 box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
511 padding: 3px 5px 3px 20px;
512 height: 20px;
513 border-radius: 3px;
514 cursor: pointer;
515 background-image: url('../images/tag_blue.png');
516 background-repeat: no-repeat;
517 background-position: 3px center;
518 background-color: #ffffff;
519}
520
521.linktag:hover {
522 border-color: #555573;
523 color: #000;
524}
525
526.linktag a {
527 color: #777;
528 text-decoration: none;
529}
530
531.linktag .remove {
532 border-left: 1px solid #aaa;
533 padding-left: 5px;
534 color:#6767A7;
535}
536
537.linkshort {
538 font-size: 8pt;
539 color: #888;
540}
541
542.linkshort a {
543 text-decoration: none;
544 color: #393964;
545}
546
547.linkshort a:hover {
548 text-decoration: underline;
549}
550
551.buttoneditform {
552 display: inline;
553}
554
555#footer {
556 font-size: 8pt;
557 text-align: center;
558 color: #888;
559 clear: both;
560 max-width: 30em;
561 margin: 15px auto 15px auto;
562}
563
564#footer a {
565 color: #486D08;
566}
567
568#footer a:hover {
569 color: #000000;
570}
571
572#newversion {
573 background-color: #FFFFA0;
574 color: #000;
575 position: absolute;
576 top: 0;
577 right: 0;
578 padding: 2 7 2 7;
579 font-size: 9pt;
580}
581
582#newversion #version_id {
583 text-decoration: blink;
584}
585
586#cloudtag {
587 padding-left: 10%;
588 padding-right: 10%;
589}
590
591#cloudtag .count {
592 color: #99f;
593 font-size: 9pt;
594 padding-left: 5px;
595 padding-right: 2px;
596}
597
598#cloudtag a {
599 color: black;
600 text-decoration: none;
601}
602
603#install {
604 margin: 0 20px;
605}
606
607#installform {
608 border: 1px solid black;
609 padding: 10px;
610}
611
612#installform table {
613 border: none;
614}
615
616#installform td {
617 font-size: 10pt;
618 color: black;
619 padding: 10px 5px 10px 5px;
620 clear: left;
621}
622
623#installform input.bigbutton {
624 float: right;
625}
626
627#changepasswordform {
628 color: #ccc;
629 padding: 10px 5px 10px 5px;
630 clear: left;
631}
632
633#changetag {
634 color: #ccc;
635 padding: 10px 5px 10px 5px;
636 clear: left;
637}
638
639#changetag #totag {
640 margin-left: 40px;
641}
642
643#changetag div {
644 float:left;
645}
646
647#changetag label {
648 padding: 5px;
649}
650
651#changetag li {
652 color: #000;
653}
654#configform td {
655 color: #ccc;
656 font-size: 10pt;
657 padding: 10px 5px 10px 5px;
658}
659
660#configform {
661 color: #ccc;
662 padding: 10px 5px 10px 5px;
663 clear: left;
664}
665
666.thumbnail {
667 float: right;
668 margin: 0px 10px 0px 10px;
669}
670
671.thumbnail img {
672 border-radius: 3px;
673 box-shadow: 0.5px 0.5px 0.5px 1px #dde4e6;
674}
675
676/* If you want thumbnails on the left:
677.thumbnail {
678 float: left;
679 margin-right: 10px;
680}
681.linkcontainer {
682 position: static;
683 margin-left: 130px;
684}
685*/
686
687/* --- Picture wall CSS --- */
688#picwall_container {
689 color: #fff;
690 background-color: #000;
691 clear: both;
692}
693
694.picwall_pictureframe {
695 background-color: #000;
696 z-index: 5;
697 position: relative;
698 display: table-cell;
699 vertical-align: middle;
700 width: 90px;
701 height: 90px;
702 overflow: hidden;
703 text-align: center;
704 float: left;
705}
706
707.b-lazy {
708 -webkit-transition: opacity 500ms ease-in-out;
709 -moz-transition: opacity 500ms ease-in-out;
710 -o-transition: opacity 500ms ease-in-out;
711 transition: opacity 500ms ease-in-out;
712 opacity: 0;
713}
714.b-lazy.b-loaded {
715 opacity: 1;
716}
717
718.picwall_pictureframe img {
719 max-width: 100%;
720 height: auto;
721 color: transparent;
722} /* Adapt the width of the image */
723
724.picwall_pictureframe a {
725 text-decoration: none;
726}
727
728/* CSS to show title when hovering an image - no javascript required. */
729.picwall_pictureframe span.info {
730 display: none;
731}
732
733.picwall_pictureframe:hover span.info {
734 display: block;
735 position: absolute;
736 top: 0;
737 left: 0;
738 width: 90px;
739 font-weight: bold;
740 font-size: 8pt;
741 color: #fff;
742 text-align: left;
743 background-color: transparent;
744 background-color: rgba(0, 0, 0, 0.4);
745 /* FF3+, Saf3+, Opera 10.10+, Chrome, IE9 */
746 filter: progid: DXImageTransform.Microsoft.gradient(startColorstr=#66000000, endColorstr=#66000000);
747 /* IE6–IE9 */
748 text-shadow: 2px 2px 1px #000000;
749}
750
751#linklist li.publicLinkHightLight {
752 background: #ffffff;
753}
754
755div.daily {
756 font-family: Georgia, 'DejaVu Serif', Norasi, serif;
757 background-color: #E6D6BE;
758 /* Background paper texture by BashCorpo:
759 http://www.bashcorpo.dk/textures.php
760 http://bashcorpo.deviantart.com/art/Grungy-paper-texture-v-5-22966998 */
761 background-image: url("../images/Paper_texture_v5_by_bashcorpo_w1000.jpg");
762 -webkit-background-size: cover;
763 -moz-background-size: cover;
764 -o-background-size: cover;
765 background-size: cover;
766 position: relative;
767 border-bottom: 2px solid black;
768}
769
770#daily_col1 {
771 float: left;
772 position: relative;
773 width: 33%;
774 padding-left: 1%;
775}
776
777#daily_col2 {
778 float: left;
779 position: relative;
780 width: 33%;
781}
782
783#daily_col3 {
784 float: left;
785 position: relative;
786 width: 33%;
787}
788
789div.dailyAbout {
790 float: left;
791 border: 1px solid black;
792 font-size: 8pt;
793 position: absolute;
794 left: 10px;
795 top: 15px;
796 padding: 5px 5px 5px 5px;
797 text-align: center;
798}
799
800div.dailyAbout a {
801 color: #890500;
802}
803
804div.dailyAbout img {
805 position: relative;
806 top: 3px;
807 margin-right: 4px;
808 width: 14px;
809 height: 14px;
810}
811
812div.dailyEntryPermalink {
813 float: right;
814}
815
816div.dailyTitle {
817 font-weight: bold;
818 font-size: 44pt;
819 text-align: center;
820 padding: 10px 20px 0px 20px;
821}
822
823div.dailyDate {
824 font-size: 12pt;
825 font-weight: bold;
826 text-align: center;
827 padding: 0px 20px 30px 20px;
828}
829
830/* Individual entries in "Daily": */
831div.dailyEntry {
832 margin: 5px 10px 2px 5px;
833 font-size: 11pt;
834 border-top: 1px solid #555;
835}
836
837div.dailyEntry a {
838 text-decoration: none;
839 color: #890500;
840}
841
842div.dailyEntryTags {
843 font-size: 7.75pt;
844}
845
846div.dailyEntryTitle {
847 font-size: 18pt;
848 font-weight: bold;
849}
850
851div.dailyEntryLinkdate {
852 font-size: 8pt;
853}
854
855div.dailyEntryThumbnail {
856 width: 100%;
857 text-align: center;
858 background-color: rgb(128, 128, 128);
859 background: url(../images/50pc_transparent.png);
860 padding: 4px 0px 2px 0px;
861}
862
863div.dailyEntryDescription {
864 margin-top: 10px;
865 margin-bottom: 30px;
866 text-align: justify;
867 overflow: auto;
868}
869
870div.dailyNoEntry {
871 text-align: center;
872 padding: 40px 0px 90px 0px;
873}
874
875.daily #closing {
876 clear: both;
877 text-align: center;
878 padding-bottom: 20px;
879}
880
881/* Common CSS screwdriver */
882.clear {
883 clear: both;
884}
885
886.right {
887 text-align: right;
888}
889
890.white {
891 color: white;
892}
893
894/* For lazy images loading in picture wall.
895 Using http://www.appelsiini.net/projects/lazyload
896*/
897.lazyimage {
898 display: none;
899}
900
901#configuration_table td {
902 border: none;
903 padding: 10px;
904 vertical-align: top;
905}
906
907@media print {
908 html {
909 border: none;
910 background: #fff !important;
911 color: #000 !important;
912 }
913
914 body {
915 font-size: 12pt;
916 width: auto !important;
917 margin: auto !important;
918 }
919
920 /* Minimum numer of lines to display when splitting a paragraph
921 over two pages */
922 p {
923 orphans: 3;
924 widows: 3;
925 }
926
927 a {
928 color: #000 !important;
929 text-decoration: none !important;
930 }
931
932 #pageheader, .paging, #linklist li form, #footer {
933 display: none;
934 }
935
936 #linklist li {
937 padding: 2 0 10 0;
938 border-top: 2px solid #000;
939 clear: both;
940 }
941
942 #linklist li.private {
943 background-color: none;
944 border-left: 0;
945 }
946
947 .linkdate {
948 line-height: 2;
949 }
950
951 .linkurl {
952 color: #000;
953 }
954
955 .linkdescription {
956 font-size: 10pt;
957 }
958
959 .linktag {
960 border: 1px solid black;
961 font-style: italic;
962 font-size: 8pt;
963 }
964}
965
966@media handheld, only screen and (max-width: 480px), only screen and (max-device-width: 854px) {
967 /* A few fixes for mobile devices (far from perfect). */
968
969 .tagfilter div.awesomplete {
970 width: 70%;
971 }
972
973 .nomobile {
974 display: none;
975 }
976
977 #logo {
978 display: none;
979 }
980
981 #pageheader #menu ul {
982 text-align: center;
983 }
984
985 #pageheader #menu a {
986 padding: 5px;
987 border-radius: 3px 3px 3px 3px;
988 margin: 3px;
989 }
990
991 #headerform label {
992 width: 100%;
993 display: block;
994 height: auto;
995 line-height: 25px;
996 padding-bottom: 10px;
997 }
998
999 #headerform label input[type=text],
1000 #headerform label input[type=password]{
1001 float: right;
1002 width: 70%;
1003 }
1004
1005 .searchform, .tagfilter {
1006 display: block !important;
1007 margin: 0px 3px 7px 0px !important;
1008 padding: 0px !important;
1009 width: 97% !important;
1010 }
1011
1012 .searchform input, .tagfilter input {
1013 margin: 0px !important;
1014 padding: 0px !important;
1015 display: inline !important;
1016 }
1017
1018 .tagfilter input.bigbutton, .searchform input.bigbutton, .addform input.bigbutton, a.bigbutton {
1019 width: 30%;
1020 font-size: smaller;
1021 }
1022
1023 #searchform_value {
1024 width: 70% !important;
1025 }
1026
1027 #tagfilter_value {
1028 width: 70% !important;
1029 }
1030
1031 div.qrcode {
1032 position: relative;
1033 float: left;
1034 top: -10px;
1035 left: 0px;
1036 }
1037
1038 .paging_privatelinks {
1039 float: none;
1040 }
1041
1042 .paging_linksperpage {
1043 float: none;
1044 margin-bottom: 10px;
1045 font-size: smaller;
1046 }
1047
1048 #paging_older, #paging_newer, .paging_linksperpage a {
1049 border: 1px solid black;
1050 padding: 3px 5px 3px 5px;
1051 background-color: #666;
1052 color: #fff;
1053 border-radius: 3px 3px 3px 3px;
1054 }
1055
1056 .thumbnail {
1057 float: none;
1058 height: auto;
1059 margin: 0px;
1060 text-align: center;
1061 }
1062
1063 #cloudtag {
1064 padding: 0px;
1065 }
1066
1067 div.dailyAbout {
1068 float: none;
1069 position: relative;
1070 width: 100%;
1071 clear: both;
1072 padding: 0px;
1073 top: 0px;
1074 left: 0px;
1075 }
1076
1077 #daily_col1, #daily_col2, #daily_col3 {
1078 float: none;
1079 width: 100%;
1080 padding: 0px;
1081 }
1082
1083 div.dailyTitle {
1084 font-size: 18pt;
1085 margin-top: 5px;
1086 padding: 0px;
1087 }
1088
1089 div.dailyDate {
1090 font-size: 11pt;
1091 padding: 0px;
1092 display: block;
1093 }
1094
1095 div.dailyEntryTitle {
1096 font-size: 16pt;
1097 font-weight: bold;
1098 }
1099
1100 div.dailyEntryDescription {
1101 font-size: 10pt;
1102 }
1103}
1104
1105#toolsdiv a.button-description {
1106 clear: none;
1107}
1108
1109/* Highlight search results */
1110.highlight {
1111 background-color: #FFFF33;
1112}
1113
1114.center {
1115 text-align: center;
1116}
1117
1118ul.errors {
1119 color: red;
1120 float: left;
1121}
1122
1123#pluginsadmin {
1124 width: 80%;
1125 padding: 20px 0 0 20px;
1126}
1127
1128#pluginsadmin section {
1129 padding: 20px 0;
1130}
1131
1132#pluginsadmin .plugin_parameters {
1133 margin: 10px 0;
1134}
1135
1136#pluginsadmin h1 {
1137 font-style: normal;
1138}
1139
1140#pluginsadmin h2 {
1141 font-size: 1.4em;
1142 font-weight: bold;
1143}
1144
1145#pluginsadmin table {
1146 width: 100%;
1147}
1148
1149#pluginsadmin table, #pluginsadmin th, #pluginsadmin td {
1150 border-width: 1px 0;
1151 border-style: solid;
1152 border-color: #c0c0c0;
1153}
1154
1155#pluginsadmin table th {
1156 font-weight: bold;
1157 padding: 10px 0;
1158}
1159
1160#pluginsadmin table td {
1161 padding: 5px 0;
1162}
1163
1164#pluginsadmin input[type=submit] {
1165 margin: 10px 0;
1166}
1167
1168#pluginsadmin label {
1169 cursor: pointer;
1170}
1171
1172#pluginsadmin .plugin_parameter {
1173 padding: 10px 0;
1174 border-width: 1px 0;
1175 border-style: solid;
1176 border-color: #c0c0c0;
1177}
1178
1179#pluginsadmin .float_label {
1180 float: left;
1181 width: 40%;
1182}
1183
1184#pluginsadmin a {
1185 color: #486D08;
1186}
1187
1188#pluginsadmin a.arrow {
1189 color: black;
1190}
1191
1192/* 404 page */
1193.error-container {
1194
1195 margin: 50px;
1196 margin-top: 20px;
1197}
1198
1199.error-container h1 {
1200 text-decoration: none;
1201 font-style: normal;
1202 color: #80AD48;
1203}
1204
1205.linklist-plugin-icon {
1206 width: 13px;
1207 height: 13px;
1208}
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..a2d9b78f
--- /dev/null
+++ b/tpl/default/editlink.html
@@ -0,0 +1,63 @@
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 && isset($link.id)"}
43 <a href="?delete_link&amp;lf_linkdate={$link.id}&amp;token={$token}"
44 name="delete_link" class="bigbutton"
45 onClick="return confirmDeleteLink();">
46 {'Delete'|t}
47 </a>
48 {/if}
49 <input type="hidden" name="token" value="{$token}">
50 {if="$http_referer"}<input type="hidden" name="returnurl" value="{$http_referer}">{/if}
51 </form>
52 </div>
53</div>
54{if="$source !== 'firefoxsocialapi'"}
55{include="page.footer"}
56{/if}
57<script src="inc/awesomplete.min.js#"></script>
58<script src="inc/awesomplete-multiple-tags.js#"></script>
59<script>
60 awesompleteUniqueTag('#lf_tags');
61</script>
62</body>
63</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..17b78b17
--- /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('data/user.css')"}<link type="text/css" rel="stylesheet" href="data/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>