1
0
mirror of https://github.com/moparisthebest/wallabag synced 2024-11-23 17:42:15 -05:00

prepare to multi users

This commit is contained in:
Nicolas Lœuillet 2013-08-06 14:18:03 +02:00
parent 17a9cb9608
commit 7ce7ec4c94
10 changed files with 436 additions and 143 deletions

View File

@ -52,7 +52,7 @@ location ~ /(db) {
See the documentation on our website : [inthepoche.com](http://inthepoche.com). See the documentation on our website : [inthepoche.com](http://inthepoche.com).
## License ## License
Copyright © 2010-2013 Nicolas Lœuillet <nicolas@loeuillet.org> Copyright © 2010-2013 Nicolas Lœuillet <nicolas.loeuillet@gmail.com>
This work is free. You can redistribute it and/or modify it under the 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, 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. as published by Sam Hocevar. See the COPYING file for more details.

View File

@ -10,6 +10,7 @@
class Poche class Poche
{ {
public $user;
public $store; public $store;
public $tpl; public $tpl;
public $messages; public $messages;
@ -26,17 +27,20 @@ class Poche
{ {
$this->install(); $this->install();
} }
$this->saveUser();
} }
private function init() private function init()
{ {
Tools::initPhp();
Session::init();
$this->user = isset($_SESSION['poche_user']) ? $_SESSION['poche_user'] : array();
# l10n # l10n
putenv('LC_ALL=' . LANG); $language = ($this->user->getConfigValue('language')) ? $this->user->getConfigValue('language') : LANG;
setlocale(LC_ALL, LANG); putenv('LC_ALL=' . $language);
bindtextdomain(LANG, LOCALE); setlocale(LC_ALL, $language);
textdomain(LANG); bindtextdomain($language, LOCALE);
textdomain($language);
# template engine # template engine
$loader = new Twig_Loader_Filesystem(TPL); $loader = new Twig_Loader_Filesystem(TPL);
@ -48,10 +52,9 @@ class Poche
$filter = new Twig_SimpleFilter('getDomain', 'Tools::getDomain'); $filter = new Twig_SimpleFilter('getDomain', 'Tools::getDomain');
$this->tpl->addFilter($filter); $this->tpl->addFilter($filter);
$this->pagination = new Paginator(PAGINATION, 'p'); # Pagination
$pager = ($this->user->getConfigValue('pager')) ? $this->user->getConfigValue('pager') : PAGINATION;
Tools::initPhp(); $this->pagination = new Paginator($pager, 'p');
Session::init();
} }
private function install() private function install()
@ -77,12 +80,6 @@ class Poche
exit(); 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.) * Call action (mark as fav, archive, delete, etc.)
*/ */
@ -221,7 +218,11 @@ class Poche
public function login($referer) public function login($referer)
{ {
if (!empty($_POST['login']) && !empty($_POST['password'])) { 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'); Tools::logm('login successful');
$this->messages->add('s', 'welcome to your poche'); $this->messages->add('s', 'welcome to your poche');
if (!empty($_POST['longlastingsession'])) { if (!empty($_POST['longlastingsession'])) {
@ -248,6 +249,7 @@ class Poche
{ {
$this->messages->add('s', 'see you soon!'); $this->messages->add('s', 'see you soon!');
Tools::logm('logout'); Tools::logm('logout');
$this->user = array();
Session::logout(); Session::logout();
Tools::redirect(); Tools::redirect();
} }

33
inc/poche/User.class.php Normal file
View File

@ -0,0 +1,33 @@
<?php
/**
* poche, a read it later open source system
*
* @category poche
* @author Nicolas Lœuillet <support@inthepoche.com>
* @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;
}
}

View File

@ -21,12 +21,13 @@ define ('ABS_PATH', 'assets/');
define ('TPL', './tpl'); define ('TPL', './tpl');
define ('LOCALE', './locale'); define ('LOCALE', './locale');
define ('CACHE', './cache'); define ('CACHE', './cache');
define ('LANG', 'fr_FR.UTF8'); define ('LANG', 'en_EN.UTF8');
define ('PAGINATION', '10'); define ('PAGINATION', '10');
define ('THEME', 'light'); define ('THEME', 'light');
$storage_type = 'sqlite'; # sqlite, mysql, (file, not yet) $storage_type = 'sqlite'; # sqlite, mysql, (file, not yet)
# /!\ Be careful if you change the lines below /!\ # /!\ 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/Tools.class.php';
require_once './inc/poche/Url.class.php'; require_once './inc/poche/Url.class.php';
require_once './inc/3rdparty/class.messages.php'; require_once './inc/3rdparty/class.messages.php';

View File

@ -25,59 +25,59 @@ class Sqlite extends Store {
} }
public function isInstalled() { public function isInstalled() {
$sql = "SELECT name FROM sqlite_sequence WHERE name=?"; $sql = "SELECT username FROM users WHERE id=?";
$query = $this->executeQuery($sql, array('config')); $query = $this->executeQuery($sql, array('1'));
$hasConfig = $query->fetchAll(); $hasAdmin = $query->fetchAll();
if (count($hasConfig) == 0) if (count($hasAdmin) == 0)
return FALSE;
if (!$this->getLogin() || !$this->getPassword())
return FALSE; return FALSE;
return TRUE; return TRUE;
} }
public function install($login, $password) { 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)'); $sql = 'INSERT INTO users ( username, password ) VALUES (?, ?)';
$params = array($login, $password);
$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)'); $query = $this->executeQuery($sql, $params);
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);
}
return TRUE; return TRUE;
} }
public function getLogin() { private function getConfigUser($id) {
$sql = "SELECT value FROM config WHERE name=?"; $sql = "SELECT * FROM users_config WHERE user_id = ?";
$query = $this->executeQuery($sql, array('login')); $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(); $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() { public function updatePassword($id, $password)
$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)
{ {
$sql_update = "UPDATE config SET value=? WHERE name='password'"; $sql_update = "UPDATE users SET password=? WHERE id=?";
$params_update = array($password); $params_update = array($password, $id);
$query = $this->executeQuery($sql_update, $params_update); $query = $this->executeQuery($sql_update, $params_update);
} }

View File

@ -13,11 +13,7 @@ class Store {
} }
public function getLogin() { public function login() {
}
public function getPassword() {
} }

View File

@ -1,8 +1,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: poche\n" "Project-Id-Version: poche\n"
"POT-Creation-Date: 2013-08-02 15:38+0100\n" "POT-Creation-Date: 2013-08-06 08:35+0100\n"
"PO-Revision-Date: 2013-08-02 21:57+0100\n" "PO-Revision-Date: 2013-08-06 08:35+0100\n"
"Last-Translator: Nicolas Lœuillet <nicolas.loeuillet@gmail.com>\n" "Last-Translator: Nicolas Lœuillet <nicolas.loeuillet@gmail.com>\n"
"Language-Team: poche <support@inthepoche.com>\n" "Language-Team: poche <support@inthepoche.com>\n"
"Language: Français\n" "Language: Français\n"
@ -16,96 +16,361 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: /var/www/poche-i18n\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 #: /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" msgid "poche, a read it later open source system"
msgstr "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 #: /var/www/poche-i18n/inc/poche/Poche.class.php:101
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
msgid "the link has been added successfully" msgid "the link has been added successfully"
msgstr "le lien a été ajouté avec succès" 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" msgid "error during insertion : the link wasn't added"
msgstr "erreur durant l'insertion : le lien n'a pas été ajouté" msgstr "erreur durant l'insertion : le lien n'a pas été ajouté"
#: /var/www/poche-i18n/inc/functions.php:361 #: /var/www/poche-i18n/inc/poche/Poche.class.php:109
msgid "error during url preparation : the link wasn't added" msgid "error during fetching content : the link wasn't added"
msgstr "erreur durant l'insertion : le lien n'a pas été ajouté" msgstr "erreur durant la récupération du contenu : le lien n'a pas été ajouté"
#: /var/www/poche-i18n/inc/functions.php:366 #: /var/www/poche-i18n/inc/poche/Poche.class.php:119
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
msgid "the link has been deleted successfully" msgid "the link has been deleted successfully"
msgstr "le lien a été supprimé avec succès" 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" msgid "the link wasn't deleted"
msgstr "le lien n'a pas été supprimé" 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 <a href='http://inthepoche.com/?pages/Documentation'>read "
"the documentation on poche website</a>."
msgstr ""
"poche n'est pas encore installé. Merci de remplir les champs ci-dessous pour "
"l'installer. N'hésitez pas à <a href='http://inthepoche.com/?pages/"
"Documentation'>lire la documentation sur le site de poche</a>."
#: /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" #~ msgid "TEST"
#~ msgstr "NICOLAS" #~ msgstr "NICOLAS"

View File

@ -80,11 +80,7 @@ header h1 {
} }
#main #content .entrie { #main #content .entrie {
border-bottom: 1px solid #222222; border-bottom: 1px dashed #222222;
}
#main .entrie h2 a {
text-decoration: none;
} }
#main .entrie ul.tools { #main .entrie ul.tools {

View File

@ -23,7 +23,7 @@
</div> </div>
</div> </div>
<div class="row mts txtcenter"> <div class="row mts txtcenter">
<button class="bouton" type="submit" tabindex="4">{% trans "Sign in" %}</button> <button class="bouton" type="submit" tabindex="4">{% trans "Login" %}</button>
</div> </div>
</fieldset> </fieldset>
<input type="hidden" name="returnurl" value="{{ referer }}"> <input type="hidden" name="returnurl" value="{{ referer }}">