aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJean-Christophe Saad-Dupuy <saad.dupuy@gmail.com>2013-10-07 14:25:24 +0200
committerJean-Christophe Saad-Dupuy <saad.dupuy@gmail.com>2013-10-07 14:25:24 +0200
commit5e07dc8b51f9612de5f5a00bbac399c777e82fa4 (patch)
tree66454b9a6dd4e8cd045dd8451a268cf914e583b8
parent2916d24b209e1e36cf22cb902d7e6dc34113c7e5 (diff)
parent894c36ea32d38d425e27dae43a29dcd9e669040e (diff)
downloadwallabag-5e07dc8b51f9612de5f5a00bbac399c777e82fa4.tar.gz
wallabag-5e07dc8b51f9612de5f5a00bbac399c777e82fa4.tar.zst
wallabag-5e07dc8b51f9612de5f5a00bbac399c777e82fa4.zip
Merge remote branch 'upstream/dev' into dev
Conflicts: themes/default/_head.twig
-rw-r--r--inc/poche/Poche.class.php89
-rwxr-xr-xinc/poche/config.inc.php.new2
-rw-r--r--index.php8
-rw-r--r--install/update_sqlite_from_0_to_1.php72
-rw-r--r--install/update_to_1beta3.php79
-rw-r--r--themes/default/_footer.twig2
-rw-r--r--themes/default/_head.twig2
-rw-r--r--themes/default/config.twig4
-rw-r--r--themes/default/css/style.css2
-rw-r--r--themes/default/error.twig9
10 files changed, 65 insertions, 204 deletions
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php
index 1ba8e7c1..245f6a13 100644
--- a/inc/poche/Poche.class.php
+++ b/inc/poche/Poche.class.php
@@ -20,7 +20,7 @@ class Poche
20 public $pagination; 20 public $pagination;
21 21
22 private $currentTheme = ''; 22 private $currentTheme = '';
23 private $notInstalledMessage = ''; 23 private $notInstalledMessage = array();
24 24
25 # @todo make this dynamic (actually install themes and save them in the database including author information et cetera) 25 # @todo make this dynamic (actually install themes and save them in the database including author information et cetera)
26 private $installedThemes = array( 26 private $installedThemes = array(
@@ -33,28 +33,21 @@ class Poche
33 33
34 public function __construct() 34 public function __construct()
35 { 35 {
36 if (! $this->configFileIsAvailable()) { 36 if ($this->configFileIsAvailable()) {
37 return; 37 $this->init();
38 } 38 }
39 39
40 $this->init(); 40 if ($this->themeIsInstalled()) {
41 41 $this->initTpl();
42 if (! $this->themeIsInstalled()) {
43 return;
44 } 42 }
45 43
46 $this->initTpl(); 44 if ($this->systemIsInstalled()) {
47 45 $this->store = new Database();
48 if (! $this->systemIsInstalled()) { 46 $this->messages = new Messages();
49 return; 47 # installation
50 } 48 if (! $this->store->isInstalled()) {
51 49 $this->install();
52 $this->store = new Database(); 50 }
53 $this->messages = new Messages();
54
55 # installation
56 if (! $this->store->isInstalled()) {
57 $this->install();
58 } 51 }
59 } 52 }
60 53
@@ -94,7 +87,7 @@ class Poche
94 87
95 public function configFileIsAvailable() { 88 public function configFileIsAvailable() {
96 if (! self::$configFileAvailable) { 89 if (! self::$configFileAvailable) {
97 $this->notInstalledMessage = 'You have to rename <strong>inc/poche/config.inc.php.new</strong> to <strong>inc/poche/config.inc.php</strong>.'; 90 $this->notInstalledMessage[] = 'You have to rename inc/poche/config.inc.php.new to inc/poche/config.inc.php.';
98 91
99 return false; 92 return false;
100 } 93 }
@@ -103,39 +96,44 @@ class Poche
103 } 96 }
104 97
105 public function themeIsInstalled() { 98 public function themeIsInstalled() {
99 $passTheme = TRUE;
106 # Twig is an absolute requirement for Poche to function. Abort immediately if the Composer installer hasn't been run yet 100 # Twig is an absolute requirement for Poche to function. Abort immediately if the Composer installer hasn't been run yet
107 if (! self::$canRenderTemplates) { 101 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://doc.inthepoche.com/doku.php?id=users:begin:install">the documentation.</a>'; 102 $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 103 $passTheme = FALSE;
110 return false;
111 } 104 }
112 105
113 if (! is_writable(CACHE)) { 106 if (! is_writable(CACHE)) {
114 $this->notInstalledMessage = '<h1>error</h1><p>You don\'t have write access on cache directory.</p>'; 107 $this->notInstalledMessage[] = 'You don\'t have write access on cache directory.';
115 108
116 self::$canRenderTemplates = false; 109 self::$canRenderTemplates = false;
117 110
118 return false; 111 $passTheme = FALSE;
119 } 112 }
120 113
121 # Check if the selected theme and its requirements are present 114 # Check if the selected theme and its requirements are present
122 if (! is_dir(THEME . '/' . $this->getTheme())) { 115 if ($this->getTheme() != '' && ! is_dir(THEME . '/' . $this->getTheme())) {
123 $this->notInstalledMessage = 'The currently selected theme (' . $this->getTheme() . ') does not seem to be properly installed (Missing directory: ' . THEME . '/' . $this->getTheme() . ')'; 116 $this->notInstalledMessage[] = 'The currently selected theme (' . $this->getTheme() . ') does not seem to be properly installed (Missing directory: ' . THEME . '/' . $this->getTheme() . ')';
124 117
125 self::$canRenderTemplates = false; 118 self::$canRenderTemplates = false;
126 119
127 return false; 120 $passTheme = FALSE;
128 } 121 }
129 122
130 foreach ($this->installedThemes[$this->getTheme()]['requires'] as $requiredTheme) { 123 foreach ($this->installedThemes[$this->getTheme()]['requires'] as $requiredTheme) {
131 if (! is_dir(THEME . '/' . $requiredTheme)) { 124 if (! is_dir(THEME . '/' . $requiredTheme)) {
132 $this->notInstalledMessage = 'The required "' . $requiredTheme . '" theme is missing for the current theme (' . $this->getTheme() . ')'; 125 $this->notInstalledMessage[] = 'The required "' . $requiredTheme . '" theme is missing for the current theme (' . $this->getTheme() . ')';
133 126
134 self::$canRenderTemplates = false; 127 self::$canRenderTemplates = false;
135 128
136 return false; 129 $passTheme = FALSE;
137 } 130 }
138 } 131 }
132
133 if (!$passTheme) {
134 return FALSE;
135 }
136
139 137
140 return true; 138 return true;
141 } 139 }
@@ -147,25 +145,30 @@ class Poche
147 */ 145 */
148 public function systemIsInstalled() 146 public function systemIsInstalled()
149 { 147 {
150 $msg = ''; 148 $msg = TRUE;
151 149
152 $configSalt = defined('SALT') ? constant('SALT') : ''; 150 $configSalt = defined('SALT') ? constant('SALT') : '';
153 151
154 if (empty($configSalt)) { 152 if (empty($configSalt)) {
155 $msg = '<h1>error</h1><p>You have not yet filled in the SALT value in the config.inc.php file.</p>'; 153 $this->notInstalledMessage[] = 'You have not yet filled in the SALT value in the config.inc.php file.';
156 } else if (STORAGE == 'sqlite' && ! file_exists(STORAGE_SQLITE)) { 154 $msg = FALSE;
155 }
156 if (STORAGE == 'sqlite' && ! file_exists(STORAGE_SQLITE)) {
157 Tools::logm('sqlite file doesn\'t exist'); 157 Tools::logm('sqlite file doesn\'t exist');
158 $msg = '<h1>error</h1><p>sqlite file doesn\'t exist, you can find it in install folder. Copy it in /db folder.</p>'; 158 $this->notInstalledMessage[] = 'sqlite file doesn\'t exist, you can find it in install folder. Copy it in /db folder.';
159 } else if (is_dir(ROOT . '/install') && ! DEBUG_POCHE) { 159 $msg = FALSE;
160 $msg = '<h1>install folder</h1><p>you have to delete the /install folder before using poche.</p>'; 160 }
161 } else if (STORAGE == 'sqlite' && ! is_writable(STORAGE_SQLITE)) { 161 if (is_dir(ROOT . '/install') && ! DEBUG_POCHE) {
162 $this->notInstalledMessage[] = 'you have to delete the /install folder before using poche.';
163 $msg = FALSE;
164 }
165 if (STORAGE == 'sqlite' && ! is_writable(STORAGE_SQLITE)) {
162 Tools::logm('you don\'t have write access on sqlite file'); 166 Tools::logm('you don\'t have write access on sqlite file');
163 $msg = '<h1>error</h1><p>You don\'t have write access on sqlite file.</p>'; 167 $this->notInstalledMessage[] = 'You don\'t have write access on sqlite file.';
168 $msg = FALSE;
164 } 169 }
165 170
166 if (! empty($msg)) { 171 if (! $msg) {
167 $this->notInstalledMessage = $msg;
168
169 return false; 172 return false;
170 } 173 }
171 174
@@ -363,8 +366,8 @@ class Poche
363 case 'config': 366 case 'config':
364 $dev = $this->getPocheVersion('dev'); 367 $dev = $this->getPocheVersion('dev');
365 $prod = $this->getPocheVersion('prod'); 368 $prod = $this->getPocheVersion('prod');
366 $compare_dev = version_compare(POCHE_VERSION, $dev); 369 $compare_dev = version_compare(POCHE, $dev);
367 $compare_prod = version_compare(POCHE_VERSION, $prod); 370 $compare_prod = version_compare(POCHE, $prod);
368 $themes = $this->getInstalledThemes(); 371 $themes = $this->getInstalledThemes();
369 $tpl_vars = array( 372 $tpl_vars = array(
370 'themes' => $themes, 373 'themes' => $themes,
diff --git a/inc/poche/config.inc.php.new b/inc/poche/config.inc.php.new
index 902509e3..c60d4f80 100755
--- a/inc/poche/config.inc.php.new
+++ b/inc/poche/config.inc.php.new
@@ -52,8 +52,6 @@ define ('CACHE', ROOT . '/cache');
52 52
53define ('PAGINATION', '10'); 53define ('PAGINATION', '10');
54 54
55define ('POCHE_VERSION', '1.0.0');
56
57define ('POCKET_FILE', '/ril_export.html'); 55define ('POCKET_FILE', '/ril_export.html');
58define ('READABILITY_FILE', '/readability'); 56define ('READABILITY_FILE', '/readability');
59define ('INSTAPAPER_FILE', '/instapaper-export.html'); 57define ('INSTAPAPER_FILE', '/instapaper-export.html');
diff --git a/index.php b/index.php
index 4aebfe10..22696c6f 100644
--- a/index.php
+++ b/index.php
@@ -8,6 +8,7 @@
8 * @license http://www.wtfpl.net/ see COPYING file 8 * @license http://www.wtfpl.net/ see COPYING file
9 */ 9 */
10 10
11define ('POCHE', '1.0.0');
11require_once 'inc/poche/global.inc.php'; 12require_once 'inc/poche/global.inc.php';
12 13
13# Start Poche 14# Start Poche
@@ -35,7 +36,12 @@ $tpl_vars = array(
35if (! empty($notInstalledMessage)) { 36if (! empty($notInstalledMessage)) {
36 if (! Poche::$canRenderTemplates || ! Poche::$configFileAvailable) { 37 if (! Poche::$canRenderTemplates || ! Poche::$configFileAvailable) {
37 # We cannot use Twig to display the error message 38 # We cannot use Twig to display the error message
38 die($notInstalledMessage); 39 echo '<h1>Errors</h1><ol>';
40 foreach ($notInstalledMessage as $message) {
41 echo '<li>' . $message . '</li>';
42 }
43 echo '</ol>';
44 die();
39 } else { 45 } else {
40 # Twig is installed, put the error message in the template 46 # Twig is installed, put the error message in the template
41 $tpl_file = Tools::getTplFile('error'); 47 $tpl_file = Tools::getTplFile('error');
diff --git a/install/update_sqlite_from_0_to_1.php b/install/update_sqlite_from_0_to_1.php
deleted file mode 100644
index 299abf48..00000000
--- a/install/update_sqlite_from_0_to_1.php
+++ /dev/null
@@ -1,72 +0,0 @@
1<?php
2# import script to upgrade from poche 0.3
3$db_path = 'sqlite:../db/poche.sqlite';
4$handle = new PDO($db_path);
5$handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
6
7# Requêtes à exécuter pour mettre à jour poche.sqlite en 1.x
8
9# ajout d'un champ user_id sur la table entries
10$sql = 'ALTER TABLE entries RENAME TO tempEntries;';
11$query = $handle->prepare($sql);
12$query->execute();
13
14$sql = 'CREATE TABLE entries (id INTEGER PRIMARY KEY, title TEXT, url TEXT, is_read NUMERIC DEFAULT 0, is_fav NUMERIC DEFAULT 0, content BLOB, user_id NUMERIC);';
15$query = $handle->prepare($sql);
16$query->execute();
17
18$sql = 'INSERT INTO entries (id, title, url, is_read, is_fav, content) SELECT id, title, url, is_read, is_fav, content FROM tempEntries;';
19$query = $handle->prepare($sql);
20$query->execute();
21
22# Update tout pour mettre user_id = 1
23$sql = 'UPDATE entries SET user_id = 1;';
24$query = $handle->prepare($sql);
25$query->execute();
26
27# Changement des flags pour les lus / favoris
28$sql = 'UPDATE entries SET is_read = 1 WHERE is_read = -1;';
29$query = $handle->prepare($sql);
30$query->execute();
31
32$sql = 'UPDATE entries SET is_fav = 1 WHERE is_fav = -1;';
33$query = $handle->prepare($sql);
34$query->execute();
35
36# Création de la table users
37$sql = 'CREATE TABLE users (id INTEGER PRIMARY KEY, username TEXT, password TEXT, name TEXT, email TEXT);';
38$query = $handle->prepare($sql);
39$query->execute();
40
41$sql = 'INSERT INTO users (username) SELECT value FROM config WHERE name = "login";';
42$query = $handle->prepare($sql);
43$query->execute();
44
45$sql = "UPDATE users SET password = (SELECT value FROM config WHERE name = 'password')";
46$query = $handle->prepare($sql);
47$query->execute();
48
49# Création de la table users_config
50$sql = 'CREATE TABLE users_config (id INTEGER PRIMARY KEY, user_id NUMERIC, name TEXT, value TEXT);';
51$query = $handle->prepare($sql);
52$query->execute();
53
54$sql = 'INSERT INTO users_config (user_id, name, value) VALUES (1, "pager", "10");';
55$query = $handle->prepare($sql);
56$query->execute();
57
58$sql = 'INSERT INTO users_config (user_id, name, value) VALUES (1, "language", "en_EN.UTF8");';
59$query = $handle->prepare($sql);
60$query->execute();
61
62# Suppression de la table temporaire
63$sql = 'DROP TABLE tempEntries;';
64$query = $handle->prepare($sql);
65$query->execute();
66
67# Vidage de la table de config
68$sql = 'DELETE FROM config;';
69$query = $handle->prepare($sql);
70$query->execute();
71
72echo 'welcome to poche 1.0 !'; \ No newline at end of file
diff --git a/install/update_to_1beta3.php b/install/update_to_1beta3.php
deleted file mode 100644
index e0da1590..00000000
--- a/install/update_to_1beta3.php
+++ /dev/null
@@ -1,79 +0,0 @@
1<?php
2require_once dirname(__FILE__).'/../inc/poche/Tools.class.php';
3include dirname(__FILE__).'/../inc/poche/define.inc.php';
4require_once __DIR__ . '/../inc/poche/Database.class.php';
5$store = new Database();
6$old_salt = '464v54gLLw928uz4zUBqkRJeiPY68zCX';
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-beta3</h1>
20
21 <h2>Changelog</h2>
22 <p>
23 <ul>
24 <li>this awesome updating step</li>
25 <li>error message when install folder exists</li>
26 <li>more tests before installation (write access, etc.)</li>
27 <li>updated README to make installation easier</li>
28 <li>german language thanks to HLFH</li>
29 <li>spanish language thanks to Nitche</li>
30 <li>new file ./inc/poche/myconfig.inc.php created to store language and salt</li>
31 <li><a href="https://github.com/inthepoche/poche/issues/119">#119</a>: salt is now created when installing poche</li>
32 <li><a href="https://github.com/inthepoche/poche/issues/130">#130</a>: robots.txt added</li>
33 <li><a href="https://github.com/inthepoche/poche/issues/136">#136</a>: error during readability import</li>
34 <li><a href="https://github.com/inthepoche/poche/issues/137">#137</a>: mixed content alert in https</li>
35 <li><a href="https://github.com/inthepoche/poche/issues/138">#138</a>: change pattern to parse url with #</li>
36 </ul>
37 </p>
38 <p>To update your poche, please fill the following fields.</p>
39 <p>
40 <form name="update" method="post">
41 <div><label for="login">login:</label> <input type="text" name="login" id="login" /></div>
42 <div><label for="password">password:</label> <input type="password" name="password" id="password" /></div>
43 <div><input type="hidden" name="go" value="ok" /><input type="submit" value="update" /></div>
44 </form>
45 </p>
46<?php
47if (isset($_POST['go'])) {
48 if (!empty($_POST['login']) && !empty($_POST['password'])) {
49 $user = $store->login($_POST['login'], sha1($_POST['password'] . $_POST['login'] . $old_salt));
50 if ($user != array()) {
51 $new_salt = md5(time() . $_SERVER['SCRIPT_FILENAME'] . rand());
52 $myconfig_file = '../inc/poche/myconfig.inc.php';
53 if (!is_writable('../inc/poche/')) {
54 die('You don\'t have write access to create ./inc/poche/myconfig.inc.php.');
55 }
56
57 if (!file_exists($myconfig_file))
58 {
59 $fp = fopen($myconfig_file, 'w');
60
61 fwrite($fp, '<?php'."\r\n");
62 fwrite($fp, "define ('POCHE_VERSION', '1.0-beta3');" . "\r\n");
63 fwrite($fp, "define ('SALT', '" . $new_salt . "');" . "\r\n");
64 fwrite($fp, "define ('LANG', 'en_EN.utf8');" . "\r\n");
65 fclose($fp);
66 }
67 # faire une mise à jour de la table users en prenant en compte le nouveau SALT généré
68 $store->updatePassword($user['id'], sha1($_POST['password'] . $_POST['login'] . $new_salt));
69?>
70 <p><span style="color: green;">your poche is up to date!</span></p>
71 <p><span style="color: red;">don't forget to delete ./install/ folder after the update.</span></p>
72 <p><a href="../">go back to your poche</a></p>
73<?php
74 }
75 }
76}
77?>
78 </body>
79</html> \ No newline at end of file
diff --git a/themes/default/_footer.twig b/themes/default/_footer.twig
index 2b895854..06148a57 100644
--- a/themes/default/_footer.twig
+++ b/themes/default/_footer.twig
@@ -1,4 +1,4 @@
1 <footer class="w600p center mt3 mb3 smaller txtright"> 1 <footer class="w600p center mt3 mb3 smaller txtright">
2 <p>{% trans "powered by" %} <a href="http://inthepoche.com">poche</a></p> 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 %} 3 {% if constant('DEBUG_POCHE') == 1 %}<p><strong>{% trans "debug mode is on so cache is off." %} {% trans "your poche version:" %}{{constant('POCHE')}}. {% trans "storage:" %} {{constant('STORAGE')}}</strong></p>{% endif %}
4 </footer> \ No newline at end of file 4 </footer> \ No newline at end of file
diff --git a/themes/default/_head.twig b/themes/default/_head.twig
index 9745459c..247b929e 100644
--- a/themes/default/_head.twig
+++ b/themes/default/_head.twig
@@ -8,4 +8,4 @@
8 <link rel="stylesheet" href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/css/messages.css" media="all"> 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"> 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'> 10 <link href='//fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
11 <script src="href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/js/jquery-2.0.3.min.js"></script> 11 <script src="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/js/jquery-2.0.3.min.js"></script>
diff --git a/themes/default/config.twig b/themes/default/config.twig
index 0f1aea80..13bdaafd 100644
--- a/themes/default/config.twig
+++ b/themes/default/config.twig
@@ -23,7 +23,7 @@
23 23
24 <h2>{% trans "Updating poche" %}</h2> 24 <h2>{% trans "Updating poche" %}</h2>
25 <ul> 25 <ul>
26 <li>{% trans "your version" %} : <strong>{{ constant('POCHE_VERSION') }}</strong></li> 26 <li>{% trans "your version" %} : <strong>{{ constant('POCHE') }}</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> 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 %} 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> 29 </ul>
@@ -77,4 +77,4 @@
77 77
78 <h2>{% trans "Export your poche datas" %}</h2> 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> 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 80{% endblock %}
diff --git a/themes/default/css/style.css b/themes/default/css/style.css
index eb04f0c4..3ef9c823 100644
--- a/themes/default/css/style.css
+++ b/themes/default/css/style.css
@@ -188,7 +188,7 @@ a:visited {
188 bottom: 0; 188 bottom: 0;
189 left: 0; 189 left: 0;
190 width: 100%; 190 width: 100%;
191 height: 50px; 191 min-height: 50px;
192 padding-top: 17px; 192 padding-top: 17px;
193 text-align: center; 193 text-align: center;
194 color: #fff; 194 color: #fff;
diff --git a/themes/default/error.twig b/themes/default/error.twig
index c829d12b..99eb1ed6 100644
--- a/themes/default/error.twig
+++ b/themes/default/error.twig
@@ -1,6 +1,11 @@
1{% extends "layout.twig" %} 1{% extends "layout.twig" %}
2{% block title %}{% trans "plop" %}{% endblock %} 2{% block title %}{% trans "plop" %}{% endblock %}
3{% block content %} 3{% block content %}
4 {{ msg|raw }} 4 <h1>Errors</h1>
5 <p>Don't forget <a href="http://inthepoche.com/doc">the documentation</a>.</p> 5 <ol>
6 {% for message in msg %}
7 <li>{{message}}</li>
8 {% endfor %}
9 </ol>
10 <p>Don't forget <a href="http://inthepoche.com/doc">the documentation</a>.</p>
6{% endblock %} \ No newline at end of file 11{% endblock %} \ No newline at end of file