From 7ce7ec4c942e0a3567858ad0ec8e654000b49a3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 6 Aug 2013 14:18:03 +0200 Subject: [PATCH] prepare to multi users --- README.md | 2 +- inc/poche/Poche.class.php | 36 +- inc/poche/User.class.php | 33 ++ inc/poche/config.inc.php | 3 +- inc/store/sqlite.class.php | 74 ++-- inc/store/store.class.php | 6 +- locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.mo | Bin 2777 -> 5699 bytes locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.po | 417 ++++++++++++++++---- tpl/css/style.css | 6 +- tpl/login.twig | 2 +- 10 files changed, 436 insertions(+), 143 deletions(-) create mode 100644 inc/poche/User.class.php diff --git a/README.md b/README.md index 65e2f03..f401562 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ location ~ /(db) { See the documentation on our website : [inthepoche.com](http://inthepoche.com). ## License -Copyright © 2010-2013 Nicolas Lœuillet +Copyright © 2010-2013 Nicolas Lœuillet This work is free. You can redistribute it and/or modify it under the terms of the Do What The Fuck You Want To Public License, Version 2, as published by Sam Hocevar. See the COPYING file for more details. \ No newline at end of file diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 789d664..2c0c73f 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -10,6 +10,7 @@ class Poche { + public $user; public $store; public $tpl; public $messages; @@ -26,17 +27,20 @@ class Poche { $this->install(); } - - $this->saveUser(); } private function init() { + Tools::initPhp(); + Session::init(); + $this->user = isset($_SESSION['poche_user']) ? $_SESSION['poche_user'] : array(); + # l10n - putenv('LC_ALL=' . LANG); - setlocale(LC_ALL, LANG); - bindtextdomain(LANG, LOCALE); - textdomain(LANG); + $language = ($this->user->getConfigValue('language')) ? $this->user->getConfigValue('language') : LANG; + putenv('LC_ALL=' . $language); + setlocale(LC_ALL, $language); + bindtextdomain($language, LOCALE); + textdomain($language); # template engine $loader = new Twig_Loader_Filesystem(TPL); @@ -48,10 +52,9 @@ class Poche $filter = new Twig_SimpleFilter('getDomain', 'Tools::getDomain'); $this->tpl->addFilter($filter); - $this->pagination = new Paginator(PAGINATION, 'p'); - - Tools::initPhp(); - Session::init(); + # Pagination + $pager = ($this->user->getConfigValue('pager')) ? $this->user->getConfigValue('pager') : PAGINATION; + $this->pagination = new Paginator($pager, 'p'); } private function install() @@ -77,12 +80,6 @@ class Poche exit(); } - private function saveUser() - { - $_SESSION['login'] = (isset ($_SESSION['login'])) ? $_SESSION['login'] : $this->store->getLogin(); - $_SESSION['pass'] = (isset ($_SESSION['pass'])) ? $_SESSION['pass'] : $this->store->getPassword(); - } - /** * Call action (mark as fav, archive, delete, etc.) */ @@ -221,7 +218,11 @@ class Poche public function login($referer) { if (!empty($_POST['login']) && !empty($_POST['password'])) { - if (Session::login($_SESSION['login'], $_SESSION['pass'], $_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login']))) { + $user = $this->store->login($_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login'])); + if ($user != array()) { + # Save login into Session + Session::login($user['username'], $user['password'], $_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login']), array('poche_user' => new User($user))); + Tools::logm('login successful'); $this->messages->add('s', 'welcome to your poche'); if (!empty($_POST['longlastingsession'])) { @@ -248,6 +249,7 @@ class Poche { $this->messages->add('s', 'see you soon!'); Tools::logm('logout'); + $this->user = array(); Session::logout(); Tools::redirect(); } diff --git a/inc/poche/User.class.php b/inc/poche/User.class.php new file mode 100644 index 0000000..ef47730 --- /dev/null +++ b/inc/poche/User.class.php @@ -0,0 +1,33 @@ + + * @copyright 2013 + * @license http://www.wtfpl.net/ see COPYING file + */ + +class User +{ + public $id; + public $username; + public $name; + public $password; + public $email; + public $config; + + function __construct($user) + { + $this->id = $user['id']; + $this->username = $user['username']; + $this->name = $user['name']; + $this->password = $user['password']; + $this->email = $user['email']; + $this->config = $user['config']; + } + + function getConfigValue($name) { + return (isset($this->config[$name])) ? $this->config[$name] : FALSE; + } +} \ No newline at end of file diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php index ee0f661..d0c686f 100644 --- a/inc/poche/config.inc.php +++ b/inc/poche/config.inc.php @@ -21,12 +21,13 @@ define ('ABS_PATH', 'assets/'); define ('TPL', './tpl'); define ('LOCALE', './locale'); define ('CACHE', './cache'); -define ('LANG', 'fr_FR.UTF8'); +define ('LANG', 'en_EN.UTF8'); define ('PAGINATION', '10'); define ('THEME', 'light'); $storage_type = 'sqlite'; # sqlite, mysql, (file, not yet) # /!\ Be careful if you change the lines below /!\ +require_once './inc/poche/User.class.php'; require_once './inc/poche/Tools.class.php'; require_once './inc/poche/Url.class.php'; require_once './inc/3rdparty/class.messages.php'; diff --git a/inc/store/sqlite.class.php b/inc/store/sqlite.class.php index 3e391e4..3cc5276 100644 --- a/inc/store/sqlite.class.php +++ b/inc/store/sqlite.class.php @@ -25,59 +25,59 @@ class Sqlite extends Store { } public function isInstalled() { - $sql = "SELECT name FROM sqlite_sequence WHERE name=?"; - $query = $this->executeQuery($sql, array('config')); - $hasConfig = $query->fetchAll(); + $sql = "SELECT username FROM users WHERE id=?"; + $query = $this->executeQuery($sql, array('1')); + $hasAdmin = $query->fetchAll(); - if (count($hasConfig) == 0) - return FALSE; - - if (!$this->getLogin() || !$this->getPassword()) + if (count($hasAdmin) == 0) return FALSE; return TRUE; } public function install($login, $password) { - $this->getHandle()->exec('CREATE TABLE IF NOT EXISTS "config" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , "name" VARCHAR UNIQUE, "value" BLOB)'); - - $this->handle->exec('CREATE TABLE IF NOT EXISTS "entries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , "title" VARCHAR, "url" VARCHAR UNIQUE , "is_read" INTEGER DEFAULT 0, "is_fav" INTEGER DEFAULT 0, "content" BLOB)'); - - if (!$this->getLogin()) { - $sql_login = 'INSERT INTO config ( name, value ) VALUES (?, ?)'; - $params_login = array('login', $login); - $query = $this->executeQuery($sql_login, $params_login); - } - - if (!$this->getPassword()) { - $sql_pass = 'INSERT INTO config ( name, value ) VALUES (?, ?)'; - $params_pass = array('password', $password); - $query = $this->executeQuery($sql_pass, $params_pass); - } + $sql = 'INSERT INTO users ( username, password ) VALUES (?, ?)'; + $params = array($login, $password); + $query = $this->executeQuery($sql, $params); return TRUE; } - public function getLogin() { - $sql = "SELECT value FROM config WHERE name=?"; - $query = $this->executeQuery($sql, array('login')); + private function getConfigUser($id) { + $sql = "SELECT * FROM users_config WHERE user_id = ?"; + $query = $this->executeQuery($sql, array($id)); + $result = $query->fetchAll(); + $user_config = array(); + + foreach ($result as $key => $value) { + $user_config[$value['name']] = $value['value']; + } + + return $user_config; + } + + public function login($username, $password) { + $sql = "SELECT * FROM users WHERE username=? AND password=?"; + $query = $this->executeQuery($sql, array($username, $password)); $login = $query->fetchAll(); - return isset($login[0]['value']) ? $login[0]['value'] : FALSE; + $user = array(); + if (isset($login[0])) { + $user['id'] = $login[0]['id']; + $user['username'] = $login[0]['username']; + $user['password'] = $login[0]['password']; + $user['name'] = $login[0]['name']; + $user['email'] = $login[0]['email']; + $user['config'] = $this->getConfigUser($login[0]['id']); + } + + return $user; } - public function getPassword() { - $sql = "SELECT value FROM config WHERE name=?"; - $query = $this->executeQuery($sql, array('password')); - $pass = $query->fetchAll(); - - return isset($pass[0]['value']) ? $pass[0]['value'] : FALSE; - } - - public function updatePassword($password) + public function updatePassword($id, $password) { - $sql_update = "UPDATE config SET value=? WHERE name='password'"; - $params_update = array($password); + $sql_update = "UPDATE users SET password=? WHERE id=?"; + $params_update = array($password, $id); $query = $this->executeQuery($sql_update, $params_update); } diff --git a/inc/store/store.class.php b/inc/store/store.class.php index dd7d4cf..5f8939b 100644 --- a/inc/store/store.class.php +++ b/inc/store/store.class.php @@ -13,14 +13,10 @@ class Store { } - public function getLogin() { + public function login() { } - public function getPassword() { - - } - public function add() { } diff --git a/locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.mo b/locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.mo index 70d310d9438bc26627c4d2e5c251ba41c623fe43..c0d4a9d6c677a2d8ee6d37dd93c33bc7099c5de2 100644 GIT binary patch literal 5699 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 EA5nKjk^lez diff --git a/locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.po b/locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.po index a33a6a6..7f8cf78 100644 --- a/locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.po +++ b/locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: poche\n" -"POT-Creation-Date: 2013-08-02 15:38+0100\n" -"PO-Revision-Date: 2013-08-02 21:57+0100\n" +"POT-Creation-Date: 2013-08-06 08:35+0100\n" +"PO-Revision-Date: 2013-08-06 08:35+0100\n" "Last-Translator: Nicolas Lœuillet \n" "Language-Team: poche \n" "Language: Français\n" @@ -16,96 +16,361 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SearchPath-0: /var/www/poche-i18n\n" -#: /var/www/poche-i18n/import.php:17 -msgid "Please execute the import script locally, it can take a very long time." -msgstr "Merci d'exécuter l'import en local, cela peut prendre du temps. " - -#: /var/www/poche-i18n/import.php:17 -msgid "Please choose between Pocket & Readabilty :" -msgstr "Merci de choisir entre Pocket & Readability :" - -#: /var/www/poche-i18n/import.php:17 -msgid "Bye bye Pocket, let's go !" -msgstr "Bye bye Pocket, en route !" - -#: /var/www/poche-i18n/import.php:17 -msgid "Bye bye Readability, let's go !" -msgstr "Bye bye Readability, en route !" - -#: /var/www/poche-i18n/import.php:48 -msgid "Import from Pocket completed." -msgstr "L'import depuis Poche est terminé." - -#: /var/www/poche-i18n/import.php:48 /var/www/poche-i18n/import.php:66 -msgid "Welcome to poche !" -msgstr "Bienvenue dans poche !" - -#: /var/www/poche-i18n/import.php:66 -msgid "Import from Readability completed." -msgstr "L'import depuis Readability est terminé." - -#: /var/www/poche-i18n/import.php:70 -msgid "Error with the import." -msgstr "Erreur durant l'import." - -#: /var/www/poche-i18n/import.php:70 -msgid "Back to poche" -msgstr "Retour à poche" - -#: /var/www/poche-i18n/index.php:18 -msgid "Wrong token." -msgstr "Mauvais jeton." - #: /var/www/poche-i18n/index.php:43 -msgid "Login failed !" -msgstr "Connexion échouée." - -#: /var/www/poche-i18n/index.php:59 -msgid "your password has been updated" -msgstr "Votre mot de passe a été mis à jour. " - -#: /var/www/poche-i18n/index.php:62 -msgid "in demo mode, you can't update password" -msgstr "En mode démo, le mot de passe ne peut être modifié." - -#: /var/www/poche-i18n/index.php:66 -msgid "" -"your password can't be empty and you have to repeat it in the second field" -msgstr "" -"Votre mot de passe ne peut être vide et vous devez le répéter dans le second " -"champ." - -#: /var/www/poche-i18n/index.php:84 msgid "poche, a read it later open source system" msgstr "poche, a read it later open source system" -#: /var/www/poche-i18n/inc/MyTool.class.php:18 -msgid "Oops, it seems you don't have PHP 5." -msgstr "Oups, il semblerait que PHP 5 ne soit pas installé. " - -#: /var/www/poche-i18n/inc/functions.php:354 +#: /var/www/poche-i18n/inc/poche/Poche.class.php:101 msgid "the link has been added successfully" msgstr "le lien a été ajouté avec succès" -#: /var/www/poche-i18n/inc/functions.php:357 +#: /var/www/poche-i18n/inc/poche/Poche.class.php:104 msgid "error during insertion : the link wasn't added" msgstr "erreur durant l'insertion : le lien n'a pas été ajouté" -#: /var/www/poche-i18n/inc/functions.php:361 -msgid "error during url preparation : the link wasn't added" -msgstr "erreur durant l'insertion : le lien n'a pas été ajouté" +#: /var/www/poche-i18n/inc/poche/Poche.class.php:109 +msgid "error during fetching content : the link wasn't added" +msgstr "erreur durant la récupération du contenu : le lien n'a pas été ajouté" -#: /var/www/poche-i18n/inc/functions.php:366 -msgid "error during url preparation : the link is not valid" -msgstr "erreur durant la préparation de l'URL : le lien n'est pas valide" - -#: /var/www/poche-i18n/inc/functions.php:375 +#: /var/www/poche-i18n/inc/poche/Poche.class.php:119 msgid "the link has been deleted successfully" msgstr "le lien a été supprimé avec succès" -#: /var/www/poche-i18n/inc/functions.php:379 +#: /var/www/poche-i18n/inc/poche/Poche.class.php:123 msgid "the link wasn't deleted" msgstr "le lien n'a pas été supprimé" +#: /var/www/poche-i18n/inc/poche/Tools.class.php:18 +msgid "Oops, it seems you don't have PHP 5." +msgstr "Oups, il semblerait que PHP 5 ne soit pas installé. " + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:32 +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:70 +#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:50 +msgid "config" +msgstr "config" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:46 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:31 +#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:26 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:34 +msgid "home" +msgstr "accueil" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:54 +#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:34 +msgid "favorites" +msgstr "favoris" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:62 +#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:42 +msgid "archive" +msgstr "archives" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:74 +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:76 +#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:54 +#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:56 +msgid "logout" +msgstr "déconnexion" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:87 +msgid "Bookmarklet" +msgstr "Bookmarklet" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:91 +msgid "" +"Thanks to the bookmarklet, you will be able to easily add a link to your " +"poche." +msgstr "" +"Grâce au bookmarklet, vous pouvez ajouter facilement un lien dans votre " +"poche." + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:93 +msgid "Have a look to this documentation:" +msgstr "Jetez un œil à la documentation :" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:97 +msgid "Drag & drop this link to your bookmarks bar and have fun with poche." +msgstr "" +"Glissez / déposez ce lien dans votre barre de favoris de votre navigateur et " +"prenez du bon temps avec poche." + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:103 +msgid "poche it!" +msgstr "poche-le !" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:108 +msgid "Updating poche" +msgstr "Mettre à jour poche" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:113 +msgid "your version" +msgstr "votre version" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:119 +msgid "latest stable version" +msgstr "dernière version stable" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:125 +msgid "a more recent stable version is available." +msgstr "une version stable plus récente est disponible." + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:128 +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:142 +msgid "you are up to date." +msgstr "vous êtes à jour." + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:133 +msgid "latest dev version" +msgstr "dernière version de développement" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:139 +msgid "a more recent development version is available." +msgstr "une version de développement plus récente est disponible." + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:150 +msgid "Change your password" +msgstr "Modifier votre mot de passe" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:157 +msgid "New password:" +msgstr "Nouveau mot de passe :" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:161 +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:171 +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:60 +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:68 +msgid "Password" +msgstr "Mot de passe" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:167 +msgid "Repeat your new password:" +msgstr "Répétez le nouveau mot de passe :" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:177 +msgid "Update" +msgstr "Mettre à jour" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:193 +msgid "Import" +msgstr "Import" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:197 +msgid "Please execute the import script locally, it can take a very long time." +msgstr "Merci d'exécuter l'import en local, cela peut prendre du temps. " + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:201 +msgid "More infos in the official doc:" +msgstr "Plus d'infos sur la documentation officielle :" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:206 +msgid "import from Pocket" +msgstr "l'import depuis Pocket est terminé." + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:210 +msgid "import from Readability" +msgstr "l'import depuis Readability est terminé." + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:214 +msgid "import from Instapaper" +msgstr "Import depuis Instapaper" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:220 +msgid "Export your poche datas" +msgstr "Exporter vos données de poche" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:224 +msgid "Click here" +msgstr "Cliquez-ici" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:226 +msgid "to export your poche datas." +msgstr "pour exporter vos données de poche." + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:46 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:139 +#: /var/www/poche-i18n/cache/30/97/b548692380c89d047a16cec7af79.php:22 +msgid "back to home" +msgstr "retour à l'accueil" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:50 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:147 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:119 +msgid "toggle mark as read" +msgstr "marquer comme lu" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:60 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:157 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:129 +msgid "toggle favorite" +msgstr "favori" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:70 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:167 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:139 +msgid "delete" +msgstr "supprimer" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:82 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:179 +msgid "tweet" +msgstr "tweeter" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:93 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:190 +msgid "email" +msgstr "envoyer par email" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:109 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:125 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:153 +msgid "original" +msgstr "original" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:143 +msgid "back to top" +msgstr "retour en haut de page" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:198 +msgid "this article appears wrong?" +msgstr "cet article s'affiche mal ?" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:200 +msgid "create an issue" +msgstr "créer un ticket" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:202 +msgid "or" +msgstr "ou" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:206 +msgid "contact us by mail" +msgstr "contactez-nous par email" + +#: /var/www/poche-i18n/cache/88/8a/ee3b7080c13204391c14947a0c2c.php:22 +msgid "powered by" +msgstr "propulsé par" + +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:31 +msgid "installation" +msgstr "installation" + +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:42 +msgid "install your poche" +msgstr "installez votre poche" + +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:47 +msgid "" +"poche is still not installed. Please fill the below form to install it. " +"Don't hesitate to read " +"the documentation on poche website." +msgstr "" +"poche n'est pas encore installé. Merci de remplir les champs ci-dessous pour " +"l'installer. N'hésitez pas à lire la documentation sur le site de poche." + +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:53 +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:55 +msgid "Login" +msgstr "Nom d'utilisateur" + +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:67 +msgid "Repeat your password" +msgstr "Répétez votre mot de passe" + +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:74 +msgid "Install" +msgstr "Installer" + +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:31 +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:42 +msgid "login to your poche" +msgstr "Se connecter à votre poche" + +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:48 +msgid "you are in demo mode, some features may be disabled." +msgstr "" +"vous êtes en mode démo, certaines fonctionnalités sont peut-être désactivées." + +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:80 +msgid "Stay signed in" +msgstr "rester connecté" + +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:86 +msgid "(Do not check on public computers)" +msgstr "(à ne pas cocher sur un ordinateur public)" + +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:93 +msgid "Sign in" +msgstr "" + +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:55 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:57 +msgid "by date asc" +msgstr "par date asc" + +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:59 +msgid "by date" +msgstr "par date" + +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:65 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:67 +msgid "by date desc" +msgstr "par date desc" + +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:75 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:77 +msgid "by title asc" +msgstr "par titre asc" + +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:79 +msgid "by title" +msgstr "par titre" + +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:85 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:87 +msgid "by title desc" +msgstr "par titre desc" + +#~ msgid "Please choose between Pocket & Readabilty :" +#~ msgstr "Merci de choisir entre Pocket & Readability :" + +#~ msgid "Bye bye Pocket, let's go !" +#~ msgstr "Bye bye Pocket, en route !" + +#~ msgid "Bye bye Readability, let's go !" +#~ msgstr "Bye bye Readability, en route !" + +#~ msgid "Welcome to poche !" +#~ msgstr "Bienvenue dans poche !" + +#~ msgid "Error with the import." +#~ msgstr "Erreur durant l'import." + +#~ msgid "Wrong token." +#~ msgstr "Mauvais jeton." + +#~ msgid "Login failed !" +#~ msgstr "Connexion échouée." + +#~ msgid "your password has been updated" +#~ msgstr "Votre mot de passe a été mis à jour. " + +#~ msgid "in demo mode, you can't update password" +#~ msgstr "En mode démo, le mot de passe ne peut être modifié." + +#~ msgid "" +#~ "your password can't be empty and you have to repeat it in the second field" +#~ msgstr "" +#~ "Votre mot de passe ne peut être vide et vous devez le répéter dans le " +#~ "second champ." + +#~ msgid "error during url preparation : the link wasn't added" +#~ msgstr "erreur durant l'insertion : le lien n'a pas été ajouté" + +#~ msgid "error during url preparation : the link is not valid" +#~ msgstr "erreur durant la préparation de l'URL : le lien n'est pas valide" + #~ msgid "TEST" #~ msgstr "NICOLAS" diff --git a/tpl/css/style.css b/tpl/css/style.css index 8808b7e..d23c189 100644 --- a/tpl/css/style.css +++ b/tpl/css/style.css @@ -80,11 +80,7 @@ header h1 { } #main #content .entrie { - border-bottom: 1px solid #222222; -} - -#main .entrie h2 a { - text-decoration: none; + border-bottom: 1px dashed #222222; } #main .entrie ul.tools { diff --git a/tpl/login.twig b/tpl/login.twig index b24674e..0ae130b 100644 --- a/tpl/login.twig +++ b/tpl/login.twig @@ -23,7 +23,7 @@
- +