diff options
Diffstat (limited to 'tpl/default')
34 files changed, 2506 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"> | ||
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 | or <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..94f6df69 --- /dev/null +++ b/tpl/default/configure.html | |||
@@ -0,0 +1,124 @@ | |||
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 | {if="$value===$theme"} | ||
29 | <option selected value="{$value}">{$value|ucfirst}</option> | ||
30 | {else} | ||
31 | <option value="{$value}">{$value|ucfirst}</option> | ||
32 | {/if} | ||
33 | {/loop} | ||
34 | </select> | ||
35 | <label for="theme">(default value is: Default)</label> | ||
36 | </td> | ||
37 | </tr> | ||
38 | |||
39 | <tr> | ||
40 | <td><b>Timezone:</b></td> | ||
41 | <td>{$timezone_form}</td> | ||
42 | </tr> | ||
43 | |||
44 | <tr> | ||
45 | <td><b>Redirector</b></td> | ||
46 | <td> | ||
47 | <input type="text" name="redirector" id="redirector" size="50" value="{$redirector}"><br> | ||
48 | (e.g. <i>http://anonym.to/?</i> will mask the HTTP_REFERER) | ||
49 | </td> | ||
50 | </tr> | ||
51 | |||
52 | <tr> | ||
53 | <td><b>Security:</b></td> | ||
54 | <td> | ||
55 | <input type="checkbox" name="disablesessionprotection" id="disablesessionprotection" | ||
56 | {if="$session_protection_disabled"}checked{/if}> | ||
57 | <label | ||
58 | for="disablesessionprotection"> Disable session cookie hijacking protection (Check this if you get | ||
59 | disconnected often or if your IP address changes often.)</label> | ||
60 | </td> | ||
61 | </tr> | ||
62 | |||
63 | <tr> | ||
64 | <td valign="top"><b>New link:</b></td> | ||
65 | <td> | ||
66 | <input type="checkbox" name="privateLinkByDefault" id="privateLinkByDefault" | ||
67 | {if="$private_links_default"}checked{/if}/> | ||
68 | <label for="privateLinkByDefault"> | ||
69 | All new links are private by default | ||
70 | </label> | ||
71 | </td> | ||
72 | </tr> | ||
73 | <tr> | ||
74 | <td valign="top"><b>RSS direct links</b></td> | ||
75 | <td> | ||
76 | <input type="checkbox" name="enableRssPermalinks" id="enableRssPermalinks" | ||
77 | {if="$enable_rss_permalinks"}checked{/if}/> | ||
78 | <label for="enableRssPermalinks"> | ||
79 | Disable it to use permalinks in RSS feed instead of direct links to your shaared links. Currently <b> | ||
80 | {if="$enable_rss_permalinks"}enabled{else}disabled{/if}.</b> | ||
81 | </label> | ||
82 | </td> | ||
83 | </tr> | ||
84 | <tr> | ||
85 | <td valign="top"><b>Hide public links</b></td> | ||
86 | <td> | ||
87 | <input type="checkbox" name="hidePublicLinks" id="hidePublicLinks" | ||
88 | {if="$hide_public_links"}checked{/if}/> | ||
89 | <label for="hidePublicLinks"> Do not show any links if the user is not logged in.</label> | ||
90 | </td> | ||
91 | </tr> | ||
92 | <tr> | ||
93 | <td valign="top"><b>Update:</b></td> | ||
94 | <td> | ||
95 | <input type="checkbox" name="updateCheck" id="updateCheck" | ||
96 | {if="$enable_update_check"}checked{/if}/> | ||
97 | <label for="updateCheck"> Notify me when a new release is ready</label> | ||
98 | </td> | ||
99 | </tr> | ||
100 | <tr> | ||
101 | <td valign="top"><b>Enable REST API</b></td> | ||
102 | <td> | ||
103 | <input type="checkbox" name="apiEnabled" id="apiEnabled" | ||
104 | {if="$api_enabled"}checked{/if}/> | ||
105 | <label for="apiEnabled"> Allow third party software to use Shaarli such as mobile application.</label> | ||
106 | </td> | ||
107 | </tr> | ||
108 | <tr> | ||
109 | <td valign="top"><b>API secret</b></td> | ||
110 | <td> | ||
111 | <input type="text" name="apiSecret" id="apiSecret" size="50" value="{$api_secret}" /> | ||
112 | </td> | ||
113 | </tr> | ||
114 | |||
115 | <tr> | ||
116 | <td></td> | ||
117 | <td class="right"><input type="submit" name="Save" value="Save config" class="bigbutton"></td> | ||
118 | </tr> | ||
119 | </table> | ||
120 | </form> | ||
121 | </div> | ||
122 | {include="page.footer"} | ||
123 | </body> | ||
124 | </html> | ||
diff --git a/tpl/default/daily.html b/tpl/default/daily.html new file mode 100644 index 00000000..024ee32e --- /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&day={$previousday}"><b><</b>Previous day</a>{else}<b><</b>Previous day{/if} | ||
18 | - | ||
19 | {if="$nextday"}<a href="?do=daily&day={$nextday}">Next day<b>></b></a>{else}Next day<b>></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">———————————</span> | ||
38 | {function="strftime('%A %d, %B %Y', $day)"} | ||
39 | <span class="nomobile">———————————</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/squiggle2.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 | <label for="lf_private"><i>Private</i></label><br> | ||
36 | {else} | ||
37 | <input type="checkbox" name="lf_private" id="lf_private"> | ||
38 | <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/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/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"> Visibility:</label><br> | ||
17 | <input type="radio" name="privacy" value="default" checked="true"> | ||
18 | Use values from the imported file, default to public<br> | ||
19 | <input type="radio" name="privacy" value="private"> | ||
20 | Import all bookmarks as private<br> | ||
21 | <input type="radio" name="privacy" value="public"> | ||
22 | Import all bookmarks as public<br> | ||
23 | |||
24 | <input type="checkbox" name="overwrite" id="overwrite"> | ||
25 | <label for="overwrite"> Overwrite existing bookmarks</label><br> | ||
26 | <label for="default_tags"> 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/inc/reset.css b/tpl/default/inc/reset.css new file mode 100644 index 00000000..e29699e2 --- /dev/null +++ b/tpl/default/inc/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 | */ | ||
6 | html{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/inc/shaarli.css b/tpl/default/inc/shaarli.css new file mode 100644 index 00000000..45890f62 --- /dev/null +++ b/tpl/default/inc/shaarli.css | |||
@@ -0,0 +1,1198 @@ | |||
1 | /* Cascading Stylesheet for Shaarli - https://github.com/shaarli/Shaarli */ | ||
2 | |||
3 | body { | ||
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 | |||
10 | input, 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 | |||
25 | a { | ||
26 | text-decoration: none; | ||
27 | } | ||
28 | |||
29 | h1 { | ||
30 | font-size: 20pt; | ||
31 | font-weight: bold; | ||
32 | font-style: italic; | ||
33 | margin-bottom: 20px; | ||
34 | } | ||
35 | |||
36 | em { | ||
37 | font-style: italic; | ||
38 | } | ||
39 | |||
40 | strong { | ||
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 | /* IE6IE9 */ | ||
742 | text-shadow: 2px 2px 1px #000000; | ||
743 | } | ||
744 | |||
745 | #linklist li.publicLinkHightLight { | ||
746 | background: #ffffff; | ||
747 | } | ||
748 | |||
749 | div.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 | |||
783 | div.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 | |||
794 | div.dailyAbout a { | ||
795 | color: #890500; | ||
796 | } | ||
797 | |||
798 | div.dailyAbout img { | ||
799 | position: relative; | ||
800 | top: 3px; | ||
801 | margin-right: 4px; | ||
802 | width: 14px; | ||
803 | height: 14px; | ||
804 | } | ||
805 | |||
806 | div.dailyTitle { | ||
807 | font-weight: bold; | ||
808 | font-size: 44pt; | ||
809 | text-align: center; | ||
810 | padding: 10px 20px 0px 20px; | ||
811 | } | ||
812 | |||
813 | div.dailyDate { | ||
814 | font-size: 12pt; | ||
815 | font-weight: bold; | ||
816 | text-align: center; | ||
817 | padding: 0px 20px 30px 20px; | ||
818 | } | ||
819 | |||
820 | /* Individual entries in "Daily": */ | ||
821 | div.dailyEntry { | ||
822 | margin: 5px 10px 2px 5px; | ||
823 | font-size: 11pt; | ||
824 | border-top: 1px solid #555; | ||
825 | } | ||
826 | |||
827 | div.dailyEntry a { | ||
828 | text-decoration: none; | ||
829 | color: #890500; | ||
830 | } | ||
831 | |||
832 | div.dailyEntryTags { | ||
833 | font-size: 7.75pt; | ||
834 | } | ||
835 | |||
836 | div.dailyEntryTitle { | ||
837 | font-size: 18pt; | ||
838 | font-weight: bold; | ||
839 | } | ||
840 | |||
841 | div.dailyEntryLinkdate { | ||
842 | font-size: 8pt; | ||
843 | } | ||
844 | |||
845 | div.dailyEntryThumbnail { | ||
846 | width: 100%; | ||
847 | text-align: center; | ||
848 | background-color: rgb(128, 128, 128); | ||
849 | background: url(../images/50pc_transparent.png); | ||
850 | padding: 4px 0px 2px 0px; | ||
851 | } | ||
852 | |||
853 | div.dailyEntryDescription { | ||
854 | margin-top: 10px; | ||
855 | margin-bottom: 30px; | ||
856 | text-align: justify; | ||
857 | overflow: auto; | ||
858 | } | ||
859 | |||
860 | div.dailyNoEntry { | ||
861 | text-align: center; | ||
862 | padding: 40px 0px 90px 0px; | ||
863 | } | ||
864 | |||
865 | .daily #closing { | ||
866 | clear: both; | ||
867 | text-align: center; | ||
868 | padding-bottom: 20px; | ||
869 | } | ||
870 | |||
871 | /* Common CSS screwdriver */ | ||
872 | .clear { | ||
873 | clear: both; | ||
874 | } | ||
875 | |||
876 | .right { | ||
877 | text-align: right; | ||
878 | } | ||
879 | |||
880 | .white { | ||
881 | color: white; | ||
882 | } | ||
883 | |||
884 | /* For lazy images loading in picture wall. | ||
885 | Using http://www.appelsiini.net/projects/lazyload | ||
886 | */ | ||
887 | .lazyimage { | ||
888 | display: none; | ||
889 | } | ||
890 | |||
891 | #configuration_table td { | ||
892 | border: none; | ||
893 | padding: 10px; | ||
894 | vertical-align: top; | ||
895 | } | ||
896 | |||
897 | @media print { | ||
898 | html { | ||
899 | border: none; | ||
900 | background: #fff !important; | ||
901 | color: #000 !important; | ||
902 | } | ||
903 | |||
904 | body { | ||
905 | font-size: 12pt; | ||
906 | width: auto !important; | ||
907 | margin: auto !important; | ||
908 | } | ||
909 | |||
910 | /* Minimum numer of lines to display when splitting a paragraph | ||
911 | over two pages */ | ||
912 | p { | ||
913 | orphans: 3; | ||
914 | widows: 3; | ||
915 | } | ||
916 | |||
917 | a { | ||
918 | color: #000 !important; | ||
919 | text-decoration: none !important; | ||
920 | } | ||
921 | |||
922 | #pageheader, .paging, #linklist li form, #footer { | ||
923 | display: none; | ||
924 | } | ||
925 | |||
926 | #linklist li { | ||
927 | padding: 2 0 10 0; | ||
928 | border-top: 2px solid #000; | ||
929 | clear: both; | ||
930 | } | ||
931 | |||
932 | #linklist li.private { | ||
933 | background-color: none; | ||
934 | border-left: 0; | ||
935 | } | ||
936 | |||
937 | .linkdate { | ||
938 | line-height: 2; | ||
939 | } | ||
940 | |||
941 | .linkurl { | ||
942 | color: #000; | ||
943 | } | ||
944 | |||
945 | .linkdescription { | ||
946 | font-size: 10pt; | ||
947 | } | ||
948 | |||
949 | .linktag { | ||
950 | border: 1px solid black; | ||
951 | font-style: italic; | ||
952 | font-size: 8pt; | ||
953 | } | ||
954 | } | ||
955 | |||
956 | @media handheld, only screen and (max-width: 480px), only screen and (max-device-width: 854px) { | ||
957 | /* A few fixes for mobile devices (far from perfect). */ | ||
958 | |||
959 | .tagfilter div.awesomplete { | ||
960 | width: 70%; | ||
961 | } | ||
962 | |||
963 | .nomobile { | ||
964 | display: none; | ||
965 | } | ||
966 | |||
967 | #logo { | ||
968 | display: none; | ||
969 | } | ||
970 | |||
971 | #pageheader #menu ul { | ||
972 | text-align: center; | ||
973 | } | ||
974 | |||
975 | #pageheader #menu a { | ||
976 | padding: 5px; | ||
977 | border-radius: 3px 3px 3px 3px; | ||
978 | margin: 3px; | ||
979 | } | ||
980 | |||
981 | #headerform label { | ||
982 | width: 100%; | ||
983 | display: block; | ||
984 | height: auto; | ||
985 | line-height: 25px; | ||
986 | padding-bottom: 10px; | ||
987 | } | ||
988 | |||
989 | #headerform label input[type=text], | ||
990 | #headerform label input[type=password]{ | ||
991 | float: right; | ||
992 | width: 70%; | ||
993 | } | ||
994 | |||
995 | .searchform, .tagfilter { | ||
996 | display: block !important; | ||
997 | margin: 0px 3px 7px 0px !important; | ||
998 | padding: 0px !important; | ||
999 | width: 97% !important; | ||
1000 | } | ||
1001 | |||
1002 | .searchform input, .tagfilter input { | ||
1003 | margin: 0px !important; | ||
1004 | padding: 0px !important; | ||
1005 | display: inline !important; | ||
1006 | } | ||
1007 | |||
1008 | .tagfilter input.bigbutton, .searchform input.bigbutton, .addform input.bigbutton { | ||
1009 | width: 30%; | ||
1010 | font-size: smaller; | ||
1011 | } | ||
1012 | |||
1013 | #searchform_value { | ||
1014 | width: 70% !important; | ||
1015 | } | ||
1016 | |||
1017 | #tagfilter_value { | ||
1018 | width: 70% !important; | ||
1019 | } | ||
1020 | |||
1021 | div.qrcode { | ||
1022 | position: relative; | ||
1023 | float: left; | ||
1024 | top: -10px; | ||
1025 | left: 0px; | ||
1026 | } | ||
1027 | |||
1028 | .paging_privatelinks { | ||
1029 | float: none; | ||
1030 | } | ||
1031 | |||
1032 | .paging_linksperpage { | ||
1033 | float: none; | ||
1034 | margin-bottom: 10px; | ||
1035 | font-size: smaller; | ||
1036 | } | ||
1037 | |||
1038 | #paging_older, #paging_newer, .paging_linksperpage a { | ||
1039 | border: 1px solid black; | ||
1040 | padding: 3px 5px 3px 5px; | ||
1041 | background-color: #666; | ||
1042 | color: #fff; | ||
1043 | border-radius: 3px 3px 3px 3px; | ||
1044 | } | ||
1045 | |||
1046 | .thumbnail { | ||
1047 | float: none; | ||
1048 | height: auto; | ||
1049 | margin: 0px; | ||
1050 | text-align: center; | ||
1051 | } | ||
1052 | |||
1053 | #cloudtag { | ||
1054 | padding: 0px; | ||
1055 | } | ||
1056 | |||
1057 | div.dailyAbout { | ||
1058 | float: none; | ||
1059 | position: relative; | ||
1060 | width: 100%; | ||
1061 | clear: both; | ||
1062 | padding: 0px; | ||
1063 | top: 0px; | ||
1064 | left: 0px; | ||
1065 | } | ||
1066 | |||
1067 | #daily_col1, #daily_col2, #daily_col3 { | ||
1068 | float: none; | ||
1069 | width: 100%; | ||
1070 | padding: 0px; | ||
1071 | } | ||
1072 | |||
1073 | div.dailyTitle { | ||
1074 | font-size: 18pt; | ||
1075 | margin-top: 5px; | ||
1076 | padding: 0px; | ||
1077 | } | ||
1078 | |||
1079 | div.dailyDate { | ||
1080 | font-size: 11pt; | ||
1081 | padding: 0px; | ||
1082 | display: block; | ||
1083 | } | ||
1084 | |||
1085 | div.dailyEntryTitle { | ||
1086 | font-size: 16pt; | ||
1087 | font-weight: bold; | ||
1088 | } | ||
1089 | |||
1090 | div.dailyEntryDescription { | ||
1091 | font-size: 10pt; | ||
1092 | } | ||
1093 | } | ||
1094 | |||
1095 | #toolsdiv a.button-description { | ||
1096 | clear: none; | ||
1097 | } | ||
1098 | |||
1099 | /* Highlight search results */ | ||
1100 | .highlight { | ||
1101 | background-color: #FFFF33; | ||
1102 | } | ||
1103 | |||
1104 | .center { | ||
1105 | text-align: center; | ||
1106 | } | ||
1107 | |||
1108 | ul.errors { | ||
1109 | color: red; | ||
1110 | float: left; | ||
1111 | } | ||
1112 | |||
1113 | #pluginsadmin { | ||
1114 | width: 80%; | ||
1115 | padding: 20px 0 0 20px; | ||
1116 | } | ||
1117 | |||
1118 | #pluginsadmin section { | ||
1119 | padding: 20px 0; | ||
1120 | } | ||
1121 | |||
1122 | #pluginsadmin .plugin_parameters { | ||
1123 | margin: 10px 0; | ||
1124 | } | ||
1125 | |||
1126 | #pluginsadmin h1 { | ||
1127 | font-style: normal; | ||
1128 | } | ||
1129 | |||
1130 | #pluginsadmin h2 { | ||
1131 | font-size: 1.4em; | ||
1132 | font-weight: bold; | ||
1133 | } | ||
1134 | |||
1135 | #pluginsadmin table { | ||
1136 | width: 100%; | ||
1137 | } | ||
1138 | |||
1139 | #pluginsadmin table, #pluginsadmin th, #pluginsadmin td { | ||
1140 | border-width: 1px 0; | ||
1141 | border-style: solid; | ||
1142 | border-color: #c0c0c0; | ||
1143 | } | ||
1144 | |||
1145 | #pluginsadmin table th { | ||
1146 | font-weight: bold; | ||
1147 | padding: 10px 0; | ||
1148 | } | ||
1149 | |||
1150 | #pluginsadmin table td { | ||
1151 | padding: 5px 0; | ||
1152 | } | ||
1153 | |||
1154 | #pluginsadmin input[type=submit] { | ||
1155 | margin: 10px 0; | ||
1156 | } | ||
1157 | |||
1158 | #pluginsadmin label { | ||
1159 | cursor: pointer; | ||
1160 | } | ||
1161 | |||
1162 | #pluginsadmin .plugin_parameter { | ||
1163 | padding: 10px 0; | ||
1164 | border-width: 1px 0; | ||
1165 | border-style: solid; | ||
1166 | border-color: #c0c0c0; | ||
1167 | } | ||
1168 | |||
1169 | #pluginsadmin .float_label { | ||
1170 | float: left; | ||
1171 | width: 40%; | ||
1172 | } | ||
1173 | |||
1174 | #pluginsadmin a { | ||
1175 | color: #486D08; | ||
1176 | } | ||
1177 | |||
1178 | #pluginsadmin a.arrow { | ||
1179 | color: black; | ||
1180 | } | ||
1181 | |||
1182 | /* 404 page */ | ||
1183 | .error-container { | ||
1184 | |||
1185 | margin: 50px; | ||
1186 | margin-top: 20px; | ||
1187 | } | ||
1188 | |||
1189 | .error-container h1 { | ||
1190 | text-decoration: none; | ||
1191 | font-style: normal; | ||
1192 | color: #80AD48; | ||
1193 | } | ||
1194 | |||
1195 | .linklist-plugin-icon { | ||
1196 | width: 13px; | ||
1197 | height: 13px; | ||
1198 | } | ||
diff --git a/tpl/default/includes.html b/tpl/default/includes.html new file mode 100644 index 00000000..2ff5d8df --- /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="inc/reset.css" /> | ||
10 | <link type="text/css" rel="stylesheet" href="inc/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"> 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 | 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">◄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►</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&searchterm={searchTerms}"/> | ||
7 | <Url type="application/rss+xml" template="{$serverurl}?do=rss&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">●</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> | ||
39 | window.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 | |||
3 | Any 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 | |||
16 | If 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 | |||
21 | Example: "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 | '&title='%20+%20encodeURIComponent(title)+ | ||
29 | '&description='%20+%20encodeURIComponent(document.getSelection())+ | ||
30 | '&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 | ⇐ Drag this link to your bookmarks toolbar (or right-click it and choose Bookmark This Link....).<br> | ||
39 | 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&post="> | ||
45 | <b>✚Add Note</b> | ||
46 | </a> | ||
47 | <a href="#" onclick="return alertBookmarklet();"> | ||
48 | <span> | ||
49 | ⇐ Drag this link to your bookmarks toolbar (or right-click it and choose Bookmark This Link....).<br> | ||
50 | 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>⇐ 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> | ||