diff --git a/.gitignore b/.gitignore
index 25818a8..b73c4b4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,4 +5,4 @@ composer.phar
db/poche.sqlite
output
phpdoc*
-inc/poche/myconfig.inc.php
\ No newline at end of file
+inc/poche/config.inc.php
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..bbdd849
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "inc/3rdparty/site_config"]
+ path = inc/3rdparty/site_config
+ url = git@github.com:inthepoche/site_config.git
+[submodule "themes"]
+ path = themes
+ url = git://github.com/inthepoche/poche-themes.git
diff --git a/inc/3rdparty/FlattrItem.class.php b/inc/3rdparty/FlattrItem.class.php
new file mode 100644
index 0000000..c940fcd
--- /dev/null
+++ b/inc/3rdparty/FlattrItem.class.php
@@ -0,0 +1,49 @@
+cacheflattrfile($urltoflattr);
+ $flattrResponse = file_get_contents(CACHE . "/flattr/".base64_encode($urltoflattr).".cache");
+ if($flattrResponse != FALSE) {
+ $result = json_decode($flattrResponse);
+ if (isset($result->message)){
+ if ($result->message == "flattrable") {
+ $this->status = FLATTRABLE;
+ }
+ }
+ elseif ($result->link) {
+ $this->status = FLATTRED;
+ $this->flattrItemURL = $result->link;
+ $this->numflattrs = $result->flattrs;
+ }
+ else {
+ $this->status = NOT_FLATTRABLE;
+ }
+ }
+ else {
+ $this->status = "FLATTR_ERR_CONNECTION";
+ }
+ }
+
+ private function cacheflattrfile($urltoflattr) {
+ if (!is_dir(CACHE . '/flattr')) {
+ mkdir(CACHE . '/flattr', 0777);
+ }
+
+ // 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
+ if ((!file_exists(CACHE . "/flattr/".base64_encode($urltoflattr).".cache")) || (time() - filemtime(CACHE . "/flattr/".base64_encode($urltoflattr).".cache") > 86400)) {
+ $askForFlattr = Tools::getFile(FLATTR_API . $urltoflattr);
+ $flattrCacheFile = fopen(CACHE . "/flattr/".base64_encode($urltoflattr).".cache", 'w+');
+ fwrite($flattrCacheFile, $askForFlattr);
+ fclose($flattrCacheFile);
+ }
+ }
+}
\ No newline at end of file
diff --git a/inc/3rdparty/Session.class.php b/inc/3rdparty/Session.class.php
index 3162f50..df913a0 100644
--- a/inc/3rdparty/Session.class.php
+++ b/inc/3rdparty/Session.class.php
@@ -1,136 +1,279 @@
$value) {
- $_SESSION[$key] = $value;
- }
- if ($login==$login_test && $password==$password_test){
- // generate unique random number to sign forms (HMAC)
- $_SESSION['uid'] = sha1(uniqid('',true).'_'.mt_rand());
- $_SESSION['info']=Session::_allInfos();
- $_SESSION['username']=$login;
- // Set session expiration.
- $_SESSION['expires_on']=time()+Session::$inactivity_timeout;
- return true;
+ foreach ($pValues as $key => $value) {
+ $_SESSION[$key] = $value;
+ }
+
+ return true;
+ }
+ self::banLoginFailed();
}
+
return false;
}
- // Force logout
+ /**
+ * Unset SESSION variable to force logout
+ */
public static function logout()
{
- unset($_SESSION['uid'],$_SESSION['info'],$_SESSION['expires_on'],$_SESSION['tokens'], $_SESSION['login'], $_SESSION['pass'], $_SESSION['poche_user']);
+ unset($_SESSION['uid'],$_SESSION['ip'],$_SESSION['expires_on'],$_SESSION['tokens'], $_SESSION['login'], $_SESSION['pass'], $_SESSION['poche_user']);
}
- // Make sure user is logged in.
+ /**
+ * Make sure user is logged in.
+ *
+ * @return true|false True if user is logged in, false otherwise
+ */
public static function isLogged()
{
if (!isset ($_SESSION['uid'])
- || $_SESSION['info']!=Session::_allInfos()
- || time()>=$_SESSION['expires_on']){
- Session::logout();
+ || (self::$disableSessionProtection === false
+ && $_SESSION['ip'] !== self::_allIPs())
+ || time() >= $_SESSION['expires_on']) {
+ self::logout();
+
return false;
}
// User accessed a page : Update his/her session expiration date.
- $_SESSION['expires_on']=time()+Session::$inactivity_timeout;
+ $_SESSION['expires_on'] = time() + self::$inactivityTimeout;
+ if (!empty($_SESSION['longlastingsession'])) {
+ $_SESSION['expires_on'] += $_SESSION['longlastingsession'];
+ }
+
return true;
}
- // Returns a token.
- public static function getToken()
+ /**
+ * Create a token, store it in SESSION and return it
+ *
+ * @param string $salt to prevent birthday attack
+ *
+ * @return string Token created
+ */
+ public static function getToken($salt = '')
{
- if (!isset($_SESSION['tokens'])){
+ if (!isset($_SESSION['tokens'])) {
$_SESSION['tokens']=array();
}
// We generate a random string and store it on the server side.
- $rnd = sha1(uniqid('',true).'_'.mt_rand());
+ $rnd = sha1(uniqid('', true).'_'.mt_rand().$salt);
$_SESSION['tokens'][$rnd]=1;
+
return $rnd;
}
- // Tells if a token is ok. Using this function will destroy the token.
- // return true if token is ok.
+ /**
+ * Tells if a token is ok. Using this function will destroy the token.
+ *
+ * @param string $token Token to test
+ *
+ * @return true|false True if token is correct, false otherwise
+ */
public static function isToken($token)
{
- if (isset($_SESSION['tokens'][$token]))
- {
+ if (isset($_SESSION['tokens'][$token])) {
unset($_SESSION['tokens'][$token]); // Token is used: destroy it.
+
return true; // Token is ok.
}
+
return false; // Wrong token, or already used.
}
-}
\ No newline at end of file
+
+ /**
+ * Signal a failed login. Will ban the IP if too many failures:
+ */
+ public static function banLoginFailed()
+ {
+ if (self::$banFile !== '') {
+ $ip = $_SERVER["REMOTE_ADDR"];
+ $gb = $GLOBALS['IPBANS'];
+
+ if (!isset($gb['FAILURES'][$ip])) {
+ $gb['FAILURES'][$ip] = 0;
+ }
+ $gb['FAILURES'][$ip]++;
+ if ($gb['FAILURES'][$ip] > (self::$banAfter - 1)) {
+ $gb['BANS'][$ip]= time() + self::$banDuration;
+ }
+
+ $GLOBALS['IPBANS'] = $gb;
+ file_put_contents(self::$banFile, "");
+ }
+ }
+
+ /**
+ * Signals a successful login. Resets failed login counter.
+ */
+ public static function banLoginOk()
+ {
+ if (self::$banFile !== '') {
+ $ip = $_SERVER["REMOTE_ADDR"];
+ $gb = $GLOBALS['IPBANS'];
+ unset($gb['FAILURES'][$ip]); unset($gb['BANS'][$ip]);
+ $GLOBALS['IPBANS'] = $gb;
+ file_put_contents(self::$banFile, "");
+ }
+ }
+
+ /**
+ * Ban init
+ */
+ public static function banInit()
+ {
+ if (self::$banFile !== '') {
+ if (!is_file(self::$banFile)) {
+ file_put_contents(self::$banFile, "array(), 'BANS'=>array()), true).";\n?>");
+ }
+ include self::$banFile;
+ }
+ }
+
+ /**
+ * Checks if the user CAN login. If 'true', the user can try to login.
+ *
+ * @return boolean true if user is banned, false otherwise
+ */
+ public static function banCanLogin()
+ {
+ if (self::$banFile !== '') {
+ $ip = $_SERVER["REMOTE_ADDR"];
+ $gb = $GLOBALS['IPBANS'];
+ if (isset($gb['BANS'][$ip])) {
+ // User is banned. Check if the ban has expired:
+ if ($gb['BANS'][$ip] <= time()) {
+ // Ban expired, user can try to login again.
+ unset($gb['FAILURES'][$ip]);
+ unset($gb['BANS'][$ip]);
+ file_put_contents(self::$banFile, "");
+
+ return true; // Ban has expired, user can login.
+ }
+
+ return false; // User is banned.
+ }
+ }
+
+ return true; // User is not banned.
+ }
+}
diff --git a/inc/3rdparty/class.messages.php b/inc/3rdparty/class.messages.php
old mode 100755
new mode 100644
diff --git a/inc/3rdparty/content-extractor/ContentExtractor.php b/inc/3rdparty/content-extractor/ContentExtractor.php
index db371c6..2687839 100644
--- a/inc/3rdparty/content-extractor/ContentExtractor.php
+++ b/inc/3rdparty/content-extractor/ContentExtractor.php
@@ -138,7 +138,7 @@ class ContentExtractor
}
// load and parse html
- $this->readability = new Readability($html, $url);
+ $this->readability = new PocheReadability($html, $url);
// we use xpath to find elements in the given HTML document
// see http://en.wikipedia.org/wiki/XPath_1.0
diff --git a/inc/3rdparty/site_config/README.txt b/inc/3rdparty/site_config/README.txt
deleted file mode 100644
index 0aff456..0000000
--- a/inc/3rdparty/site_config/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Full-Text RSS Site Patterns
----------------------------
-
-Site patterns allow you to specify what should be extracted from specific sites.
-
-Please 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/inthepoche.com.txt b/inc/3rdparty/site_config/custom/inthepoche.com.txt
deleted file mode 100644
index ede74b9..0000000
--- a/inc/3rdparty/site_config/custom/inthepoche.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-title: //title
-body: //div[@class='post-content']
-
-prune: no
-tidy: no
-
-test_url: http://www.inthepoche.com/?post/poche-hosting
\ No newline at end of file
diff --git a/inc/3rdparty/site_config/index.php b/inc/3rdparty/site_config/index.php
deleted file mode 100644
index a3d5f73..0000000
--- a/inc/3rdparty/site_config/index.php
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ 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
deleted file mode 100644
index 8b98ae4..0000000
--- a/inc/3rdparty/site_config/standard/.wikipedia.org.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-title: //h1[@id='firstHeading']
-body: //div[@id = 'bodyContent']
-strip_id_or_class: editsection
-#strip_id_or_class: toc
-strip_id_or_class: vertical-navbox
-strip: //table[@id='toc']
-strip: //div[@id='catlinks']
-strip: //div[@id='jump-to-nav']
-strip: //div[@class='thumbcaption']//div[@class='magnify']
-strip: //table[@class='navbox']
-strip: //table[contains(@class, 'infobox')]
-strip: //div[@class='dablink']
-strip: //div[@id='contentSub']
-strip: //table[contains(@class, 'metadata')]
-strip: //*[contains(@class, 'noprint')]
-strip: //span[@title='pronunciation:']
-prune: no
-tidy: no
-test_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
deleted file mode 100644
index a3d5f73..0000000
--- a/inc/3rdparty/site_config/standard/index.php
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/version.php b/inc/3rdparty/site_config/standard/version.php
deleted file mode 100644
index e61807e..0000000
--- a/inc/3rdparty/site_config/standard/version.php
+++ /dev/null
@@ -1,2 +0,0 @@
-getLastId($sequence));
$sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)';
- $params = array($id_user, 'pager', '10');
+ $params = array($id_user, 'pager', PAGINATION);
$query = $this->executeQuery($sql, $params);
$sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)';
- $params = array($id_user, 'language', 'en_EN.UTF8');
+ $params = array($id_user, 'language', LANG);
+ $query = $this->executeQuery($sql, $params);
+
+ $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)';
+ $params = array($id_user, 'theme', DEFAULT_THEME);
$query = $this->executeQuery($sql, $params);
return TRUE;
@@ -101,10 +105,16 @@ class Database {
return $user;
}
- public function updatePassword($id, $password)
+ public function updatePassword($userId, $password)
{
$sql_update = "UPDATE users SET password=? WHERE id=?";
$params_update = array($password, $id);
+ $this->updateUserConfig($userId, 'password', $password);
+ }
+
+ public function updateUserConfig($userId, $key, $value) {
+ $sql_update = "UPDATE users_config SET `value`=? WHERE `user_id`=? AND `name`=?";
+ $params_update = array($value, $userId, $key);
$query = $this->executeQuery($sql_update, $params_update);
}
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php
index 646193f..18860dd 100644
--- a/inc/poche/Poche.class.php
+++ b/inc/poche/Poche.class.php
@@ -10,95 +10,63 @@
class Poche
{
+ public static $canRenderTemplates = true;
+ public static $configFileAvailable = true;
+
public $user;
public $store;
public $tpl;
public $messages;
public $pagination;
+
+ private $currentTheme = '';
+ private $notInstalledMessage = '';
+
+ # @todo make this dynamic (actually install themes and save them in the database including author information et cetera)
+ private $installedThemes = array(
+ 'default' => array('requires' => array()),
+ 'dark' => array('requires' => array('default')),
+ 'dmagenta' => array('requires' => array('default')),
+ 'solarized' => array('requires' => array('default')),
+ 'solarized-dark' => array('requires' => array('default'))
+ );
- function __construct()
+ public function __construct()
{
- $this->initTpl();
- if (!$this->checkBeforeInstall()) {
- exit;
+ if (! $this->configFileIsAvailable()) {
+ return;
}
- $this->store = new Database();
+
$this->init();
+
+ if (! $this->themeIsInstalled()) {
+ return;
+ }
+
+ $this->initTpl();
+
+ if (! $this->systemIsInstalled()) {
+ return;
+ }
+
+ $this->store = new Database();
$this->messages = new Messages();
# installation
- if(!$this->store->isInstalled())
- {
+ if (! $this->store->isInstalled()) {
$this->install();
}
}
-
- /**
- * all checks before installation.
- * @return boolean
- */
- private function checkBeforeInstall()
- {
- $msg = '';
- $allIsGood = TRUE;
-
- if (!is_writable(CACHE)) {
- Tools::logm('you don\'t have write access on cache directory');
- die('You don\'t have write access on cache directory.');
- }
- else if (file_exists('./install/update.php') && !DEBUG_POCHE) {
- $msg = '
setup
It\'s your first time here? Please copy /install/poche.sqlite in db folder. Then, delete install folder. If you have already installed poche, an update is needed by clicking here.
If you want to update your poche, you just have to delete /install folder. To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.
';
- $allIsGood = FALSE;
- }
- else if (STORAGE == 'sqlite' && !is_writable(STORAGE_SQLITE)) {
- Tools::logm('you don\'t have write access on sqlite file');
- $msg = '
error
You don\'t have write access on sqlite file.
';
- $allIsGood = FALSE;
- }
-
- if (!$allIsGood) {
- echo $this->tpl->render('error.twig', array(
- 'msg' => $msg
- ));
- }
-
- return $allIsGood;
- }
-
- private function initTpl()
- {
- # template engine
- $loader = new Twig_Loader_Filesystem(TPL);
- if (DEBUG_POCHE) {
- $twig_params = array();
- }
- else {
- $twig_params = array('cache' => CACHE);
- }
- $this->tpl = new Twig_Environment($loader, $twig_params);
- $this->tpl->addExtension(new Twig_Extensions_Extension_I18n());
- # filter to display domain name of an url
- $filter = new Twig_SimpleFilter('getDomain', 'Tools::getDomain');
- $this->tpl->addFilter($filter);
-
- # filter for reading time
- $filter = new Twig_SimpleFilter('getReadingTime', 'Tools::getReadingTime');
- $this->tpl->addFilter($filter);
- }
-
+
private function init()
{
Tools::initPhp();
+ Session::$sessionName = 'poche';
Session::init();
if (isset($_SESSION['poche_user']) && $_SESSION['poche_user'] != array()) {
$this->user = $_SESSION['poche_user'];
- }
- else {
+ } else {
# fake user, just for install & login screens
$this->user = new User();
$this->user->setConfig($this->getDefaultConfig());
@@ -113,13 +81,149 @@ class Poche
# Pagination
$this->pagination = new Paginator($this->user->getConfigValue('pager'), 'p');
+
+ # Set up theme
+ $themeDirectory = $this->user->getConfigValue('theme');
+
+ if ($themeDirectory === false) {
+ $themeDirectory = DEFAULT_THEME;
+ }
+
+ $this->currentTheme = $themeDirectory;
+ }
+
+ public function configFileIsAvailable() {
+ if (! self::$configFileAvailable) {
+ $this->notInstalledMessage = 'You have to rename inc/poche/config.inc.php.new to inc/poche/config.inc.php.';
+
+ return false;
+ }
+
+ return true;
+ }
+
+ public function themeIsInstalled() {
+ # Twig is an absolute requirement for Poche to function. Abort immediately if the Composer installer hasn't been run yet
+ if (! self::$canRenderTemplates) {
+ $this->notInstalledMessage = 'Twig does not seem to be installed. Please initialize the Composer installation to automatically fetch dependencies. Have a look at the documentation.';
+
+ return false;
+ }
+
+ # Check if the selected theme and its requirements are present
+ if (! is_dir(THEME . '/' . $this->getTheme())) {
+ $this->notInstalledMessage = 'The currently selected theme (' . $this->getTheme() . ') does not seem to be properly installed (Missing directory: ' . THEME . '/' . $this->getTheme() . ')';
+
+ self::$canRenderTemplates = false;
+
+ return false;
+ }
+
+ foreach ($this->installedThemes[$this->getTheme()]['requires'] as $requiredTheme) {
+ if (! is_dir(THEME . '/' . $requiredTheme)) {
+ $this->notInstalledMessage = 'The required "' . $requiredTheme . '" theme is missing for the current theme (' . $this->getTheme() . ')';
+
+ self::$canRenderTemplates = false;
+
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * all checks before installation.
+ * @todo move HTML to template
+ * @return boolean
+ */
+ public function systemIsInstalled()
+ {
+ $msg = '';
+
+ $configSalt = defined('SALT') ? constant('SALT') : '';
+
+ if (empty($configSalt)) {
+ $msg = '
error
You have not yet filled in the SALT value in the config.inc.php file.
';
+ } else if (! is_writable(CACHE)) {
+ Tools::logm('you don\'t have write access on cache directory');
+ $msg = '
It\'s your first time here? Please copy /install/poche.sqlite in db folder. Then, delete install folder. If you have already installed poche, an update is needed by clicking here.
If you want to update your poche, you just have to delete /install folder. To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.
';
+ } else if (STORAGE == 'sqlite' && ! is_writable(STORAGE_SQLITE)) {
+ Tools::logm('you don\'t have write access on sqlite file');
+ $msg = '
error
You don\'t have write access on sqlite file.
';
+ }
+
+ if (! empty($msg)) {
+ $this->notInstalledMessage = $msg;
+
+ return false;
+ }
+
+ return true;
+ }
+
+ public function getNotInstalledMessage() {
+ return $this->notInstalledMessage;
+ }
+
+ private function initTpl()
+ {
+ $loaderChain = new Twig_Loader_Chain();
+
+ # add the current theme as first to the loader chain so Twig will look there first for overridden template files
+ try {
+ $loaderChain->addLoader(new Twig_Loader_Filesystem(THEME . '/' . $this->getTheme()));
+ } catch (Twig_Error_Loader $e) {
+ # @todo isInstalled() should catch this, inject Twig later
+ die('The currently selected theme (' . $this->getTheme() . ') does not seem to be properly installed (' . THEME . '/' . $this->getTheme() .' is missing)');
+ }
+
+ # add all required themes to the loader chain
+ foreach ($this->installedThemes[$this->getTheme()]['requires'] as $requiredTheme) {
+ try {
+ $loaderChain->addLoader(new Twig_Loader_Filesystem(THEME . '/' . DEFAULT_THEME));
+ } catch (Twig_Error_Loader $e) {
+ # @todo isInstalled() should catch this, inject Twig later
+ die('The required "' . $requiredTheme . '" theme is missing for the current theme (' . $this->getTheme() . ')');
+ }
+ }
+
+ if (DEBUG_POCHE) {
+ $twig_params = array();
+ } else {
+ $twig_params = array('cache' => CACHE);
+ }
+
+ $this->tpl = new Twig_Environment($loaderChain, $twig_params);
+ $this->tpl->addExtension(new Twig_Extensions_Extension_I18n());
+
+ # filter to display domain name of an url
+ $filter = new Twig_SimpleFilter('getDomain', 'Tools::getDomain');
+ $this->tpl->addFilter($filter);
+
+ # filter for reading time
+ $filter = new Twig_SimpleFilter('getReadingTime', 'Tools::getReadingTime');
+ $this->tpl->addFilter($filter);
+
+ # filter for simple filenames in config view
+ $filter = new Twig_SimpleFilter('getPrettyFilename', function($string) { return str_replace(ROOT, '', $string); });
+ $this->tpl->addFilter($filter);
}
private function install()
{
Tools::logm('poche still not installed');
echo $this->tpl->render('install.twig', array(
- 'token' => Session::getToken()
+ 'token' => Session::getToken(),
+ 'theme' => $this->getTheme(),
+ 'poche_url' => Tools::getPocheUrl()
));
if (isset($_GET['install'])) {
if (($_POST['password'] == $_POST['password_repeat'])
@@ -139,13 +243,41 @@ class Poche
}
exit();
}
+
+ public function getTheme() {
+ return $this->currentTheme;
+ }
+
+ public function getInstalledThemes() {
+ $handle = opendir(THEME);
+ $themes = array();
+
+ while (($theme = readdir($handle)) !== false) {
+ # Themes are stored in a directory, so all directory names are themes
+ # @todo move theme installation data to database
+ if (! is_dir(THEME . '/' . $theme) || in_array($theme, array('..', '.'))) {
+ continue;
+ }
+
+ $current = false;
+
+ if ($theme === $this->getTheme()) {
+ $current = true;
+ }
+
+ $themes[] = array('name' => $theme, 'current' => $current);
+ }
+
+ return $themes;
+ }
public function getDefaultConfig()
- {
+ {
return array(
'pager' => PAGINATION,
'language' => LANG,
- );
+ 'theme' => DEFAULT_THEME
+ );
}
/**
@@ -166,7 +298,7 @@ class Poche
}
$last_id = $this->store->getLastId($sequence);
if (DOWNLOAD_PICTURES) {
- $content = filtre_picture($parametres_url['body'], $url->getUrl(), $last_id);
+ $content = filtre_picture($content['body'], $url->getUrl(), $last_id);
Tools::logm('updating content article');
$this->store->updateContent($last_id, $content, $this->user->getId());
}
@@ -182,7 +314,7 @@ class Poche
}
if (!$import) {
- Tools::redirect();
+ Tools::redirect('?view=home');
}
break;
case 'delete':
@@ -230,7 +362,9 @@ class Poche
$prod = $this->getPocheVersion('prod');
$compare_dev = version_compare(POCHE_VERSION, $dev);
$compare_prod = version_compare(POCHE_VERSION, $prod);
+ $themes = $this->getInstalledThemes();
$tpl_vars = array(
+ 'themes' => $themes,
'dev' => $dev,
'prod' => $prod,
'compare_dev' => $compare_dev,
@@ -247,25 +381,37 @@ class Poche
$tidy = tidy_parse_string($content, array('indent'=>true, 'show-body-only' => true), 'UTF8');
$tidy->cleanRepair();
$content = $tidy->value;
- }
- $tpl_vars = array(
+
+ # flattr checking
+ $flattr = new FlattrItem();
+ $flattr->checkItem($entry['url']);
+
+ $tpl_vars = array(
'entry' => $entry,
'content' => $content,
- );
+ 'flattr' => $flattr
+ );
+ }
}
else {
Tools::logm('error in view call : entry is null');
}
break;
- default: # home view
+ default: # home, favorites and archive views
$entries = $this->store->getEntriesByView($view, $this->user->getId());
- $this->pagination->set_total(count($entries));
- $page_links = $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . '&');
- $datas = $this->store->getEntriesByView($view, $this->user->getId(), $this->pagination->get_limit());
$tpl_vars = array(
- 'entries' => $datas,
- 'page_links' => $page_links,
+ 'entries' => '',
+ 'page_links' => '',
+ 'nb_results' => '',
);
+ if (count($entries) > 0) {
+ $this->pagination->set_total(count($entries));
+ $page_links = $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . '&');
+ $datas = $this->store->getEntriesByView($view, $this->user->getId(), $this->pagination->get_limit());
+ $tpl_vars['entries'] = $datas;
+ $tpl_vars['page_links'] = $page_links;
+ $tpl_vars['nb_results'] = count($entries);
+ }
Tools::logm('display ' . $view . ' view');
break;
}
@@ -303,6 +449,44 @@ class Poche
}
}
}
+
+ public function updateTheme()
+ {
+ # no data
+ if (empty($_POST['theme'])) {
+ }
+
+ # we are not going to change it to the current theme...
+ if ($_POST['theme'] == $this->getTheme()) {
+ $this->messages->add('w', _('still using the "' . $this->getTheme() . '" theme!'));
+ Tools::redirect('?view=config');
+ }
+
+ $themes = $this->getInstalledThemes();
+ $actualTheme = false;
+
+ foreach ($themes as $theme) {
+ if ($theme['name'] == $_POST['theme']) {
+ $actualTheme = true;
+ break;
+ }
+ }
+
+ if (! $actualTheme) {
+ $this->messages->add('e', _('that theme does not seem to be installed'));
+ Tools::redirect('?view=config');
+ }
+
+ $this->store->updateUserConfig($this->user->getId(), 'theme', $_POST['theme']);
+ $this->messages->add('s', _('you have changed your theme preferences'));
+
+ $currentConfig = $_SESSION['poche_user']->config;
+ $currentConfig['theme'] = $_POST['theme'];
+
+ $_SESSION['poche_user']->setConfig($currentConfig);
+
+ Tools::redirect('?view=config');
+ }
/**
* checks if login & password are correct and save the user in session.
@@ -318,16 +502,7 @@ class Poche
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)));
-
$this->messages->add('s', _('welcome to your poche'));
- if (!empty($_POST['longlastingsession'])) {
- $_SESSION['longlastingsession'] = 31536000;
- $_SESSION['expires_on'] = time() + $_SESSION['longlastingsession'];
- session_set_cookie_params($_SESSION['longlastingsession']);
- } else {
- session_set_cookie_params(0);
- }
- session_regenerate_id(true);
Tools::logm('login successful');
Tools::redirect($referer);
}
diff --git a/inc/poche/PocheReadability.php b/inc/poche/PocheReadability.php
new file mode 100644
index 0000000..48ae90d
--- /dev/null
+++ b/inc/poche/PocheReadability.php
@@ -0,0 +1,46 @@
+getInnerText($this->dom->getElementsByTagName('title')->item(0));
+ } catch(Exception $e) {}
+
+ if (preg_match('/ [\|\-] /', $curTitle))
+ {
+ $curTitle = preg_replace('/(.*)[\|\-] .*/i', '$1', $origTitle);
+
+ if (count(explode(' ', $curTitle)) < 3) {
+ $curTitle = preg_replace('/[^\|\-]*[\|\-](.*)/i', '$1', $origTitle);
+ }
+ }
+ else if(strlen($curTitle) > 150 || strlen($curTitle) < 15)
+ {
+ $hOnes = $this->dom->getElementsByTagName('h1');
+ if($hOnes->length == 1)
+ {
+ $curTitle = $this->getInnerText($hOnes->item(0));
+ }
+ }
+
+ $curTitle = trim($curTitle);
+
+ if (count(explode(' ', $curTitle)) <= 4) {
+ $curTitle = $origTitle;
+ }
+
+ $articleTitle = $this->dom->createElement('h1');
+ $articleTitle->innerHTML = $curTitle;
+
+ return $articleTitle;
+ }
+}
\ No newline at end of file
diff --git a/inc/poche/Tools.class.php b/inc/poche/Tools.class.php
index 3a792d4..8eb988f 100644
--- a/inc/poche/Tools.class.php
+++ b/inc/poche/Tools.class.php
@@ -84,9 +84,9 @@ class Tools
public static function getTplFile($view)
{
- $tpl_file = 'home.twig';
- switch ($view)
- {
+ $default_tpl = 'home.twig';
+
+ switch ($view) {
case 'install':
$tpl_file = 'install.twig';
break;
@@ -102,9 +102,20 @@ class Tools
case 'view':
$tpl_file = 'view.twig';
break;
+
+ case 'login':
+ $tpl_file = 'login.twig';
+ break;
+
+ case 'error':
+ $tpl_file = 'error.twig';
+ break;
+
default:
- break;
+ $tpl_file = $default_tpl;
+ break;
}
+
return $tpl_file;
}
@@ -228,24 +239,8 @@ class Tools
return $minutes;
}
-
- public static function createMyConfig()
- {
- $myconfig_file = './inc/poche/myconfig.inc.php';
-
- if (!is_writable('./inc/poche/')) {
- self::logm('you don\'t have write access to create ./inc/poche/myconfig.inc.php');
- die('You don\'t have write access to create ./inc/poche/myconfig.inc.php.');
- }
-
- if (!file_exists($myconfig_file))
- {
- $fp = fopen($myconfig_file, 'w');
- fwrite($fp, 'dom);
// Loop through single_page_link xpath expressions
$single_page_url = null;
diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php
deleted file mode 100755
index a191729..0000000
--- a/inc/poche/config.inc.php
+++ /dev/null
@@ -1,59 +0,0 @@
-
- * @copyright 2013
- * @license http://www.wtfpl.net/ see COPYING file
- */
-
-require_once __DIR__ . '/../../inc/poche/define.inc.php';
-
-# /!\ Be careful if you change the lines below /!\
-if (!file_exists(__DIR__ . '/../../vendor/autoload.php')) {
- die('Twig does not seem installed. Have a look at the documentation.');
-}
-
-// if (file_exists(__DIR__ . '/../../inc/poche/myconfig.inc.php')) {
- // require_once __DIR__ . '/../../inc/poche/myconfig.inc.php';
-// }
-require_once __DIR__ . '/../../inc/poche/User.class.php';
-require_once __DIR__ . '/../../inc/poche/Url.class.php';
-require_once __DIR__ . '/../../inc/3rdparty/class.messages.php';
-require_once __DIR__ . '/../../inc/poche/Poche.class.php';
-require_once __DIR__ . '/../../inc/3rdparty/Readability.php';
-require_once __DIR__ . '/../../inc/3rdparty/Encoding.php';
-require_once __DIR__ . '/../../inc/poche/Database.class.php';
-require_once __DIR__ . '/../../vendor/autoload.php';
-require_once __DIR__ . '/../../inc/3rdparty/simple_html_dom.php';
-require_once __DIR__ . '/../../inc/3rdparty/paginator.php';
-require_once __DIR__ . '/../../inc/3rdparty/Session.class.php';
-
-require_once __DIR__ . '/../../inc/3rdparty/simplepie/SimplePieAutoloader.php';
-require_once __DIR__ . '/../../inc/3rdparty/simplepie/SimplePie/Core.php';
-require_once __DIR__ . '/../../inc/3rdparty/content-extractor/ContentExtractor.php';
-require_once __DIR__ . '/../../inc/3rdparty/content-extractor/SiteConfig.php';
-require_once __DIR__ . '/../../inc/3rdparty/humble-http-agent/HumbleHttpAgent.php';
-require_once __DIR__ . '/../../inc/3rdparty/humble-http-agent/SimplePie_HumbleHttpAgent.php';
-require_once __DIR__ . '/../../inc/3rdparty/humble-http-agent/CookieJar.php';
-require_once __DIR__ . '/../../inc/3rdparty/feedwriter/FeedItem.php';
-require_once __DIR__ . '/../../inc/3rdparty/feedwriter/FeedWriter.php';
-require_once __DIR__ . '/../../inc/3rdparty/feedwriter/DummySingleItemFeed.php';
-
-if (DOWNLOAD_PICTURES) {
- require_once __DIR__ . '/../../inc/poche/pochePictures.php';
-}
-
-if (!ini_get('date.timezone') || !@date_default_timezone_set(ini_get('date.timezone'))) {
- date_default_timezone_set('UTC');
-}
-
-$poche = new Poche();
-#XSRF protection with token
-// if (!empty($_POST)) {
-// if (!Session::isToken($_POST['token'])) {
-// die(_('Wrong token'));
-// }
-// unset($_SESSION['tokens']);
-// }
\ No newline at end of file
diff --git a/inc/poche/config.inc.php.new b/inc/poche/config.inc.php.new
new file mode 100755
index 0000000..48cc578
--- /dev/null
+++ b/inc/poche/config.inc.php.new
@@ -0,0 +1,56 @@
+
+ * @copyright 2013
+ * @license http://www.wtfpl.net/ see COPYING file
+ */
+
+define ('SALT', ''); # put a strong string here
+define ('LANG', 'en_EN.utf8');
+
+define ('STORAGE', 'sqlite'); # postgres, mysql or sqlite
+
+define ('STORAGE_SQLITE', ROOT . '/db/poche.sqlite'); # if you are using sqlite, where the database file is located
+
+# only for postgres & mysql
+define ('STORAGE_SERVER', 'localhost');
+define ('STORAGE_DB', 'poche');
+define ('STORAGE_USER', 'poche');
+define ('STORAGE_PASSWORD', 'poche');
+
+#################################################################################
+# Do not trespass unless you know what you are doing
+#################################################################################
+
+define ('MODE_DEMO', FALSE);
+define ('DEBUG_POCHE', true);
+define ('DOWNLOAD_PICTURES', FALSE);
+define ('CONVERT_LINKS_FOOTNOTES', FALSE);
+define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE);
+define ('SHARE_TWITTER', TRUE);
+define ('SHARE_MAIL', TRUE);
+define ('SHARE_SHAARLI', FALSE);
+define ('SHAARLI_URL', 'http://myshaarliurl.com');
+define ('FLATTR', TRUE);
+define ('FLATTR_API', 'https://api.flattr.com/rest/v2/things/lookup/?url=');
+define ('NOT_FLATTRABLE', '0');
+define ('FLATTRABLE', '1');
+define ('FLATTRED', '2');
+define ('ABS_PATH', 'assets/');
+
+define ('DEFAULT_THEME', 'default');
+
+define ('THEME', ROOT . '/themes');
+define ('LOCALE', ROOT . '/locale');
+define ('CACHE', ROOT . '/cache');
+
+define ('PAGINATION', '10');
+
+define ('POCHE_VERSION', '1.0-beta5');
+
+define ('IMPORT_POCKET_FILE', ROOT . '/ril_export.html');
+define ('IMPORT_READABILITY_FILE', ROOT . '/readability');
+define ('IMPORT_INSTAPAPER_FILE', ROOT . '/instapaper-export.html');
\ No newline at end of file
diff --git a/inc/poche/define.inc.php b/inc/poche/define.inc.php
index 3f66743..40f77b5 100644
--- a/inc/poche/define.inc.php
+++ b/inc/poche/define.inc.php
@@ -3,7 +3,7 @@
* poche, a read it later open source system
*
* @category poche
- * @author Nicolas Lœuillet
+ * @author Nicolas Lœuillet
* @copyright 2013
* @license http://www.wtfpl.net/ see COPYING file
*/
@@ -22,6 +22,11 @@ define ('SHARE_TWITTER', TRUE);
define ('SHARE_MAIL', TRUE);
define ('SHARE_SHAARLI', FALSE);
define ('SHAARLI_URL', 'http://myshaarliurl.com');
+define ('FLATTR', TRUE);
+define ('FLATTR_API', 'https://api.flattr.com/rest/v2/things/lookup/?url=');
+define ('NOT_FLATTRABLE', '0');
+define ('FLATTRABLE', '1');
+define ('FLATTRED', '2');
define ('ABS_PATH', 'assets/');
define ('TPL', __DIR__ . '/../../tpl');
define ('LOCALE', __DIR__ . '/../../locale');
diff --git a/inc/poche/global.inc.php b/inc/poche/global.inc.php
new file mode 100644
index 0000000..65a026a
--- /dev/null
+++ b/inc/poche/global.inc.php
@@ -0,0 +1,64 @@
+
+ * @copyright 2013
+ * @license http://www.wtfpl.net/ see COPYING file
+ */
+
+# the poche system root directory (/inc)
+define('INCLUDES', dirname(__FILE__) . '/..');
+
+# the poche root directory
+define('ROOT', INCLUDES . '/..');
+
+require_once INCLUDES . '/poche/Tools.class.php';
+require_once INCLUDES . '/poche/User.class.php';
+require_once INCLUDES . '/poche/Url.class.php';
+require_once INCLUDES . '/3rdparty/class.messages.php';
+require_once INCLUDES . '/poche/Poche.class.php';
+
+require_once INCLUDES . '/3rdparty/Readability.php';
+require_once INCLUDES . '/poche/PocheReadability.php';
+
+require_once INCLUDES . '/3rdparty/Encoding.php';
+require_once INCLUDES . '/poche/Database.class.php';
+require_once INCLUDES . '/3rdparty/simple_html_dom.php';
+require_once INCLUDES . '/3rdparty/paginator.php';
+require_once INCLUDES . '/3rdparty/Session.class.php';
+
+require_once INCLUDES . '/3rdparty/simplepie/SimplePieAutoloader.php';
+require_once INCLUDES . '/3rdparty/simplepie/SimplePie/Core.php';
+require_once INCLUDES . '/3rdparty/content-extractor/ContentExtractor.php';
+require_once INCLUDES . '/3rdparty/content-extractor/SiteConfig.php';
+require_once INCLUDES . '/3rdparty/humble-http-agent/HumbleHttpAgent.php';
+require_once INCLUDES . '/3rdparty/humble-http-agent/SimplePie_HumbleHttpAgent.php';
+require_once INCLUDES . '/3rdparty/humble-http-agent/CookieJar.php';
+require_once INCLUDES . '/3rdparty/feedwriter/FeedItem.php';
+require_once INCLUDES . '/3rdparty/feedwriter/FeedWriter.php';
+require_once INCLUDES . '/3rdparty/feedwriter/DummySingleItemFeed.php';
+require_once INCLUDES . '/3rdparty/FlattrItem.class.php';
+
+# Composer its autoloader for automatically loading Twig
+if (! file_exists(ROOT . '/vendor/autoload.php')) {
+ Poche::$canRenderTemplates = false;
+} else {
+ require_once ROOT . '/vendor/autoload.php';
+}
+
+# system configuration; database credentials et cetera
+if (! file_exists(INCLUDES . '/poche/config.inc.php')) {
+ Poche::$configFileAvailable = false;
+} else {
+ require_once INCLUDES . '/poche/config.inc.php';
+}
+
+if (Poche::$configFileAvailable && DOWNLOAD_PICTURES) {
+ require_once INCLUDES . '/poche/pochePictures.php';
+}
+
+if (!ini_get('date.timezone') || !@date_default_timezone_set(ini_get('date.timezone'))) {
+ date_default_timezone_set('UTC');
+}
\ No newline at end of file
diff --git a/index.php b/index.php
index 5f43b74..4aebfe1 100644
--- a/index.php
+++ b/index.php
@@ -8,13 +8,11 @@
* @license http://www.wtfpl.net/ see COPYING file
*/
-if (file_exists(__DIR__ . '/inc/poche/myconfig.inc.php')) {
- require_once __DIR__ . '/inc/poche/myconfig.inc.php';
-}
-require_once './inc/poche/Tools.class.php';
-Tools::createMyConfig();
+require_once 'inc/poche/global.inc.php';
-include dirname(__FILE__).'/inc/poche/config.inc.php';
+# Start Poche
+$poche = new Poche();
+$notInstalledMessage = $poche -> getNotInstalledMessage();
# Parse GET & REFERER vars
$referer = empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER'];
@@ -24,42 +22,57 @@ $id = Tools::checkVar('id');
$_SESSION['sort'] = Tools::checkVar('sort', 'id');
$url = new Url((isset ($_GET['url'])) ? $_GET['url'] : '');
-# poche actions
-if (isset($_GET['login'])) {
- # hello you
- $poche->login($referer);
-}
-elseif (isset($_GET['logout'])) {
- # see you soon !
- $poche->logout();
-}
-elseif (isset($_GET['config'])) {
- # Update password
- $poche->updatePassword();
-}
-elseif (isset($_GET['import'])) {
- $import = $poche->import($_GET['from']);
-}
-elseif (isset($_GET['export'])) {
- $poche->export();
-}
-
-# vars to send to templates
+# vars to _always_ send to templates
$tpl_vars = array(
'referer' => $referer,
'view' => $view,
'poche_url' => Tools::getPocheUrl(),
'title' => _('poche, a read it later open source system'),
'token' => Session::getToken(),
+ 'theme' => $poche->getTheme()
);
+if (! empty($notInstalledMessage)) {
+ if (! Poche::$canRenderTemplates || ! Poche::$configFileAvailable) {
+ # We cannot use Twig to display the error message
+ die($notInstalledMessage);
+ } else {
+ # Twig is installed, put the error message in the template
+ $tpl_file = Tools::getTplFile('error');
+ $tpl_vars = array_merge($tpl_vars, array('msg' => $poche->getNotInstalledMessage()));
+ echo $poche->tpl->render($tpl_file, $tpl_vars);
+ exit;
+ }
+}
+
+# poche actions
+if (isset($_GET['login'])) {
+ # hello you
+ $poche->login($referer);
+} elseif (isset($_GET['logout'])) {
+ # see you soon !
+ $poche->logout();
+} elseif (isset($_GET['config'])) {
+ # Update password
+ $poche->updatePassword();
+} elseif (isset($_GET['import'])) {
+ $import = $poche->import($_GET['from']);
+} elseif (isset($_GET['export'])) {
+ $poche->export();
+} elseif (isset($_GET['updatetheme'])) {
+ $poche->updateTheme();
+}
+elseif (isset($_GET['plainurl']) && !empty($_GET['plainurl'])) {
+ $plain_url = new Url(base64_encode($_GET['plainurl']));
+ $poche->action('add', $plain_url);
+}
+
if (Session::isLogged()) {
$poche->action($action, $url, $id);
$tpl_file = Tools::getTplFile($view);
$tpl_vars = array_merge($tpl_vars, $poche->displayView($view, $id));
-}
-else {
- $tpl_file = 'login.twig';
+} else {
+ $tpl_file = Tools::getTplFile('login');
}
# because messages can be added in $poche->action(), we have to add this entry now (we can add it before)
diff --git a/install/update.php b/install/update.php
index 1deaf7f..9548d33 100644
--- a/install/update.php
+++ b/install/update.php
@@ -10,7 +10,7 @@ $store = new Database();
-
+
updating poche
diff --git a/install/update_to_1beta3.php b/install/update_to_1beta3.php
index 8c93af6..e0da159 100644
--- a/install/update_to_1beta3.php
+++ b/install/update_to_1beta3.php
@@ -10,7 +10,7 @@ $old_salt = '464v54gLLw928uz4zUBqkRJeiPY68zCX';
-
+
updating poche
diff --git a/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo
index 3afc2b3..54626a5 100644
Binary files a/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo and b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo differ
diff --git a/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po
index fafe516..2de43b4 100644
--- a/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po
+++ b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po
@@ -1,380 +1,229 @@
-#
-# Translators:
-# HLFH , 2013
msgid ""
msgstr ""
-"Project-Id-Version: poche\n"
-"POT-Creation-Date: 2013-08-06 08:35+0100\n"
-"PO-Revision-Date: 2013-08-23 17:42+0100\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
"Last-Translator: Nicolas Lœuillet \n"
-"Language-Team: German (http://www.transifex.com/projects/p/poche/language/"
-"de/)\n"
+"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n"
-"X-Poedit-Basepath: /\n"
-"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"X-Poedit-SearchPath-0: /var/www/poche-i18n\n"
-#: /var/www/poche-i18n/index.php:43
-msgid "poche, a read it later open source system"
-msgstr "Poche, eine Opensourcelösung, um später zu lesen"
-
-#: /var/www/poche-i18n/inc/poche/Poche.class.php:101
-msgid "the link has been added successfully"
-msgstr "der Link wurde erfolgreich hinzugefügt"
-
-#: /var/www/poche-i18n/inc/poche/Poche.class.php:104
-msgid "error during insertion : the link wasn't added"
-msgstr "Fehler beim Einfügen: der Link wurde nicht hinzugefügt"
-
-#: /var/www/poche-i18n/inc/poche/Poche.class.php:109
-msgid "error during fetching content : the link wasn't added"
-msgstr "Fehler beim Abrufen der Inhalte: der Link wurde nicht hinzugefügt"
-
-#: /var/www/poche-i18n/inc/poche/Poche.class.php:119
-msgid "the link has been deleted successfully"
-msgstr "der Link wurde erfolgreich gelöscht"
-
-#: /var/www/poche-i18n/inc/poche/Poche.class.php:123
-msgid "the link wasn't deleted"
-msgstr "der Link wurde nicht gelöscht"
-
-#: /var/www/poche-i18n/inc/poche/Tools.class.php:18
-msgid "Oops, it seems you don't have PHP 5."
-msgstr "Hoppla, scheint es, dass PHP 5 nicht installiert ist."
-
-#: /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 "Konfig"
-#: /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 "Hause"
-
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:54
-#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:34
-msgid "favorites"
-msgstr "Favoriten"
-
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:62
-#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:42
-msgid "archive"
-msgstr "Archive"
-
-#: /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 "Trennung"
-
-#: /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."
+msgid "Poching a link"
msgstr ""
-"Mit dem Bookmarklet, können Sie ganz einfach einen Link in Poche hinzufügen."
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:93
-msgid "Have a look to this documentation:"
-msgstr "Werfen Sie einen Blick in die Dokumentation:"
-
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:97
-msgid "Drag & drop this link to your bookmarks bar and have fun with poche."
+msgid "read the documentation"
+msgstr ""
+
+msgid "by filling this field"
msgstr ""
-"Ziehen / Ablegen Sie diesen Link in die Lesezeichenleiste Ihres Browsers und "
-"genießen Sie mit Poche."
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:103
msgid "poche it!"
msgstr "Pochert es!"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:108
msgid "Updating poche"
-msgstr "Poche aktualisieren "
+msgstr "Poche aktualisieren"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:113
msgid "your version"
msgstr "Ihre Version"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:119
msgid "latest stable version"
msgstr "letzte stabile Version"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:125
msgid "a more recent stable version is available."
msgstr "eine neuere stabile Version ist verfügbar."
-#: /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 "Sie sind auf den neuesten Stand."
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:133
msgid "latest dev version"
msgstr "letzte Entwicklungsversion"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:139
msgid "a more recent development version is available."
msgstr "eine neuere Entwicklungsversion ist verfügbar."
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:150
msgid "Change your password"
msgstr "Ihr Passwort ändern"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:157
msgid "New password:"
msgstr "Neues Passwort:"
-#: /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 "Passwort"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:167
msgid "Repeat your new password:"
msgstr "neues Passwort wiederholen:"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:177
msgid "Update"
msgstr "Aktualisieren"
-#: /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 ""
"Wir danken Ihnen, den Import in lokal zu ausführen, kann es einige Zeit "
"dauern."
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:201
msgid "More infos in the official doc:"
msgstr "Mehr Informationen auf der offiziellen Dokumentation:"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:206
msgid "import from Pocket"
-msgstr "Der Import aus Pocket ist abgeschlossen."
+msgstr "import aus Pocket"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:210
msgid "import from Readability"
-msgstr "Der Import aus Readability ist abgeschlossen."
+msgstr "import aus Readability"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:214
msgid "import from Instapaper"
-msgstr "Import aus Instapaper"
+msgstr "import aus Instapaper"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:220
msgid "Export your poche datas"
msgstr "Exportieren Sie Ihre Daten aus Poche."
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:224
msgid "Click here"
msgstr "klicken Sie hier"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:226
msgid "to export your poche datas."
msgstr "um Ihre Daten aus Poche zu exportieren."
-#: /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 "züruck zur Hauptseite"
-#: /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 "als gelesen markieren"
-
-#: /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 "Favorit"
-
-#: /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 "löschen"
-
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:82
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:179
-msgid "tweet"
-msgstr "twittern"
-
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:93
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:190
-msgid "email"
-msgstr "senden per E-Mail"
-
-#: /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 "zurück nach oben"
-
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:198
-msgid "this article appears wrong?"
-msgstr "dieser Artikel erscheint falsch?"
-
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:200
-msgid "create an issue"
-msgstr "ein Ticket erstellen"
-
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:202
-msgid "or"
-msgstr "oder"
-
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:206
-msgid "contact us by mail"
-msgstr "kontaktieren Sie uns per E-Mail"
-
-#: /var/www/poche-i18n/cache/88/8a/ee3b7080c13204391c14947a0c2c.php:22
-msgid "powered by"
-msgstr "bereitgestellt von"
-
-#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:31
msgid "installation"
msgstr "Installierung"
-#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:42
msgid "install your poche"
msgstr "installieren Sie 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."
+"Don't hesitate to read the documentation "
+"on poche website."
msgstr ""
"Poche ist noch nicht installiert. Wir danken Ihnen, die Felder unten zu "
-"befüllen, um es zu machen. Zögern sie nicht, die Dokumentation auf der Website von Poche zu lesen."
+"befüllen, um es zu machen. Zögern sie nicht, die Dokumentation auf der Website von Poche zu lesen."
-#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:53
-#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:55
msgid "Login"
msgstr "Benutzername"
-#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:67
msgid "Repeat your password"
msgstr "Wiederholen Sie Ihr Passwort"
-#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:74
msgid "Install"
msgstr "Installieren"
-#: /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 "Verbinden zu Poche"
+msgid "back to top"
+msgstr "zurück nach oben"
-#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:48
-msgid "you are in demo mode, some features may be disabled."
-msgstr "Sie sind im Demomodus, können einige Funktionen deaktiviert werden."
+msgid "favoris"
+msgstr ""
-#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:80
-msgid "Stay signed in"
-msgstr "bleiben Sie verbunden"
+msgid "archive"
+msgstr "Archive"
-#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:86
-msgid "(Do not check on public computers)"
-msgstr "(nicht auf einem öffentlichen Computer überprüfen)"
+msgid "unread"
+msgstr ""
-#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:93
-msgid "Sign in"
-msgstr "Einloggen"
-
-#: /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 "nach Datum asc"
-#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:59
msgid "by date"
msgstr "nach Datum"
-#: /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 "nach Datum 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 "nach Titel asc"
-#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:79
msgid "by title"
msgstr "nach Titel"
-#: /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 "nach Titel desc"
-#~ msgid "Please choose between Pocket & Readabilty :"
-#~ msgstr "Merci de choisir entre Pocket & Readability :"
+msgid "No link available here!"
+msgstr ""
-#~ msgid "Bye bye Pocket, let's go !"
-#~ msgstr "Bye bye Pocket, en route !"
+msgid "toggle mark as read"
+msgstr "als gelesen markieren"
-#~ msgid "Bye bye Readability, let's go !"
-#~ msgstr "Bye bye Readability, en route !"
+msgid "toggle favorite"
+msgstr "Favorit"
-#~ msgid "Welcome to poche !"
-#~ msgstr "Bienvenue dans poche !"
+msgid "delete"
+msgstr "löschen"
-#~ msgid "Error with the import."
-#~ msgstr "Erreur durant l'import."
+msgid "original"
+msgstr "Original"
-#~ msgid "Wrong token."
-#~ msgstr "Mauvais jeton."
+msgid "results"
+msgstr ""
-#~ msgid "Login failed !"
-#~ msgstr "Connexion échouée."
+msgid "tweet"
+msgstr "twittern"
-#~ msgid "your password has been updated"
-#~ msgstr "Votre mot de passe a été mis à jour. "
+msgid "email"
+msgstr "senden per E-Mail"
-#~ msgid "in demo mode, you can't update password"
-#~ msgstr "En mode démo, le mot de passe ne peut être modifié."
+msgid "shaarli"
+msgstr "shaarli"
-#~ 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 "flattr"
+msgstr "flattr"
-#~ msgid "error during url preparation : the link wasn't added"
-#~ msgstr "erreur durant l'insertion : le lien n'a pas été ajouté"
+msgid "this article appears wrong?"
+msgstr "dieser Artikel erscheint falsch?"
-#~ 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 "create an issue"
+msgstr "ein Ticket erstellen"
-#~ msgid "TEST"
-#~ msgstr "NICOLAS"
+msgid "or"
+msgstr "oder"
+
+msgid "contact us by mail"
+msgstr "kontaktieren Sie uns per E-Mail"
+
+msgid "plop"
+msgstr "plop"
+
+msgid "home"
+msgstr "Hause"
+
+msgid "favorites"
+msgstr "Favoriten"
+
+msgid "logout"
+msgstr "Trennung"
+
+msgid "powered by"
+msgstr "bereitgestellt von"
+
+msgid "debug mode is on so cache is off."
+msgstr ""
+
+msgid "your poche version:"
+msgstr ""
+
+msgid "storage:"
+msgstr ""
+
+msgid "login to your poche"
+msgstr "Verbinden zu Poche"
+
+msgid "you are in demo mode, some features may be disabled."
+msgstr "Sie sind im Demomodus, können einige Funktionen deaktiviert werden."
+
+msgid "Stay signed in"
+msgstr "bleiben Sie verbunden"
+
+msgid "(Do not check on public computers)"
+msgstr "(nicht auf einem öffentlichen Computer überprüfen)"
+
+msgid "Sign in"
+msgstr "Einloggen"
diff --git a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo
new file mode 100644
index 0000000..f387889
Binary files /dev/null and b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo differ
diff --git a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po
new file mode 100644
index 0000000..8e56560
--- /dev/null
+++ b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po
@@ -0,0 +1,228 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: Nicolas Lœuillet \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.5.4\n"
+
+msgid "config"
+msgstr "config"
+
+msgid "Poching a link"
+msgstr "Poching a link"
+
+msgid "read the documentation"
+msgstr "read the documentation"
+
+msgid "by filling this field"
+msgstr "by filling this field"
+
+msgid "poche it!"
+msgstr "poche it!"
+
+msgid "Updating poche"
+msgstr "Updating poche"
+
+msgid "your version"
+msgstr "your version"
+
+msgid "latest stable version"
+msgstr "latest stable version"
+
+msgid "a more recent stable version is available."
+msgstr "a more recent stable version is available."
+
+msgid "you are up to date."
+msgstr "you are up to date."
+
+msgid "latest dev version"
+msgstr "latest dev version"
+
+msgid "a more recent development version is available."
+msgstr "a more recent development version is available."
+
+msgid "Change your password"
+msgstr "Change your password"
+
+msgid "New password:"
+msgstr "New password:"
+
+msgid "Password"
+msgstr "Password"
+
+msgid "Repeat your new password:"
+msgstr "Repeat your new password:"
+
+msgid "Update"
+msgstr "Update"
+
+msgid "Import"
+msgstr "Import"
+
+msgid "Please execute the import script locally, it can take a very long time."
+msgstr ""
+"Please execute the import script locally, it can take a very long time."
+
+msgid "More infos in the official doc:"
+msgstr "More infos in the official doc:"
+
+msgid "import from Pocket"
+msgstr "import from Pocket"
+
+msgid "import from Readability"
+msgstr "import from Readability"
+
+msgid "import from Instapaper"
+msgstr "import from Instapaper"
+
+msgid "Export your poche datas"
+msgstr "Export your poche datas"
+
+msgid "Click here"
+msgstr "Click here"
+
+msgid "to export your poche datas."
+msgstr "to export your poche datas."
+
+msgid "back to home"
+msgstr "back to home"
+
+msgid "installation"
+msgstr "installation"
+
+msgid "install your poche"
+msgstr "install your poche"
+
+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 is still not installed. Please fill the below form to install it. "
+"Don't hesitate to read the documentation "
+"on poche website."
+
+msgid "Login"
+msgstr "Login"
+
+msgid "Repeat your password"
+msgstr "Repeat your password"
+
+msgid "Install"
+msgstr "Install"
+
+msgid "back to top"
+msgstr "back to top"
+
+msgid "favoris"
+msgstr "favoris"
+
+msgid "archive"
+msgstr "archive"
+
+msgid "unread"
+msgstr "unread"
+
+msgid "by date asc"
+msgstr "by date asc"
+
+msgid "by date"
+msgstr "by date"
+
+msgid "by date desc"
+msgstr "by date desc"
+
+msgid "by title asc"
+msgstr "by title asc"
+
+msgid "by title"
+msgstr "by title"
+
+msgid "by title desc"
+msgstr "by title desc"
+
+msgid "No link available here!"
+msgstr "No link available here!"
+
+msgid "toggle mark as read"
+msgstr "toggle mark as read"
+
+msgid "toggle favorite"
+msgstr "toggle favorite"
+
+msgid "delete"
+msgstr "delete"
+
+msgid "original"
+msgstr "original"
+
+msgid "results"
+msgstr "results"
+
+msgid "tweet"
+msgstr "tweet"
+
+msgid "email"
+msgstr "email"
+
+msgid "shaarli"
+msgstr "shaarli"
+
+msgid "flattr"
+msgstr "flattr"
+
+msgid "this article appears wrong?"
+msgstr "this article appears wrong?"
+
+msgid "create an issue"
+msgstr "create an issue"
+
+msgid "or"
+msgstr "or"
+
+msgid "contact us by mail"
+msgstr "contact us by mail"
+
+msgid "plop"
+msgstr "plop"
+
+msgid "home"
+msgstr "home"
+
+msgid "favorites"
+msgstr "favorites"
+
+msgid "logout"
+msgstr "logout"
+
+msgid "powered by"
+msgstr "powered by"
+
+msgid "debug mode is on so cache is off."
+msgstr "debug mode is on so cache is off."
+
+msgid "your poche version:"
+msgstr "your poche version:"
+
+msgid "storage:"
+msgstr "storage:"
+
+msgid "login to your poche"
+msgstr "login to your poche"
+
+msgid "you are in demo mode, some features may be disabled."
+msgstr "you are in demo mode, some features may be disabled."
+
+msgid "Stay signed in"
+msgstr "Stay signed in"
+
+msgid "(Do not check on public computers)"
+msgstr "(Do not check on public computers)"
+
+msgid "Sign in"
+msgstr "Sign in"
diff --git a/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo b/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo
index aa3d418..0122ceb 100644
Binary files a/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo and b/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo differ
diff --git a/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po b/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po
index 236297d..225cc52 100644
--- a/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po
+++ b/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po
@@ -1,382 +1,230 @@
-#
-# Translators:
-# Nitche , 2013
msgid ""
msgstr ""
-"Project-Id-Version: poche\n"
-"POT-Creation-Date: 2013-08-06 08:35+0100\n"
-"PO-Revision-Date: 2013-08-16 19:09+0100\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
"Last-Translator: Nicolas Lœuillet \n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/poche/language/"
-"es/)\n"
+"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n"
-"X-Poedit-Basepath: /\n"
-"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"X-Poedit-SearchPath-0: /var/www/poche-i18n\n"
-#: /var/www/poche-i18n/index.php:43
-msgid "poche, a read it later open source system"
-msgstr "poche, a read it later open source system"
-
-#: /var/www/poche-i18n/inc/poche/Poche.class.php:101
-msgid "the link has been added successfully"
-msgstr "el enlace a sido agregado con éxito"
-
-#: /var/www/poche-i18n/inc/poche/Poche.class.php:104
-msgid "error during insertion : the link wasn't added"
-msgstr "error en la inserción : el enlace no ha sido agregado"
-
-#: /var/www/poche-i18n/inc/poche/Poche.class.php:109
-msgid "error during fetching content : the link wasn't added"
-msgstr ""
-"error durante la recuperación del contenido : el enlace no a sido agregado"
-
-#: /var/www/poche-i18n/inc/poche/Poche.class.php:119
-msgid "the link has been deleted successfully"
-msgstr "el enlace a sido suprimido con éxito"
-
-#: /var/www/poche-i18n/inc/poche/Poche.class.php:123
-msgid "the link wasn't deleted"
-msgstr "el enlace no ha sido suprimido"
-
-#: /var/www/poche-i18n/inc/poche/Tools.class.php:18
-msgid "Oops, it seems you don't have PHP 5."
-msgstr "Parece que PHP 5 no está instalado"
-
-#: /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 "configuración"
-#: /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 "inicio"
-
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:54
-#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:34
-msgid "favorites"
-msgstr "favoritos"
-
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:62
-#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:42
-msgid "archive"
-msgstr "archivos"
-
-#: /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 "desconexión "
-
-#: /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."
+msgid "Poching a link"
msgstr ""
-"Gracias a tu bookmarklet, puedes agregar fácilmente un enlace en tu bolsillo"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:93
-msgid "Have a look to this documentation:"
-msgstr "échale un ojo a la documentación :"
-
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:97
-msgid "Drag & drop this link to your bookmarks bar and have fun with poche."
+msgid "read the documentation"
+msgstr ""
+
+msgid "by filling this field"
msgstr ""
-"Arrastra y suelta ese enlace en tu barra de favoritos en tu navegador y "
-"disfruta de tu poche."
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:103
msgid "poche it!"
msgstr "pochéalo!"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:108
msgid "Updating poche"
msgstr "Actualizar"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:113
msgid "your version"
msgstr "su versión"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:119
msgid "latest stable version"
msgstr "ultima versión estable"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:125
msgid "a more recent stable version is available."
-msgstr "una versión estable más reciente está disponible"
+msgstr "una versión estable más reciente 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 "estás al día"
+msgstr "estás al día."
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:133
msgid "latest dev version"
msgstr "ultima versión de desarollo"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:139
msgid "a more recent development version is available."
-msgstr "una versión de desarollo más reciente está disponible"
+msgstr "una versión de desarollo más reciente está disponible."
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:150
msgid "Change your password"
msgstr "Modificar tu contraseña"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:157
msgid "New password:"
msgstr "Nueva contraseña :"
-#: /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 "Contraseña"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:167
msgid "Repeat your new password:"
msgstr "Repetir la nueva contraseña :"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:177
msgid "Update"
msgstr "Poner al día"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:193
msgid "Import"
msgstr "Importar"
-#: /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 ""
"Gracias por ejecutar la importación en local, esto puede demorar un tiempo"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:201
msgid "More infos in the official doc:"
msgstr "Más información en la documentación oficial :"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:206
msgid "import from Pocket"
-msgstr "la importación desde Pocket está terminada"
+msgstr "importación desde Pocket"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:210
msgid "import from Readability"
-msgstr "la importación desde Readability está terminada"
+msgstr "importación desde Readability"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:214
msgid "import from Instapaper"
-msgstr "Importar desde Instapaper"
+msgstr "importación desde Instapaper"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:220
msgid "Export your poche datas"
msgstr "Exportar sus datos de poche"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:224
msgid "Click here"
msgstr "Haga clic aquí"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:226
msgid "to export your poche datas."
-msgstr "Para exportar sus datos de poche"
+msgstr "para exportar sus datos 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 "volver a la pagina de inicio"
-#: /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 "marcar como leído"
-
-#: /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 "favorito"
-
-#: /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 "suprimir"
-
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:82
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:179
-msgid "tweet"
-msgstr "tweetear"
-
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:93
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:190
-msgid "email"
-msgstr "enviar por mail"
-
-#: /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 "volver arriba"
-
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:198
-msgid "this article appears wrong?"
-msgstr "este articulo no se ve bien ?"
-
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:200
-msgid "create an issue"
-msgstr "crear un ticket"
-
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:202
-msgid "or"
-msgstr "o"
-
-#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:206
-msgid "contact us by mail"
-msgstr "contactarnos por mail"
-
-#: /var/www/poche-i18n/cache/88/8a/ee3b7080c13204391c14947a0c2c.php:22
-msgid "powered by"
-msgstr "propulsado por"
-
-#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:31
msgid "installation"
msgstr "instalacion"
-#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:42
msgid "install your poche"
msgstr "instala tu 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."
+"Don't hesitate to read the documentation "
+"on poche website."
msgstr ""
"poche todavia no està instalado. Gracias de llenar los campos siguientes "
-"para instalarlo. No dudes de leer la documentacion en el sitio de poche."
+"para instalarlo. No dudes de leer la "
+"documentacion en el sitio 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 "Nombre de usuario"
-#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:67
msgid "Repeat your password"
-msgstr "repita su contraseña"
+msgstr "Repita su contraseña"
-#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:74
msgid "Install"
msgstr "Instalar"
-#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:31
-#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:42
+msgid "back to top"
+msgstr "volver arriba"
+
+msgid "favoris"
+msgstr ""
+
+msgid "archive"
+msgstr "archivos"
+
+msgid "unread"
+msgstr ""
+
+msgid "by date asc"
+msgstr "por fecha ascendiente"
+
+msgid "by date"
+msgstr "por fecha"
+
+msgid "by date desc"
+msgstr "por fecha descendiente"
+
+msgid "by title asc"
+msgstr "por titulo ascendiente"
+
+msgid "by title"
+msgstr "por fecha"
+
+msgid "by title desc"
+msgstr "por fecha descendiente"
+
+msgid "No link available here!"
+msgstr ""
+
+msgid "toggle mark as read"
+msgstr "marcar como leído"
+
+msgid "toggle favorite"
+msgstr "favorito"
+
+msgid "delete"
+msgstr "suprimir"
+
+msgid "original"
+msgstr "original"
+
+msgid "results"
+msgstr ""
+
+msgid "tweet"
+msgstr "tweetear"
+
+msgid "email"
+msgstr "enviar por mail"
+
+msgid "shaarli"
+msgstr "shaarli"
+
+msgid "flattr"
+msgstr "flattr"
+
+msgid "this article appears wrong?"
+msgstr "este articulo no se ve bien ?"
+
+msgid "create an issue"
+msgstr "crear un ticket"
+
+msgid "or"
+msgstr "o"
+
+msgid "contact us by mail"
+msgstr "contactarnos por mail"
+
+msgid "plop"
+msgstr "plop"
+
+msgid "home"
+msgstr "inicio"
+
+msgid "favorites"
+msgstr "favoritos"
+
+msgid "logout"
+msgstr "desconexión"
+
+msgid "powered by"
+msgstr "propulsado por"
+
+msgid "debug mode is on so cache is off."
+msgstr ""
+
+msgid "your poche version:"
+msgstr ""
+
+msgid "storage:"
+msgstr ""
+
msgid "login to your poche"
msgstr "conectarse a tu poche"
-#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:48
msgid "you are in demo mode, some features may be disabled."
msgstr ""
"este es el modo de demostración, algunas funcionalidades pueden estar "
"desactivadas."
-#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:80
msgid "Stay signed in"
msgstr "seguir conectado"
-#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:86
msgid "(Do not check on public computers)"
msgstr "(no marcar en un ordenador publico)"
-#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:93
msgid "Sign in"
msgstr "conectarse"
-
-#: /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 "por fecha ascendiente"
-
-#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:59
-msgid "by date"
-msgstr "por fecha"
-
-#: /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 "por fecha descendiente"
-
-#: /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 "por titulo ascendiente"
-
-#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:79
-msgid "by title"
-msgstr "por titulo"
-
-#: /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 "por titulo descendiente"
-
-#~ 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/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo
index ec72b83..e3baaaa 100644
Binary files a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo and b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo differ
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 a643f6e..779aada 100644
--- a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po
+++ b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po
@@ -1,376 +1,228 @@
msgid ""
msgstr ""
-"Project-Id-Version: poche\n"
-"POT-Creation-Date: 2013-08-06 08:35+0100\n"
-"PO-Revision-Date: 2013-08-24 10:25+0100\n"
-"Last-Translator: Eric R (NumEricR)\n"
-"Language-Team: poche \n"
-"Language: Français\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: Nicolas Lœuillet \n"
+"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.5.7\n"
-"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
-"X-Poedit-Basepath: /\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"X-Poedit-SearchPath-0: /var/www/poche-i18n\n"
+"X-Generator: Poedit 1.5.4\n"
-#: /var/www/poche-i18n/index.php:43
-msgid "poche, a read it later open source system"
-msgstr "poche, a read it later open source system"
-
-#: /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/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/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/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/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"
+msgstr "configuration"
-#: /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"
+msgid "Poching a link"
+msgstr "Pocher un lien"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:54
-#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:34
-msgid "favorites"
-msgstr "favoris"
+msgid "read the documentation"
+msgstr "lisez la documentation"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:62
-#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:42
-msgid "archive"
-msgstr "archives"
+msgid "by filling this field"
+msgstr "en remplissant ce champ"
-#: /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 !"
+msgstr "pochez-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 :"
+msgstr "Répétez votre 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"
+msgstr "Importer"
-#: /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. "
+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 :"
+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é."
+msgstr "import depuis Pocket"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:210
msgid "import from Readability"
-msgstr "l'import depuis Readability est terminé."
+msgstr "import depuis Readability"
-#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:214
msgid "import from Instapaper"
-msgstr "Import depuis 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."
+"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."
+"poche n'est pas encore installé. Merci de remplir le formulaire suivant 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"
+msgid "back to top"
+msgstr "retour en haut de page"
-#: /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."
+msgid "favoris"
+msgstr "favoris"
-#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:80
-msgid "Stay signed in"
-msgstr "rester connecté"
+msgid "archive"
+msgstr "archive"
-#: /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)"
+msgid "unread"
+msgstr "non lus"
-#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:93
-msgid "Sign in"
-msgstr "Se connecter"
-
-#: /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 "No link available here!"
+msgstr "Aucun lien n'est disponible ici !"
-#~ msgid "Bye bye Pocket, let's go !"
-#~ msgstr "Bye bye Pocket, en route !"
+msgid "toggle mark as read"
+msgstr "marquer comme lu / non lu"
-#~ msgid "Bye bye Readability, let's go !"
-#~ msgstr "Bye bye Readability, en route !"
+msgid "toggle favorite"
+msgstr "marquer comme favori"
-#~ msgid "Welcome to poche !"
-#~ msgstr "Bienvenue dans poche !"
+msgid "delete"
+msgstr "supprimer"
-#~ msgid "Error with the import."
-#~ msgstr "Erreur durant l'import."
+msgid "original"
+msgstr "original"
-#~ msgid "Wrong token."
-#~ msgstr "Mauvais jeton."
+msgid "results"
+msgstr "résultats"
-#~ msgid "Login failed !"
-#~ msgstr "Connexion échouée."
+msgid "tweet"
+msgstr "tweet"
-#~ msgid "your password has been updated"
-#~ msgstr "Votre mot de passe a été mis à jour. "
+msgid "email"
+msgstr "email"
-#~ msgid "in demo mode, you can't update password"
-#~ msgstr "En mode démo, le mot de passe ne peut être modifié."
+msgid "shaarli"
+msgstr "shaarli"
-#~ 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 "flattr"
+msgstr "flattr"
-#~ msgid "error during url preparation : the link wasn't added"
-#~ msgstr "erreur durant l'insertion : le lien n'a pas été ajouté"
+msgid "this article appears wrong?"
+msgstr "cet article s'affiche mal ?"
-#~ 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 "create an issue"
+msgstr "créez un ticket"
-#~ msgid "TEST"
-#~ msgstr "NICOLAS"
+msgid "or"
+msgstr "ou"
+
+msgid "contact us by mail"
+msgstr "contactez-nous par email"
+
+msgid "plop"
+msgstr "plop"
+
+msgid "home"
+msgstr "accueil"
+
+msgid "favorites"
+msgstr "favoris"
+
+msgid "logout"
+msgstr "déconnexion"
+
+msgid "powered by"
+msgstr "propulsé par"
+
+msgid "debug mode is on so cache is off."
+msgstr "le mode de debug est actif, le cache est donc désactivé."
+
+msgid "your poche version:"
+msgstr "votre version de poche :"
+
+msgid "storage:"
+msgstr "stockage :"
+
+msgid "login to your poche"
+msgstr "se connecter à votre poche"
+
+msgid "you are in demo mode, some features may be disabled."
+msgstr ""
+"vous êtes en mode démo, certaines fonctionnalités peuvent être désactivées."
+
+msgid "Stay signed in"
+msgstr "Rester connecté"
+
+msgid "(Do not check on public computers)"
+msgstr "(ne pas cocher sur un ordinateur public)"
+
+msgid "Sign in"
+msgstr "Se connecter"
diff --git a/poche_compatibility_test.php b/poche_compatibility_test.php
index 7c85a58..be4fd6f 100644
--- a/poche_compatibility_test.php
+++ b/poche_compatibility_test.php
@@ -1,18 +1,4 @@
='));
diff --git a/themes b/themes
new file mode 160000
index 0000000..689dced
--- /dev/null
+++ b/themes
@@ -0,0 +1 @@
+Subproject commit 689dcedf8d6c7cf5e8424654fef4fd9687288dc1
diff --git a/tpl/_bookmarklet.twig b/tpl/_bookmarklet.twig
deleted file mode 100644
index 2f3b2d1..0000000
--- a/tpl/_bookmarklet.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/tpl/_footer.twig b/tpl/_footer.twig
deleted file mode 100644
index 6891756..0000000
--- a/tpl/_footer.twig
+++ /dev/null
@@ -1,4 +0,0 @@
-
\ No newline at end of file
diff --git a/tpl/_head.twig b/tpl/_head.twig
deleted file mode 100644
index cab317a..0000000
--- a/tpl/_head.twig
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tpl/_menu.twig b/tpl/_menu.twig
deleted file mode 100644
index 699d6a0..0000000
--- a/tpl/_menu.twig
+++ /dev/null
@@ -1,7 +0,0 @@
-