mirror of
https://github.com/moparisthebest/wallabag
synced 2024-11-23 17:42:15 -05:00
commit
cd8a344156
@ -87,6 +87,17 @@ class Database {
|
|||||||
return $user_config;
|
return $user_config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function userExists($username) {
|
||||||
|
$sql = "SELECT * FROM users WHERE username=?";
|
||||||
|
$query = $this->executeQuery($sql, array($username));
|
||||||
|
$login = $query->fetchAll();
|
||||||
|
if (isset($login[0])) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function login($username, $password) {
|
public function login($username, $password) {
|
||||||
$sql = "SELECT * FROM users WHERE username=? AND password=?";
|
$sql = "SELECT * FROM users WHERE username=? AND password=?";
|
||||||
$query = $this->executeQuery($sql, array($username, $password));
|
$query = $this->executeQuery($sql, array($username, $password));
|
||||||
@ -108,8 +119,8 @@ class Database {
|
|||||||
public function updatePassword($userId, $password)
|
public function updatePassword($userId, $password)
|
||||||
{
|
{
|
||||||
$sql_update = "UPDATE users SET password=? WHERE id=?";
|
$sql_update = "UPDATE users SET password=? WHERE id=?";
|
||||||
$params_update = array($password, $id);
|
$params_update = array($password, $userId);
|
||||||
$this->updateUserConfig($userId, 'password', $password);
|
$query = $this->executeQuery($sql_update, $params_update);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateUserConfig($userId, $key, $value) {
|
public function updateUserConfig($userId, $key, $value) {
|
||||||
|
@ -20,7 +20,8 @@ class Poche
|
|||||||
public $pagination;
|
public $pagination;
|
||||||
|
|
||||||
private $currentTheme = '';
|
private $currentTheme = '';
|
||||||
private $notInstalledMessage = '';
|
private $currentLanguage = '';
|
||||||
|
private $notInstalledMessage = array();
|
||||||
|
|
||||||
# @todo make this dynamic (actually install themes and save them in the database including author information et cetera)
|
# @todo make this dynamic (actually install themes and save them in the database including author information et cetera)
|
||||||
private $installedThemes = array(
|
private $installedThemes = array(
|
||||||
@ -33,30 +34,23 @@ class Poche
|
|||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
if (! $this->configFileIsAvailable()) {
|
if ($this->configFileIsAvailable()) {
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->init();
|
$this->init();
|
||||||
|
|
||||||
if (! $this->themeIsInstalled()) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->themeIsInstalled()) {
|
||||||
$this->initTpl();
|
$this->initTpl();
|
||||||
|
|
||||||
if (! $this->systemIsInstalled()) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->systemIsInstalled()) {
|
||||||
$this->store = new Database();
|
$this->store = new Database();
|
||||||
$this->messages = new Messages();
|
$this->messages = new Messages();
|
||||||
|
|
||||||
# installation
|
# installation
|
||||||
if (! $this->store->isInstalled()) {
|
if (! $this->store->isInstalled()) {
|
||||||
$this->install();
|
$this->install();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private function init()
|
private function init()
|
||||||
{
|
{
|
||||||
@ -90,11 +84,20 @@ class Poche
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->currentTheme = $themeDirectory;
|
$this->currentTheme = $themeDirectory;
|
||||||
|
|
||||||
|
# Set up language
|
||||||
|
$languageDirectory = $this->user->getConfigValue('language');
|
||||||
|
|
||||||
|
if ($languageDirectory === false) {
|
||||||
|
$languageDirectory = DEFAULT_THEME;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->currentLanguage = $languageDirectory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function configFileIsAvailable() {
|
public function configFileIsAvailable() {
|
||||||
if (! self::$configFileAvailable) {
|
if (! self::$configFileAvailable) {
|
||||||
$this->notInstalledMessage = 'You have to rename <strong>inc/poche/config.inc.php.new</strong> to <strong>inc/poche/config.inc.php</strong>.';
|
$this->notInstalledMessage[] = 'You have to rename inc/poche/config.inc.php.new to inc/poche/config.inc.php.';
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -103,40 +106,45 @@ class Poche
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function themeIsInstalled() {
|
public function themeIsInstalled() {
|
||||||
|
$passTheme = TRUE;
|
||||||
# Twig is an absolute requirement for Poche to function. Abort immediately if the Composer installer hasn't been run yet
|
# Twig is an absolute requirement for Poche to function. Abort immediately if the Composer installer hasn't been run yet
|
||||||
if (! self::$canRenderTemplates) {
|
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 <a href="http://doc.inthepoche.com/doku.php?id=users:begin:install">the documentation.</a>';
|
$this->notInstalledMessage[] = 'Twig does not seem to be installed. Please initialize the Composer installation to automatically fetch dependencies. Have a look at <a href="http://doc.inthepoche.com/doku.php?id=users:begin:install">the documentation.</a>';
|
||||||
|
$passTheme = FALSE;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! is_writable(CACHE)) {
|
if (! is_writable(CACHE)) {
|
||||||
$this->notInstalledMessage = '<h1>error</h1><p>You don\'t have write access on cache directory.</p>';
|
$this->notInstalledMessage[] = 'You don\'t have write access on cache directory.';
|
||||||
|
|
||||||
self::$canRenderTemplates = false;
|
self::$canRenderTemplates = false;
|
||||||
|
|
||||||
return false;
|
$passTheme = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check if the selected theme and its requirements are present
|
# Check if the selected theme and its requirements are present
|
||||||
if (! is_dir(THEME . '/' . $this->getTheme())) {
|
if ($this->getTheme() != '' && ! 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() . ')';
|
$this->notInstalledMessage[] = 'The currently selected theme (' . $this->getTheme() . ') does not seem to be properly installed (Missing directory: ' . THEME . '/' . $this->getTheme() . ')';
|
||||||
|
|
||||||
self::$canRenderTemplates = false;
|
self::$canRenderTemplates = false;
|
||||||
|
|
||||||
return false;
|
$passTheme = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($this->installedThemes[$this->getTheme()]['requires'] as $requiredTheme) {
|
foreach ($this->installedThemes[$this->getTheme()]['requires'] as $requiredTheme) {
|
||||||
if (! is_dir(THEME . '/' . $requiredTheme)) {
|
if (! is_dir(THEME . '/' . $requiredTheme)) {
|
||||||
$this->notInstalledMessage = 'The required "' . $requiredTheme . '" theme is missing for the current theme (' . $this->getTheme() . ')';
|
$this->notInstalledMessage[] = 'The required "' . $requiredTheme . '" theme is missing for the current theme (' . $this->getTheme() . ')';
|
||||||
|
|
||||||
self::$canRenderTemplates = false;
|
self::$canRenderTemplates = false;
|
||||||
|
|
||||||
return false;
|
$passTheme = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!$passTheme) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,25 +155,30 @@ class Poche
|
|||||||
*/
|
*/
|
||||||
public function systemIsInstalled()
|
public function systemIsInstalled()
|
||||||
{
|
{
|
||||||
$msg = '';
|
$msg = TRUE;
|
||||||
|
|
||||||
$configSalt = defined('SALT') ? constant('SALT') : '';
|
$configSalt = defined('SALT') ? constant('SALT') : '';
|
||||||
|
|
||||||
if (empty($configSalt)) {
|
if (empty($configSalt)) {
|
||||||
$msg = '<h1>error</h1><p>You have not yet filled in the SALT value in the config.inc.php file.</p>';
|
$this->notInstalledMessage[] = 'You have not yet filled in the SALT value in the config.inc.php file.';
|
||||||
} else if (STORAGE == 'sqlite' && ! file_exists(STORAGE_SQLITE)) {
|
$msg = FALSE;
|
||||||
|
}
|
||||||
|
if (STORAGE == 'sqlite' && ! file_exists(STORAGE_SQLITE)) {
|
||||||
Tools::logm('sqlite file doesn\'t exist');
|
Tools::logm('sqlite file doesn\'t exist');
|
||||||
$msg = '<h1>error</h1><p>sqlite file doesn\'t exist, you can find it in install folder. Copy it in /db folder.</p>';
|
$this->notInstalledMessage[] = 'sqlite file doesn\'t exist, you can find it in install folder. Copy it in /db folder.';
|
||||||
} else if (is_dir(ROOT . '/install') && ! DEBUG_POCHE) {
|
$msg = FALSE;
|
||||||
$msg = '<h1>install folder</h1><p>you have to delete the /install folder before using poche.</p>';
|
}
|
||||||
} else if (STORAGE == 'sqlite' && ! is_writable(STORAGE_SQLITE)) {
|
if (is_dir(ROOT . '/install') && ! DEBUG_POCHE) {
|
||||||
|
$this->notInstalledMessage[] = 'you have to delete the /install folder before using poche.';
|
||||||
|
$msg = FALSE;
|
||||||
|
}
|
||||||
|
if (STORAGE == 'sqlite' && ! is_writable(STORAGE_SQLITE)) {
|
||||||
Tools::logm('you don\'t have write access on sqlite file');
|
Tools::logm('you don\'t have write access on sqlite file');
|
||||||
$msg = '<h1>error</h1><p>You don\'t have write access on sqlite file.</p>';
|
$this->notInstalledMessage[] = 'You don\'t have write access on sqlite file.';
|
||||||
|
$msg = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! empty($msg)) {
|
if (! $msg) {
|
||||||
$this->notInstalledMessage = $msg;
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -251,6 +264,10 @@ class Poche
|
|||||||
return $this->currentTheme;
|
return $this->currentTheme;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getLanguage() {
|
||||||
|
return $this->currentLanguage;
|
||||||
|
}
|
||||||
|
|
||||||
public function getInstalledThemes() {
|
public function getInstalledThemes() {
|
||||||
$handle = opendir(THEME);
|
$handle = opendir(THEME);
|
||||||
$themes = array();
|
$themes = array();
|
||||||
@ -258,7 +275,7 @@ class Poche
|
|||||||
while (($theme = readdir($handle)) !== false) {
|
while (($theme = readdir($handle)) !== false) {
|
||||||
# Themes are stored in a directory, so all directory names are themes
|
# Themes are stored in a directory, so all directory names are themes
|
||||||
# @todo move theme installation data to database
|
# @todo move theme installation data to database
|
||||||
if (! is_dir(THEME . '/' . $theme) || in_array($theme, array('..', '.', '.git'))) {
|
if (! is_dir(THEME . '/' . $theme) || in_array($theme, array('..', '.'))) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -271,9 +288,33 @@ class Poche
|
|||||||
$themes[] = array('name' => $theme, 'current' => $current);
|
$themes[] = array('name' => $theme, 'current' => $current);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sort($themes);
|
||||||
return $themes;
|
return $themes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getInstalledLanguages() {
|
||||||
|
$handle = opendir(LOCALE);
|
||||||
|
$languages = array();
|
||||||
|
|
||||||
|
while (($language = readdir($handle)) !== false) {
|
||||||
|
# Languages are stored in a directory, so all directory names are languages
|
||||||
|
# @todo move language installation data to database
|
||||||
|
if (! is_dir(LOCALE . '/' . $language) || in_array($language, array('..', '.'))) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$current = false;
|
||||||
|
|
||||||
|
if ($language === $this->getLanguage()) {
|
||||||
|
$current = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$languages[] = array('name' => $language, 'current' => $current);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $languages;
|
||||||
|
}
|
||||||
|
|
||||||
public function getDefaultConfig()
|
public function getDefaultConfig()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
@ -363,15 +404,19 @@ class Poche
|
|||||||
case 'config':
|
case 'config':
|
||||||
$dev = $this->getPocheVersion('dev');
|
$dev = $this->getPocheVersion('dev');
|
||||||
$prod = $this->getPocheVersion('prod');
|
$prod = $this->getPocheVersion('prod');
|
||||||
$compare_dev = version_compare(POCHE_VERSION, $dev);
|
$compare_dev = version_compare(POCHE, $dev);
|
||||||
$compare_prod = version_compare(POCHE_VERSION, $prod);
|
$compare_prod = version_compare(POCHE, $prod);
|
||||||
$themes = $this->getInstalledThemes();
|
$themes = $this->getInstalledThemes();
|
||||||
|
$languages = $this->getInstalledLanguages();
|
||||||
|
$http_auth = (isset($_SERVER['PHP_AUTH_USER']))?true:false;
|
||||||
$tpl_vars = array(
|
$tpl_vars = array(
|
||||||
'themes' => $themes,
|
'themes' => $themes,
|
||||||
|
'languages' => $languages,
|
||||||
'dev' => $dev,
|
'dev' => $dev,
|
||||||
'prod' => $prod,
|
'prod' => $prod,
|
||||||
'compare_dev' => $compare_dev,
|
'compare_dev' => $compare_dev,
|
||||||
'compare_prod' => $compare_prod,
|
'compare_prod' => $compare_prod,
|
||||||
|
'http_auth' => $http_auth,
|
||||||
);
|
);
|
||||||
Tools::logm('config view');
|
Tools::logm('config view');
|
||||||
break;
|
break;
|
||||||
@ -492,6 +537,59 @@ class Poche
|
|||||||
Tools::redirect('?view=config');
|
Tools::redirect('?view=config');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateLanguage()
|
||||||
|
{
|
||||||
|
# no data
|
||||||
|
if (empty($_POST['language'])) {
|
||||||
|
}
|
||||||
|
|
||||||
|
# we are not going to change it to the current language...
|
||||||
|
if ($_POST['language'] == $this->getLanguage()) {
|
||||||
|
$this->messages->add('w', _('still using the "' . $this->getLanguage() . '" language!'));
|
||||||
|
Tools::redirect('?view=config');
|
||||||
|
}
|
||||||
|
|
||||||
|
$languages = $this->getInstalledLanguages();
|
||||||
|
$actualLanguage = false;
|
||||||
|
|
||||||
|
foreach ($languages as $language) {
|
||||||
|
if ($language['name'] == $_POST['language']) {
|
||||||
|
$actualLanguage = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $actualLanguage) {
|
||||||
|
$this->messages->add('e', _('that language does not seem to be installed'));
|
||||||
|
Tools::redirect('?view=config');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->store->updateUserConfig($this->user->getId(), 'language', $_POST['language']);
|
||||||
|
$this->messages->add('s', _('you have changed your language preferences'));
|
||||||
|
|
||||||
|
$currentConfig = $_SESSION['poche_user']->config;
|
||||||
|
$currentConfig['language'] = $_POST['language'];
|
||||||
|
|
||||||
|
$_SESSION['poche_user']->setConfig($currentConfig);
|
||||||
|
|
||||||
|
Tools::redirect('?view=config');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get credentials from differents sources
|
||||||
|
* it redirects the user to the $referer link
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
private function credentials() {
|
||||||
|
if(isset($_SERVER['PHP_AUTH_USER'])) {
|
||||||
|
return array($_SERVER['PHP_AUTH_USER'],'php_auth');
|
||||||
|
}
|
||||||
|
if(!empty($_POST['login']) && !empty($_POST['password'])) {
|
||||||
|
return array($_POST['login'],$_POST['password']);
|
||||||
|
}
|
||||||
|
return array(false,false);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* checks if login & password are correct and save the user in session.
|
* checks if login & password are correct and save the user in session.
|
||||||
* it redirects the user to the $referer link
|
* it redirects the user to the $referer link
|
||||||
@ -501,11 +599,17 @@ class Poche
|
|||||||
*/
|
*/
|
||||||
public function login($referer)
|
public function login($referer)
|
||||||
{
|
{
|
||||||
if (!empty($_POST['login']) && !empty($_POST['password'])) {
|
list($login,$password)=$this->credentials();
|
||||||
$user = $this->store->login($_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login']));
|
if($login === false || $password === false) {
|
||||||
|
$this->messages->add('e', _('login failed: you have to fill all fields'));
|
||||||
|
Tools::logm('login failed');
|
||||||
|
Tools::redirect();
|
||||||
|
}
|
||||||
|
if (!empty($login) && !empty($password)) {
|
||||||
|
$user = $this->store->login($login, Tools::encodeString($password . $login));
|
||||||
if ($user != array()) {
|
if ($user != array()) {
|
||||||
# Save login into Session
|
# Save login into Session
|
||||||
Session::login($user['username'], $user['password'], $_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login']), array('poche_user' => new User($user)));
|
Session::login($user['username'], $user['password'], $login, Tools::encodeString($password . $login), array('poche_user' => new User($user)));
|
||||||
$this->messages->add('s', _('welcome to your poche'));
|
$this->messages->add('s', _('welcome to your poche'));
|
||||||
Tools::logm('login successful');
|
Tools::logm('login successful');
|
||||||
Tools::redirect($referer);
|
Tools::redirect($referer);
|
||||||
@ -513,10 +617,6 @@ class Poche
|
|||||||
$this->messages->add('e', _('login failed: bad login or password'));
|
$this->messages->add('e', _('login failed: bad login or password'));
|
||||||
Tools::logm('login failed');
|
Tools::logm('login failed');
|
||||||
Tools::redirect();
|
Tools::redirect();
|
||||||
} else {
|
|
||||||
$this->messages->add('e', _('login failed: you have to fill all fields'));
|
|
||||||
Tools::logm('login failed');
|
|
||||||
Tools::redirect();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,10 +41,14 @@ class Tools
|
|||||||
$https = (!empty($_SERVER['HTTPS'])
|
$https = (!empty($_SERVER['HTTPS'])
|
||||||
&& (strtolower($_SERVER['HTTPS']) == 'on'))
|
&& (strtolower($_SERVER['HTTPS']) == 'on'))
|
||||||
|| (isset($_SERVER["SERVER_PORT"])
|
|| (isset($_SERVER["SERVER_PORT"])
|
||||||
&& $_SERVER["SERVER_PORT"] == '443'); // HTTPS detection.
|
&& $_SERVER["SERVER_PORT"] == '443') // HTTPS detection.
|
||||||
|
|| (isset($_SERVER["SERVER_PORT"]) //Custom HTTPS port detection
|
||||||
|
&& $_SERVER["SERVER_PORT"] == SSL_PORT);
|
||||||
|
|
||||||
$serverport = (!isset($_SERVER["SERVER_PORT"])
|
$serverport = (!isset($_SERVER["SERVER_PORT"])
|
||||||
|| $_SERVER["SERVER_PORT"] == '80'
|
|| $_SERVER["SERVER_PORT"] == '80'
|
||||||
|| ($https && $_SERVER["SERVER_PORT"] == '443')
|
|| ($https && $_SERVER["SERVER_PORT"] == '443')
|
||||||
|
|| ($https && $_SERVER["SERVER_PORT"]==SSL_PORT) //Custom HTTPS port detection
|
||||||
? '' : ':' . $_SERVER["SERVER_PORT"]);
|
? '' : ':' . $_SERVER["SERVER_PORT"]);
|
||||||
|
|
||||||
$scriptname = str_replace('/index.php', '/', $_SERVER["SCRIPT_NAME"]);
|
$scriptname = str_replace('/index.php', '/', $_SERVER["SCRIPT_NAME"]);
|
||||||
|
@ -25,6 +25,9 @@ define ('STORAGE_PASSWORD', 'poche');
|
|||||||
# Do not trespass unless you know what you are doing
|
# Do not trespass unless you know what you are doing
|
||||||
#################################################################################
|
#################################################################################
|
||||||
|
|
||||||
|
// Change this if not using the standart port for SSL - i.e you server is behind sslh
|
||||||
|
define ('SSL_PORT', 443);
|
||||||
|
|
||||||
define ('MODE_DEMO', FALSE);
|
define ('MODE_DEMO', FALSE);
|
||||||
define ('DEBUG_POCHE', FALSE);
|
define ('DEBUG_POCHE', FALSE);
|
||||||
define ('DOWNLOAD_PICTURES', FALSE);
|
define ('DOWNLOAD_PICTURES', FALSE);
|
||||||
@ -49,8 +52,6 @@ define ('CACHE', ROOT . '/cache');
|
|||||||
|
|
||||||
define ('PAGINATION', '10');
|
define ('PAGINATION', '10');
|
||||||
|
|
||||||
define ('POCHE_VERSION', '1.0.0');
|
|
||||||
|
|
||||||
define ('POCKET_FILE', '/ril_export.html');
|
define ('POCKET_FILE', '/ril_export.html');
|
||||||
define ('READABILITY_FILE', '/readability');
|
define ('READABILITY_FILE', '/readability');
|
||||||
define ('INSTAPAPER_FILE', '/instapaper-export.html');
|
define ('INSTAPAPER_FILE', '/instapaper-export.html');
|
||||||
|
22
index.php
22
index.php
@ -8,7 +8,9 @@
|
|||||||
* @license http://www.wtfpl.net/ see COPYING file
|
* @license http://www.wtfpl.net/ see COPYING file
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
define ('POCHE', '1.1.0');
|
||||||
require_once 'inc/poche/global.inc.php';
|
require_once 'inc/poche/global.inc.php';
|
||||||
|
session_start();
|
||||||
|
|
||||||
# Start Poche
|
# Start Poche
|
||||||
$poche = new Poche();
|
$poche = new Poche();
|
||||||
@ -35,7 +37,12 @@ $tpl_vars = array(
|
|||||||
if (! empty($notInstalledMessage)) {
|
if (! empty($notInstalledMessage)) {
|
||||||
if (! Poche::$canRenderTemplates || ! Poche::$configFileAvailable) {
|
if (! Poche::$canRenderTemplates || ! Poche::$configFileAvailable) {
|
||||||
# We cannot use Twig to display the error message
|
# We cannot use Twig to display the error message
|
||||||
die($notInstalledMessage);
|
echo '<h1>Errors</h1><ol>';
|
||||||
|
foreach ($notInstalledMessage as $message) {
|
||||||
|
echo '<li>' . $message . '</li>';
|
||||||
|
}
|
||||||
|
echo '</ol>';
|
||||||
|
die();
|
||||||
} else {
|
} else {
|
||||||
# Twig is installed, put the error message in the template
|
# Twig is installed, put the error message in the template
|
||||||
$tpl_file = Tools::getTplFile('error');
|
$tpl_file = Tools::getTplFile('error');
|
||||||
@ -61,7 +68,10 @@ if (isset($_GET['login'])) {
|
|||||||
$poche->export();
|
$poche->export();
|
||||||
} elseif (isset($_GET['updatetheme'])) {
|
} elseif (isset($_GET['updatetheme'])) {
|
||||||
$poche->updateTheme();
|
$poche->updateTheme();
|
||||||
|
} elseif (isset($_GET['updatelanguage'])) {
|
||||||
|
$poche->updateLanguage();
|
||||||
}
|
}
|
||||||
|
|
||||||
elseif (isset($_GET['plainurl']) && !empty($_GET['plainurl'])) {
|
elseif (isset($_GET['plainurl']) && !empty($_GET['plainurl'])) {
|
||||||
$plain_url = new Url(base64_encode($_GET['plainurl']));
|
$plain_url = new Url(base64_encode($_GET['plainurl']));
|
||||||
$poche->action('add', $plain_url);
|
$poche->action('add', $plain_url);
|
||||||
@ -71,8 +81,18 @@ if (Session::isLogged()) {
|
|||||||
$poche->action($action, $url, $id);
|
$poche->action($action, $url, $id);
|
||||||
$tpl_file = Tools::getTplFile($view);
|
$tpl_file = Tools::getTplFile($view);
|
||||||
$tpl_vars = array_merge($tpl_vars, $poche->displayView($view, $id));
|
$tpl_vars = array_merge($tpl_vars, $poche->displayView($view, $id));
|
||||||
|
} elseif(isset($_SERVER['PHP_AUTH_USER'])) {
|
||||||
|
if($poche->store->userExists($_SERVER['PHP_AUTH_USER'])) {
|
||||||
|
$poche->login($referer);
|
||||||
|
} else {
|
||||||
|
$poche->messages->add('e', _('login failed: user doesn\'t exist'));
|
||||||
|
Tools::logm('user doesn\'t exist');
|
||||||
|
$tpl_file = Tools::getTplFile('login');
|
||||||
|
$tpl_vars['http_auth'] = 1;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$tpl_file = Tools::getTplFile('login');
|
$tpl_file = Tools::getTplFile('login');
|
||||||
|
$tpl_vars['http_auth'] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
# because messages can be added in $poche->action(), we have to add this entry now (we can add it before)
|
# because messages can be added in $poche->action(), we have to add this entry now (we can add it before)
|
||||||
|
@ -1,72 +0,0 @@
|
|||||||
<?php
|
|
||||||
# import script to upgrade from poche 0.3
|
|
||||||
$db_path = 'sqlite:../db/poche.sqlite';
|
|
||||||
$handle = new PDO($db_path);
|
|
||||||
$handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
||||||
|
|
||||||
# Requêtes à exécuter pour mettre à jour poche.sqlite en 1.x
|
|
||||||
|
|
||||||
# ajout d'un champ user_id sur la table entries
|
|
||||||
$sql = 'ALTER TABLE entries RENAME TO tempEntries;';
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
$sql = 'CREATE TABLE entries (id INTEGER PRIMARY KEY, title TEXT, url TEXT, is_read NUMERIC DEFAULT 0, is_fav NUMERIC DEFAULT 0, content BLOB, user_id NUMERIC);';
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
$sql = 'INSERT INTO entries (id, title, url, is_read, is_fav, content) SELECT id, title, url, is_read, is_fav, content FROM tempEntries;';
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
# Update tout pour mettre user_id = 1
|
|
||||||
$sql = 'UPDATE entries SET user_id = 1;';
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
# Changement des flags pour les lus / favoris
|
|
||||||
$sql = 'UPDATE entries SET is_read = 1 WHERE is_read = -1;';
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
$sql = 'UPDATE entries SET is_fav = 1 WHERE is_fav = -1;';
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
# Création de la table users
|
|
||||||
$sql = 'CREATE TABLE users (id INTEGER PRIMARY KEY, username TEXT, password TEXT, name TEXT, email TEXT);';
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
$sql = 'INSERT INTO users (username) SELECT value FROM config WHERE name = "login";';
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
$sql = "UPDATE users SET password = (SELECT value FROM config WHERE name = 'password')";
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
# Création de la table users_config
|
|
||||||
$sql = 'CREATE TABLE users_config (id INTEGER PRIMARY KEY, user_id NUMERIC, name TEXT, value TEXT);';
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
$sql = 'INSERT INTO users_config (user_id, name, value) VALUES (1, "pager", "10");';
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
$sql = 'INSERT INTO users_config (user_id, name, value) VALUES (1, "language", "en_EN.UTF8");';
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
# Suppression de la table temporaire
|
|
||||||
$sql = 'DROP TABLE tempEntries;';
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
# Vidage de la table de config
|
|
||||||
$sql = 'DELETE FROM config;';
|
|
||||||
$query = $handle->prepare($sql);
|
|
||||||
$query->execute();
|
|
||||||
|
|
||||||
echo 'welcome to poche 1.0 !';
|
|
@ -1,79 +0,0 @@
|
|||||||
<?php
|
|
||||||
require_once dirname(__FILE__).'/../inc/poche/Tools.class.php';
|
|
||||||
include dirname(__FILE__).'/../inc/poche/define.inc.php';
|
|
||||||
require_once __DIR__ . '/../inc/poche/Database.class.php';
|
|
||||||
$store = new Database();
|
|
||||||
$old_salt = '464v54gLLw928uz4zUBqkRJeiPY68zCX';
|
|
||||||
?>
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<!--[if lte IE 6]> <html class="no-js ie6 ie67 ie678" lang="en"> <![endif]-->
|
|
||||||
<!--[if lte IE 7]> <html class="no-js ie7 ie67 ie678" lang="en"> <![endif]-->
|
|
||||||
<!--[if IE 8]> <html class="no-js ie8 ie678" lang="en"> <![endif]-->
|
|
||||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>updating poche</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>update poche to 1.0-beta3</h1>
|
|
||||||
|
|
||||||
<h2>Changelog</h2>
|
|
||||||
<p>
|
|
||||||
<ul>
|
|
||||||
<li>this awesome updating step</li>
|
|
||||||
<li>error message when install folder exists</li>
|
|
||||||
<li>more tests before installation (write access, etc.)</li>
|
|
||||||
<li>updated README to make installation easier</li>
|
|
||||||
<li>german language thanks to HLFH</li>
|
|
||||||
<li>spanish language thanks to Nitche</li>
|
|
||||||
<li>new file ./inc/poche/myconfig.inc.php created to store language and salt</li>
|
|
||||||
<li><a href="https://github.com/inthepoche/poche/issues/119">#119</a>: salt is now created when installing poche</li>
|
|
||||||
<li><a href="https://github.com/inthepoche/poche/issues/130">#130</a>: robots.txt added</li>
|
|
||||||
<li><a href="https://github.com/inthepoche/poche/issues/136">#136</a>: error during readability import</li>
|
|
||||||
<li><a href="https://github.com/inthepoche/poche/issues/137">#137</a>: mixed content alert in https</li>
|
|
||||||
<li><a href="https://github.com/inthepoche/poche/issues/138">#138</a>: change pattern to parse url with #</li>
|
|
||||||
</ul>
|
|
||||||
</p>
|
|
||||||
<p>To update your poche, please fill the following fields.</p>
|
|
||||||
<p>
|
|
||||||
<form name="update" method="post">
|
|
||||||
<div><label for="login">login:</label> <input type="text" name="login" id="login" /></div>
|
|
||||||
<div><label for="password">password:</label> <input type="password" name="password" id="password" /></div>
|
|
||||||
<div><input type="hidden" name="go" value="ok" /><input type="submit" value="update" /></div>
|
|
||||||
</form>
|
|
||||||
</p>
|
|
||||||
<?php
|
|
||||||
if (isset($_POST['go'])) {
|
|
||||||
if (!empty($_POST['login']) && !empty($_POST['password'])) {
|
|
||||||
$user = $store->login($_POST['login'], sha1($_POST['password'] . $_POST['login'] . $old_salt));
|
|
||||||
if ($user != array()) {
|
|
||||||
$new_salt = md5(time() . $_SERVER['SCRIPT_FILENAME'] . rand());
|
|
||||||
$myconfig_file = '../inc/poche/myconfig.inc.php';
|
|
||||||
if (!is_writable('../inc/poche/')) {
|
|
||||||
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, '<?php'."\r\n");
|
|
||||||
fwrite($fp, "define ('POCHE_VERSION', '1.0-beta3');" . "\r\n");
|
|
||||||
fwrite($fp, "define ('SALT', '" . $new_salt . "');" . "\r\n");
|
|
||||||
fwrite($fp, "define ('LANG', 'en_EN.utf8');" . "\r\n");
|
|
||||||
fclose($fp);
|
|
||||||
}
|
|
||||||
# faire une mise à jour de la table users en prenant en compte le nouveau SALT généré
|
|
||||||
$store->updatePassword($user['id'], sha1($_POST['password'] . $_POST['login'] . $new_salt));
|
|
||||||
?>
|
|
||||||
<p><span style="color: green;">your poche is up to date!</span></p>
|
|
||||||
<p><span style="color: red;">don't forget to delete ./install/ folder after the update.</span></p>
|
|
||||||
<p><a href="../">go back to your poche</a></p>
|
|
||||||
<?php
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
BIN
locale/cs_CZ.utf8/LC_MESSAGES/cs_CZ.utf8.mo
Normal file
BIN
locale/cs_CZ.utf8/LC_MESSAGES/cs_CZ.utf8.mo
Normal file
Binary file not shown.
233
locale/cs_CZ.utf8/LC_MESSAGES/cs_CZ.utf8.po
Normal file
233
locale/cs_CZ.utf8/LC_MESSAGES/cs_CZ.utf8.po
Normal file
@ -0,0 +1,233 @@
|
|||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# David Štancl <dstancl@gmail.com>, 2013
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: poche\n"
|
||||||
|
"POT-Creation-Date: \n"
|
||||||
|
"PO-Revision-Date: 2013-10-08 13:25+0100\n"
|
||||||
|
"Last-Translator: Nicolas Lœuillet <nicolas.loeuillet@gmail.com>\n"
|
||||||
|
"Language-Team: Czech (http://www.transifex.com/projects/p/poche/language/"
|
||||||
|
"cs/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: cs\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||||
|
"X-Generator: Poedit 1.5.4\n"
|
||||||
|
|
||||||
|
msgid "config"
|
||||||
|
msgstr "nastavení"
|
||||||
|
|
||||||
|
msgid "Poching a link"
|
||||||
|
msgstr "Odkaz se ukládá"
|
||||||
|
|
||||||
|
msgid "read the documentation"
|
||||||
|
msgstr "číst dokumentaci"
|
||||||
|
|
||||||
|
msgid "by filling this field"
|
||||||
|
msgstr "vyplněním tohoto pole"
|
||||||
|
|
||||||
|
msgid "poche it!"
|
||||||
|
msgstr "uložit!"
|
||||||
|
|
||||||
|
msgid "Updating poche"
|
||||||
|
msgstr "Poche se aktualizuje"
|
||||||
|
|
||||||
|
msgid "your version"
|
||||||
|
msgstr "vaše verze"
|
||||||
|
|
||||||
|
msgid "latest stable version"
|
||||||
|
msgstr "poslední stabilní verze"
|
||||||
|
|
||||||
|
msgid "a more recent stable version is available."
|
||||||
|
msgstr "je k dispozici novější stabilní verze."
|
||||||
|
|
||||||
|
msgid "you are up to date."
|
||||||
|
msgstr "je aktuální"
|
||||||
|
|
||||||
|
msgid "latest dev version"
|
||||||
|
msgstr "poslední vývojová verze"
|
||||||
|
|
||||||
|
msgid "a more recent development version is available."
|
||||||
|
msgstr "je k dispozici novější vývojová verze."
|
||||||
|
|
||||||
|
msgid "Change your password"
|
||||||
|
msgstr "Změnit heslo"
|
||||||
|
|
||||||
|
msgid "New password:"
|
||||||
|
msgstr "Nové heslo:"
|
||||||
|
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Heslo"
|
||||||
|
|
||||||
|
msgid "Repeat your new password:"
|
||||||
|
msgstr "Znovu nové heslo:"
|
||||||
|
|
||||||
|
msgid "Update"
|
||||||
|
msgstr "Aktualizovat"
|
||||||
|
|
||||||
|
msgid "Import"
|
||||||
|
msgstr "Importovat"
|
||||||
|
|
||||||
|
msgid "Please execute the import script locally, it can take a very long time."
|
||||||
|
msgstr "Spusťte importní skript lokálně, může to dlouho trvat."
|
||||||
|
|
||||||
|
msgid "More infos in the official doc:"
|
||||||
|
msgstr "Více informací v oficiální dokumentaci:"
|
||||||
|
|
||||||
|
msgid "import from Pocket"
|
||||||
|
msgstr "importovat z Pocket"
|
||||||
|
|
||||||
|
msgid "import from Readability"
|
||||||
|
msgstr "importovat z Readability"
|
||||||
|
|
||||||
|
msgid "import from Instapaper"
|
||||||
|
msgstr "importovat z Instapaper"
|
||||||
|
|
||||||
|
msgid "Export your poche datas"
|
||||||
|
msgstr "Export dat"
|
||||||
|
|
||||||
|
msgid "Click here"
|
||||||
|
msgstr "Klikněte zde"
|
||||||
|
|
||||||
|
msgid "to export your poche datas."
|
||||||
|
msgstr "pro export vašich dat."
|
||||||
|
|
||||||
|
msgid "back to home"
|
||||||
|
msgstr "zpět na úvod"
|
||||||
|
|
||||||
|
msgid "installation"
|
||||||
|
msgstr "instalace"
|
||||||
|
|
||||||
|
msgid "install your poche"
|
||||||
|
msgstr "instalovat"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"poche is still not installed. Please fill the below form to install it. "
|
||||||
|
"Don't hesitate to <a href='http://inthepoche.com/doc'>read the documentation "
|
||||||
|
"on poche website</a>."
|
||||||
|
msgstr ""
|
||||||
|
"poche ještě není nainstalováno. Pro instalaci vyplňte níže uvedený formulář. "
|
||||||
|
"Nezapomeňte <a href='http://inthepoche.com/doc'>si přečíst dokumentaci</a> "
|
||||||
|
"na stránkách programu."
|
||||||
|
|
||||||
|
msgid "Login"
|
||||||
|
msgstr "Jméno"
|
||||||
|
|
||||||
|
msgid "Repeat your password"
|
||||||
|
msgstr "Zopakujte heslo"
|
||||||
|
|
||||||
|
msgid "Install"
|
||||||
|
msgstr "Instalovat"
|
||||||
|
|
||||||
|
msgid "back to top"
|
||||||
|
msgstr "zpět na začátek"
|
||||||
|
|
||||||
|
msgid "favoris"
|
||||||
|
msgstr "oblíbené"
|
||||||
|
|
||||||
|
msgid "archive"
|
||||||
|
msgstr "archív"
|
||||||
|
|
||||||
|
msgid "unread"
|
||||||
|
msgstr "nepřečtené"
|
||||||
|
|
||||||
|
msgid "by date asc"
|
||||||
|
msgstr "podle data od nejstarších"
|
||||||
|
|
||||||
|
msgid "by date"
|
||||||
|
msgstr "podle data"
|
||||||
|
|
||||||
|
msgid "by date desc"
|
||||||
|
msgstr "podle data od nejnovějších"
|
||||||
|
|
||||||
|
msgid "by title asc"
|
||||||
|
msgstr "podle nadpisu vzestupně"
|
||||||
|
|
||||||
|
msgid "by title"
|
||||||
|
msgstr "podle nadpisu"
|
||||||
|
|
||||||
|
msgid "by title desc"
|
||||||
|
msgstr "podle nadpisu sestupně"
|
||||||
|
|
||||||
|
msgid "No link available here!"
|
||||||
|
msgstr "Není k dispozici žádný odkaz!"
|
||||||
|
|
||||||
|
msgid "toggle mark as read"
|
||||||
|
msgstr "označit jako přečtené"
|
||||||
|
|
||||||
|
msgid "toggle favorite"
|
||||||
|
msgstr "označit jako oblíbené"
|
||||||
|
|
||||||
|
msgid "delete"
|
||||||
|
msgstr "smazat"
|
||||||
|
|
||||||
|
msgid "original"
|
||||||
|
msgstr "originál"
|
||||||
|
|
||||||
|
msgid "results"
|
||||||
|
msgstr "výsledky"
|
||||||
|
|
||||||
|
msgid "tweet"
|
||||||
|
msgstr "tweetnout"
|
||||||
|
|
||||||
|
msgid "email"
|
||||||
|
msgstr "email"
|
||||||
|
|
||||||
|
msgid "shaarli"
|
||||||
|
msgstr "shaarli"
|
||||||
|
|
||||||
|
msgid "flattr"
|
||||||
|
msgstr "flattr"
|
||||||
|
|
||||||
|
msgid "this article appears wrong?"
|
||||||
|
msgstr "vypadá tento článek špatně?"
|
||||||
|
|
||||||
|
msgid "create an issue"
|
||||||
|
msgstr "odeslat požadavek"
|
||||||
|
|
||||||
|
msgid "or"
|
||||||
|
msgstr "nebo"
|
||||||
|
|
||||||
|
msgid "contact us by mail"
|
||||||
|
msgstr "kontaktovat e-mailem"
|
||||||
|
|
||||||
|
msgid "plop"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "home"
|
||||||
|
msgstr "domů"
|
||||||
|
|
||||||
|
msgid "favorites"
|
||||||
|
msgstr "oblíbené"
|
||||||
|
|
||||||
|
msgid "logout"
|
||||||
|
msgstr "odhlásit se"
|
||||||
|
|
||||||
|
msgid "powered by"
|
||||||
|
msgstr "běží na"
|
||||||
|
|
||||||
|
msgid "debug mode is on so cache is off."
|
||||||
|
msgstr "je zapnut ladicí mód, proto je keš vypnuta."
|
||||||
|
|
||||||
|
msgid "your poche version:"
|
||||||
|
msgstr "verze:"
|
||||||
|
|
||||||
|
msgid "storage:"
|
||||||
|
msgstr "úložiště:"
|
||||||
|
|
||||||
|
msgid "login to your poche"
|
||||||
|
msgstr "přihlásit se k poche"
|
||||||
|
|
||||||
|
msgid "you are in demo mode, some features may be disabled."
|
||||||
|
msgstr "používáte ukázkový mód, některé funkce jsou zakázány."
|
||||||
|
|
||||||
|
msgid "Stay signed in"
|
||||||
|
msgstr "Zůstat přihlášen(a)"
|
||||||
|
|
||||||
|
msgid "(Do not check on public computers)"
|
||||||
|
msgstr "(Nezaškrtávejte na veřejně dostupných počítačích)"
|
||||||
|
|
||||||
|
msgid "Sign in"
|
||||||
|
msgstr "Přihlásit se"
|
Binary file not shown.
@ -3,51 +3,51 @@ msgstr ""
|
|||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"POT-Creation-Date: \n"
|
"POT-Creation-Date: \n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: Nicolas Lœuillet <nicolas.loeuillet@gmail.com>\n"
|
"Last-Translator: Square252\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Poedit 1.5.4\n"
|
"X-Generator: Poedit 1.5.7\n"
|
||||||
|
|
||||||
msgid "config"
|
msgid "config"
|
||||||
msgstr "Konfig"
|
msgstr "Konfiguration"
|
||||||
|
|
||||||
msgid "Poching a link"
|
msgid "Poching a link"
|
||||||
msgstr ""
|
msgstr "Poche einen Link"
|
||||||
|
|
||||||
msgid "read the documentation"
|
msgid "read the documentation"
|
||||||
msgstr ""
|
msgstr "Die Dokumentation lesen"
|
||||||
|
|
||||||
msgid "by filling this field"
|
msgid "by filling this field"
|
||||||
msgstr ""
|
msgstr "durch das ausfüllen dieses Feldes:"
|
||||||
|
|
||||||
msgid "poche it!"
|
msgid "poche it!"
|
||||||
msgstr "Pochert es!"
|
msgstr "Poche es!"
|
||||||
|
|
||||||
msgid "Updating poche"
|
msgid "Updating poche"
|
||||||
msgstr "Poche aktualisieren"
|
msgstr "Poche aktualisieren"
|
||||||
|
|
||||||
msgid "your version"
|
msgid "your version"
|
||||||
msgstr "Ihre Version"
|
msgstr "Deine Version"
|
||||||
|
|
||||||
msgid "latest stable version"
|
msgid "latest stable version"
|
||||||
msgstr "letzte stabile Version"
|
msgstr "Neuste stabile Version"
|
||||||
|
|
||||||
msgid "a more recent stable version is available."
|
msgid "a more recent stable version is available."
|
||||||
msgstr "eine neuere stabile Version ist verfügbar."
|
msgstr "Eine neuere stabile Version ist verfügbar."
|
||||||
|
|
||||||
msgid "you are up to date."
|
msgid "you are up to date."
|
||||||
msgstr "Sie sind auf den neuesten Stand."
|
msgstr "Du bist auf den neuesten Stand."
|
||||||
|
|
||||||
msgid "latest dev version"
|
msgid "latest dev version"
|
||||||
msgstr "letzte Entwicklungsversion"
|
msgstr "Neuste Entwicklungsversion"
|
||||||
|
|
||||||
msgid "a more recent development version is available."
|
msgid "a more recent development version is available."
|
||||||
msgstr "eine neuere Entwicklungsversion ist verfügbar."
|
msgstr "Eine neuere Entwicklungsversion ist verfügbar."
|
||||||
|
|
||||||
msgid "Change your password"
|
msgid "Change your password"
|
||||||
msgstr "Ihr Passwort ändern"
|
msgstr "Passwort ändern"
|
||||||
|
|
||||||
msgid "New password:"
|
msgid "New password:"
|
||||||
msgstr "Neues Passwort:"
|
msgstr "Neues Passwort:"
|
||||||
@ -56,7 +56,7 @@ msgid "Password"
|
|||||||
msgstr "Passwort"
|
msgstr "Passwort"
|
||||||
|
|
||||||
msgid "Repeat your new password:"
|
msgid "Repeat your new password:"
|
||||||
msgstr "neues Passwort wiederholen:"
|
msgstr "Neues Passwort wiederholen:"
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Aktualisieren"
|
msgstr "Aktualisieren"
|
||||||
@ -65,114 +65,113 @@ msgid "Import"
|
|||||||
msgstr "Import"
|
msgstr "Import"
|
||||||
|
|
||||||
msgid "Please execute the import script locally, it can take a very long time."
|
msgid "Please execute the import script locally, it can take a very long time."
|
||||||
msgstr ""
|
msgstr "Bitte führe das Import Script lokal aus, dies kann eine Weile dauern."
|
||||||
"Wir danken Ihnen, den Import in lokal zu ausführen, kann es einige Zeit "
|
|
||||||
"dauern."
|
|
||||||
|
|
||||||
msgid "More infos in the official doc:"
|
msgid "More infos in the official doc:"
|
||||||
msgstr "Mehr Informationen auf der offiziellen Dokumentation:"
|
msgstr "Mehr Informationen in der offiziellen Dokumentation:"
|
||||||
|
|
||||||
msgid "import from Pocket"
|
msgid "import from Pocket"
|
||||||
msgstr "import aus Pocket"
|
msgstr "Import aus Pocket"
|
||||||
|
|
||||||
msgid "import from Readability"
|
msgid "import from Readability"
|
||||||
msgstr "import aus Readability"
|
msgstr "Import aus Readability"
|
||||||
|
|
||||||
msgid "import from Instapaper"
|
msgid "import from Instapaper"
|
||||||
msgstr "import aus Instapaper"
|
msgstr "Import aus Instapaper"
|
||||||
|
|
||||||
msgid "Export your poche datas"
|
msgid "Export your poche datas"
|
||||||
msgstr "Exportieren Sie Ihre Daten aus Poche."
|
msgstr "Exportieren Sie Ihre Poche Daten."
|
||||||
|
|
||||||
msgid "Click here"
|
msgid "Click here"
|
||||||
msgstr "klicken Sie hier"
|
msgstr "Klicke hier"
|
||||||
|
|
||||||
msgid "to export your poche datas."
|
msgid "to export your poche datas."
|
||||||
msgstr "um Ihre Daten aus Poche zu exportieren."
|
msgstr "um deine Daten aus Poche zu exportieren."
|
||||||
|
|
||||||
msgid "back to home"
|
msgid "back to home"
|
||||||
msgstr "züruck zur Hauptseite"
|
msgstr "züruck zur Hauptseite"
|
||||||
|
|
||||||
msgid "installation"
|
msgid "installation"
|
||||||
msgstr "Installierung"
|
msgstr "Installieren"
|
||||||
|
|
||||||
msgid "install your poche"
|
msgid "install your poche"
|
||||||
msgstr "installieren Sie Poche"
|
msgstr "Installiere dein Poche"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"poche is still not installed. Please fill the below form to install it. "
|
"poche is still not installed. Please fill the below form to install it. "
|
||||||
"Don't hesitate to <a href='http://inthepoche.com/doc'>read the documentation "
|
"Don't hesitate to <a href='http://inthepoche.com/doc'>read the documentation "
|
||||||
"on poche website</a>."
|
"on poche website</a>."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Poche ist noch nicht installiert. Wir danken Ihnen, die Felder unten zu "
|
"Poche ist noch nicht installiert. Bitte fülle die Felder unten aus, um die "
|
||||||
"befüllen, um es zu machen. Zögern sie nicht, <a href='http://inthepoche.com/"
|
"Installation durchzuführen. Zögere nicht, <a href='http://inthepoche.com/"
|
||||||
"doc'>die Dokumentation auf der Website von Poche zu lesen."
|
"doc'>die Dokumentation auf der Website von Poche zu lesen falls du Probleme "
|
||||||
|
"haben solltest."
|
||||||
|
|
||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr "Benutzername"
|
msgstr "Benutzername"
|
||||||
|
|
||||||
msgid "Repeat your password"
|
msgid "Repeat your password"
|
||||||
msgstr "Wiederholen Sie Ihr Passwort"
|
msgstr "Wiederhole dein Passwort"
|
||||||
|
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "Installieren"
|
msgstr "Installieren"
|
||||||
|
|
||||||
msgid "back to top"
|
msgid "back to top"
|
||||||
msgstr "zurück nach oben"
|
msgstr "Nach Oben"
|
||||||
|
|
||||||
msgid "favoris"
|
msgid "favoris"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "archive"
|
msgid "archive"
|
||||||
msgstr "Archive"
|
msgstr "Archiv"
|
||||||
|
|
||||||
msgid "unread"
|
msgid "unread"
|
||||||
msgstr ""
|
msgstr "ungelesen"
|
||||||
|
|
||||||
msgid "by date asc"
|
msgid "by date asc"
|
||||||
msgstr "nach Datum asc"
|
msgstr "nach Datum aufsteigend"
|
||||||
|
|
||||||
msgid "by date"
|
msgid "by date"
|
||||||
msgstr "nach Datum"
|
msgstr "nach Datum"
|
||||||
|
|
||||||
msgid "by date desc"
|
msgid "by date desc"
|
||||||
msgstr "nach Datum desc"
|
msgstr "nach Datum absteigend"
|
||||||
|
|
||||||
msgid "by title asc"
|
msgid "by title asc"
|
||||||
msgstr "nach Titel asc"
|
msgstr "nach Titel aufsteigend"
|
||||||
|
|
||||||
msgid "by title"
|
msgid "by title"
|
||||||
msgstr "nach Titel"
|
msgstr "nach Titel"
|
||||||
|
|
||||||
msgid "by title desc"
|
msgid "by title desc"
|
||||||
msgstr "nach Titel desc"
|
msgstr "nach Titel absteigend"
|
||||||
|
|
||||||
msgid "No link available here!"
|
msgid "No link available here!"
|
||||||
msgstr ""
|
msgstr "Kein Link verfügbar!"
|
||||||
|
|
||||||
msgid "toggle mark as read"
|
msgid "toggle mark as read"
|
||||||
msgstr "als gelesen markieren"
|
msgstr "Als gelesen markieren"
|
||||||
|
|
||||||
msgid "toggle favorite"
|
msgid "toggle favorite"
|
||||||
msgstr "Favorit"
|
msgstr "Favorit"
|
||||||
|
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr "löschen"
|
msgstr "Löschen"
|
||||||
|
|
||||||
msgid "original"
|
msgid "original"
|
||||||
msgstr "Original"
|
msgstr "Original"
|
||||||
|
|
||||||
msgid "results"
|
msgid "results"
|
||||||
msgstr ""
|
msgstr "Ergebnisse"
|
||||||
|
|
||||||
msgid "tweet"
|
msgid "tweet"
|
||||||
msgstr "twittern"
|
msgstr "Twittern"
|
||||||
|
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "senden per E-Mail"
|
msgstr "senden per E-Mail"
|
||||||
|
|
||||||
msgid "shaarli"
|
msgid "shaarli"
|
||||||
msgstr "shaarli"
|
msgstr "Shaarli"
|
||||||
|
|
||||||
msgid "flattr"
|
msgid "flattr"
|
||||||
msgstr "flattr"
|
msgstr "flattr"
|
||||||
@ -193,37 +192,38 @@ msgid "plop"
|
|||||||
msgstr "plop"
|
msgstr "plop"
|
||||||
|
|
||||||
msgid "home"
|
msgid "home"
|
||||||
msgstr "Hause"
|
msgstr "Start"
|
||||||
|
|
||||||
msgid "favorites"
|
msgid "favorites"
|
||||||
msgstr "Favoriten"
|
msgstr "Favoriten"
|
||||||
|
|
||||||
msgid "logout"
|
msgid "logout"
|
||||||
msgstr "Trennung"
|
msgstr "Logout"
|
||||||
|
|
||||||
msgid "powered by"
|
msgid "powered by"
|
||||||
msgstr "bereitgestellt von"
|
msgstr "bereitgestellt von"
|
||||||
|
|
||||||
msgid "debug mode is on so cache is off."
|
msgid "debug mode is on so cache is off."
|
||||||
msgstr ""
|
msgstr "Debug Modus ist aktiviert, das Caching ist somit deaktiviert"
|
||||||
|
|
||||||
msgid "your poche version:"
|
msgid "your poche version:"
|
||||||
msgstr ""
|
msgstr "Deine Poche Version"
|
||||||
|
|
||||||
msgid "storage:"
|
msgid "storage:"
|
||||||
msgstr ""
|
msgstr "Speicher:"
|
||||||
|
|
||||||
msgid "login to your poche"
|
msgid "login to your poche"
|
||||||
msgstr "Verbinden zu Poche"
|
msgstr "Bei Poche anmelden"
|
||||||
|
|
||||||
msgid "you are in demo mode, some features may be disabled."
|
msgid "you are in demo mode, some features may be disabled."
|
||||||
msgstr "Sie sind im Demomodus, können einige Funktionen deaktiviert werden."
|
msgstr ""
|
||||||
|
"Du befindest dich im Demomodus, einige Funktionen könnten deaktiviert sein."
|
||||||
|
|
||||||
msgid "Stay signed in"
|
msgid "Stay signed in"
|
||||||
msgstr "bleiben Sie verbunden"
|
msgstr "Angemeldet bleiben"
|
||||||
|
|
||||||
msgid "(Do not check on public computers)"
|
msgid "(Do not check on public computers)"
|
||||||
msgstr "(nicht auf einem öffentlichen Computer überprüfen)"
|
msgstr "(nicht auf einem öffentlichen Computer anhaken)"
|
||||||
|
|
||||||
msgid "Sign in"
|
msgid "Sign in"
|
||||||
msgstr "Einloggen"
|
msgstr "Einloggen"
|
||||||
|
@ -4,10 +4,10 @@ themes created by poche users
|
|||||||
|
|
||||||
## list of themes
|
## list of themes
|
||||||
|
|
||||||
* dark ([preview](https://raw.github.com/inthepoche/poche-themes/master/dark/screenshot.jpg))
|
* dark ([preview](https://raw.github.com/inthepoche/poche/master/themes/dark/screenshot.jpg))
|
||||||
* dmagenta ([preview](https://raw.github.com/inthepoche/poche-themes/master/dmagenta/screenshot.jpg))
|
* dmagenta ([preview](https://raw.github.com/inthepoche/poche/master/themes/dmagenta/screenshot.jpg))
|
||||||
* solarized ([preview](https://raw.github.com/inthepoche/poche-themes/master/solarized/screenshot.jpg))
|
* solarized ([preview](https://raw.github.com/inthepoche/poche/master/themes/solarized/screenshot.jpg))
|
||||||
* solarized-dark ([preview](https://raw.github.com/inthepoche/poche-themes/master/solarized-dark/screenshot.jpg))
|
* solarized-dark ([preview](https://raw.github.com/inthepoche/poche/master/themes/solarized-dark/screenshot.jpg))
|
||||||
|
|
||||||
## installation
|
## installation
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<footer class="w600p center mt3 mb3 smaller txtright">
|
<footer class="w600p center mt3 mb3 smaller txtright">
|
||||||
<p>{% trans "powered by" %} <a href="http://inthepoche.com">poche</a></p>
|
<p>{% trans "powered by" %} <a href="http://inthepoche.com">poche</a></p>
|
||||||
{% if constant('DEBUG_POCHE') == 1 %}<p><strong>{% trans "debug mode is on so cache is off." %} {% trans "your poche version:" %}{{constant('POCHE_VERSION')}}. {% trans "storage:" %} {{constant('STORAGE')}}</strong></p>{% endif %}
|
{% if constant('DEBUG_POCHE') == 1 %}<p><strong>{% trans "debug mode is on so cache is off." %} {% trans "your poche version:" %}{{constant('POCHE')}}. {% trans "storage:" %} {{constant('STORAGE')}}</strong></p>{% endif %}
|
||||||
</footer>
|
</footer>
|
@ -7,5 +7,4 @@
|
|||||||
<link rel="stylesheet" href="{{ poche_url }}/themes/{{ theme }}/css/style-{{ theme }}.css" media="all" title="{{ theme }} theme">
|
<link rel="stylesheet" href="{{ poche_url }}/themes/{{ theme }}/css/style-{{ theme }}.css" media="all" title="{{ theme }} theme">
|
||||||
<link rel="stylesheet" href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/css/messages.css" media="all">
|
<link rel="stylesheet" href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/css/messages.css" media="all">
|
||||||
<link rel="stylesheet" href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/css/print.css" media="print">
|
<link rel="stylesheet" href="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/css/print.css" media="print">
|
||||||
<link href='//fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
|
<script src="{{ poche_url }}/themes/{{ constant('DEFAULT_THEME') }}/js/jquery-2.0.3.min.js"></script>
|
||||||
<script src="//codeorigin.jquery.com/jquery-2.0.3.min.js"></script>
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
<h2>{% trans "Updating poche" %}</h2>
|
<h2>{% trans "Updating poche" %}</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>{% trans "your version" %} : <strong>{{ constant('POCHE_VERSION') }}</strong></li>
|
<li>{% trans "your version" %} : <strong>{{ constant('POCHE') }}</strong></li>
|
||||||
<li>{% trans "latest stable version" %} : {{ prod }}. {% if compare_prod == -1 %}<strong><a href="http://inthepoche.com/">{% trans "a more recent stable version is available." %}</a></strong>{% else %}{% trans "you are up to date." %}{% endif %}</li>
|
<li>{% trans "latest stable version" %} : {{ prod }}. {% if compare_prod == -1 %}<strong><a href="http://inthepoche.com/">{% trans "a more recent stable version is available." %}</a></strong>{% else %}{% trans "you are up to date." %}{% endif %}</li>
|
||||||
{% if constant('DEBUG_POCHE') == 1 %}<li>{% trans "latest dev version" %} : {{ dev }}. {% if compare_dev == -1 %}<strong><a href="http://inthepoche.com/">{% trans "a more recent development version is available." %}</a></strong>{% else %}{% trans "you are up to date." %}{% endif %}</li>{% endif %}
|
{% if constant('DEBUG_POCHE') == 1 %}<li>{% trans "latest dev version" %} : {{ dev }}. {% if compare_dev == -1 %}<strong><a href="http://inthepoche.com/">{% trans "a more recent development version is available." %}</a></strong>{% else %}{% trans "you are up to date." %}{% endif %}</li>{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
@ -47,6 +47,26 @@
|
|||||||
<input type="hidden" name="token" value="{{ token }}">
|
<input type="hidden" name="token" value="{{ token }}">
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<h2>{% trans "Change your language" %}</h2>
|
||||||
|
<form method="post" action="?updatelanguage" name="changelanguageform">
|
||||||
|
<fieldset class="w500p">
|
||||||
|
<div class="row">
|
||||||
|
<label class="col w150p" for="language">{% trans "Language:" %}</label>
|
||||||
|
<select class="col" id="language" name="language">
|
||||||
|
{% for language in languages %}
|
||||||
|
<option value="{{ language.name }}" {{ language.current ? 'selected' : '' }}>{{ language.name }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="row mts txtcenter">
|
||||||
|
<button class="bouton" type="submit" tabindex="4">{% trans "Update" %}</button>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
<input type="hidden" name="returnurl" value="{{ referer }}">
|
||||||
|
<input type="hidden" name="token" value="{{ token }}">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% if http_auth == 0 %}
|
||||||
<h2>{% trans "Change your password" %}</h2>
|
<h2>{% trans "Change your password" %}</h2>
|
||||||
<form method="post" action="?config" name="loginform">
|
<form method="post" action="?config" name="loginform">
|
||||||
<fieldset class="w500p">
|
<fieldset class="w500p">
|
||||||
@ -65,6 +85,7 @@
|
|||||||
<input type="hidden" name="returnurl" value="{{ referer }}">
|
<input type="hidden" name="returnurl" value="{{ referer }}">
|
||||||
<input type="hidden" name="token" value="{{ token }}">
|
<input type="hidden" name="token" value="{{ token }}">
|
||||||
</form>
|
</form>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<h2>{% trans "Import" %}</h2>
|
<h2>{% trans "Import" %}</h2>
|
||||||
<p>{% trans "Please execute the import script locally, it can take a very long time." %}</p>
|
<p>{% trans "Please execute the import script locally, it can take a very long time." %}</p>
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: 'Roboto';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
src: local('Roboto Regular'), local('Roboto-Regular'), url(../fonts/Roboto.woff) format('woff');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
body {
|
body {
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
font-family: 'Roboto',Verdana,Geneva,sans-serif;
|
font-family: 'Roboto',Verdana,Geneva,sans-serif;
|
||||||
@ -188,7 +197,7 @@ a:visited {
|
|||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 50px;
|
min-height: 50px;
|
||||||
padding-top: 17px;
|
padding-top: 17px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
{% extends "layout.twig" %}
|
{% extends "layout.twig" %}
|
||||||
{% block title %}{% trans "plop" %}{% endblock %}
|
{% block title %}{% trans "plop" %}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ msg|raw }}
|
<h1>Errors</h1>
|
||||||
|
<ol>
|
||||||
|
{% for message in msg %}
|
||||||
|
<li>{{message}}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ol>
|
||||||
<p>Don't forget <a href="http://inthepoche.com/doc">the documentation</a>.</p>
|
<p>Don't forget <a href="http://inthepoche.com/doc">the documentation</a>.</p>
|
||||||
{% endblock %}
|
{% endblock %}
|
BIN
themes/default/fonts/Roboto.woff
Normal file
BIN
themes/default/fonts/Roboto.woff
Normal file
Binary file not shown.
1
themes/default/js/jquery-2.0.3.min.js
vendored
Normal file
1
themes/default/js/jquery-2.0.3.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
{% block title %}{% trans "login to your poche" %}{% endblock %}
|
{% block title %}{% trans "login to your poche" %}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
{% if http_auth == 0 %}
|
||||||
<form method="post" action="?login" name="loginform">
|
<form method="post" action="?login" name="loginform">
|
||||||
<fieldset class="w500p center">
|
<fieldset class="w500p center">
|
||||||
<h2 class="mbs txtcenter">{% trans "login to your poche" %}</h2>
|
<h2 class="mbs txtcenter">{% trans "login to your poche" %}</h2>
|
||||||
@ -29,4 +30,5 @@
|
|||||||
<input type="hidden" name="returnurl" value="{{ referer }}">
|
<input type="hidden" name="returnurl" value="{{ referer }}">
|
||||||
<input type="hidden" name="token" value="{{ token }}">
|
<input type="hidden" name="token" value="{{ token }}">
|
||||||
</form>
|
</form>
|
||||||
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
Loading…
Reference in New Issue
Block a user