aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNicolas LÅ“uillet <nicolas.loeuillet@gmail.com>2013-10-03 10:14:54 -0700
committerNicolas LÅ“uillet <nicolas.loeuillet@gmail.com>2013-10-03 10:14:54 -0700
commit01e671f4d1fc66696c3ab14c837be0dde8fd02ea (patch)
tree21c041fef6e17a41e0d3f9e965124e550f272b95
parent79026b73a804d1fe3715c3edf5bc2cfb1e56732c (diff)
parentd47d2533accb30a69fbbb964f63793b821300974 (diff)
downloadwallabag-01e671f4d1fc66696c3ab14c837be0dde8fd02ea.tar.gz
wallabag-01e671f4d1fc66696c3ab14c837be0dde8fd02ea.tar.zst
wallabag-01e671f4d1fc66696c3ab14c837be0dde8fd02ea.zip
Merge pull request #256 from inthepoche/dev
merge 1.0.0
-rw-r--r--.gitignore2
-rw-r--r--.gitmodules6
-rw-r--r--inc/3rdparty/FlattrItem.class.php12
-rw-r--r--inc/3rdparty/site_config/README.md6
-rw-r--r--inc/3rdparty/site_config/custom/bfmtv.com.txt6
-rw-r--r--inc/3rdparty/site_config/custom/inthepoche.com.txt7
-rw-r--r--inc/3rdparty/site_config/custom/palkeo.com.txt0
-rw-r--r--inc/3rdparty/site_config/custom/tldp.org.txt6
-rw-r--r--inc/3rdparty/site_config/index.php3
-rw-r--r--inc/3rdparty/site_config/standard/.wikipedia.org.txt19
-rw-r--r--inc/3rdparty/site_config/standard/index.php3
-rw-r--r--inc/3rdparty/site_config/standard/version.php2
-rw-r--r--inc/poche/Database.class.php14
-rw-r--r--inc/poche/Poche.class.php40
-rwxr-xr-xinc/poche/config.inc.php.new14
-rw-r--r--inc/poche/define.inc.php39
-rw-r--r--install/update.php77
m---------themes0
-rw-r--r--themes/README.md31
-rw-r--r--themes/dark/README.md3
-rw-r--r--themes/dark/css/style-dark.css74
-rwxr-xr-xthemes/dark/img/dark/backtotop.pngbin0 -> 326 bytes
-rwxr-xr-xthemes/dark/img/dark/bad-display.pngbin0 -> 343 bytes
-rw-r--r--themes/dark/img/dark/checkmark-off.pngbin0 -> 277 bytes
-rw-r--r--themes/dark/img/dark/checkmark-on.pngbin0 -> 235 bytes
-rw-r--r--themes/dark/img/dark/down.pngbin0 -> 216 bytes
-rw-r--r--themes/dark/img/dark/envelop.pngbin0 -> 285 bytes
-rwxr-xr-xthemes/dark/img/dark/flattr.pngbin0 -> 270 bytes
-rw-r--r--themes/dark/img/dark/left.pngbin0 -> 196 bytes
-rwxr-xr-xthemes/dark/img/dark/link.pngbin0 -> 341 bytes
-rw-r--r--themes/dark/img/dark/remove.pngbin0 -> 252 bytes
-rw-r--r--themes/dark/img/dark/shaarli.pngbin0 -> 729 bytes
-rw-r--r--themes/dark/img/dark/star-off.pngbin0 -> 314 bytes
-rw-r--r--themes/dark/img/dark/star-on.pngbin0 -> 281 bytes
-rw-r--r--themes/dark/img/dark/top.pngbin0 -> 212 bytes
-rw-r--r--themes/dark/img/dark/twitter.pngbin0 -> 297 bytes
-rw-r--r--themes/dark/screenshot.jpgbin0 -> 664859 bytes
-rw-r--r--themes/default/_bookmarklet.twig3
-rw-r--r--themes/default/_footer.twig4
-rw-r--r--themes/default/_head.twig11
-rw-r--r--themes/default/_menu.twig7
-rw-r--r--themes/default/_messages.twig1
-rw-r--r--themes/default/_top.twig7
-rw-r--r--themes/default/config.twig80
-rw-r--r--themes/default/css/knacss.css1
-rw-r--r--themes/default/css/messages.css75
-rw-r--r--themes/default/css/print.css48
-rw-r--r--themes/default/css/style-default.css55
-rw-r--r--themes/default/css/style.css321
-rw-r--r--themes/default/error.twig6
-rw-r--r--themes/default/export.twig1
-rw-r--r--themes/default/home.twig49
-rw-r--r--themes/default/img/apple-touch-icon-144x144-precomposed.pngbin0 -> 7349 bytes
-rw-r--r--themes/default/img/apple-touch-icon-72x72-precomposed.pngbin0 -> 6168 bytes
-rw-r--r--themes/default/img/apple-touch-icon.pngbin0 -> 5803 bytes
-rw-r--r--themes/default/img/default/backtotop.pngbin0 -> 326 bytes
-rwxr-xr-xthemes/default/img/default/bad-display.pngbin0 -> 343 bytes
-rw-r--r--themes/default/img/default/checkmark-off.pngbin0 -> 277 bytes
-rw-r--r--themes/default/img/default/checkmark-on.pngbin0 -> 235 bytes
-rw-r--r--themes/default/img/default/down.pngbin0 -> 216 bytes
-rw-r--r--themes/default/img/default/envelop.pngbin0 -> 285 bytes
-rwxr-xr-xthemes/default/img/default/flattr.pngbin0 -> 270 bytes
-rw-r--r--themes/default/img/default/left.pngbin0 -> 196 bytes
-rwxr-xr-xthemes/default/img/default/link.pngbin0 -> 341 bytes
-rw-r--r--themes/default/img/default/remove.pngbin0 -> 252 bytes
-rw-r--r--themes/default/img/default/shaarli.pngbin0 -> 729 bytes
-rw-r--r--themes/default/img/default/star-off.pngbin0 -> 314 bytes
-rw-r--r--themes/default/img/default/star-on.pngbin0 -> 281 bytes
-rw-r--r--themes/default/img/default/top.pngbin0 -> 212 bytes
-rw-r--r--themes/default/img/default/twitter.pngbin0 -> 297 bytes
-rw-r--r--themes/default/img/favicon.icobin0 -> 346 bytes
-rw-r--r--themes/default/img/logo.pngbin0 -> 1350 bytes
-rw-r--r--themes/default/img/messages/close.pngbin0 -> 662 bytes
-rw-r--r--themes/default/img/messages/cross.pngbin0 -> 655 bytes
-rw-r--r--themes/default/img/messages/help.pngbin0 -> 786 bytes
-rw-r--r--themes/default/img/messages/tick.pngbin0 -> 537 bytes
-rw-r--r--themes/default/img/messages/warning.pngbin0 -> 666 bytes
-rw-r--r--themes/default/install.twig28
-rw-r--r--themes/default/js/restoreScroll.js25
-rw-r--r--themes/default/layout.twig31
-rw-r--r--themes/default/login.twig32
-rw-r--r--themes/default/view.twig51
-rw-r--r--themes/dmagenta/README.md3
-rw-r--r--themes/dmagenta/css/style-dmagenta.css78
-rwxr-xr-xthemes/dmagenta/img/dmagenta/backtotop.pngbin0 -> 326 bytes
-rwxr-xr-xthemes/dmagenta/img/dmagenta/bad-display.pngbin0 -> 343 bytes
-rw-r--r--themes/dmagenta/img/dmagenta/checkmark-off.pngbin0 -> 277 bytes
-rw-r--r--themes/dmagenta/img/dmagenta/checkmark-on.pngbin0 -> 235 bytes
-rw-r--r--themes/dmagenta/img/dmagenta/down.pngbin0 -> 216 bytes
-rw-r--r--themes/dmagenta/img/dmagenta/envelop.pngbin0 -> 285 bytes
-rwxr-xr-xthemes/dmagenta/img/dmagenta/flattr.pngbin0 -> 270 bytes
-rw-r--r--themes/dmagenta/img/dmagenta/left.pngbin0 -> 196 bytes
-rwxr-xr-xthemes/dmagenta/img/dmagenta/link.pngbin0 -> 341 bytes
-rw-r--r--themes/dmagenta/img/dmagenta/remove.pngbin0 -> 252 bytes
-rw-r--r--themes/dmagenta/img/dmagenta/shaarli.pngbin0 -> 729 bytes
-rw-r--r--themes/dmagenta/img/dmagenta/star-off.pngbin0 -> 314 bytes
-rw-r--r--themes/dmagenta/img/dmagenta/star-on.pngbin0 -> 281 bytes
-rw-r--r--themes/dmagenta/img/dmagenta/top.pngbin0 -> 212 bytes
-rw-r--r--themes/dmagenta/img/dmagenta/twitter.pngbin0 -> 297 bytes
-rw-r--r--themes/dmagenta/screenshot.jpgbin0 -> 731866 bytes
-rw-r--r--themes/solarized-dark/README.md6
-rw-r--r--themes/solarized-dark/Solarized-LICENSE.txt19
-rw-r--r--themes/solarized-dark/css/style-solarized-dark.css219
-rw-r--r--themes/solarized-dark/img/solarized-dark/backtotop.pngbin0 -> 242 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/bad-display.pngbin0 -> 419 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/checkmark-off.pngbin0 -> 464 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/checkmark-on.pngbin0 -> 164 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/down.pngbin0 -> 186 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/envelop.pngbin0 -> 335 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/flattr.pngbin0 -> 314 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/left.pngbin0 -> 148 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/link.pngbin0 -> 424 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/remove.pngbin0 -> 329 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/shaarli.pngbin0 -> 729 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/star-off.pngbin0 -> 441 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/star-on.pngbin0 -> 327 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/top.pngbin0 -> 173 bytes
-rw-r--r--themes/solarized-dark/img/solarized-dark/twitter.pngbin0 -> 388 bytes
-rw-r--r--themes/solarized-dark/screenshot.jpgbin0 -> 230456 bytes
-rw-r--r--themes/solarized/README.md6
-rw-r--r--themes/solarized/Solarized-LICENSE.txt19
-rw-r--r--themes/solarized/css/style-solarized.css219
-rw-r--r--themes/solarized/img/solarized/backtotop.pngbin0 -> 249 bytes
-rw-r--r--themes/solarized/img/solarized/bad-display.pngbin0 -> 434 bytes
-rw-r--r--themes/solarized/img/solarized/checkmark-off.pngbin0 -> 475 bytes
-rw-r--r--themes/solarized/img/solarized/checkmark-on.pngbin0 -> 163 bytes
-rw-r--r--themes/solarized/img/solarized/down.pngbin0 -> 189 bytes
-rw-r--r--themes/solarized/img/solarized/envelop.pngbin0 -> 340 bytes
-rw-r--r--themes/solarized/img/solarized/flattr.pngbin0 -> 315 bytes
-rw-r--r--themes/solarized/img/solarized/left.pngbin0 -> 139 bytes
-rw-r--r--themes/solarized/img/solarized/link.pngbin0 -> 425 bytes
-rw-r--r--themes/solarized/img/solarized/remove.pngbin0 -> 332 bytes
-rw-r--r--themes/solarized/img/solarized/shaarli.pngbin0 -> 729 bytes
-rw-r--r--themes/solarized/img/solarized/star-off.pngbin0 -> 455 bytes
-rw-r--r--themes/solarized/img/solarized/star-on.pngbin0 -> 332 bytes
-rw-r--r--themes/solarized/img/solarized/top.pngbin0 -> 172 bytes
-rw-r--r--themes/solarized/img/solarized/twitter.pngbin0 -> 407 bytes
-rw-r--r--themes/solarized/screenshot.jpgbin0 -> 245928 bytes
138 files changed, 1613 insertions, 156 deletions
diff --git a/.gitignore b/.gitignore
index b73c4b40..2abed7ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,4 @@ cache/*
3vendor 3vendor
4composer.phar 4composer.phar
5db/poche.sqlite 5db/poche.sqlite
6output
7phpdoc*
8inc/poche/config.inc.php \ No newline at end of file 6inc/poche/config.inc.php \ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index bbdd8495..00000000
--- a/.gitmodules
+++ /dev/null
@@ -1,6 +0,0 @@
1[submodule "inc/3rdparty/site_config"]
2 path = inc/3rdparty/site_config
3 url = git@github.com:inthepoche/site_config.git
4[submodule "themes"]
5 path = themes
6 url = git://github.com/inthepoche/poche-themes.git
diff --git a/inc/3rdparty/FlattrItem.class.php b/inc/3rdparty/FlattrItem.class.php
index c940fcd6..0d3e69d0 100644
--- a/inc/3rdparty/FlattrItem.class.php
+++ b/inc/3rdparty/FlattrItem.class.php
@@ -9,9 +9,9 @@ class FlattrItem {
9 public $flattrItemURL; 9 public $flattrItemURL;
10 public $numflattrs; 10 public $numflattrs;
11 11
12 public function checkItem($urltoflattr) { 12 public function checkItem($urltoflattr,$id) {
13 $this->cacheflattrfile($urltoflattr); 13 $this->cacheflattrfile($urltoflattr, $id);
14 $flattrResponse = file_get_contents(CACHE . "/flattr/".base64_encode($urltoflattr).".cache"); 14 $flattrResponse = file_get_contents(CACHE . "/flattr/".$id.".cache");
15 if($flattrResponse != FALSE) { 15 if($flattrResponse != FALSE) {
16 $result = json_decode($flattrResponse); 16 $result = json_decode($flattrResponse);
17 if (isset($result->message)){ 17 if (isset($result->message)){
@@ -33,15 +33,15 @@ class FlattrItem {
33 } 33 }
34 } 34 }
35 35
36 private function cacheflattrfile($urltoflattr) { 36 private function cacheflattrfile($urltoflattr, $id) {
37 if (!is_dir(CACHE . '/flattr')) { 37 if (!is_dir(CACHE . '/flattr')) {
38 mkdir(CACHE . '/flattr', 0777); 38 mkdir(CACHE . '/flattr', 0777);
39 } 39 }
40 40
41 // if a cache flattr file for this url already exists and it's been less than one day than it have been updated, see in /cache 41 // if a cache flattr file for this url already exists and it's been less than one day than it have been updated, see in /cache
42 if ((!file_exists(CACHE . "/flattr/".base64_encode($urltoflattr).".cache")) || (time() - filemtime(CACHE . "/flattr/".base64_encode($urltoflattr).".cache") > 86400)) { 42 if ((!file_exists(CACHE . "/flattr/".$id.".cache")) || (time() - filemtime(CACHE . "/flattr/".$id.".cache") > 86400)) {
43 $askForFlattr = Tools::getFile(FLATTR_API . $urltoflattr); 43 $askForFlattr = Tools::getFile(FLATTR_API . $urltoflattr);
44 $flattrCacheFile = fopen(CACHE . "/flattr/".base64_encode($urltoflattr).".cache", 'w+'); 44 $flattrCacheFile = fopen(CACHE . "/flattr/".$id.".cache", 'w+');
45 fwrite($flattrCacheFile, $askForFlattr); 45 fwrite($flattrCacheFile, $askForFlattr);
46 fclose($flattrCacheFile); 46 fclose($flattrCacheFile);
47 } 47 }
diff --git a/inc/3rdparty/site_config/README.md b/inc/3rdparty/site_config/README.md
new file mode 100644
index 00000000..0aff456b
--- /dev/null
+++ b/inc/3rdparty/site_config/README.md
@@ -0,0 +1,6 @@
1Full-Text RSS Site Patterns
2---------------------------
3
4Site patterns allow you to specify what should be extracted from specific sites.
5
6Please see http://help.fivefilters.org/customer/portal/articles/223153-site-patterns for more information. \ No newline at end of file
diff --git a/inc/3rdparty/site_config/custom/bfmtv.com.txt b/inc/3rdparty/site_config/custom/bfmtv.com.txt
new file mode 100644
index 00000000..0ff28d56
--- /dev/null
+++ b/inc/3rdparty/site_config/custom/bfmtv.com.txt
@@ -0,0 +1,6 @@
1title: //title
2body: //h2 | //span[@class='masque'] | //article[@class='corps_article_right']
3prune: no
4tidy: no
5
6test_url: http://www.bfmtv.com/societe/cigarette-electronique-dangers-588622.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/custom/inthepoche.com.txt b/inc/3rdparty/site_config/custom/inthepoche.com.txt
new file mode 100644
index 00000000..ede74b97
--- /dev/null
+++ b/inc/3rdparty/site_config/custom/inthepoche.com.txt
@@ -0,0 +1,7 @@
1title: //title
2body: //div[@class='post-content']
3
4prune: no
5tidy: no
6
7test_url: http://www.inthepoche.com/?post/poche-hosting \ No newline at end of file
diff --git a/inc/3rdparty/site_config/custom/palkeo.com.txt b/inc/3rdparty/site_config/custom/palkeo.com.txt
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/inc/3rdparty/site_config/custom/palkeo.com.txt
diff --git a/inc/3rdparty/site_config/custom/tldp.org.txt b/inc/3rdparty/site_config/custom/tldp.org.txt
new file mode 100644
index 00000000..7dd5cdb5
--- /dev/null
+++ b/inc/3rdparty/site_config/custom/tldp.org.txt
@@ -0,0 +1,6 @@
1title: //title
2body: //h2 | //p | //ul
3prune: no
4tidy: no
5
6test_url: http://www.tldp.org/HOWTO/Plug-and-Play-HOWTO-7.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/index.php b/inc/3rdparty/site_config/index.php
new file mode 100644
index 00000000..a3d5f739
--- /dev/null
+++ b/inc/3rdparty/site_config/index.php
@@ -0,0 +1,3 @@
1<?php
2// this is here to prevent directory listing over the web
3?> \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/.wikipedia.org.txt b/inc/3rdparty/site_config/standard/.wikipedia.org.txt
new file mode 100644
index 00000000..8b98ae4b
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/.wikipedia.org.txt
@@ -0,0 +1,19 @@
1title: //h1[@id='firstHeading']
2body: //div[@id = 'bodyContent']
3strip_id_or_class: editsection
4#strip_id_or_class: toc
5strip_id_or_class: vertical-navbox
6strip: //table[@id='toc']
7strip: //div[@id='catlinks']
8strip: //div[@id='jump-to-nav']
9strip: //div[@class='thumbcaption']//div[@class='magnify']
10strip: //table[@class='navbox']
11strip: //table[contains(@class, 'infobox')]
12strip: //div[@class='dablink']
13strip: //div[@id='contentSub']
14strip: //table[contains(@class, 'metadata')]
15strip: //*[contains(@class, 'noprint')]
16strip: //span[@title='pronunciation:']
17prune: no
18tidy: no
19test_url: http://en.wikipedia.org/wiki/Christopher_Lloyd \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/index.php b/inc/3rdparty/site_config/standard/index.php
new file mode 100644
index 00000000..a3d5f739
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/index.php
@@ -0,0 +1,3 @@
1<?php
2// this is here to prevent directory listing over the web
3?> \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/version.php b/inc/3rdparty/site_config/standard/version.php
new file mode 100644
index 00000000..e61807ed
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/version.php
@@ -0,0 +1,2 @@
1<?php
2return 1; \ No newline at end of file
diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php
index 4d664992..0662581b 100644
--- a/inc/poche/Database.class.php
+++ b/inc/poche/Database.class.php
@@ -113,9 +113,17 @@ class Database {
113 } 113 }
114 114
115 public function updateUserConfig($userId, $key, $value) { 115 public function updateUserConfig($userId, $key, $value) {
116 $sql_update = "UPDATE users_config SET `value`=? WHERE `user_id`=? AND `name`=?"; 116 $config = $this->getConfigUser($userId);
117 $params_update = array($value, $userId, $key); 117
118 $query = $this->executeQuery($sql_update, $params_update); 118 if (!isset ($user_config[$key])) {
119 $sql = "INSERT INTO users_config (`value`, `user_id`, `name`) VALUES (?, ?, ?)";
120 }
121 else {
122 $sql = "UPDATE users_config SET `value`=? WHERE `user_id`=? AND `name`=?";
123 }
124
125 $params = array($value, $userId, $key);
126 $query = $this->executeQuery($sql, $params);
119 } 127 }
120 128
121 private function executeQuery($sql, $params) { 129 private function executeQuery($sql, $params) {
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php
index 18860ddc..1ba8e7c1 100644
--- a/inc/poche/Poche.class.php
+++ b/inc/poche/Poche.class.php
@@ -105,10 +105,18 @@ class Poche
105 public function themeIsInstalled() { 105 public function themeIsInstalled() {
106 # Twig is an absolute requirement for Poche to function. Abort immediately if the Composer installer hasn't been run yet 106 # Twig is an absolute requirement for Poche to function. Abort immediately if the Composer installer hasn't been run yet
107 if (! self::$canRenderTemplates) { 107 if (! self::$canRenderTemplates) {
108 $this->notInstalledMessage = 'Twig does not seem to be installed. Please initialize the Composer installation to automatically fetch dependencies. Have a look at <a href="http://inthepoche.com/?pages/Documentation">the documentation.</a>'; 108 $this->notInstalledMessage = 'Twig does not seem to be installed. Please initialize the Composer installation to automatically fetch dependencies. Have a look at <a href="http://doc.inthepoche.com/doku.php?id=users:begin:install">the documentation.</a>';
109 109
110 return false; 110 return false;
111 } 111 }
112
113 if (! is_writable(CACHE)) {
114 $this->notInstalledMessage = '<h1>error</h1><p>You don\'t have write access on cache directory.</p>';
115
116 self::$canRenderTemplates = false;
117
118 return false;
119 }
112 120
113 # Check if the selected theme and its requirements are present 121 # Check if the selected theme and its requirements are present
114 if (! is_dir(THEME . '/' . $this->getTheme())) { 122 if (! is_dir(THEME . '/' . $this->getTheme())) {
@@ -145,16 +153,11 @@ class Poche
145 153
146 if (empty($configSalt)) { 154 if (empty($configSalt)) {
147 $msg = '<h1>error</h1><p>You have not yet filled in the SALT value in the config.inc.php file.</p>'; 155 $msg = '<h1>error</h1><p>You have not yet filled in the SALT value in the config.inc.php file.</p>';
148 } else if (! is_writable(CACHE)) {
149 Tools::logm('you don\'t have write access on cache directory');
150 $msg = '<h1>error</h1><p>You don\'t have write access on cache directory.</p>';
151 } else if (STORAGE == 'sqlite' && ! file_exists(STORAGE_SQLITE)) { 156 } else if (STORAGE == 'sqlite' && ! file_exists(STORAGE_SQLITE)) {
152 Tools::logm('sqlite file doesn\'t exist'); 157 Tools::logm('sqlite file doesn\'t exist');
153 $msg = '<h1>error</h1><p>sqlite file doesn\'t exist, you can find it in install folder. Copy it in /db folder.</p>'; 158 $msg = '<h1>error</h1><p>sqlite file doesn\'t exist, you can find it in install folder. Copy it in /db folder.</p>';
154 } else if (file_exists(ROOT . '/install/update.php') && ! DEBUG_POCHE) {
155 $msg = '<h1>setup</h1><p><strong>It\'s your first time here?</strong> Please copy /install/poche.sqlite in db folder. Then, delete install folder.<br /><strong>If you have already installed poche</strong>, an update is needed <a href="install/update.php">by clicking here</a>.</p>';
156 } else if (is_dir(ROOT . '/install') && ! DEBUG_POCHE) { 159 } else if (is_dir(ROOT . '/install') && ! DEBUG_POCHE) {
157 $msg = '<h1>setup</h1><p><strong>If you want to update your poche</strong>, you just have to delete /install folder. <br /><strong>To install your poche with sqlite</strong>, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.</p>'; 160 $msg = '<h1>install folder</h1><p>you have to delete the /install folder before using poche.</p>';
158 } else if (STORAGE == 'sqlite' && ! is_writable(STORAGE_SQLITE)) { 161 } else if (STORAGE == 'sqlite' && ! is_writable(STORAGE_SQLITE)) {
159 Tools::logm('you don\'t have write access on sqlite file'); 162 Tools::logm('you don\'t have write access on sqlite file');
160 $msg = '<h1>error</h1><p>You don\'t have write access on sqlite file.</p>'; 163 $msg = '<h1>error</h1><p>You don\'t have write access on sqlite file.</p>';
@@ -255,7 +258,7 @@ class Poche
255 while (($theme = readdir($handle)) !== false) { 258 while (($theme = readdir($handle)) !== false) {
256 # Themes are stored in a directory, so all directory names are themes 259 # Themes are stored in a directory, so all directory names are themes
257 # @todo move theme installation data to database 260 # @todo move theme installation data to database
258 if (! is_dir(THEME . '/' . $theme) || in_array($theme, array('..', '.'))) { 261 if (! is_dir(THEME . '/' . $theme) || in_array($theme, array('..', '.', '.git'))) {
259 continue; 262 continue;
260 } 263 }
261 264
@@ -330,7 +333,7 @@ class Poche
330 $msg = 'error : can\'t delete link #' . $id; 333 $msg = 'error : can\'t delete link #' . $id;
331 } 334 }
332 Tools::logm($msg); 335 Tools::logm($msg);
333 Tools::redirect('?'); 336 Tools::redirect();
334 break; 337 break;
335 case 'toggle_fav' : 338 case 'toggle_fav' :
336 $this->store->favoriteById($id, $this->user->getId()); 339 $this->store->favoriteById($id, $this->user->getId());
@@ -381,17 +384,17 @@ class Poche
381 $tidy = tidy_parse_string($content, array('indent'=>true, 'show-body-only' => true), 'UTF8'); 384 $tidy = tidy_parse_string($content, array('indent'=>true, 'show-body-only' => true), 'UTF8');
382 $tidy->cleanRepair(); 385 $tidy->cleanRepair();
383 $content = $tidy->value; 386 $content = $tidy->value;
387 }
384 388
385 # flattr checking 389 # flattr checking
386 $flattr = new FlattrItem(); 390 $flattr = new FlattrItem();
387 $flattr->checkItem($entry['url']); 391 $flattr->checkItem($entry['url'],$entry['id']);
388 392
389 $tpl_vars = array( 393 $tpl_vars = array(
390 'entry' => $entry, 394 'entry' => $entry,
391 'content' => $content, 395 'content' => $content,
392 'flattr' => $flattr 396 'flattr' => $flattr
393 ); 397 );
394 }
395 } 398 }
396 else { 399 else {
397 Tools::logm('error in view call : entry is null'); 400 Tools::logm('error in view call : entry is null');
@@ -404,6 +407,7 @@ class Poche
404 'page_links' => '', 407 'page_links' => '',
405 'nb_results' => '', 408 'nb_results' => '',
406 ); 409 );
410
407 if (count($entries) > 0) { 411 if (count($entries) > 0) {
408 $this->pagination->set_total(count($entries)); 412 $this->pagination->set_total(count($entries));
409 $page_links = $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . '&'); 413 $page_links = $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . '&');
diff --git a/inc/poche/config.inc.php.new b/inc/poche/config.inc.php.new
index 48cc5783..255b97e6 100755
--- a/inc/poche/config.inc.php.new
+++ b/inc/poche/config.inc.php.new
@@ -26,7 +26,7 @@ define ('STORAGE_PASSWORD', 'poche');
26################################################################################# 26#################################################################################
27 27
28define ('MODE_DEMO', FALSE); 28define ('MODE_DEMO', FALSE);
29define ('DEBUG_POCHE', true); 29define ('DEBUG_POCHE', FALSE);
30define ('DOWNLOAD_PICTURES', FALSE); 30define ('DOWNLOAD_PICTURES', FALSE);
31define ('CONVERT_LINKS_FOOTNOTES', FALSE); 31define ('CONVERT_LINKS_FOOTNOTES', FALSE);
32define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE); 32define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE);
@@ -49,8 +49,12 @@ define ('CACHE', ROOT . '/cache');
49 49
50define ('PAGINATION', '10'); 50define ('PAGINATION', '10');
51 51
52define ('POCHE_VERSION', '1.0-beta5'); 52define ('POCHE_VERSION', '1.0.0');
53 53
54define ('IMPORT_POCKET_FILE', ROOT . '/ril_export.html'); 54define ('POCKET_FILE', '/ril_export.html');
55define ('IMPORT_READABILITY_FILE', ROOT . '/readability'); 55define ('READABILITY_FILE', '/readability');
56define ('IMPORT_INSTAPAPER_FILE', ROOT . '/instapaper-export.html'); \ No newline at end of file 56define ('INSTAPAPER_FILE', '/instapaper-export.html');
57
58define ('IMPORT_POCKET_FILE', ROOT . POCKET_FILE);
59define ('IMPORT_READABILITY_FILE', ROOT . READABILITY_FILE);
60define ('IMPORT_INSTAPAPER_FILE', ROOT . INSTAPAPER_FILE); \ No newline at end of file
diff --git a/inc/poche/define.inc.php b/inc/poche/define.inc.php
deleted file mode 100644
index 40f77b5c..00000000
--- a/inc/poche/define.inc.php
+++ /dev/null
@@ -1,39 +0,0 @@
1<?php
2/**
3 * poche, a read it later open source system
4 *
5 * @category poche
6 * @author Nicolas LÅ“uillet <support@inthepoche.com>
7 * @copyright 2013
8 * @license http://www.wtfpl.net/ see COPYING file
9 */
10
11define ('STORAGE','sqlite'); # postgres, mysql, sqlite
12define ('STORAGE_SERVER', 'localhost'); # leave blank for sqlite
13define ('STORAGE_DB', 'poche'); # only for postgres & mysql
14define ('STORAGE_SQLITE', __DIR__ . '/../../db/poche.sqlite');
15define ('STORAGE_USER', 'postgres'); # leave blank for sqlite
16define ('STORAGE_PASSWORD', 'postgres'); # leave blank for sqlite
17
18define ('MODE_DEMO', FALSE);
19define ('DEBUG_POCHE', FALSE);
20define ('DOWNLOAD_PICTURES', FALSE);
21define ('SHARE_TWITTER', TRUE);
22define ('SHARE_MAIL', TRUE);
23define ('SHARE_SHAARLI', FALSE);
24define ('SHAARLI_URL', 'http://myshaarliurl.com');
25define ('FLATTR', TRUE);
26define ('FLATTR_API', 'https://api.flattr.com/rest/v2/things/lookup/?url=');
27define ('NOT_FLATTRABLE', '0');
28define ('FLATTRABLE', '1');
29define ('FLATTRED', '2');
30define ('ABS_PATH', 'assets/');
31define ('TPL', __DIR__ . '/../../tpl');
32define ('LOCALE', __DIR__ . '/../../locale');
33define ('CACHE', __DIR__ . '/../../cache');
34define ('PAGINATION', '10');
35define ('THEME', 'light');
36
37define ('IMPORT_POCKET_FILE', './ril_export.html');
38define ('IMPORT_READABILITY_FILE', './readability');
39define ('IMPORT_INSTAPAPER_FILE', './instapaper-export.html'); \ No newline at end of file
diff --git a/install/update.php b/install/update.php
deleted file mode 100644
index 9548d334..00000000
--- a/install/update.php
+++ /dev/null
@@ -1,77 +0,0 @@
1<?php
2require_once dirname(__FILE__).'/../inc/poche/Tools.class.php';
3include dirname(__FILE__).'/../inc/poche/define.inc.php';
4include dirname(__FILE__).'/../inc/poche/myconfig.inc.php';
5require_once __DIR__ . '/../inc/poche/Database.class.php';
6$store = new Database();
7?>
8<!DOCTYPE html>
9<!--[if lte IE 6]> <html class="no-js ie6 ie67 ie678" lang="en"> <![endif]-->
10<!--[if lte IE 7]> <html class="no-js ie7 ie67 ie678" lang="en"> <![endif]-->
11<!--[if IE 8]> <html class="no-js ie8 ie678" lang="en"> <![endif]-->
12<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
13<html lang="en">
14 <head>
15 <meta charset="utf-8">
16 <title>updating poche</title>
17 </head>
18 <body>
19 <h1>update poche to 1.0-beta4</h1>
20
21 <h2>Changelog</h2>
22 <ul>
23 <li>enhancement: updating and installing poche are more easier</li>
24 <li>enhancement: poche now uses Full Text RSS to fetch content</li>
25 <li>enhancement: css and twig files are more clean, thanks to NumEricR and nicofrand</li>
26 <li>enhancement: updated german translation, thanks to HLFH</li>
27 <li>enhancement: add db/, cache/ and assets/ directories in versioning</li>
28 <li>enhancement: display messages when error with import, thanks to EliasZ</li>
29 <li>enhancement: poche compatibility test file</li>
30 <li>enhancement: <a href="https://github.com/inthepoche/poche/issues/112">#112</a>: link with shaarli</li>
31 <li>enhancement: <a href="https://github.com/inthepoche/poche/issues/162">#162</a>: links to firefox / chrome / android apps in config screen</li>
32 <li>bug: encode url to share with twitter / email / shaarli</li>
33 <li>bug: Add IPv4 url support (and others beginning by a digit)</li>
34 <li>bug: title page in article view was wrong</li>
35 <li>bug: <a href="https://github.com/inthepoche/poche/issues/148">#148</a>: use of undefined constant POCHE_VERSION</li>
36 <li>bug: <a href="https://github.com/inthepoche/poche/issues/148">#149</a>: can't poche theguardian.com</li>
37 <li>bug: <a href="https://github.com/inthepoche/poche/issues/150">#150</a>: default title for untitled articles</li>
38 <li>bug: <a href="https://github.com/inthepoche/poche/issues/150">#151</a>: HTML entities in titles are encoded twice</li>
39 <li>bug: <a href="https://github.com/inthepoche/poche/issues/169">#169</a>: entries height with short description</li>
40 <li>bug: <a href="https://github.com/inthepoche/poche/issues/175">#175</a>: IP addresses do not appear in "view original"</li>
41 </ul>
42 <p>To update your poche, please fill the following fields.</p>
43 <p>
44 <form name="update" method="post">
45 <div><label for="login">login:</label> <input type="text" name="login" id="login" /></div>
46 <div><label for="password">password:</label> <input type="password" name="password" id="password" /></div>
47 <div><input type="hidden" name="go" value="ok" /><input type="submit" value="update" /></div>
48 </form>
49 </p>
50<?php
51if (isset($_POST['go'])) {
52 if (!empty($_POST['login']) && !empty($_POST['password'])) {
53 $user = $store->login($_POST['login'], sha1($_POST['password'] . $_POST['login'] . SALT));
54 if ($user != array()) {
55 $myconfig_file = '../inc/poche/myconfig.inc.php';
56 # just change version number in config file
57
58 if (!is_writable('../inc/poche/myconfig.inc.php')) {
59 die('You don\'t have write access to open ./inc/poche/myconfig.inc.php.');
60 }
61
62 if (file_exists($myconfig_file))
63 {
64 $content = str_replace('1.0-beta3', '1.0-beta4', file_get_contents($myconfig_file));
65 file_put_contents($myconfig_file, $content);
66 }
67?>
68 <p><span style="color: green;">your poche is up to date!</span></p>
69 <p><span style="color: red;">don't forget to delete ./install/ folder after the update.</span></p>
70 <p><a href="../">go back to your poche</a></p>
71<?php
72 }
73 }
74}
75?>
76 </body>
77</html> \ No newline at end of file
diff --git a/themes b/themes
deleted file mode 160000
Subproject 689dcedf8d6c7cf5e8424654fef4fd9687288dc
diff --git a/themes/README.md b/themes/README.md
new file mode 100644
index 00000000..76ac8ab0
--- /dev/null
+++ b/themes/README.md
@@ -0,0 +1,31 @@
1# poche-themes
2
3themes created by poche users
4
5## list of themes
6
7* dark ([preview](https://raw.github.com/inthepoche/poche-themes/master/dark/screenshot.jpg))
8* dmagenta ([preview](https://raw.github.com/inthepoche/poche-themes/master/dmagenta/screenshot.jpg))
9* solarized ([preview](https://raw.github.com/inthepoche/poche-themes/master/solarized/screenshot.jpg))
10* solarized-dark ([preview](https://raw.github.com/inthepoche/poche-themes/master/solarized-dark/screenshot.jpg))
11
12## installation
13
14In your poche folder:
15
16```
17git submodule init
18git submodule update
19```
20
21Then, in your config screen, select your favorite theme.
22
23That's all !
24
25## create a theme
26
27Just have a look to this short documentation : http://inthepoche.com/doc/doku.php?id=designers:creating_theme
28
29## send a theme
30
31Send your theme by email at support@inthepoche.com.
diff --git a/themes/dark/README.md b/themes/dark/README.md
new file mode 100644
index 00000000..92077994
--- /dev/null
+++ b/themes/dark/README.md
@@ -0,0 +1,3 @@
1# dark theme
2
3theme created by Nicolas LÅ“uillet aka nico_somb \ No newline at end of file
diff --git a/themes/dark/css/style-dark.css b/themes/dark/css/style-dark.css
new file mode 100644
index 00000000..41782c48
--- /dev/null
+++ b/themes/dark/css/style-dark.css
@@ -0,0 +1,74 @@
1body {
2 color: #d4d4d4;
3 background-color: #262627;
4}
5
6a,
7a:hover,
8a:visited {
9 color: #d4d4d4;
10}
11
12a.back span {
13 background-image: url('../img/dark/left.png');
14}
15
16a.top span {
17 background-image: url('../img/dark/top.png');
18}
19
20a.fav span,
21a.fav-off span:hover {
22 background-image: url('../img/dark/star-on.png');
23}
24
25a.fav span:hover,
26a.fav-off span {
27 background-image: url('../img/dark/star-off.png');
28}
29
30a.archive span,
31a.archive-off span:hover {
32 background-image: url('../img/dark/checkmark-on.png');
33}
34
35a.archive span:hover,
36a.archive-off span {
37 background-image: url('../img/dark/checkmark-off.png');
38}
39
40a.twitter span {
41 background-image: url('../img/dark/twitter.png');
42}
43
44a.shaarli span {
45 background-image: url('../img/dark/shaarli.png');
46}
47
48a.flattr span {
49 background-image: url('../img/dark/flattr.png');
50}
51
52a.email span {
53 background-image: url('../img/dark/envelop.png');
54}
55
56a.delete span {
57 background-image: url('../img/dark/remove.png');
58}
59
60a.link span {
61 background-image: url('../img/dark/link.png');
62}
63
64a.bad-display span {
65 background-image: url('../img/dark/bad-display.png');
66}
67
68.pagination a {
69 color: #aaa;
70}
71
72#article_toolbar {
73 background: #262627;
74} \ No newline at end of file
diff --git a/themes/dark/img/dark/backtotop.png b/themes/dark/img/dark/backtotop.png
new file mode 100755
index 00000000..051238ef
--- /dev/null
+++ b/themes/dark/img/dark/backtotop.png
Binary files differ
diff --git a/themes/dark/img/dark/bad-display.png b/themes/dark/img/dark/bad-display.png
new file mode 100755
index 00000000..6866799f
--- /dev/null
+++ b/themes/dark/img/dark/bad-display.png
Binary files differ
diff --git a/themes/dark/img/dark/checkmark-off.png b/themes/dark/img/dark/checkmark-off.png
new file mode 100644
index 00000000..3db5a06d
--- /dev/null
+++ b/themes/dark/img/dark/checkmark-off.png
Binary files differ
diff --git a/themes/dark/img/dark/checkmark-on.png b/themes/dark/img/dark/checkmark-on.png
new file mode 100644
index 00000000..cd3abb2c
--- /dev/null
+++ b/themes/dark/img/dark/checkmark-on.png
Binary files differ
diff --git a/themes/dark/img/dark/down.png b/themes/dark/img/dark/down.png
new file mode 100644
index 00000000..b9d536a7
--- /dev/null
+++ b/themes/dark/img/dark/down.png
Binary files differ
diff --git a/themes/dark/img/dark/envelop.png b/themes/dark/img/dark/envelop.png
new file mode 100644
index 00000000..6be1c886
--- /dev/null
+++ b/themes/dark/img/dark/envelop.png
Binary files differ
diff --git a/themes/dark/img/dark/flattr.png b/themes/dark/img/dark/flattr.png
new file mode 100755
index 00000000..0404aaea
--- /dev/null
+++ b/themes/dark/img/dark/flattr.png
Binary files differ
diff --git a/themes/dark/img/dark/left.png b/themes/dark/img/dark/left.png
new file mode 100644
index 00000000..a0a53631
--- /dev/null
+++ b/themes/dark/img/dark/left.png
Binary files differ
diff --git a/themes/dark/img/dark/link.png b/themes/dark/img/dark/link.png
new file mode 100755
index 00000000..db62819d
--- /dev/null
+++ b/themes/dark/img/dark/link.png
Binary files differ
diff --git a/themes/dark/img/dark/remove.png b/themes/dark/img/dark/remove.png
new file mode 100644
index 00000000..f8ad56a3
--- /dev/null
+++ b/themes/dark/img/dark/remove.png
Binary files differ
diff --git a/themes/dark/img/dark/shaarli.png b/themes/dark/img/dark/shaarli.png
new file mode 100644
index 00000000..1eb30f60
--- /dev/null
+++ b/themes/dark/img/dark/shaarli.png
Binary files differ
diff --git a/themes/dark/img/dark/star-off.png b/themes/dark/img/dark/star-off.png
new file mode 100644
index 00000000..6a0133a7
--- /dev/null
+++ b/themes/dark/img/dark/star-off.png
Binary files differ
diff --git a/themes/dark/img/dark/star-on.png b/themes/dark/img/dark/star-on.png
new file mode 100644
index 00000000..a9f96eaa
--- /dev/null
+++ b/themes/dark/img/dark/star-on.png
Binary files differ
diff --git a/themes/dark/img/dark/top.png b/themes/dark/img/dark/top.png
new file mode 100644
index 00000000..954a8c0a
--- /dev/null
+++ b/themes/dark/img/dark/top.png
Binary files differ
diff --git a/themes/dark/img/dark/twitter.png b/themes/dark/img/dark/twitter.png
new file mode 100644
index 00000000..cfcfe419
--- /dev/null
+++ b/themes/dark/img/dark/twitter.png
Binary files differ
diff --git a/themes/dark/screenshot.jpg b/themes/dark/screenshot.jpg
new file mode 100644
index 00000000..daaad6c9
--- /dev/null
+++ b/themes/dark/screenshot.jpg
Binary files differ
diff --git a/themes/default/_bookmarklet.twig b/themes/default/_bookmarklet.twig
new file mode 100644
index 00000000..2f3b2d16
--- /dev/null
+++ b/themes/default/_bookmarklet.twig
@@ -0,0 +1,3 @@
1 <script type="text/javascript">
2 top["bookmarklet-url@inthepoche.com"]=""+"<!DOCTYPE html>"+"<html>"+"<head>"+"<title>poche it !</title>"+'<link rel="icon" href="{{poche_url}}tpl/img/favicon.ico" />'+"</head>"+"<body>"+"<script>"+"window.onload=function(){"+"window.setTimeout(function(){"+"history.back();"+"},250);"+"};"+"</scr"+"ipt>"+"</body>"+"</html>"
3 </script> \ No newline at end of file
diff --git a/themes/default/_footer.twig b/themes/default/_footer.twig
new file mode 100644
index 00000000..2b895854
--- /dev/null
+++ b/themes/default/_footer.twig
@@ -0,0 +1,4 @@
1 <footer class="w600p center mt3 mb3 smaller txtright">
2 <p>{% trans "powered by" %} <a href="http://inthepoche.com">poche</a></p>
3 {% if constant('DEBUG_POCHE') == 1 %}<p><strong>{% trans "debug mode is on so cache is off." %} {% trans "your poche version:" %}{{constant('POCHE_VERSION')}}. {% trans "storage:" %} {{constant('STORAGE')}}</strong></p>{% endif %}
4 </footer> \ No newline at end of file
diff --git a/themes/default/_head.twig b/themes/default/_head.twig
new file mode 100644
index 00000000..2b9e4582
--- /dev/null
+++ b/themes/default/_head.twig
@@ -0,0 +1,11 @@
1 <link rel="shortcut icon" type="image/x-icon" href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/img/favicon.ico" />
2 <link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/img/apple-touch-icon-144x144-precomposed.png">
3 <link rel="apple-touch-icon-precomposed" sizes="72x72" href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/img/apple-touch-icon-72x72-precomposed.png">
4 <link rel="apple-touch-icon-precomposed" href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/img/apple-touch-icon-precomposed.png">
5 <link rel="stylesheet" href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/css/knacss.css" media="all">
6 <link rel="stylesheet" href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/css/style.css" media="all">
7 <link rel="stylesheet" href="{{ poche_url }}/themes/{{ theme }}/css/style-{{ theme }}.css" media="all" title="{{ theme }} theme">
8 <link rel="stylesheet" href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/css/messages.css" media="all">
9 <link rel="stylesheet" href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/css/print.css" media="print">
10 <link href='//fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
11 <script src="//codeorigin.jquery.com/jquery-2.0.3.min.js"></script> \ No newline at end of file
diff --git a/themes/default/_menu.twig b/themes/default/_menu.twig
new file mode 100644
index 00000000..699d6a0c
--- /dev/null
+++ b/themes/default/_menu.twig
@@ -0,0 +1,7 @@
1 <ul id="links">
2 <li><a href="./" {% if view == 'home' %}class="current"{% endif %}>{% trans "home" %}</a></li>
3 <li><a href="./?view=fav" {% if view == 'fav' %}class="current"{% endif %}>{% trans "favorites" %}</a></li>
4 <li><a href="./?view=archive" {% if view == 'archive' %}class="current"{% endif %}>{% trans "archive" %}</a></li>
5 <li><a href="./?view=config" {% if view == 'config' %}class="current"{% endif %}>{% trans "config" %}</a></li>
6 <li><a href="./?logout" title="{% trans "logout" %}">{% trans "logout" %}</a></li>
7 </ul> \ No newline at end of file
diff --git a/themes/default/_messages.twig b/themes/default/_messages.twig
new file mode 100644
index 00000000..679aa098
--- /dev/null
+++ b/themes/default/_messages.twig
@@ -0,0 +1 @@
{{ messages | raw }} \ No newline at end of file
diff --git a/themes/default/_top.twig b/themes/default/_top.twig
new file mode 100644
index 00000000..4100f7c4
--- /dev/null
+++ b/themes/default/_top.twig
@@ -0,0 +1,7 @@
1 <header class="w600p center mbm">
2 <h1>
3 {% if view == 'home' %}{% block logo %}<img src="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/img/logo.png" alt="logo poche" />{% endblock %}
4 {% else %}<a href="./" title="{% trans "back to home" %}" >{{ block('logo') }}</a>
5 {% endif %}
6 </h1>
7 </header> \ No newline at end of file
diff --git a/themes/default/config.twig b/themes/default/config.twig
new file mode 100644
index 00000000..0f1aea80
--- /dev/null
+++ b/themes/default/config.twig
@@ -0,0 +1,80 @@
1{% extends "layout.twig" %}
2
3{% block title %}{% trans "config" %}{% endblock %}
4{% block menu %}
5{% include '_menu.twig' %}
6{% endblock %}
7{% block content %}
8 <h2>{% trans "Poching a link" %}</h2>
9 <p>{% trans "You can poche a link by several methods:" %} (<a href="http://inthepoche.com/doc" title="{% trans "read the documentation" %}">?</a>)</p>
10 <ul>
11 <li>firefox: <a href="https://bitbucket.org/jogaulupeau/poche/downloads/poche.xpi" title="download the firefox extension">{% trans "download the extension" %}</a></li>
12 <li>chrome: <a href="https://bitbucket.org/jogaulupeau/poche/downloads/poche.crx" title="download the chrome extension">{% trans "download the extension" %}</a></li>
13 <li>android: <a href="https://bitbucket.org/jogaulupeau/poche/downloads/Poche.apk" title="download the application">{% trans "download the application" %}</a></li>
14 <li>
15 <form method="get" action="index.php">
16 <label class="addurl" for="plainurl">{% trans "by filling this field" %}:</label>
17 <input required placeholder="Ex:mywebsite.com/article" class="addurl" id="plainurl" name="plainurl" type="url" />
18 <input type="submit" value="{% trans "poche it!" %}" />
19 </form>
20 </li>
21 <li>{% trans "bookmarklet: drag & drop this link to your bookmarks bar" %} <a id="bookmarklet" ondragend="this.click();" title="i am a bookmarklet, use me !" href="javascript:if(top['bookmarklet-url@inthepoche.com']){top['bookmarklet-url@inthepoche.com'];}else{(function(){var%20url%20=%20location.href%20||%20url;window.open('{{ poche_url }}?action=add&url='%20+%20btoa(url),'_self');})();void(0);}">{% trans "poche it!" %}</a></li>
22 </ul>
23
24 <h2>{% trans "Updating poche" %}</h2>
25 <ul>
26 <li>{% trans "your version" %} : <strong>{{ constant('POCHE_VERSION') }}</strong></li>
27 <li>{% trans "latest stable version" %} : {{ prod }}. {% if compare_prod == -1 %}<strong><a href="http://inthepoche.com/">{% trans "a more recent stable version is available." %}</a></strong>{% else %}{% trans "you are up to date." %}{% endif %}</li>
28 {% if constant('DEBUG_POCHE') == 1 %}<li>{% trans "latest dev version" %} : {{ dev }}. {% if compare_dev == -1 %}<strong><a href="http://inthepoche.com/">{% trans "a more recent development version is available." %}</a></strong>{% else %}{% trans "you are up to date." %}{% endif %}</li>{% endif %}
29 </ul>
30
31 <h2>{% trans "Change your theme" %}</h2>
32 <form method="post" action="?updatetheme" name="changethemeform">
33 <fieldset class="w500p">
34 <div class="row">
35 <label class="col w150p" for="theme">{% trans "Theme:" %}</label>
36 <select class="col" id="theme" name="theme">
37 {% for theme in themes %}
38 <option value="{{ theme.name }}" {{ theme.current ? 'selected' : '' }}>{{ theme.name }}</option>
39 {% endfor %}
40 </select>
41 </div>
42 <div class="row mts txtcenter">
43 <button class="bouton" type="submit" tabindex="4">{% trans "Update" %}</button>
44 </div>
45 </fieldset>
46 <input type="hidden" name="returnurl" value="{{ referer }}">
47 <input type="hidden" name="token" value="{{ token }}">
48 </form>
49
50 <h2>{% trans "Change your password" %}</h2>
51 <form method="post" action="?config" name="loginform">
52 <fieldset class="w500p">
53 <div class="row">
54 <label class="col w150p" for="password">{% trans "New password:" %}</label>
55 <input class="col" type="password" id="password" name="password" placeholder="{% trans "Password" %}" tabindex="2">
56 </div>
57 <div class="row">
58 <label class="col w150p" for="password_repeat">{% trans "Repeat your new password:" %}</label>
59 <input class="col" type="password" id="password_repeat" name="password_repeat" placeholder="{% trans "Password" %}" tabindex="3">
60 </div>
61 <div class="row mts txtcenter">
62 <button class="bouton" type="submit" tabindex="4">{% trans "Update" %}</button>
63 </div>
64 </fieldset>
65 <input type="hidden" name="returnurl" value="{{ referer }}">
66 <input type="hidden" name="token" value="{{ token }}">
67 </form>
68
69 <h2>{% trans "Import" %}</h2>
70 <p>{% trans "Please execute the import script locally, it can take a very long time." %}</p>
71 <p>{% trans "More infos in the official doc:" %} <a href="http://inthepoche.com/doc">inthepoche.com</a></p>
72 <ul>
73 <li><a href="./?import&amp;from=pocket">{% trans "import from Pocket" %}</a> {{ '(you must have a %s file on your server)'|trans|format(constant('POCKET_FILE')) }}</li>
74 <li><a href="./?import&amp;from=readability">{% trans "import from Readability" %}</a> {{ '(you must have a %s file on your server)'|trans|format(constant('READABILITY_FILE')) }}</li>
75 <li><a href="./?import&amp;from=instapaper">{% trans "import from Instapaper" %}</a> {{ '(you must have a %s file on your server)'|trans|format(constant('INSTAPAPER_FILE')) }}</li>
76 </ul>
77
78 <h2>{% trans "Export your poche datas" %}</h2>
79 <p><a href="?export" target="_blank">{% trans "Click here" %}</a> {% trans "to export your poche datas." %}</p>
80{% endblock %} \ No newline at end of file
diff --git a/themes/default/css/knacss.css b/themes/default/css/knacss.css
new file mode 100644
index 00000000..ca0696b7
--- /dev/null
+++ b/themes/default/css/knacss.css
@@ -0,0 +1 @@
html{font-size:62.5%}body{font-family:"Century Gothic",helvetica,arial,sans-serif;font-size:1.4em;line-height:1.5;color:#000;background-color:#FFF}p,ul,ol,dl,blockquote,pre,td,th,label,textarea,caption,details,figure,hgroup{margin:.75em 0 0;font-size:1em;line-height:1.5}h1,.h1-like{margin:.8077em 0 0 0;font-size:1.8571em;font-weight:normal;line-height:1.6154em}h2,.h2-like{margin:.875em 0 0 0;font-size:1.7143em;font-weight:normal;line-height:1.75em}h3,.h3-like{margin:.9545em 0 0 0;font-size:1.5714em;font-weight:normal;line-height:1.909em}h4,.h4-like{margin:1.05em 0 0 0;font-size:1.4286em;font-weight:normal;line-height:1.05em}h5,.h5-like{margin:1.1667em 0 0 0;font-size:1.2857em;font-weight:normal;line-height:1.1667em}h6,.h6-like{margin:1.3125em 0 0 0;font-size:1.1429em;font-weight:normal;line-height:1.3125em}.smaller{font-size:.7143em}.small{font-size:.8571em}.big{font-size:1.1429em}.bigger{font-size:1.2857em}.biggest{font-size:1.4286em}html,body,textarea,figure,label{margin:0;padding:0}ul,ol{padding-left:2em}code,pre,samp,kbd{font-family:consolas,'DejaVu Sans Mono',courier,monospace;line-height:1em;white-space:pre-wrap}code,kbd,mark{border-radius:2px}em{font-style:italic}strong{font-weight:bold}kbd{padding:0 2px;border:1px solid #999}code{padding:2px 4px;color:#B11;background:rgba(0,0,0,.04)}mark{padding:2px 4px;background:#FF0}table{margin-bottom:1.5em}p:first-child,ul:first-child,ol:first-child,dl:first-child,blockquote:first-child,pre:first-child,h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}li p,li ul,li ol{margin-top:0;margin-bottom:0}img,table,td,blockquote,code,pre,textarea,input,video{max-width:100%}div,textarea,table,td,th,code,pre,samp{word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;-o-hyphens:auto;hyphens:auto}img{height:auto;vertical-align:middle}#map_canvas img,.gmnoprint img{max-width:none}a img{border:0}body > script{display:none !important}.skip-links{position:absolute}.skip-links a{position:absolute;left:-7000px;padding:.5em;text-decoration:none;color:#FFF;background:#000}.skip-links a:focus{position:static}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mod,.item{overflow:hidden}.row{display:table;width:100%;table-layout:fixed}.row > *,.col{display:table-cell;vertical-align:top}.clear,.line,.row{clear:both}.clearfix:after,.line:after,.mod:after{content:"";display:table;clear:both}.left{float:left}img.left{margin-right:1em}.right{float:right}img.right{margin-left:1em}img.left,img.right{margin-bottom:5px}.center{margin-right:auto;margin-left:auto}.txtleft{text-align:left}.txtright{text-align:right}.txtcenter{text-align:center}.inbl{display:inline-block;margin-right:-.25em;vertical-align:top}.w10{width:10%}.w20{width:20%}.w25{width:25%}.w30{width:30%}.w33{width:33.333%}.w40{width:40%}.w50{width:50%}.w60{width:60%}.w66{width:66.666%}.w70{width:70%}.w75{width:75%}.w80{width:80%}.w90{width:90%}.w100{width:100%}.w50p{width:50px}.w100p{width:100px}.w150p{width:150px}.w200p{width:200px}.w300p{width:300px}.w400p{width:400px}.w500p{width:500px}.w600p{width:600px}.w700p{width:700px}.w800p{width:800px}.w960p{width:960px}.mw960p{max-width:960px}.m-reset,.ma0{margin:0 !important}.p-reset,.pa0{padding:0 !important}.ma1,.mas{margin:10px !important}.ma2,.mam{margin:20px !important}.ma3,.mal{margin:30px !important}.pa1,.pas{padding:10px}.pa2,.pam{padding:20px}.pa3,.pal{padding:30px}.mt0,.mtn{margin-top:0 !important}.mt1,.mts{margin-top:10px !important}.mt2,.mtm{margin-top:20px !important}.mt3,.mtl{margin-top:30px !important}.mr0,.mrn{margin-right:0}.mr1,.mrs{margin-right:10px}.mr2,.mrm{margin-right:20px}.mr3,.mrl{margin-right:30px}.mb0,.mbn{margin-bottom:0 !important}.mb1,.mbs{margin-bottom:10px !important}.mb2,.mbm{margin-bottom:20px !important}.mb3,.mbl{margin-bottom:30px !important}.ml0,.mln{margin-left:0}.ml1,.mls{margin-left:10px}.ml2,.mlm{margin-left:20px}.ml3,.mll{margin-left:30px}.pt0,.ptn{padding-top:0}.pt1,.pts{padding-top:10px}.pt2,.ptm{padding-top:20px}.pt3,.ptl{padding-top:30px}.pr0,.prn{padding-right:0}.pr1,.prs{padding-right:10px}.pr2,.prm{padding-right:20px}.pr3,.prl{padding-right:30px}.pb0,.pbn{padding-bottom:0}.pb1,.pbs{padding-bottom:10px}.pb2,.pbm{padding-bottom:20px}.pb3,.pbl{padding-bottom:30px}.pl0,.pln{padding-left:0}.pl1,.pls{padding-left:10px}.pl2,.plm{padding-left:20px}.pl3,.pll{padding-left:30px}.visually-hidden{position:absolute;left:-7000px;overflow:hidden}[dir=rtl] .visually-hidden{right:-7000px;left:auto}.desktop-hidden{display:none}form,fieldset{border:none}input,button,select,label,.btn{font-family:inherit;vertical-align:middle}textarea{font-family:inherit;resize:vertical}.ie67 .clearfix,.ie67 .line,.ie67 .mod,.ie67 .row,.ie67 .col{zoom:1}.ie67 .btn,.ie67 .col,.ie67 .inbl{display:inline;zoom:1}.ie8 img{width:auto}@media print{p,blockquote{orphans:2;widows:2}blockquote,ul,ol{page-break-inside:avoid}h1,h2,h3,caption{page-break-after:avoid}}@media(orientation:landscape)and(max-device-width:768px){html,body{-webkit-text-size-adjust:100%}}[class*=grid] > *{float:left}[class*=grid] > * + *{margin-left:2%}.grid2 > *{width:49%}.grid3 > *{width:32%}.grid4 > *{width:23.5%}.grid5 > *{width:18.4%}.grid6 > *{width:15%}.grid2-1 > *:first-child,.grid1-2 > * + *{width:66%}.grid1-2 > *:first-child,.grid2-1 > * + *{width:32%}.grid1-3 > *:first-child,.grid3-1 > * + *{width:23.5%}.grid3-1 > *:first-child,.grid1-3 > * + *{width:74.5%}table,.table{max-width:100%;border-collapse:collapse;table-layout:fixed;vertical-align:top}table{width:100%}.table{display:table}caption{padding:10px;font-style:italic;color:#555}table{border:1px solid #CCC}tr > * + *{border-left:1px solid #CCC}th,td{padding:.3em .8em;border-bottom:1px solid #CCC;text-align:left}td{color:#333}.alternate{border:0}.alternate tbody{border:1px solid #CCC}.alternate thead tr > * + *{border-left:0}.alternate tbody tr > * + *{border-left:1px solid #CCC}.alternate-vert{border:0;border-right:1px solid #CCC}.alternate-vert tr >:first-child{border-bottom:0}.alternate-vert tr > * + *{border-top:1px solid #CCC}.striped tbody tr:nth-child(odd){background:#EEE;background:rgba(0,0,0,.05)}.striped-vert tr >:first-child{background:#EEE;background:rgba(0,0,0,.05)}.btn{display:inline-block}label{display:inline-block;vertical-align:middle;cursor:pointer}legend{border:0;white-space:normal}button,input,select{margin:0;font-family:"Century Gothic",helvetica,arial,sans-serif;font-size:100%;vertical-align:middle}textarea{min-height:5em;overflow:auto;font-size:1.75em;vertical-align:top;resize:vertical}}ol.styled{counter-reset:styled}ol.styled > li{counter-increment:styled;margin-bottom:.3em;list-style-type:none}ol.styled > li:before{content:counter(styled);display:inline-block;width:1em;height:1em;margin-right:.4em;padding:2px;border-radius:50%;text-align:center;text-indent:-.1em;font-size:.9em;line-height:1;vertical-align:middle;color:#FFF;background:rgba(0,0,0,.5)}@media(min-width:1280px){.large-hidden,.tablet-hidden{display:none !important}.large-visible{display:block !important}.large-no-float{float:none}.large-inbl{display:inline-block;float:none;vertical-align:top}.large-row{display:table;width:100% !important;table-layout:fixed}.large-col{display:table-cell;vertical-align:top}.large-w25{width:25% !important}.large-w33{width:33.3333% !important}.large-w50{width:50% !important}.large-w66{width:66.6666% !important}.large-w75{width:75% !important}.large-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.large-ma0,.large-man{margin:0 !important}}@media(max-width:768px){.w60,.w66,.w70,.w75,.w80,.w90,.w100,.w600p,.w700p,.w800p,.w960p,.mw960p,.medium-wauto{width:auto}.medium-hidden,.tablet-hidden{display:none !important}.medium-visible{display:block !important}.medium-no-float{float:none}.medium-inbl{display:inline-block;float:none;vertical-align:top}.medium-row{display:table;width:100% !important;table-layout:fixed}.medium-col{display:table-cell;vertical-align:top}.medium-w25{width:25% !important}.medium-w33{width:33.3333% !important}.medium-w50{width:50% !important}.medium-w66{width:66.6666% !important}.medium-w75{width:75% !important}.medium-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.medium-ma0,.medium-man{margin:0 !important}.grid4 > *{width:49% !important}.grid4 >:first-child + * + *{margin-left:0 !important}.grid6 > *{width:32% !important}.grid6 >:first-child + * + * + *{margin-left:0 !important}}@media(max-width:640px){.mod,.item,.col,fieldset{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.w30,.w33,.w40,.w50,.w300p,.w400p,.w500p{width:auto}.row{display:block !important;width:100% !important}.tiny-hidden,.phone-hidden{display:none !important}.tiny-visible{display:block !important}.tiny-no-float{float:none}.tiny-inbl{display:inline-block;float:none;vertical-align:top}.tiny-row{display:table;width:100% !important;table-layout:fixed}.tiny-col{display:table-cell;vertical-align:top}th,td{display:block !important;width:auto !important;text-align:left !important}thead{display:none}.tiny-w25{width:25% !important}.tiny-w33{width:33.3333% !important}.tiny-w50{width:50% !important}.tiny-w66{width:66.6666% !important}.tiny-w75{width:75% !important}.tiny-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.tiny-ma0,.tiny-man{margin:0 !important}} \ No newline at end of file
diff --git a/themes/default/css/messages.css b/themes/default/css/messages.css
new file mode 100644
index 00000000..46b54795
--- /dev/null
+++ b/themes/default/css/messages.css
@@ -0,0 +1,75 @@
1.messages {
2 display: block;
3 clear: both;
4 width: 400px;
5 margin: 10px auto 10px;
6 padding: 10px 0;
7 -moz-border-radius: 4px;
8 border-radius: 4px;
9}
10
11.messages a.closeMessage {
12 display: none;
13 float: right;
14 width: 16px;
15 height: 16px;
16 margin: -14px -8px 0 0;
17 background: url(../img/messages/close.png) no-repeat;
18}
19
20/*.messages:hover a.closeMessage { visibility:visible; }*/
21
22.messages p {
23 margin: 3px 0 3px 10px !important;
24 padding: 0 10px 0 23px !important;
25 font-size: 14px;
26 line-height: 16px;
27}
28
29.messages.error {
30 border: 1px solid #c42608;
31 color: #c00 !important;
32 background: #fff0ef;
33}
34
35.messages.error p {
36 color: #c00 !important;
37 background: url(../img/messages/cross.png) no-repeat 0 50%;
38}
39
40.messages.success {
41 border: 1px solid #6dc70c;
42 background: #e0fbcc;
43}
44
45.messages.success p {
46 color: #2b6301 !important;
47 background: url(../img/messages/tick.png) no-repeat 0 50%;
48}
49
50.messages.warning {
51 border: 1px solid #ebcd41;
52 color: #000;
53 background: #fffcd3;
54}
55
56.messages.warning p {
57 color: #5f4e01;
58 background: url(../img/messages/warning.png) no-repeat 0 50%;
59}
60
61.messages.information,
62.messages.info {
63 border: 1px solid #82aee7;
64 background: #dfebfb;
65}
66
67.messages.information p,
68.messages.info p {
69 color: #064393;
70 background: url(../img/messages/help.png) no-repeat 0 50%;
71}
72
73.messages.information a {
74 text-decoration: underline;
75}
diff --git a/themes/default/css/print.css b/themes/default/css/print.css
new file mode 100644
index 00000000..9aefa779
--- /dev/null
+++ b/themes/default/css/print.css
@@ -0,0 +1,48 @@
1/* ### Layout ### */
2
3body {
4 font-family: Serif;
5 background-color: #fff;
6}
7
8@page {
9 margin: 1cm;
10}
11
12img {
13 max-width: 100% !important;
14}
15
16/* ### Content ### */
17
18/* Hide useless blocks */
19body > header,
20#links,
21#sort,
22body > footer,
23.top_link,
24div.tools,
25header div,
26.messages,
27.entrie + .results {
28 display: none !important;
29}
30
31article {
32 border: none !important;
33}
34
35/* Add URL after links */
36.vieworiginal a:after {
37 content: " (" attr(href) ")";
38}
39
40/* Add explanation after abbr */
41abbr[title]:after {
42 content: " (" attr(title) ")";
43}
44
45/* Change border on current pager item */
46.pagination span.current {
47 border-style: dashed;
48}
diff --git a/themes/default/css/style-default.css b/themes/default/css/style-default.css
new file mode 100644
index 00000000..9dc7c0b0
--- /dev/null
+++ b/themes/default/css/style-default.css
@@ -0,0 +1,55 @@
1a.back span {
2 background-image: url('../img/default/left.png');
3}
4
5a.top span {
6 background-image: url('../img/default/top.png');
7}
8
9a.fav span,
10a.fav-off span:hover {
11 background-image: url('../img/default/star-on.png');
12}
13
14a.fav span:hover,
15a.fav-off span {
16 background-image: url('../img/default/star-off.png');
17}
18
19a.archive span,
20a.archive-off span:hover {
21 background-image: url('../img/default/checkmark-on.png');
22}
23
24a.archive span:hover,
25a.archive-off span {
26 background-image: url('../img/default/checkmark-off.png');
27}
28
29a.twitter span {
30 background-image: url('../img/default/twitter.png');
31}
32
33a.shaarli span {
34 background-image: url('../img/default/shaarli.png');
35}
36
37a.flattr span {
38 background-image: url('../img/default/flattr.png');
39}
40
41a.email span {
42 background-image: url('../img/default/envelop.png');
43}
44
45a.delete span {
46 background-image: url('../img/default/remove.png');
47}
48
49a.link span {
50 background-image: url('../img/default/link.png');
51}
52
53a.bad-display span {
54 background-image: url('../img/default/bad-display.png');
55} \ No newline at end of file
diff --git a/themes/default/css/style.css b/themes/default/css/style.css
new file mode 100644
index 00000000..eb04f0c4
--- /dev/null
+++ b/themes/default/css/style.css
@@ -0,0 +1,321 @@
1body {
2 margin: 10px;
3 font-family: 'Roboto',Verdana,Geneva,sans-serif;
4 font-size: 16px;
5 color: #000;
6}
7
8header {
9 text-align: center;
10}
11
12header h1 {
13 font-size: 1.3em;
14}
15
16a,
17a:hover,
18a:visited {
19 color: #000;
20}
21
22.bouton {
23 border: none;
24 border-radius: 2px;
25 color: #fff;
26 background-color: #000;
27}
28
29.bouton:hover {
30 color: #f1f1f1;
31 background-color: #222;
32 cursor: pointer;
33}
34
35#main {
36 margin: 0 auto;
37}
38
39#main #links {
40 padding: 0;
41 text-align: center;
42 font-size: 0.9em;
43 list-style-type: none;
44}
45
46#main #links li {
47 display: inline;
48}
49
50#main #links li .current {
51 -webkit-border-radius: 2px;
52 border-radius: 2px;
53 color: #fff;
54 background-color: #000;
55}
56
57#main #sort {
58 padding: 0;
59 text-align: center;
60 list-style-type: none;
61 opacity: 0.5;
62}
63
64#main #sort li {
65 display: inline;
66 font-size: 0.9em;
67}
68
69#main #sort li + li {
70 margin-left: 10px;
71}
72
73#main #sort a {
74 padding: 2px 2px 0;
75 vertical-align: middle;
76}
77
78#main #sort img {
79 vertical-align: baseline;
80}
81#main #sort img:hover {
82 cursor: pointer;
83}
84
85#links a {
86 padding: 5px 10px;
87 text-decoration: none;
88}
89
90#links a:hover {
91 -webkit-border-radius: 2px;
92 border-radius: 2px;
93 color: #f1f1f1;
94 background-color: #040707;
95}
96
97/*** ***/
98
99/*** LINKS DISPLAY ***/
100
101#main .tool {
102 text-decoration: none;
103 cursor: pointer;
104}
105
106#main #content {
107 margin-top: 20px;
108}
109
110#main #content h2 {
111 text-decoration: none;
112 font-size: 1.3em;
113}
114
115#main #content .entrie {
116 margin-top: 15px;
117 padding-bottom: 15px;
118 border-bottom: 1px dashed #222;
119 overflow: hidden;
120}
121
122/* First entry */
123#main #content .results + .entrie {
124 clear: both;
125 margin-top: 0;
126}
127
128#main .entrie .tools {
129 float: right;
130 text-align: right;
131 list-style-type: none;
132 opacity: 0.5;
133}
134
135#main .entrie .tools .tool span {
136 display: inline-block;
137 width: 16px;
138 height: 16px;
139 /* Hide textual content */
140 overflow: hidden;
141 text-align: left;
142 text-indent: -9999px;
143}
144
145/*** ***/
146
147/*** ARTICLE PAGE ***/
148
149#article {
150 margin: 0 auto;
151}
152
153#article header {
154 border-bottom: 1px solid #222;
155}
156
157#article header {
158 text-align: left;
159}
160
161#article header h1 small {
162 float: right;
163 font-size: 0.6em;
164}
165
166#article header a {
167 text-decoration: none;
168}
169
170.backhome {
171 display: inline;
172}
173
174.results {
175 padding: 15px 0;
176 overflow: hidden;
177}
178
179.nb-results {
180 float: left;
181 font-size: 0.9em;
182 line-height: 24px;
183 vertical-align: middle;
184}
185
186#article_toolbar {
187 position: fixed;
188 bottom: 0;
189 left: 0;
190 width: 100%;
191 height: 50px;
192 padding-top: 17px;
193 text-align: center;
194 color: #fff;
195 opacity: 0.8;
196 background: #fff;
197}
198
199#article_toolbar li {
200 display: inline;
201 padding-right: 30px;
202}
203
204#article_toolbar .tool {
205 padding: 0 2px;
206}
207
208#article_toolbar .tool span {
209 display: inline-block;
210 width: 16px;
211 height: 16px;
212 /* Hide textual content */
213 overflow: hidden;
214 text-align: left;
215 text-indent: -9999px;
216}
217
218/*** ***/
219
220/*** PAGINATION ***/
221
222.pagination {
223 float: right;
224 text-align: right;
225}
226
227.pagination a {
228 height: 25px;
229 margin: 2px;
230 padding: 4px 8px;
231 border: 1px solid #d5d5d5;
232 text-decoration: none;
233 font-size: 11px;
234 font-weight: bold;
235 color: #333;
236}
237
238.pagination a:hover,
239.pagination a:active {
240 background-color: #efefef;
241}
242
243.pagination .current {
244 height: 25px;
245 margin: 2px;
246 padding: 4px 8px;
247 border: 1px solid #d5d5d5;
248 text-decoration: none;
249 font-size: 11px;
250 font-weight: bold;
251 color: #000;
252 background-color: #ccc;
253}
254
255.pagination .disabled {
256 display: none;
257}
258
259#bookmarklet {
260 padding: 5px;
261 border: 1px dashed #808080;
262 background: #fff;
263 cursor: move;
264}
265
266.top_link {
267 display: none;
268 z-index: 2000;
269 position: fixed;
270 right: 15px;
271 bottom: 15px;
272 padding: 20px;
273 -webkit-border-radius: 40px;
274 -moz-border-radius: 40px;
275 border-radius: 40px;
276 opacity: 0.9;
277 background: #ccc;
278}
279
280footer {
281 clear: both;
282}
283
284.reading-time {
285 font-size: 0.8em;
286}
287
288#inputform {
289 display: none;
290 margin-top: 5px;
291 margin-right: auto;
292 margin-left: auto;
293 padding-bottom: 5px;
294 max-width: 300px;
295 border-radius: 3px;
296 text-align: center;
297 color: #fff;
298 opacity: 0.8;
299 background-color: rgba(0,0,0,0.9);
300}
301
302a.back span,
303a.top span,
304a.fav span,
305a.fav span:hover,
306a.fav-off span,
307a.fav-off span:hover,
308a.archive span,
309a.archive span:hover,
310a.archive-off span,
311a.archive-off span:hover,
312a.twitter span,
313a.shaarli span,
314a.flattr span,
315a.email span,
316a.delete span,
317a.link span,
318a.bad-display span,
319a.reading-time span {
320 background-repeat: no-repeat;
321} \ No newline at end of file
diff --git a/themes/default/error.twig b/themes/default/error.twig
new file mode 100644
index 00000000..c829d12b
--- /dev/null
+++ b/themes/default/error.twig
@@ -0,0 +1,6 @@
1{% extends "layout.twig" %}
2{% block title %}{% trans "plop" %}{% endblock %}
3{% block content %}
4 {{ msg|raw }}
5 <p>Don't forget <a href="http://inthepoche.com/doc">the documentation</a>.</p>
6{% endblock %} \ No newline at end of file
diff --git a/themes/default/export.twig b/themes/default/export.twig
new file mode 100644
index 00000000..4adb9540
--- /dev/null
+++ b/themes/default/export.twig
@@ -0,0 +1 @@
{{ export }} \ No newline at end of file
diff --git a/themes/default/home.twig b/themes/default/home.twig
new file mode 100644
index 00000000..c1b29ec3
--- /dev/null
+++ b/themes/default/home.twig
@@ -0,0 +1,49 @@
1{% extends "layout.twig" %}
2{% block title %}
3{% if view == 'fav' %}
4{% trans "favoris" %}
5{% elseif view == 'archive' %}
6{% trans "archive" %}
7{% else %}
8{% trans "unread" %}
9{% endif %}
10{% endblock %}
11{% block menu %}
12{% include '_menu.twig' %}
13{% endblock %}
14{% block precontent %}
15 {% if entries|length > 1 %}
16 <ul id="sort">
17 <li><a href="./?sort=ia&amp;view={{ view }}"><img src="{{ poche_url }}/themes/{{ theme }}/img/{{ theme }}/top.png" alt="{% trans "by date asc" %}" title="{% trans "by date asc" %}" /></a> {% trans "by date" %} <a href="./?sort=id&amp;view={{ view }}"><img src="{{ poche_url }}/themes/{{ theme }}/img/{{ theme }}/down.png" alt="{% trans "by date desc" %}" title="{% trans "by date desc" %}" /></a></li>
18 <li><a href="./?sort=ta&amp;view={{ view }}"><img src="{{ poche_url }}/themes/{{ theme }}/img/{{ theme }}/top.png" alt="{% trans "by title asc" %}" title="{% trans "by title asc" %}" /></a> {% trans "by title" %} <a href="./?sort=td&amp;view={{ view }}"><img src="{{ poche_url }}/themes/{{ theme }}/img/{{ theme }}/down.png" alt="{% trans "by title desc" %}" title="{% trans "by title desc" %}" /></a></li>
19 </ul>
20 {% endif %}
21{% endblock %}
22{% block content %}
23 {% if entries is empty %}
24 <div class="messages warning"><p>{% trans "No link available here!" %}</p></div>
25 {% else %}
26 {% block pager %}
27 {% if nb_results > 1 %}
28 <div class="results">
29 <div class="nb-results">{{ nb_results }} {% trans "results" %}</div>
30 {{ page_links | raw }}
31 </div>
32 {% endif %}
33 {% endblock %}
34 {% for entry in entries %}
35 <div id="entry-{{ entry.id|e }}" class="entrie">
36 <h2><a href="index.php?view=view&amp;id={{ entry.id|e }}">{{ entry.title|raw }}</a></h2>
37 <ul class="tools">
38 <li><a title="{% trans "toggle mark as read" %}" class="tool {% if entry.is_read == 0 %}archive-off{% else %}archive{% endif %}" href="./?action=toggle_archive&amp;id={{ entry.id|e }}"><span>{% trans "toggle mark as read" %}</span></a></li>
39 <li><a title="{% trans "toggle favorite" %}" class="tool {% if entry.is_fav == 0 %}fav-off{% else %}fav{% endif %}" href="./?action=toggle_fav&amp;id={{ entry.id|e }}"><span>{% trans "toggle favorite" %}</span></a></li>
40 <li><a title="{% trans "delete" %}" class="tool delete" href="./?action=delete&amp;id={{ entry.id|e }}"><span>{% trans "delete" %}</span></a></li>
41 <li><a href="{{ entry.url|e }}" target="_blank" title="{% trans "original" %} : {{ entry.title|e }}" class="tool link"><span>{{ entry.url | e | getDomain }}</span></a></li>
42 <li><a target="_blank" title="{% trans "estimated reading time:" %} {{ entry.content| getReadingTime }} min" class="reading-time"><span>{{ entry.content| getReadingTime }} min</span></a></li>
43 </ul>
44 <p>{{ entry.content|striptags|slice(0, 300) }}...</p>
45 </div>
46 {% endfor %}
47 {% endif %}
48 {{ block('pager') }}
49{% endblock %} \ No newline at end of file
diff --git a/themes/default/img/apple-touch-icon-144x144-precomposed.png b/themes/default/img/apple-touch-icon-144x144-precomposed.png
new file mode 100644
index 00000000..557b479c
--- /dev/null
+++ b/themes/default/img/apple-touch-icon-144x144-precomposed.png
Binary files differ
diff --git a/themes/default/img/apple-touch-icon-72x72-precomposed.png b/themes/default/img/apple-touch-icon-72x72-precomposed.png
new file mode 100644
index 00000000..e167d3a4
--- /dev/null
+++ b/themes/default/img/apple-touch-icon-72x72-precomposed.png
Binary files differ
diff --git a/themes/default/img/apple-touch-icon.png b/themes/default/img/apple-touch-icon.png
new file mode 100644
index 00000000..4d222fba
--- /dev/null
+++ b/themes/default/img/apple-touch-icon.png
Binary files differ
diff --git a/themes/default/img/default/backtotop.png b/themes/default/img/default/backtotop.png
new file mode 100644
index 00000000..051238ef
--- /dev/null
+++ b/themes/default/img/default/backtotop.png
Binary files differ
diff --git a/themes/default/img/default/bad-display.png b/themes/default/img/default/bad-display.png
new file mode 100755
index 00000000..6866799f
--- /dev/null
+++ b/themes/default/img/default/bad-display.png
Binary files differ
diff --git a/themes/default/img/default/checkmark-off.png b/themes/default/img/default/checkmark-off.png
new file mode 100644
index 00000000..3db5a06d
--- /dev/null
+++ b/themes/default/img/default/checkmark-off.png
Binary files differ
diff --git a/themes/default/img/default/checkmark-on.png b/themes/default/img/default/checkmark-on.png
new file mode 100644
index 00000000..cd3abb2c
--- /dev/null
+++ b/themes/default/img/default/checkmark-on.png
Binary files differ
diff --git a/themes/default/img/default/down.png b/themes/default/img/default/down.png
new file mode 100644
index 00000000..b9d536a7
--- /dev/null
+++ b/themes/default/img/default/down.png
Binary files differ
diff --git a/themes/default/img/default/envelop.png b/themes/default/img/default/envelop.png
new file mode 100644
index 00000000..6be1c886
--- /dev/null
+++ b/themes/default/img/default/envelop.png
Binary files differ
diff --git a/themes/default/img/default/flattr.png b/themes/default/img/default/flattr.png
new file mode 100755
index 00000000..0404aaea
--- /dev/null
+++ b/themes/default/img/default/flattr.png
Binary files differ
diff --git a/themes/default/img/default/left.png b/themes/default/img/default/left.png
new file mode 100644
index 00000000..a0a53631
--- /dev/null
+++ b/themes/default/img/default/left.png
Binary files differ
diff --git a/themes/default/img/default/link.png b/themes/default/img/default/link.png
new file mode 100755
index 00000000..db62819d
--- /dev/null
+++ b/themes/default/img/default/link.png
Binary files differ
diff --git a/themes/default/img/default/remove.png b/themes/default/img/default/remove.png
new file mode 100644
index 00000000..f8ad56a3
--- /dev/null
+++ b/themes/default/img/default/remove.png
Binary files differ
diff --git a/themes/default/img/default/shaarli.png b/themes/default/img/default/shaarli.png
new file mode 100644
index 00000000..1eb30f60
--- /dev/null
+++ b/themes/default/img/default/shaarli.png
Binary files differ
diff --git a/themes/default/img/default/star-off.png b/themes/default/img/default/star-off.png
new file mode 100644
index 00000000..6a0133a7
--- /dev/null
+++ b/themes/default/img/default/star-off.png
Binary files differ
diff --git a/themes/default/img/default/star-on.png b/themes/default/img/default/star-on.png
new file mode 100644
index 00000000..a9f96eaa
--- /dev/null
+++ b/themes/default/img/default/star-on.png
Binary files differ
diff --git a/themes/default/img/default/top.png b/themes/default/img/default/top.png
new file mode 100644
index 00000000..954a8c0a
--- /dev/null
+++ b/themes/default/img/default/top.png
Binary files differ
diff --git a/themes/default/img/default/twitter.png b/themes/default/img/default/twitter.png
new file mode 100644
index 00000000..cfcfe419
--- /dev/null
+++ b/themes/default/img/default/twitter.png
Binary files differ
diff --git a/themes/default/img/favicon.ico b/themes/default/img/favicon.ico
new file mode 100644
index 00000000..0e9ff779
--- /dev/null
+++ b/themes/default/img/favicon.ico
Binary files differ
diff --git a/themes/default/img/logo.png b/themes/default/img/logo.png
new file mode 100644
index 00000000..5305c77d
--- /dev/null
+++ b/themes/default/img/logo.png
Binary files differ
diff --git a/themes/default/img/messages/close.png b/themes/default/img/messages/close.png
new file mode 100644
index 00000000..731aa018
--- /dev/null
+++ b/themes/default/img/messages/close.png
Binary files differ
diff --git a/themes/default/img/messages/cross.png b/themes/default/img/messages/cross.png
new file mode 100644
index 00000000..1514d51a
--- /dev/null
+++ b/themes/default/img/messages/cross.png
Binary files differ
diff --git a/themes/default/img/messages/help.png b/themes/default/img/messages/help.png
new file mode 100644
index 00000000..5c870176
--- /dev/null
+++ b/themes/default/img/messages/help.png
Binary files differ
diff --git a/themes/default/img/messages/tick.png b/themes/default/img/messages/tick.png
new file mode 100644
index 00000000..a9925a06
--- /dev/null
+++ b/themes/default/img/messages/tick.png
Binary files differ
diff --git a/themes/default/img/messages/warning.png b/themes/default/img/messages/warning.png
new file mode 100644
index 00000000..628cf2da
--- /dev/null
+++ b/themes/default/img/messages/warning.png
Binary files differ
diff --git a/themes/default/install.twig b/themes/default/install.twig
new file mode 100644
index 00000000..6e85e5cb
--- /dev/null
+++ b/themes/default/install.twig
@@ -0,0 +1,28 @@
1{% extends "layout.twig" %}
2{% block title %}{% trans "installation" %}{% endblock %}
3{% block content %}
4 <form method="post" action="?install" name="loginform">
5 <fieldset class="w500p center">
6 <h2 class="mbs txtcenter">{% trans "install your poche" %}</h2>
7 <p>
8 {% trans "poche is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://inthepoche.com/doc'>read the documentation on poche website</a>." %}
9 </p>
10 <p class="row">
11 <label class="col w150p" for="login">{% trans "Login" %}</label>
12 <input class="col" type="text" id="login" name="login" placeholder="Login" tabindex="1" autofocus />
13 </p>
14 <p class="row">
15 <label class="col w150p" for="password">{% trans "Password" %}</label>
16 <input class="col" type="password" id="password" name="password" placeholder="Password" tabindex="2">
17 </p>
18 <p class="row">
19 <label class="col w150p" for="password_repeat">{% trans "Repeat your password" %}</label>
20 <input class="col" type="password" id="password_repeat" name="password_repeat" placeholder="Password" tabindex="3">
21 </p>
22 <p class="row mts txtcenter">
23 <button class="bouton" type="submit" tabindex="4">{% trans "Install" %}</button>
24 </p>
25 </fieldset>
26 <input type="hidden" name="token" value="{{ token }}">
27 </form>
28{% endblock %} \ No newline at end of file
diff --git a/themes/default/js/restoreScroll.js b/themes/default/js/restoreScroll.js
new file mode 100644
index 00000000..331c9e19
--- /dev/null
+++ b/themes/default/js/restoreScroll.js
@@ -0,0 +1,25 @@
1function supportsLocalStorage() {
2 try {
3 return 'localStorage' in window && window['localStorage'] !== null;
4 } catch (e) {
5 return false;
6 }
7}
8
9function savePercent(id, percent) {
10 if (!supportsLocalStorage()) { return false; }
11 localStorage["poche.article." + id + ".percent"] = percent;
12 return true;
13}
14
15function retrievePercent(id) {
16 if (!supportsLocalStorage()) { return false; }
17
18 var bheight = $(document).height();
19 var percent = localStorage["poche.article." + id + ".percent"];
20 var scroll = bheight * percent;
21
22 $('html,body').animate({scrollTop: scroll}, 'fast');
23
24 return true;
25} \ No newline at end of file
diff --git a/themes/default/layout.twig b/themes/default/layout.twig
new file mode 100644
index 00000000..fec7054a
--- /dev/null
+++ b/themes/default/layout.twig
@@ -0,0 +1,31 @@
1<!DOCTYPE html>
2<!--[if lte IE 6]><html class="no-js ie6 ie67 ie678" lang="{{ lang }}"><![endif]-->
3<!--[if lte IE 7]><html class="no-js ie7 ie67 ie678" lang="{{ lang }}"><![endif]-->
4<!--[if IE 8]><html class="no-js ie8 ie678" lang="{{ lang }}"><![endif]-->
5<!--[if gt IE 8]><html class="no-js" lang="{{ lang }}"><![endif]-->
6<html lang="{{ lang }}">
7 <head>
8 <meta name="viewport" content="initial-scale=1.0">
9 <meta charset="utf-8">
10 <!--[if IE]>
11 <meta http-equiv="X-UA-Compatible" content="IE=10">
12 <![endif]-->
13 <title>{% block title %}{% endblock %} - poche</title>
14{% include '_head.twig' %}
15{% include '_bookmarklet.twig' %}
16 </head>
17 <body>
18 {% include '_top.twig' %}
19 <div id="main">
20 {% block menu %}{% endblock %}
21 {% block precontent %}{% endblock %}
22 {% block messages %}
23 {% include '_messages.twig' %}
24 {% endblock %}
25 <div id="content" class="w600p center">
26 {% block content %}{% endblock %}
27 </div>
28 </div>
29{% include '_footer.twig' %}
30 </body>
31</html> \ No newline at end of file
diff --git a/themes/default/login.twig b/themes/default/login.twig
new file mode 100644
index 00000000..0ae130bc
--- /dev/null
+++ b/themes/default/login.twig
@@ -0,0 +1,32 @@
1{% extends "layout.twig" %}
2
3{% block title %}{% trans "login to your poche" %}{% endblock %}
4{% block content %}
5 <form method="post" action="?login" name="loginform">
6 <fieldset class="w500p center">
7 <h2 class="mbs txtcenter">{% trans "login to your poche" %}</h2>
8 {% if constant('MODE_DEMO') == 1 %}<p>{% trans "you are in demo mode, some features may be disabled." %}</p>{% endif %}
9 <div class="row">
10 <label class="col w150p" for="login">{% trans "Login" %}</label>
11 <input class="col" type="text" id="login" name="login" placeholder="Login" tabindex="1" autofocus {% if constant('MODE_DEMO') == 1 %}value="poche"{% endif %} />
12 </div>
13
14 <div class="row">
15 <label class="col w150p" for="password">{% trans "Password" %}</label>
16 <input class="col" type="password" id="password" name="password" placeholder="Password" tabindex="2" {% if constant('MODE_DEMO') == 1 %}value="poche"{% endif %} />
17 </div>
18 <div class="row">
19 <label class="col w150p" for="longlastingsession">{% trans "Stay signed in" %}</label>
20 <div class="col">
21 <input type="checkbox" id="longlastingsession" name="longlastingsession" tabindex="3">
22 <small class="inbl">{% trans "(Do not check on public computers)" %}</small>
23 </div>
24 </div>
25 <div class="row mts txtcenter">
26 <button class="bouton" type="submit" tabindex="4">{% trans "Login" %}</button>
27 </div>
28 </fieldset>
29 <input type="hidden" name="returnurl" value="{{ referer }}">
30 <input type="hidden" name="token" value="{{ token }}">
31 </form>
32{% endblock %} \ No newline at end of file
diff --git a/themes/default/view.twig b/themes/default/view.twig
new file mode 100644
index 00000000..1e54ae38
--- /dev/null
+++ b/themes/default/view.twig
@@ -0,0 +1,51 @@
1{% extends "layout.twig" %}
2{% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %}
3{% block content %}
4 <div id="article_toolbar">
5 <ul>
6 <li><a href="./" title="{% trans "back to home" %}" class="tool back"><span>{% trans "back to home" %}</span></a></li>
7 <li><a href="#top" title="{% trans "back to top" %}" class="tool top"><span>{% trans "back to top" %}</span></a></li>
8 <li><a href="{{ entry.url|e }}" target="_blank" title="{% trans "original" %} : {{ entry.title|e }}" class="tool link"><span>{{ entry.url | e | getDomain }}</span></a></li>
9 <li><a title="{% trans "toggle mark as read" %}" class="tool {% if entry.is_read == 0 %}archive-off{% else %}archive{% endif %}" href="./?action=toggle_archive&amp;id={{ entry.id|e }}"><span>{% trans "toggle mark as read" %}</span></a></li>
10 <li><a title="{% trans "toggle favorite" %}" class="tool {% if entry.is_fav == 0 %}fav-off{% else %}fav{% endif %}" href="./?action=toggle_fav&amp;id={{ entry.id|e }}"><span>{% trans "toggle favorite" %}</span></a></li>
11 <li><a title="{% trans "delete" %}" class="tool delete" href="./?action=delete&amp;id={{ entry.id|e }}"><span>{% trans "delete" %}</span></a></li>
12 {% if constant('SHARE_TWITTER') == 1 %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@getpoche" target="_blank" class="tool twitter" title="{% trans "tweet" %}"><span>{% trans "tweet" %}</span></a></li>{% endif %}
13 {% if constant('SHARE_MAIL') == 1 %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@getpoche" class="tool email" title="{% trans "email" %}"><span>{% trans "email" %}</span></a></li>{% endif %}
14 {% if constant('SHARE_SHAARLI') == 1 %}<li><a href="{{ constant('SHAARLI_URL') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans "shaarli" %}"><span>{% trans "shaarli" %}</span></a></li>{% endif %}
15 {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}<li><a href="http://flattr.com/submit/auto?url={{ entry.url }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span></a></li>{% elseif flattr.status == constant('FLATTRED') %}<li><a href="{{ flattr.flattrItemURL }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span>{{ flattr.numflattrs }}</a></li>{% endif %}{% endif %}
16 <li><a href="mailto:support@inthepoche.com?subject=Wrong%20display%20in%20poche&amp;body={{ entry.url|url_encode }}" title="{% trans "this article appears wrong?" %}" class="tool bad-display"><span>{% trans "this article appears wrong?" %}</span></a></li>
17 </ul>
18 </div>
19 <div id="article">
20 <header class="mbm">
21 <h1>{{ entry.title|raw }}</h1>
22 </header>
23 <article>
24 {{ content | raw }}
25 </article>
26 </div>
27 <script src="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/js/restoreScroll.js"></script>
28 <script type="text/javascript">
29 $(document).ready(function() {
30
31 $(window).scroll(function(e){
32 var scrollTop = $(window).scrollTop();
33 var docHeight = $(document).height();
34 var scrollPercent = (scrollTop) / (docHeight);
35 var scrollPercentRounded = Math.round(scrollPercent*100)/100;
36 savePercent({{ entry.id|e }}, scrollPercentRounded);
37 });
38
39 retrievePercent({{ entry.id|e }});
40
41 $(window).resize(function(){
42 retrievePercent({{ entry.id|e }});
43 });
44
45 // Hide useless "back to top" link when there is no scrollbar
46 if ($("body").height() <= $(window).height()) {
47 $('#article_toolbar .tool.top').parent().hide();
48 }
49 });
50 </script>
51{% endblock %} \ No newline at end of file
diff --git a/themes/dmagenta/README.md b/themes/dmagenta/README.md
new file mode 100644
index 00000000..6abc37e3
--- /dev/null
+++ b/themes/dmagenta/README.md
@@ -0,0 +1,3 @@
1# dmagenta (dark magenta) theme
2
3theme created by Nicolas LÅ“uillet aka nico_somb \ No newline at end of file
diff --git a/themes/dmagenta/css/style-dmagenta.css b/themes/dmagenta/css/style-dmagenta.css
new file mode 100644
index 00000000..4dc592d2
--- /dev/null
+++ b/themes/dmagenta/css/style-dmagenta.css
@@ -0,0 +1,78 @@
1body {
2 color: #d4d4d4;
3 background-color: #372d37;
4}
5
6a,
7a:hover,
8a:visited {
9 color: #8d748d;
10}
11
12a.back span {
13 background-image: url('../img/dmagenta/left.png');
14}
15
16a.top span {
17 background-image: url('../img/dmagenta/top.png');
18}
19
20a.fav span,
21a.fav-off span:hover {
22 background-image: url('../img/dmagenta/star-on.png');
23}
24
25a.fav span:hover,
26a.fav-off span {
27 background-image: url('../img/dmagenta/star-off.png');
28}
29
30a.archive span,
31a.archive-off span:hover {
32 background-image: url('../img/dmagenta/checkmark-on.png');
33}
34
35a.archive span:hover,
36a.archive-off span {
37 background-image: url('../img/dmagenta/checkmark-off.png');
38}
39
40a.twitter span {
41 background-image: url('../img/dmagenta/twitter.png');
42}
43
44a.flattr span {
45 background-image: url('../img/dmagenta/flattr.png');
46}
47
48a.shaarli span {
49 background-image: url('../img/dmagenta/shaarli.png');
50}
51
52a.email span {
53 background-image: url('../img/dmagenta/envelop.png');
54}
55
56a.delete span {
57 background-image: url('../img/dmagenta/remove.png');
58}
59
60a.link span {
61 background-image: url('../img/dmagenta/link.png');
62}
63
64a.bad-display span {
65 background-image: url('../img/dmagenta/bad-display.png');
66}
67
68.pagination a {
69 color: #aaa;
70}
71
72#main #links li .current {
73 background-color: #2d372d;
74}
75
76#article_toolbar {
77 background: #372d37;
78} \ No newline at end of file
diff --git a/themes/dmagenta/img/dmagenta/backtotop.png b/themes/dmagenta/img/dmagenta/backtotop.png
new file mode 100755
index 00000000..051238ef
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/backtotop.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/bad-display.png b/themes/dmagenta/img/dmagenta/bad-display.png
new file mode 100755
index 00000000..6866799f
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/bad-display.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/checkmark-off.png b/themes/dmagenta/img/dmagenta/checkmark-off.png
new file mode 100644
index 00000000..3db5a06d
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/checkmark-off.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/checkmark-on.png b/themes/dmagenta/img/dmagenta/checkmark-on.png
new file mode 100644
index 00000000..cd3abb2c
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/checkmark-on.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/down.png b/themes/dmagenta/img/dmagenta/down.png
new file mode 100644
index 00000000..b9d536a7
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/down.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/envelop.png b/themes/dmagenta/img/dmagenta/envelop.png
new file mode 100644
index 00000000..6be1c886
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/envelop.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/flattr.png b/themes/dmagenta/img/dmagenta/flattr.png
new file mode 100755
index 00000000..0404aaea
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/flattr.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/left.png b/themes/dmagenta/img/dmagenta/left.png
new file mode 100644
index 00000000..a0a53631
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/left.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/link.png b/themes/dmagenta/img/dmagenta/link.png
new file mode 100755
index 00000000..db62819d
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/link.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/remove.png b/themes/dmagenta/img/dmagenta/remove.png
new file mode 100644
index 00000000..f8ad56a3
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/remove.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/shaarli.png b/themes/dmagenta/img/dmagenta/shaarli.png
new file mode 100644
index 00000000..1eb30f60
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/shaarli.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/star-off.png b/themes/dmagenta/img/dmagenta/star-off.png
new file mode 100644
index 00000000..6a0133a7
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/star-off.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/star-on.png b/themes/dmagenta/img/dmagenta/star-on.png
new file mode 100644
index 00000000..a9f96eaa
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/star-on.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/top.png b/themes/dmagenta/img/dmagenta/top.png
new file mode 100644
index 00000000..954a8c0a
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/top.png
Binary files differ
diff --git a/themes/dmagenta/img/dmagenta/twitter.png b/themes/dmagenta/img/dmagenta/twitter.png
new file mode 100644
index 00000000..cfcfe419
--- /dev/null
+++ b/themes/dmagenta/img/dmagenta/twitter.png
Binary files differ
diff --git a/themes/dmagenta/screenshot.jpg b/themes/dmagenta/screenshot.jpg
new file mode 100644
index 00000000..ab8f1ec2
--- /dev/null
+++ b/themes/dmagenta/screenshot.jpg
Binary files differ
diff --git a/themes/solarized-dark/README.md b/themes/solarized-dark/README.md
new file mode 100644
index 00000000..81be1f8c
--- /dev/null
+++ b/themes/solarized-dark/README.md
@@ -0,0 +1,6 @@
1# solarized-dark (Solarized Dark) theme
2
3
4Theme created by NumEricR
5
6http://github.com/NumEricR/poche-themes
diff --git a/themes/solarized-dark/Solarized-LICENSE.txt b/themes/solarized-dark/Solarized-LICENSE.txt
new file mode 100644
index 00000000..a842f663
--- /dev/null
+++ b/themes/solarized-dark/Solarized-LICENSE.txt
@@ -0,0 +1,19 @@
1Copyright (c) 2011 Ethan Schoonover
2
3Permission is hereby granted, free of charge, to any person obtaining a copy
4of this software and associated documentation files (the "Software"), to deal
5in the Software without restriction, including without limitation the rights
6to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7copies of the Software, and to permit persons to whom the Software is
8furnished to do so, subject to the following conditions:
9
10The above copyright notice and this permission notice shall be included in
11all copies or substantial portions of the Software.
12
13THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19THE SOFTWARE
diff --git a/themes/solarized-dark/css/style-solarized-dark.css b/themes/solarized-dark/css/style-solarized-dark.css
new file mode 100644
index 00000000..7ce8a563
--- /dev/null
+++ b/themes/solarized-dark/css/style-solarized-dark.css
@@ -0,0 +1,219 @@
1/*
2 * Solarized Dark - by NumEricR
3 * http://github.com/NumEricR/poche-themes
4 * ==================================================
5 *
6 * Based on Solarized's palette - (c) 2011 Ethan Schoonover
7 * See http://ethanschoonover.com/solarized#usage-development
8 * See http://ethanschoonover.com/solarized#the-values
9 *
10 * Background: #002b36 base 03
11 * Highlight: #073642 base 02
12 * Primary content: #839496 base 0
13 * Intermediate: #657b83 base 00
14 * Emphasized content: #93a1a1 base 1
15 * Secondary content: #586e75 base 01
16 * Green: #859900
17 * Orange: #cb4b16
18 * Red: #dc322f
19 * Blue: #268bd2
20 *
21 * ================================================== */
22
23/* Background */
24
25body,
26#article_toolbar {
27 background-color: #002b36;
28}
29
30/* Highlight */
31/* 2 different selectors for selection pseudo-elmt */
32/* See https://developer.mozilla.org/en-US/docs/Web/CSS/::selection */
33::-moz-selection {
34 background-color: #073642;
35}
36::selection {
37 background-color: #073642;
38}
39
40/* Primary content */
41
42body,
43a,
44a:hover,
45a:visited {
46 color: #839496;
47}
48
49/* Secondary content */
50
51.tools p,
52.vieworiginal a,
53.vieworiginal a:hover,
54.vieworiginal a:visited {
55 color: #586e75;
56}
57
58#main #content .entrie,
59#article header,
60#article article {
61 border-bottom-color: #586e75;
62}
63
64/* Emphasized content */
65
66.entrie h2 a:hover,
67footer,
68footer a {
69 color: #93a1a1;
70}
71
72/* Colored content */
73
74#main .messages.success,
75#main .messages.warning,
76#main .messages.error,
77#main .messages.information,
78#main .messages.info {
79 background-color: #073642;
80}
81
82#main .messages.success {
83 border-color: #859900;
84}
85
86#main .messages.success p {
87 color: #859900 !important; /* Overwrites !important used on messages.css */
88}
89
90#main .messages.warning {
91 border-color: #cb4b16;
92}
93
94#main .messages.warning p {
95 color: #cb4b16;
96}
97
98#main .messages.error {
99 border-color: #dc322f;
100}
101
102#main .messages.error p {
103 color: #dc322f !important; /* Overwrites !important used on messages.css */
104}
105
106#main .messages.information,
107#main .messages.info {
108 border-color: #268bd2;
109}
110
111#main .messages.information p,
112#main .messages.info p {
113 color: #268bd2;
114}
115
116/* Miscellaneous */
117
118.bouton,
119.bouton:hover,
120#main #links li a.current,
121#links a:hover,
122.pagination span.current,
123.pagination a:hover,
124.pagination a:active {
125 color: #002b36;
126 background-color: #586e75;
127}
128
129.bouton:hover {
130 background-color: #657b83;
131}
132
133#login,
134#password,
135#password_repeat,
136#bookmarklet,
137.top_link {
138 background-color: #073642;
139}
140
141#login,
142#password,
143#password_repeat,
144#bookmarklet {
145 padding: 5px;
146 border: 1px solid #586e75;
147 color: #839496;
148}
149
150#bookmarklet {
151 border-style: dashed;
152}
153
154.pagination a {
155 border-color: #586e75;
156 color: #586e75;
157}
158
159.pagination span.current {
160 border-color: #073642;
161}
162
163/* Images */
164
165a.back span {
166 background-image: url('../img/solarized-dark/left.png');
167}
168
169a.top span {
170 background-image: url('../img/solarized-dark/top.png');
171}
172
173a.fav span,
174a.fav-off span:hover {
175 background-image: url('../img/solarized-dark/star-on.png');
176}
177
178a.fav span:hover,
179a.fav-off span {
180 background-image: url('../img/solarized-dark/star-off.png');
181}
182
183a.archive span,
184a.archive-off span:hover {
185 background-image: url('../img/solarized-dark/checkmark-on.png');
186}
187
188a.archive span:hover,
189a.archive-off span {
190 background-image: url('../img/solarized-dark/checkmark-off.png');
191}
192
193a.twitter span {
194 background-image: url('../img/solarized-dark/twitter.png');
195}
196
197a.flattr span {
198 background-image: url('../img/solarized-dark/flattr.png');
199}
200
201a.shaarli span {
202 background-image: url('../img/solarized-dark/shaarli.png');
203}
204
205a.email span {
206 background-image: url('../img/solarized-dark/envelop.png');
207}
208
209a.delete span {
210 background-image: url('../img/solarized-dark/remove.png');
211}
212
213a.link span {
214 background-image: url('../img/solarized-dark/link.png');
215}
216
217a.bad-display span {
218 background-image: url('../img/solarized-dark/bad-display.png');
219} \ No newline at end of file
diff --git a/themes/solarized-dark/img/solarized-dark/backtotop.png b/themes/solarized-dark/img/solarized-dark/backtotop.png
new file mode 100644
index 00000000..1501c2a5
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/backtotop.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/bad-display.png b/themes/solarized-dark/img/solarized-dark/bad-display.png
new file mode 100644
index 00000000..b2c3ca17
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/bad-display.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/checkmark-off.png b/themes/solarized-dark/img/solarized-dark/checkmark-off.png
new file mode 100644
index 00000000..fd7d92fa
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/checkmark-off.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/checkmark-on.png b/themes/solarized-dark/img/solarized-dark/checkmark-on.png
new file mode 100644
index 00000000..592965dd
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/checkmark-on.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/down.png b/themes/solarized-dark/img/solarized-dark/down.png
new file mode 100644
index 00000000..5de30315
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/down.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/envelop.png b/themes/solarized-dark/img/solarized-dark/envelop.png
new file mode 100644
index 00000000..d3468885
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/envelop.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/flattr.png b/themes/solarized-dark/img/solarized-dark/flattr.png
new file mode 100644
index 00000000..73e3f421
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/flattr.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/left.png b/themes/solarized-dark/img/solarized-dark/left.png
new file mode 100644
index 00000000..a953d831
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/left.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/link.png b/themes/solarized-dark/img/solarized-dark/link.png
new file mode 100644
index 00000000..5e859a0e
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/link.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/remove.png b/themes/solarized-dark/img/solarized-dark/remove.png
new file mode 100644
index 00000000..66a5c1ab
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/remove.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/shaarli.png b/themes/solarized-dark/img/solarized-dark/shaarli.png
new file mode 100644
index 00000000..1eb30f60
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/shaarli.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/star-off.png b/themes/solarized-dark/img/solarized-dark/star-off.png
new file mode 100644
index 00000000..1c603ecc
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/star-off.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/star-on.png b/themes/solarized-dark/img/solarized-dark/star-on.png
new file mode 100644
index 00000000..bc37772a
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/star-on.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/top.png b/themes/solarized-dark/img/solarized-dark/top.png
new file mode 100644
index 00000000..b3f44f31
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/top.png
Binary files differ
diff --git a/themes/solarized-dark/img/solarized-dark/twitter.png b/themes/solarized-dark/img/solarized-dark/twitter.png
new file mode 100644
index 00000000..c4a25334
--- /dev/null
+++ b/themes/solarized-dark/img/solarized-dark/twitter.png
Binary files differ
diff --git a/themes/solarized-dark/screenshot.jpg b/themes/solarized-dark/screenshot.jpg
new file mode 100644
index 00000000..2ad87943
--- /dev/null
+++ b/themes/solarized-dark/screenshot.jpg
Binary files differ
diff --git a/themes/solarized/README.md b/themes/solarized/README.md
new file mode 100644
index 00000000..255e3cdd
--- /dev/null
+++ b/themes/solarized/README.md
@@ -0,0 +1,6 @@
1# solarized (Solarized) theme
2
3
4Theme created by NumEricR
5
6http://github.com/NumEricR/poche-themes
diff --git a/themes/solarized/Solarized-LICENSE.txt b/themes/solarized/Solarized-LICENSE.txt
new file mode 100644
index 00000000..a842f663
--- /dev/null
+++ b/themes/solarized/Solarized-LICENSE.txt
@@ -0,0 +1,19 @@
1Copyright (c) 2011 Ethan Schoonover
2
3Permission is hereby granted, free of charge, to any person obtaining a copy
4of this software and associated documentation files (the "Software"), to deal
5in the Software without restriction, including without limitation the rights
6to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7copies of the Software, and to permit persons to whom the Software is
8furnished to do so, subject to the following conditions:
9
10The above copyright notice and this permission notice shall be included in
11all copies or substantial portions of the Software.
12
13THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19THE SOFTWARE
diff --git a/themes/solarized/css/style-solarized.css b/themes/solarized/css/style-solarized.css
new file mode 100644
index 00000000..9286c750
--- /dev/null
+++ b/themes/solarized/css/style-solarized.css
@@ -0,0 +1,219 @@
1/*
2 * Solarized - by NumEricR
3 * http://github.com/NumEricR/poche-themes
4 * ==================================================
5 *
6 * Based on Solarized's palette - (c) 2011 Ethan Schoonover
7 * See http://ethanschoonover.com/solarized#usage-development
8 * See http://ethanschoonover.com/solarized#the-values
9 *
10 * Background: #fdf6e3 base 3
11 * Highlight: #eee8d5 base 2
12 * Primary content: #657b83 base 00
13 * Intermediate: #839496 base 0
14 * Emphasized content: #586e75 base 01
15 * Secondary content: #93a1a1 base 1
16 * Green: #859900
17 * Orange: #cb4b16
18 * Red: #dc322f
19 * Blue: #268bd2
20 *
21 * ================================================== */
22
23/* Background */
24
25body,
26#article_toolbar {
27 background-color: #fdf6e3;
28}
29
30/* Highlight */
31/* 2 different selectors for selection pseudo-elmt */
32/* See https://developer.mozilla.org/en-US/docs/Web/CSS/::selection */
33::-moz-selection {
34 background-color: #eee8d5;
35}
36::selection {
37 background-color: #eee8d5;
38}
39
40/* Primary content */
41
42body,
43a,
44a:hover,
45a:visited {
46 color: #657b83;
47}
48
49/* Secondary content */
50
51.tools p,
52.vieworiginal a,
53.vieworiginal a:hover,
54.vieworiginal a:visited {
55 color: #93a1a1;
56}
57
58#main #content .entrie,
59#article header,
60#article article {
61 border-bottom-color: #93a1a1;
62}
63
64/* Emphasized content */
65
66.entrie h2 a:hover,
67footer,
68footer a {
69 color: #586e75;
70}
71
72/* Colored content */
73
74#main .messages.success,
75#main .messages.warning,
76#main .messages.error,
77#main .messages.information,
78#main .messages.info {
79 background-color: #eee8d5;
80}
81
82#main .messages.success {
83 border-color: #859900;
84}
85
86#main .messages.success p {
87 color: #859900 !important; /* Overwrites !important used on messages.css */
88}
89
90#main .messages.warning {
91 border-color: #cb4b16;
92}
93
94#main .messages.warning p {
95 color: #cb4b16;
96}
97
98#main .messages.error {
99 border-color: #dc322f;
100}
101
102#main .messages.error p {
103 color: #dc322f !important; /* Overwrites !important used on messages.css */
104}
105
106#main .messages.information,
107#main .messages.info {
108 border-color: #268bd2;
109}
110
111#main .messages.information p,
112#main .messages.info p {
113 color: #268bd2;
114}
115
116/* Miscellaneous */
117
118.bouton,
119.bouton:hover,
120#main #links li a.current,
121#links a:hover,
122.pagination span.current,
123.pagination a:hover,
124.pagination a:active {
125 color: #fdf6e3;
126 background-color: #93a1a1;
127}
128
129.bouton:hover {
130 background-color: #657b83;
131}
132
133#login,
134#password,
135#password_repeat,
136#bookmarklet,
137.top_link {
138 background-color: #eee8d5;
139}
140
141#login,
142#password,
143#password_repeat,
144#bookmarklet {
145 padding: 5px;
146 border: 1px solid #93a1a1;
147 color: #657b83;
148}
149
150#bookmarklet {
151 border-style: dashed;
152}
153
154.pagination a {
155 border-color: #93a1a1;
156 color: #93a1a1;
157}
158
159.pagination span.current {
160 border-color: #eee8d5;
161}
162
163/* Images */
164
165a.back span {
166 background-image: url('../img/solarized/left.png');
167}
168
169a.top span {
170 background-image: url('../img/solarized/top.png');
171}
172
173a.fav span,
174a.fav-off span:hover {
175 background-image: url('../img/solarized/star-on.png');
176}
177
178a.fav span:hover,
179a.fav-off span {
180 background-image: url('../img/solarized/star-off.png');
181}
182
183a.archive span,
184a.archive-off span:hover {
185 background-image: url('../img/solarized/checkmark-on.png');
186}
187
188a.archive span:hover,
189a.archive-off span {
190 background-image: url('../img/solarized/checkmark-off.png');
191}
192
193a.twitter span {
194 background-image: url('../img/solarized/twitter.png');
195}
196
197a.shaarli span {
198 background-image: url('../img/solarized/shaarli.png');
199}
200
201a.flattr span {
202 background-image: url('../img/solarized/flattr.png');
203}
204
205a.email span {
206 background-image: url('../img/solarized/envelop.png');
207}
208
209a.delete span {
210 background-image: url('../img/solarized/remove.png');
211}
212
213a.link span {
214 background-image: url('../img/solarized/link.png');
215}
216
217a.bad-display span {
218 background-image: url('../img/solarized/bad-display.png');
219} \ No newline at end of file
diff --git a/themes/solarized/img/solarized/backtotop.png b/themes/solarized/img/solarized/backtotop.png
new file mode 100644
index 00000000..a3e52318
--- /dev/null
+++ b/themes/solarized/img/solarized/backtotop.png
Binary files differ
diff --git a/themes/solarized/img/solarized/bad-display.png b/themes/solarized/img/solarized/bad-display.png
new file mode 100644
index 00000000..ae99ab37
--- /dev/null
+++ b/themes/solarized/img/solarized/bad-display.png
Binary files differ
diff --git a/themes/solarized/img/solarized/checkmark-off.png b/themes/solarized/img/solarized/checkmark-off.png
new file mode 100644
index 00000000..20cd26b3
--- /dev/null
+++ b/themes/solarized/img/solarized/checkmark-off.png
Binary files differ
diff --git a/themes/solarized/img/solarized/checkmark-on.png b/themes/solarized/img/solarized/checkmark-on.png
new file mode 100644
index 00000000..87a2b799
--- /dev/null
+++ b/themes/solarized/img/solarized/checkmark-on.png
Binary files differ
diff --git a/themes/solarized/img/solarized/down.png b/themes/solarized/img/solarized/down.png
new file mode 100644
index 00000000..622ff87b
--- /dev/null
+++ b/themes/solarized/img/solarized/down.png
Binary files differ
diff --git a/themes/solarized/img/solarized/envelop.png b/themes/solarized/img/solarized/envelop.png
new file mode 100644
index 00000000..1caf7d43
--- /dev/null
+++ b/themes/solarized/img/solarized/envelop.png
Binary files differ
diff --git a/themes/solarized/img/solarized/flattr.png b/themes/solarized/img/solarized/flattr.png
new file mode 100644
index 00000000..18e00f86
--- /dev/null
+++ b/themes/solarized/img/solarized/flattr.png
Binary files differ
diff --git a/themes/solarized/img/solarized/left.png b/themes/solarized/img/solarized/left.png
new file mode 100644
index 00000000..9780faee
--- /dev/null
+++ b/themes/solarized/img/solarized/left.png
Binary files differ
diff --git a/themes/solarized/img/solarized/link.png b/themes/solarized/img/solarized/link.png
new file mode 100644
index 00000000..d0e12862
--- /dev/null
+++ b/themes/solarized/img/solarized/link.png
Binary files differ
diff --git a/themes/solarized/img/solarized/remove.png b/themes/solarized/img/solarized/remove.png
new file mode 100644
index 00000000..d5113d17
--- /dev/null
+++ b/themes/solarized/img/solarized/remove.png
Binary files differ
diff --git a/themes/solarized/img/solarized/shaarli.png b/themes/solarized/img/solarized/shaarli.png
new file mode 100644
index 00000000..1eb30f60
--- /dev/null
+++ b/themes/solarized/img/solarized/shaarli.png
Binary files differ
diff --git a/themes/solarized/img/solarized/star-off.png b/themes/solarized/img/solarized/star-off.png
new file mode 100644
index 00000000..afd7d80c
--- /dev/null
+++ b/themes/solarized/img/solarized/star-off.png
Binary files differ
diff --git a/themes/solarized/img/solarized/star-on.png b/themes/solarized/img/solarized/star-on.png
new file mode 100644
index 00000000..3a772512
--- /dev/null
+++ b/themes/solarized/img/solarized/star-on.png
Binary files differ
diff --git a/themes/solarized/img/solarized/top.png b/themes/solarized/img/solarized/top.png
new file mode 100644
index 00000000..d20001a4
--- /dev/null
+++ b/themes/solarized/img/solarized/top.png
Binary files differ
diff --git a/themes/solarized/img/solarized/twitter.png b/themes/solarized/img/solarized/twitter.png
new file mode 100644
index 00000000..109d7151
--- /dev/null
+++ b/themes/solarized/img/solarized/twitter.png
Binary files differ
diff --git a/themes/solarized/screenshot.jpg b/themes/solarized/screenshot.jpg
new file mode 100644
index 00000000..07d402e3
--- /dev/null
+++ b/themes/solarized/screenshot.jpg
Binary files differ