From: Thomas Citharel Date: Fri, 13 Feb 2015 16:14:08 +0000 (+0100) Subject: Merge branch 'dev' into sendmailatregistration X-Git-Tag: 1.9beta~7^2~1 X-Git-Url: https://git.immae.eu/?a=commitdiff_plain;h=57068585c0a1164f1ae7ae399f3d5a68a4e9d46d;hp=1be071f9f0fba7c93f114a886ff19199955a3f02;p=github%2Fwallabag%2Fwallabag.git Merge branch 'dev' into sendmailatregistration --- diff --git a/inc/3rdparty/site_config/standard/gist.github.com.txt b/inc/3rdparty/site_config/standard/gist.github.com.txt index 90207862..f11b7b42 100755 --- a/inc/3rdparty/site_config/standard/gist.github.com.txt +++ b/inc/3rdparty/site_config/standard/gist.github.com.txt @@ -1,6 +1,4 @@ -body: //div[@class="highlight"]/pre -prune: no -tidy: no - -test_url: https://gist.github.com/1258908 \ No newline at end of file +title: //div[contains(@class,'gist-description')] +body: //div[contains(@class,'blob-wrapper')] +test_url: https://gist.github.com/staltz/868e7e9bc2a7b8c1f754 diff --git a/inc/3rdparty/site_config/standard/jungle-world.com.txt b/inc/3rdparty/site_config/standard/jungle-world.com.txt new file mode 100644 index 00000000..61e0087f --- /dev/null +++ b/inc/3rdparty/site_config/standard/jungle-world.com.txt @@ -0,0 +1,3 @@ +title: //h1 +body: //div[contains(@class,'story')] +test_url: http://jungle-world.com/artikel/2015/02/51207.html diff --git a/inc/3rdparty/site_config/standard/toolinux.com.txt b/inc/3rdparty/site_config/standard/toolinux.com.txt new file mode 100755 index 00000000..3f1a8405 --- /dev/null +++ b/inc/3rdparty/site_config/standard/toolinux.com.txt @@ -0,0 +1,5 @@ +title: //h2[contains(@class,'news')] +body: //div[contains(@class,'articleContent')] +date: substring-after(//div[@class = 'SupaDate']/text(), 'le') + +test_url: http://www.toolinux.com/Wi-Fi-Linksys-WRT-la-legende-de diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php index f6ba4708..6bac0f5d 100755 --- a/inc/poche/Database.class.php +++ b/inc/poche/Database.class.php @@ -293,7 +293,7 @@ class Database { $sql_limit = "LIMIT ".$limit." OFFSET 0"; } - $sql = "SELECT * FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE 'Untitled - Import%' AND user_id=? ORDER BY id " . $sql_limit; + $sql = "SELECT * FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE '%Import%' AND user_id=? ORDER BY id " . $sql_limit; $query = $this->executeQuery($sql, array($user_id)); $entries = $query->fetchAll(); @@ -302,7 +302,7 @@ class Database { public function retrieveUnfetchedEntriesCount($user_id) { - $sql = "SELECT count(*) FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE 'Untitled - Import%' AND user_id=?"; + $sql = "SELECT count(*) FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE '%Import%' AND user_id=?"; $query = $this->executeQuery($sql, array($user_id)); list($count) = $query->fetch(); diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index e89e9d30..b26826f1 100755 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -214,9 +214,9 @@ class Poche } if ($autoclose == TRUE) { - Tools::redirect('?view=home'); + Tools::redirect('?view=home&closewin=true'); } else { - Tools::redirect('?view=home&closewin=true'); + Tools::redirect('?view=home'); } return $last_id; break; @@ -356,6 +356,27 @@ class Poche $this->messages->add('s', _('The tag has been successfully deleted')); Tools::redirect(); break; + + case 'reload_article' : + Tools::logm('reload article'); + $id = $_GET['id']; + $entry = $this->store->retrieveOneById($id, $this->user->getId()); + Tools::logm('reload url ' . $entry['url']); + $url = new Url(base64_encode($entry['url'])); + $this->action('add', $url); + break; + + /* For some unknown reason I can't get displayView() to work here (it redirects to home view afterwards). So here's a dirty fix which redirects directly to URL */ + case 'random': + $id = 0; + while ($this->store->retrieveOneById($id,$this->user->getId()) == null) { + $count = $this->store->getEntriesByViewCount($view, $this->user->getId()); + $id = rand(1,$count); + } + Tools::logm('get a random article'); + Tools::redirect('?view=view&id=' . $id); + //$this->displayView('view', $id); + break; default: break; } @@ -738,17 +759,23 @@ class Poche $purifier = $this->_getPurifier(); foreach($items as $item) { $url = new Url(base64_encode($item['url'])); - Tools::logm('Fetching article ' . $item['id']); - $content = Tools::getPageContent($url); - $title = (($content['rss']['channel']['item']['title'] != '') ? $content['rss']['channel']['item']['title'] : _('Untitled')); - $body = (($content['rss']['channel']['item']['description'] != '') ? $content['rss']['channel']['item']['description'] : _('Undefined')); - - // clean content to prevent xss attack - - $title = $purifier->purify($title); - $body = $purifier->purify($body); - $this->store->updateContentAndTitle($item['id'], $title, $body, $this->user->getId()); - Tools::logm('Article ' . $item['id'] . ' updated.'); + if( $url->isCorrect() ) + { + Tools::logm('Fetching article ' . $item['id']); + $content = Tools::getPageContent($url); + $title = (($content['rss']['channel']['item']['title'] != '') ? $content['rss']['channel']['item']['title'] : _('Untitled')); + $body = (($content['rss']['channel']['item']['description'] != '') ? $content['rss']['channel']['item']['description'] : _('Undefined')); + + // clean content to prevent xss attack + + $title = $purifier->purify($title); + $body = $purifier->purify($body); + $this->store->updateContentAndTitle($item['id'], $title, $body, $this->user->getId()); + Tools::logm('Article ' . $item['id'] . ' updated.'); + } else + { + Tools::logm('Unvalid URL (' . $item['url'] .') to fetch for article ' . $item['id']); + } } } } diff --git a/inc/poche/Routing.class.php b/inc/poche/Routing.class.php index b8cab0ec..82ff20d6 100755 --- a/inc/poche/Routing.class.php +++ b/inc/poche/Routing.class.php @@ -33,6 +33,7 @@ class Routing $this->view = Tools::checkVar('view', 'home'); $this->action = Tools::checkVar('action'); $this->id = Tools::checkVar('id'); + $this->autoclose = Tools::checkVar('autoclose',FALSE); $_SESSION['sort'] = Tools::checkVar('sort', 'id'); $this->url = new Url((isset ($_GET['url'])) ? $_GET['url'] : ''); } @@ -64,7 +65,7 @@ class Routing $tplVars = array(); if (\Session::isLogged()) { - $this->wallabag->action($this->action, $this->url, $this->id); + $this->wallabag->action($this->action, $this->url, $this->id, FALSE, $this->autoclose); $tplFile = Tools::getTplFile($this->view); $tplVars = array_merge($this->vars, $this->wallabag->displayView($this->view, $this->id)); } elseif(isset($_SERVER['PHP_AUTH_USER'])) { diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index d31939a1..55831571 100644 --- a/inc/poche/WallabagEBooks.class.php +++ b/inc/poche/WallabagEBooks.class.php @@ -202,6 +202,9 @@ class WallabagMobi extends WallabagEBooks } $mobi->setContentProvider($content); + // the browser inside Kindle Devices doesn't likes special caracters either, we limit to A-z/0-9 + $this->bookFileName = preg_replace('/[^A-Za-z0-9\-]/', '', $this->bookFileName); + // we offer file to download $mobi->download($this->bookFileName.'.mobi'); Tools::logm('Mobi file produced'); diff --git a/inc/poche/config.inc.default.php b/inc/poche/config.inc.default.php index a159e713..91b50c24 100755 --- a/inc/poche/config.inc.default.php +++ b/inc/poche/config.inc.default.php @@ -44,6 +44,7 @@ @define ('SHARE_MAIL', TRUE); @define ('SHARE_SHAARLI', FALSE); @define ('SHAARLI_URL', 'http://myshaarliurl.com'); +@define ('SHARE_EVERNOTE', FALSE); @define ('SHARE_DIASPORA', FALSE); @define ('DIASPORA_URL', 'http://diasporapod.com'); # Don't add a / at the end @define ('FLATTR', TRUE); @@ -62,6 +63,7 @@ @define ('SHOW_PRINTLINK', '1'); // display or not percent of read in article view. Affects only default theme. @define ('SHOW_READPERCENT', '1'); +@define ('RELOAD_ARTICLE', TRUE); @define ('ABS_PATH', 'assets/'); @define ('DEFAULT_THEME', 'baggy'); diff --git a/install/index.php b/install/index.php index ec504160..46638f8f 100755 --- a/install/index.php +++ b/install/index.php @@ -11,18 +11,9 @@ $errors = array(); $successes = array(); -/* Function taken from at http://php.net/manual/en/function.rmdir.php#110489 - * Idea : nbari at dalmp dot com - * Rights unknown - * Here in case of .gitignore files - */ -function delTree($dir) { - $files = array_diff(scandir($dir), array('.','..')); - foreach ($files as $file) { - (is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file"); - } - return rmdir($dir); - } +$final = false; + +require_once('install_functions.php'); if (isset($_GET['clean'])) { if (is_dir('install')){ @@ -58,136 +49,116 @@ if (isset($_POST['download'])) { else if (isset($_POST['install'])) { if (!is_dir('vendor')) { $errors[] = 'You must install twig before.'; - } - else { + } else { $continue = true; - // Create config.inc.php - if (!copy('inc/poche/config.inc.default.php', 'inc/poche/config.inc.php')) { - $errors[] = 'Installation aborted, impossible to create inc/poche/config.inc.php file. Maybe you don\'t have write access to create it.'; - $continue = false; - } - else { - function generate_salt() { - mt_srand(microtime(true)*100000 + memory_get_usage(true)); - return md5(uniqid(mt_rand(), true)); - } - - $content = file_get_contents('inc/poche/config.inc.php'); - $salt = generate_salt(); - $content = str_replace("define ('SALT', '');", "define ('SALT', '".$salt."');", $content); - file_put_contents('inc/poche/config.inc.php', $content); - } + $salt = generate_salt(); + $content = file_get_contents('inc/poche/config.inc.default.php'); - if ($continue) { + // User informations + $username = trim($_POST['username']); + $password = trim($_POST['password']); + $salted_password = sha1($password . $username . $salt); - // User informations - $username = trim($_POST['username']); - $password = trim($_POST['password']); - $salted_password = sha1($password . $username . $salt); + // Database informations + $moreQueries = array(); - // Database informations - $moreQueries = array(); - if ($_POST['db_engine'] == 'sqlite') { - if (!copy('install/poche.sqlite', 'db/poche.sqlite')) { - $errors[] = 'Impossible to create inc/poche/config.inc.php file.'; - $continue = false; - } - else { - $db_path = 'sqlite:' . realpath('') . '/db/poche.sqlite'; - $handle = new PDO($db_path); - $sql_structure = ""; - } + if ($_POST['db_engine'] == 'sqlite') { + if (!copy('install/poche.sqlite', 'db/poche.sqlite')) { + $errors[] = 'Impossible to create the SQLite database file.'; } else { - $content = file_get_contents('inc/poche/config.inc.php'); + $db_path = 'sqlite:' . realpath('') . '/db/poche.sqlite'; + $handle = new PDO($db_path); + $handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $sql_structure = ""; + } + } else { + // MySQL and Postgre + try { - if ($_POST['db_engine'] == 'mysql') { + if ($_POST['db_engine'] == 'mysql') { + if (isset($_POST['mysql_utf8_mb4'])) { + //with UTF8-MB4 $db_path = 'mysql:host=' . $_POST['mysql_server'] . ';dbname=' . $_POST['mysql_database'] . ';charset=utf8mb4'; - $content = str_replace("define ('STORAGE_SERVER', 'localhost');", "define ('STORAGE_SERVER', '".$_POST['mysql_server']."');", $content); - $content = str_replace("define ('STORAGE_DB', 'poche');", "define ('STORAGE_DB', '".$_POST['mysql_database']."');", $content); - $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['mysql_user']."');", $content); - $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['mysql_password']."');", $content); $handle = new PDO($db_path, $_POST['mysql_user'], $_POST['mysql_password'], array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4', )); + } else { // regular UTF8 + $db_path = 'mysql:host=' . $_POST['mysql_server'] . ';dbname=' . $_POST['mysql_database']; + $handle = new PDO($db_path, $_POST['mysql_user'], $_POST['mysql_password']); + } + $content = str_replace("define ('STORAGE_SERVER', 'localhost');", "define ('STORAGE_SERVER', '".$_POST['mysql_server']."');", $content); + $content = str_replace("define ('STORAGE_DB', 'poche');", "define ('STORAGE_DB', '".$_POST['mysql_database']."');", $content); + $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['mysql_user']."');", $content); + $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['mysql_password']."');", $content); - $moreQueries[] = "INSERT INTO `entries` (`id`, `title`, `url`, `is_read`, `is_fav`, `content`, `user_id`) VALUES + $moreQueries[] = "INSERT INTO `entries` (`id`, `title`, `url`, `is_read`, `is_fav`, `content`, `user_id`) VALUES (1, 'Framabag, un nouveau service libre et gratuit', 'http://www.framablog.org/index.php/post/2014/02/05/Framabag-service-libre-gratuit-interview-developpeur', 0, 0, 0x0a3c68323e556e6520696e74657276696577206465204e69636f6c61732c20736f6e2064c3a976656c6f70706575722e3c2f68323e0a3c703e3c656d3e496c206e6520766f757320612073c3bb72656d656e742070617320c3a96368617070c3a920717565206e6f74726520636f6e736f6d6d6174696f6e20646520636f6e74656e75732064752057656220657374207465727269626c656d656e74206368726f6e6f706861676520657420706172746963756c69c3a872656d656e7420667275737472616e746520746f757420c3a0206c6120666f6973c2a03a206e6f6e207365756c656d656e74206e6f757320706173736f6e732062656175636f7570202874726f70c2a03f292064652074656d707320656e206c69676e6520c3a0206578706c6f726572206c6573206d696e6573206175726966c3a8726573206465206c6120746f696c652c20792064c3a974656374616e742070c3a970697465732065742066696c6f6e732c206d616973206e6f757320736f6d6d657320737572746f757420636f6e7374616d6d656e7420656e206d616e7175652e204dc3aa6d65207369206e6f7573206e6520736f6d6d6573207061732064616e73206c65207a617070696e67206672c3a96ec3a9746971756520736920666163696c656d656e742064c3a96e6f6e63c3a920706172206c657320646f637465732070737963686f6c6f677565732071756920706f6e74696669656e7420737572206c65732064616e67657273206475206e756dc3a9726971756520706f7572206c6573206a65756e65732063657276656c6c65732c20696c206e6f7573207669656e7420736f7576656e74206c6520676fc3bb7420616d6572206465206ce28099696e6163686576c3a9c2a03a20706173206c652074656d707320646520746f7574206c69726520283c6120687265663d22687474703a2f2f66722e77696b74696f6e6172792e6f72672f77696b692f544c4452223e544c3b44523c2f613e2065737420646576656e75206c6520636c696e2064e28099c593696c206d692d6669677565206d692d72616973696e2064e28099756e652067c3a96ec3a9726174696f6e206465206c65637465757273207072657373c3a973292c207061732074726f70206c652074656d70732064652072c3a9666cc3a963686972206e6f6e20706c75732068c3a96c61732c20706173206c652074656d707320646520737569767265206c6120726962616d62656c6c65206465206c69656e73206173736f6369c3a97320c3a020756e2061727469636c65e280a63c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e506f7572206e6f757320646f6e6e657220626f6e6e6520636f6e736369656e63652c206e6f75732072616e67656f6e73207363727570756c657573656d656e7420756e206d61727175652d7061676520646520706c75732064616e7320756e20736f75732d646f73736965722071756920656e20636f6d706f7274652064c3a96ac3a0203235362c206e6f7573206e6f746f6e7320756e20c3a96cc3a96d656e7420646520706c75732064616e73206c6120746f756a6f757273207269646963756c656d656e74206c6f6e67756520746f75646f756c697374652c2062726566206e6f75732072656d6574746f6e7320c3a020706c757320746172642c2063e280996573742dc3a02d64697265206c6520706c757320736f7576656e742061757820696e74726f757661626c65732063616c656e6465732067726563717565732c206c6520736f696e206465206c69726520767261696d656e7420756e2061727469636c65206a7567c3a920696e74c3a972657373616e742c20646520726567617264657220756e6520766964c3a96f207369676e616cc3a96520706172206c65732072c3a97a6f73736f63696f732c206465206c69726520756e20636861706974726520656e746965722064e28099756e206f75767261676520646973706f6e69626c6520656e206c69676e65e280a63c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e416c6f7273206269656e2073c3bb722c20c3a02064c3a966617574206465206e6f757320646f6e6e657220746f7574206c652074656d70732071756920736572616974206ec3a963657373616972652c2064657320736f6c7574696f6e73206578697374656e7420706f7572206e6f7573207065726d657474726520646520c2abc2a06c69726520706c75732074617264c2a0c2bb20656e20736175766567617264616e74206c65207072c3a9636965757820706f6c6c656e206465206e6f7320627574696e61676573206465207369746520656e20736974652c2065742064e28099656e20666169726520756c74c3a97269657572656d656e7420766f747265206d69656cc2a03b2063e280996573742062656c20657420626f6e206d616973206c65732072756368657320736f6e7420756e207065752064697374616e7465732c20c3a7612073e28099617070656c6c65206c6520636c6f756420286e6f7320616d69732074656368696573206de280996f6e74206269656e206578706c697175c3a9206d616973206ae280996169207365756c656d656e7420636f6d70726973207175652064657320747275637320c3a0206d6f6920736f6e742073757220646573206d616368696e6573206c6f696e7461696e65732c20c3a761206e65206d652072617373757265207061732074726f702920657420656c6c657320736f6e7420736f7576656e742070726f707269c3a97461697265732c206e65206c61697373616e7420656e7472657220717565206c6573203c733e7574696c69736174657572733c2f733e20636f6e736f6d6d61746575727320706179616e74732065742071756920636f6e73656e74656e7420c3a0206c6575727320636f6e646974696f6e732e2053616e7320636f6d70746572207175652064652067726f7320626f7572646f6e73207669656e6e656e742070726f666974657220706c7573206f75206d6f696e73206469736372c3a874656d656e7420646520746f757465732063657320747261636573206465206e6f75732d6dc3aa6d657320717569207065726d657474656e74206465206d6f6ec3a97469736572206e6f7472652070726f66696cc2a03a207369206a6520636f6c6c65637465207375722063657320736572766963657320286e65206c6573206e6f6d6d6f6e73207061732c206a757374656d656e742920756e652073c3a97269652064e2809961727469636c657320737572206ce280996964c3a965206465204e6174757265206368657a2044696465726f742c206a6520726563657672616920646976657273657320736f6c6c696369746174696f6e7320706f757220646576656e697220636c69656e74206465206c6120626f757469717565204e61747572652026616d703b2044c3a9636f75766572746520647520626f756c65766172642044696465726f742e2045742073692064e280996176656e74757265206c65732070726f6772616d6d6573206465206c61204e5341206d6f756c696e656e7420737572206c6520736572766963652c206a6520736572616920706575742dc3aa74726520756e206a6f75722064616e7320756e65206c6973746520646573206d696c6974616e7473206e61747572697374657320696e64c3a973697261626c657320737572206c657320766f6c73206465206c612050616e416d20286a65206e65207361697320706c75732074726f70207369206a6520706c616973616e7465206cc3a02c2066696e616c656d656e74e280a6293c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4c6120626f6e6e65206964c3a965c2a03a20c2abc2a0736520636f6e7374697475657220756e2072c3a9736572766f697220646520646f63756d656e74732073c3a96c656374696f6e6ec3a97320c3a020706172636f7572697220706c75732074617264c2a0c2bb20617070656c61697420646f6e6320756e6520617574726520626f6e6e65206964c3a9652c2063656c6c652064e2809961766f6972206c6520636f6e7472c3b46c652064652063652072c3a9736572766f69722c206465206e6f74726520636f6c6c656374696f6e20706572736f6e6e656c6c652e2043e28099657374204e69636f6c6173204cc59375696c6c65742c2063692d646573736f757320696e74657276696577c3a92c207175692073e28099792065737420636f6c6cc3a9206176656320756e652062656c6c65206170706c69636174696f6e20617070656cc3a96520657568e280a6206f75692c20617070656cc3a9652057616c6c616261672e3c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4672616d61736f667420736f757469656e742064e28099617574616e7420706c757320736f6e20696e6974696174697665207175e280993c6120687265663d22687474703a2f2f7777772e6672616d61626c6f672e6f72672f696e6465782e7068702f706f73742f323031342f30312f33312f4765656b74696f6e6e6572642d57616c6c61626167223e6f6e206c7569206120636865726368c3a920646573206d6973c3a872657320706f757220756e6520686973746f697265206465206e6f6d3c2f613e206574207175e28099696c2065737420706f737369626c652064e28099696e7374616c6c657220736f692d6dc3aa6d6520756e6520636f7069652064652057616c6c616261672073757220736f6e2070726f70726520736974652e3c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4c6520706574697420706c7573206465204672616d61736f66742c2072c3a97365617520746f756a6f7572732064c3a973697265757820646520766f75732070726f706f7365722064657320616c7465726e617469766573206c6962c3a972617472696365732c2063e2809965737420646520766f75732070726f706f736572202873757220696e736372697074696f6e207072c3a9616c61626c652920756e20616363c3a873206175204672616d616261672c2061757472656d656e742064697420766f7472652057616c6c616261672073757220756e2073657276657572204672616d612a2061766563206e6f74726520676172616e74696520646520636f6e666964656e7469616c6974c3a92e20436f6d6d6520706f7572206c65204672616d616e6577732c206e6f757320766f7573206163637565696c6c6f6e7320766f6c6f6e74696572732064616e73206c61206c696d697465206465206e6f732063617061636974c3a9732c20656e20766f757320696e766974616e7420c3a020766f7573206c616e6365722064616e7320766f747265206175746f2d68c3a962657267656d656e742064652057616c6c616261672e3c6272202f3e4365742061727469636c65206573742074726f70206c6f6e67c2a03f204d657474657a2d6c652064616e73203c6120687265663d22687474703a2f2f7777772e6672616d616261672e6f72672f696e6465782e706870223e766f747265204672616d616261673c2f613e20657420686f702e3c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4672616d61626c6f67c2a03a2053616c7574204e69636f6c6173e280a62054752070657578207465207072c3a973656e74657220627269c3a876656d656e74c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e53616c7574c2a0212044c3a976656c6f70706575722050485020646570756973207175656c7175657320616e6ec3a96573206d61696e74656e616e742028313020616e73292c206ae28099616920766f756c75206d652072656d657474726520c3a0206e697665617520746563686e697175656d656e74207061726c616e742028646570756973203320616e732c206ae28099616920706173206d616c206cc3a26368c3a9206c6520636c6176696572292e20506f7572206d6573206265736f696e7320706572736f732c206ae28099616920646f6e63206372c3a9c3a920756e2070657469742070726f6a657420706f75722072656d706c6163657220756e6520736f6c7574696f6e2070726f707269c3a97461697265206578697374616e74652e2053616e7320617563756e65207072c3a974656e74696f6e2c206ae2809961692068c3a962657267c3a92063652070726f6a6574207375722047697468756220657420636f6d6d652063e28099657374206c61207365756c6520736f6c7574696f6e203c656d3e6f70656e20736f757263653c2f656d3e20646520636520747970652c206c65206e6f6d62726520646520706572736f6e6e657320696e74c3a972657373c3a965732061206175676d656e74c3a920e280a63c2f703e0a3c703e3c656d3e4c6573207574696c6973617465757273206465207365727669636573204672616d61736f6674206e65206c6520736176656e742070617320666f7263c3a96d656e742c206d6169732074752061732064c3a96ac3a020706173206d616c207061727469636970c3a920c3a0206c61204672616d6147616c617869652c206e6f6ec2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e456e2065666665742e204ae28099616920636f6d6d656e63c3a920756e20706c7567696e20706f7572204672616d616e6577732c203c6120687265663d2268747470733a2f2f6769746875622e636f6d2f6e69636f736f6d622f74747273732d70757267652d6163636f756e7473223e74747273732d70757267652d6163636f756e74733c2f613e2c20717569207065726d6574206465206e6574746f796572206c61206261736520646520646f6e6ec3a9657320646520636f6d7074657320706c7573207574696c6973c3a9732e204d616973206365203c656d3e706c7567696e3c2f656d3e2061206265736f696e2064e28099c3aa747265207465726d696ec3a920c3a0203130302520706f757220c3aa74726520696e74c3a96772c3a9206175207365696e206465204672616d616e6577732028657420646f6e632064652054696e792054696e7920525353292c207369207175656c7175e28099756e20736f756861697465206de2809961696465722c20696c206ee2809979206120617563756e20736f7563692e3c6272202f3e4ae28099616920617573736920666169742031206f7520322061707061726974696f6e732064616e73206465732074726164756374696f6e7320706f7572204672616d61626c6f672e205269656e2064e2809965787472616f7264696e616972652c206a65206e652073756973207061732062696c696e6775652c20c3a761206d65207065726d6574206465206de28099656e747261c3ae6e65722e3c2f703e0a3c703e3c656d3e5061726c6f6e73206465207375697465206465206365207175692066c3a2636865c2a03a20746f6e206170706c69636174696f6e2057616c6c616261672c20656c6c652073e28099617070656c6c6169742070617320e2809c506f636865e2809d2c206176616e74c2a03f205475206e6f7573207261636f6e746573206ce28099686973746f697265c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e45756820656e20656666657420e280a62044c3a96ac3a02c20706f757271756f69203c656d3e706f6368653c2f656d3ec2a03f20506172636520717565206ce28099756e206465732074726f697320c2abc2a074c3a96e6f7273c2a0c2bb20737572206c65206d61726368c3a92073e28099617070656c6c65203c656d3e506f636b65743c2f656d3e2e20436f6d6d65206d6f6e206170706c69206ee28099c3a9746169742064657374696ec3a965207175e28099c3a0206d6f6e20757361676520706572736f6e6e656c2061752064c3a9706172742c206a65206e65206d6520737569732070617320746f72747572c3a9206269656e206c6f6e6774656d70732e3c2f703e0a3c703e43657420c3a974c3a92c206f6e2061206661696c6c69206368616e676572206465206e6f6d2c207175616e6420696c2079206120657520646520706c757320656e20706c75732064e280997574696c69736174657572732e2045742070756973206f6e2073e28099657374206469742071756520706f6368652c2063e28099c3a97461697420706173206d616c2c20c3a76120736f6e6e616974206269656e206672616ec3a761697320657420707569732061766563206c6573207175656c717565732064697a61696e65732064e280997574696c69736174657572732c206f6e206e652067c3aa6e657261697420706572736f6e6e652e3c2f703e0a3c703e43e280996573742073616e7320636f6d707465722061766563206c657320736f6369c3a974c3a97320616dc3a972696361696e6573206574206c6575722066c3a2636865757365206d616e696520646520766f756c6f697220656e766f796572206c657572732061766f6361747320c3a020746f757420626f7574206465206368616d702e204c65203233206a616e766965722c206ae280996169207265c3a77520756e20656d61696c206465206c61207061727420647520636162696e65742064e2809961766f6361747320646520506f636b6574206d652064656d616e64616e74206465206368616e676572206c65206e6f6d2c206c65206c6f676f2c206465206e6520706c7573207574696c69736572206c65207465726d6520e2809c726561642d69742d6c61746572e2809d2028c2abc2a06c6973657a206c6520706c75732074617264c2a0c2bb29206574206465206e6520706c757320646972652071756520506f636b6574206ee280996573742070617320677261747569742028746f7574206573742070617274692064e280993c6120687265663d2268747470733a2f2f747769747465722e636f6d2f77616c6c616261676170702f7374617475732f343233373836333635393434323235373932223e756e2074776565743c2f613e206fc3b9206a65207175616c6966696520506f636b657420646520c2abc2a06e6f6e2066726565c2a0c2bb20c3a0207361766f6972206e6f6e206c69627265292e20427265662c206dc3aa6d65207369206a652073656d626c6169732064616e73206d6f6e2064726f69742c206ae280996169207175616e64206dc3aa6d652070726973206c612064c3a9636973696f6e206465206368616e676572206465206e6f6d2065742057616c6c6162616720657374206ec3a92c20737569746520617578203c6120687265663d22687474703a2f2f6672616d61646174652e6f72672f73747564732e7068703f736f6e646167653d6c6c6370366f6a70796339706b6c6861223e64697a61696e65732064652070726f706f736974696f6e73206465206e6f6d207265c3a77565733c2f613e2e2043e2809965737420756e206dc3a96c616e676520656e747265206c652077616c6c61627920286465206c612066616d696c6c6520646573206b616e676f75726f75732c207175692073746f636b656e742064616e73206c65757220706f63686520636520717569206c65757220657374206368657229206574203c656d3e6261673c2f656d3e20286c6573207465726d657320736163202f207361636f636865202f2062657361636520736f6e7420c3a96e6f726dc3a96d656e7420726576656e7573292e204d616973206d61696e74656e616e742c206f6e207661206465206ce280996176616e742c20706c75732064652074656d707320c3a020706572647265206176656320c3a7612c206f6e2061206475207061696e20737572206c6120706c616e6368652e3c6272202f3e3c696d67207372633d22687474703a2f2f7777772e6672616d61626c6f672e6f72672f7075626c69632f5f696d672f6672616d61626c6f672f77616c6c6162795f626162792e6a70672220616c743d2277616c6c61627920617665632062c3a962c3a92064616e7320736120706f6368652220636c6173733d22633122207469746c653d2277616c6c61627920617665632062c3a962c3a92064616e7320736120706f63686522202f3e206372c3a96469742070686f746f203c6120687265663d22687474703a2f2f7777772e666c69636b722e636f6d2f70686f746f732f3236373832383634404e30302f353032373230323233342f696e2f70686f746f6c6973742d3845654a35412d6831544c36762d4e454c38312d636e4e6b536f2d39594d3174762d374b636736622d387a70416f612d61315a4c4d4e2d39594d3339722d3768355341442d38456548664c2d3845654677752d647456776e4d2d38756f4d45312d4a457a58652d47713471792d3932564a50522d43786531762d38483344324a2d61315a464e732d395937324b362d38456547784c2d354c353346782d354e6b454e732d3555384354592d354e6b7373682d6e6b6176462d3943726777502d3773644341612d647566324b682d685a65707a792d685a645531652d685a656f66462d685a656b44672d685a656741592d685a654d5a6e2d6a61486741662d3850383744322d354e677152762d6154343851422d685a645634592d685a654336342d45526770732d3556594747642d3556594a42312d354e6b72466b2d364a786837682d3768395075512d4552664d782d6831553169682d683155534278223e57696c6c69616d2057617262793c2f613e20717569206175746f72697365206578706c69636974656d656e7420746f7574652072c3a97574696c69736174696f6e2e3c2f703e0a3c703e3c656d3e426f6e2c20616c6f7273206578706c697175652d6d6f6920636520717565206a65207661697320706f75766f69722066616972652061766563204672616d61626167e280a63c6272202f3e3c2f656d3e3c2f703e0a3c703e416c6f7273204672616d616261672c20c3a761207465207065726d6574206465207465206372c3a9657220756e20636f6d7074652067726174756974656d656e74206574206c696272656d656e7420706f757220706f75766f6972207574696c697365722057616c6c616261672e205365756c6520746f6e206164726573736520656d61696c20657374206ec3a963657373616972652c206f6e207365206368617267652064e28099696e7374616c6c6572206574206465206d657474726520c3a0206a6f75722057616c6c6162616720706f757220746f692e20547520706575782064e2809961696c6c657572732070726f6669746572203c6120687265663d22687474703a2f2f7777772e6672616d61736f66742e6e65742f23746f705067436c6f7564223e64e280996175747265732073657276696365732070726f706f73c3a97320706172204672616d61736f6674206963693c2f613e2e3c2f703e0a3c703ec380206365206a6f75722c20696c207920612038333420636f6d70746573206372c3a9c3a97320737572204672616d616261672e3c2f703e0a3c703e3c656d3e566f7573206176657a20767261696d656e7420636f6ec3a7752063652073657276696365206166696e207175e280996f6e20707569737365206ce280997574696c69736572206176656320756e206d6178696d756d2064e280996f7574696c732c206e6f6ec2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e4175746f7572206465206ce280996170706c69636174696f6e207765622c20696c206578697374652064c3a96ac3a020646573206170706c69636174696f6e7320706f757220736d61727470686f6e65732028416e64726f69642065742057696e646f77732050686f6e65292c2064657320657874656e73696f6e732046697265666f7820657420476f6f676c65204368726f6d652e3c2f703e0a3c703e436f6d6d652057616c6c6162616720706f7373c3a864652064657320666c7578205253532c2063e2809965737420666163696c65206465206c697265206c65732061727469636c657320736175766567617264c3a97320737572207361206c697365757365202873692063656c6c652d6369207065726d6574206465206c6972652064657320666c757820525353292e2043616c696272652028c2abc2a06c6f67696369656c206465206c6563747572652c2064652067657374696f6e206465206269626c696f7468c3a87175657320657420646520636f6e76657273696f6e206465206669636869657273206e756dc3a972697175657320646520747970652065626f6f6b206f75206c6976726520c3a96c656374726f6e69717565c2a0c2bb2c6e6f757320646974207562756e74752d66722e6f72672920696e74c3a867726520646570756973207175656c717565732073656d61696e6573206d61696e74656e616e74206c6120706f73736962696c6974c3a92064652072c3a9637570c3a9726572206c65732061727469636c6573206e6f6e206c75732c20707261746971756520706f757220666169726520756e20666963686965722065507562c2a0213c2f703e0a3c703e44e28099617574726573206170706c69636174696f6e7320776562207065726d657474656e74206ce28099696e74c3a967726174696f6e20617665632057616c6c61626167202846726573685253532c204c6565642065742054696e792054696e792052535320706f7572206c657320616772c3a96761746575727320646520666c7578292e204ce2809941504920717569207365726120646973706f6e69626c652064616e73206c612070726f636861696e652076657273696f6e2064652057616c6c61626167207065726d657474726120656e636f726520706c75732064e28099696e74657261637469766974c3a92e3c2f703e0a3c703e3c656d3e5920612d742d696c20756e206d6f6465206465206c65637475726520686f7273206c69676e65206f75206573742d6365207175652063e28099657374207072c3a9767520706f7572206c65732070726f636861696e65732076657273696f6e73c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e496c2079206120756e2070736575646f206d6f646520686f7273206c69676e652c20646973706f6e69626c652061766563206ce280996170706c69636174696f6e20416e64726f69642e204f6e20706575742072c3a9637570c3a9726572202876696120756e20666c75782052535329206c65732061727469636c6573206e6f6e206c757320717565206ce280996f6e206120736175766567617264c3a9732e20556e6520666f69732064c3a9636f6e6e656374c3a92c206f6e207065757420636f6e74696e75657220c3a0206c6972652073757220736f6e20736d61727470686f6e65206f75207361207461626c65747465206c65732061727469636c65732e2050617220636f6e7472652c20696c206d616e7175652064657320666f6e6374696f6e6e616c6974c3a973c2a03a207175616e64207475206d61727175657320756e2061727469636c6520636f6d6d65206c752c206365206ee28099657374207061732073796e6368726f6e6973c3a92061766563206c612076657273696f6e207765622064652057616c6c616261672e204ae28099657370c3a8726520717565206a652073756973207072657371756520636c6169722064616e73206d6573206578706c69636174696f6e732e3c2f703e0a3c703e506f7572206c612076322c20717569206573742064c3a96ac3a020656e20636f7572732064652064c3a976656c6f7070656d656e742c206fc3b9206a652073756973206269656e20616964c3a9207061722056696e63656e74204a6f757373652c206f6e2061757261206c6120706f73736962696c6974c3a92064e2809961766f697220756e2076726169206d6f646520686f7273206c69676e652e3c2f703e0a3c703e3c656d3e416c6f7273207369206f6e2076657574206169646572202f2070617274696369706572202f20747269666f75696c6c6572206c6520636f6465202f20766f757320656e766f79657220646573207265746f7572732c206f6e206661697420636f6d6d656e74c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e4f6e207065757420616964657220646520706c75736965757273206661c3a76f6e73c2a03a3c2f703e0a3c756c3e3c6c693e7574696c697365722077616c6c61626167206574206e6f75732072656d6f6e746572206c65732070726f626cc3a86d65732072656e636f6e7472c3a973c2a03b3c2f6c693e0a3c6c693e706172746963697065722061752064c3a976656c6f7070656d656e74206465206ce280996170706c69636174696f6e2068747470733a2f2f6769746875622e636f6d2f77616c6c616261672f77616c6c616261672053692053696c6578202f2053796d666f6e7932202f2048544d4c35202f206574632e207465207061726c656e742c206ee2809968c3a97369746520706173c2a0213c2f6c693e0a3c6c693e636f6d6d6520746f75742070726f6a65742c206c652067726f7320706f696e74206e6f697220657374206c65206d616e71756520646520646f63756d656e746174696f6e2e203c6120687265663d22687474703a2f2f646f632e77616c6c616261672e6f7267223e456c6c652065737420646973706f206963693c2f613e206d61697320696c206d616e71756520706c65696e2064652063686f73657320657420746f7574206ee280996573742070617320c3a0206a6f7572c2a03b3c2f6c693e0a3c6c693e7061726c65722064652057616c6c61626167206175746f757220646520766f7573c2a03b3c2f6c693e0a3c6c693e696c20657869737465203c6120687265663d2268747470733a2f2f666c617474722e636f6d2f7468696e672f313236353438302f706f6368652d612d726561642d69742d6c617465722d6f70656e2d736f757263652d73797374656d223e756e20636f6d70746520466c617474723c2f613e2e3c2f6c693e0a3c2f756c3e3c703e3c656d3e4c65206d6f74206465206c612066696ee280a63f3c6272202f3e3c2f656d3e3c2f703e0a3c703e4d6572636920c3a0204672616d61736f66742064e280996163637565696c6c697220657420646520736f7574656e69722057616c6c61626167c2a0213c2f703e0a3c703e4c6120726f7574652065737420656e636f7265206269656e206c6f6e67756520706f7572206e6520706c7573207574696c6973657220646520736f6c7574696f6e732070726f707269c3a97461697265732c206d616973206f6e2064657672616974207920617272697665722c206e6f6ec2a03f3c2f703e0a3c703e3c696d67207372633d22687474703a2f2f7777772e6672616d61626c6f672e6f72672f7075626c69632f5f696d672f6672616d61626c6f672f706c65696e4c6573506f636865732e706e672220616c743d226672616d61736f667420706c65696e206c657320706f636865732220636c6173733d22633122207469746c653d226672616d61736f667420706c65696e206c657320706f6368657322202f3e3c6272202f3e3c6120687265663d22687474703a2f2f6672616d616c61622e6f72672f676b6e642d63726561746f722f223e6861636b657a2047c3a967c3a9c2a0213c2f613e3c2f703e0a, 1), (2, 'wallabag/wallabag', 'https://github.com/wallabag/wallabag', 0, 0, 0x3c7370616e20636c6173733d226e616d65223e524541444d452e6d643c2f7370616e3e3c703e77616c6c6162616720697320612073656c6620686f737461626c65206170706c69636174696f6e20616c6c6f77696e6720796f7520746f206e6f74206d69737320616e7920636f6e74656e7420616e796d6f72652e20436c69636b2c20736176652c2072656164206974207768656e20796f752063616e2e20497420657874726163747320636f6e74656e7420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c703e4d6f726520696e666f726d6174696f6e73206f6e206f757220776562736974653a203c6120687265663d22687474703a2f2f77616c6c616261672e6f7267223e77616c6c616261672e6f72673c2f613e3c2f703e0a3c68323e3c6120636c6173733d22616e63686f722220687265663d2268747470733a2f2f6769746875622e636f6d2f77616c6c616261672f77616c6c61626167236c6963656e7365223e3c2f613e4c6963656e73653c2f68323e0a3c703e436f7079726967687420c2a920323031302d32303134204e69636f6c6173204cc59375696c6c6574203c6120687265663d226d61696c746f3a6e69636f6c6173406c6f6575696c6c65742e6f7267223e6e69636f6c6173406c6f6575696c6c65742e6f72673c2f613e205468697320776f726b20697320667265652e20596f752063616e2072656469737472696275746520697420616e642f6f72206d6f6469667920697420756e64657220746865207465726d73206f662074686520446f205768617420546865204675636b20596f752057616e7420546f205075626c6963204c6963656e73652c2056657273696f6e20322c206173207075626c69736865642062792053616d20486f63657661722e205365652074686520434f5059494e472066696c6520666f72206d6f72652064657461696c732e3c2f703e0a, 1), (3, 'a self hostable application for saving web pages | wallabag', 'https://www.wallabag.org/', 0, 1, 0x0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e77616c6c616261672028666f726d65726c7920706f636865292069732061203c7374726f6e673e73656c6620686f737461626c65206170706c69636174696f6e20666f7220736176696e67207765622070616765733c2f7374726f6e673e2e20556e6c696b65206f746865722073657276696365732cc2a077616c6c6162616720697320667265652028617320696e2066726565646f6d2920616e64206f70656e20736f757263652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e576974682074686973206170706c69636174696f6e20796f752077696c6c206e6f74206d69737320636f6e74656e7420616e796d6f72652e203c7374726f6e673e436c69636b2c20736176652c2072656164206974207768656e20796f752077616e743c2f7374726f6e673e2e2049742073617665732074686520636f6e74656e7420796f752073656c65637420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3620636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c68323e486f7720697420776f726b733c2f68323e0a3c703e5468616e6b7320746f2074686520626f6f6b6d61726b6c6574206f72203c61207469746c653d22446f776e6c6f6164732220687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f646f776e6c6f6164732f223e74686972642d7061727479206170706c69636174696f6e733c2f613e2c20796f75207361766520616e2061727469636c6520696e20796f7572c2a077616c6c6162616720746f2072656164206974206c617465722e205468656e2c207768656e20796f75206f70656e20796f75722077616c6c616261672c203c7374726f6e673e796f752063616e20636f6d666f727461626c79207265616420796f75722061727469636c65733c2f7374726f6e673e2e3c2f703e0a3c68323e486f7720746f207573652077616c6c616261673c2f68323e0a3c703e5468657265206172652074776f207761797320746f207573652077616c6c616261673a20796f752063616e203c6120687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f6672657175656e746c792d61736b65642d7175657374696f6e732f23486f775f63616e5f495f696e7374616c6c5f77616c6c616261675f616e645f776861745f6172655f7468655f726571756972656d656e7473223e696e7374616c6c2069743c2f613ec2a06f6e20796f75722077656220736572766572206f7220796f752063616ec2a03c6120687265663d22687474703a2f2f6170702e696e746865706f6368652e636f6d223e63726561746520616e206163636f756e743c2f613ec2a06174204672616d616261672028776520696e7374616c6c20616e642075706772616465c2a077616c6c6162616720666f7220796f75292e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a, 1);"; - $moreQueries[] = "INSERT INTO `tags` (`id`, `value`) VALUES (1, 'opensource');"; - $moreQueries[] = "INSERT INTO `tags_entries` (`id`, `entry_id`, `tag_id`) VALUES (1, 2, 1);"; + $moreQueries[] = "INSERT INTO `tags` (`id`, `value`) VALUES (1, 'opensource');"; + $moreQueries[] = "INSERT INTO `tags_entries` (`id`, `entry_id`, `tag_id`) VALUES (1, 2, 1);"; - $sql_structure = file_get_contents('install/mysql.sql'); - } - else if ($_POST['db_engine'] == 'postgres') { - $db_path = 'pgsql:host=' . $_POST['pg_server'] . ';dbname=' . $_POST['pg_database']; - $content = str_replace("define ('STORAGE_SERVER', 'localhost');", "define ('STORAGE_SERVER', '".$_POST['pg_server']."');", $content); - $content = str_replace("define ('STORAGE_DB', 'poche');", "define ('STORAGE_DB', '".$_POST['pg_database']."');", $content); - $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['pg_user']."');", $content); - $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['pg_password']."');", $content); - $handle = new PDO($db_path, $_POST['pg_user'], $_POST['pg_password']); - - $moreQueries[] = "INSERT INTO entries (title, url, is_read, is_fav, content, user_id) VALUES + $sql_structure = file_get_contents('install/mysql.sql'); + } + else if ($_POST['db_engine'] == 'postgres') { + $db_path = 'pgsql:host=' . $_POST['pg_server'] . ';dbname=' . $_POST['pg_database']; + $content = str_replace("define ('STORAGE_SERVER', 'localhost');", "define ('STORAGE_SERVER', '".$_POST['pg_server']."');", $content); + $content = str_replace("define ('STORAGE_DB', 'poche');", "define ('STORAGE_DB', '".$_POST['pg_database']."');", $content); + $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['pg_user']."');", $content); + $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['pg_password']."');", $content); + $handle = new PDO($db_path, $_POST['pg_user'], $_POST['pg_password']); + + $moreQueries[] = "INSERT INTO entries (title, url, is_read, is_fav, content, user_id) VALUES ('Framabag, un nouveau service libre et gratuit', 'http://www.framablog.org/index.php/post/2014/02/05/Framabag-service-libre-gratuit-interview-developpeur', false, false, convert_from(decode('3c68323e556e6520696e74657276696577206465204e69636f6c61732c20736f6e2064c3a976656c6f70706575722e3c2f68323e0a3c703e3c656d3e496c206e6520766f757320612073c3bb72656d656e742070617320c3a96368617070c3a920717565206e6f74726520636f6e736f6d6d6174696f6e20646520636f6e74656e75732064752057656220657374207465727269626c656d656e74206368726f6e6f706861676520657420706172746963756c69c3a872656d656e7420667275737472616e746520746f757420c3a0206c6120666f6973c2a03a206e6f6e207365756c656d656e74206e6f757320706173736f6e732062656175636f7570202874726f70c2a03f292064652074656d707320656e206c69676e6520c3a0206578706c6f726572206c6573206d696e6573206175726966c3a8726573206465206c6120746f696c652c20792064c3a974656374616e742070c3a970697465732065742066696c6f6e732c206d616973206e6f757320736f6d6d657320737572746f757420636f6e7374616d6d656e7420656e206d616e7175652e204dc3aa6d65207369206e6f7573206e6520736f6d6d6573207061732064616e73206c65207a617070696e67206672c3a96ec3a9746971756520736920666163696c656d656e742064c3a96e6f6e63c3a920706172206c657320646f637465732070737963686f6c6f677565732071756920706f6e74696669656e7420737572206c65732064616e67657273206475206e756dc3a9726971756520706f7572206c6573206a65756e65732063657276656c6c65732c20696c206e6f7573207669656e7420736f7576656e74206c6520676fc3bb7420616d6572206465206ce28099696e6163686576c3a9c2a03a20706173206c652074656d707320646520746f7574206c69726520283c6120687265663d22687474703a2f2f66722e77696b74696f6e6172792e6f72672f77696b692f544c4452223e544c3b44523c2f613e2065737420646576656e75206c6520636c696e2064e28099c593696c206d692d6669677565206d692d72616973696e2064e28099756e652067c3a96ec3a9726174696f6e206465206c65637465757273207072657373c3a973292c207061732074726f70206c652074656d70732064652072c3a9666cc3a963686972206e6f6e20706c75732068c3a96c61732c20706173206c652074656d707320646520737569767265206c6120726962616d62656c6c65206465206c69656e73206173736f6369c3a97320c3a020756e2061727469636c65e280a63c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e506f7572206e6f757320646f6e6e657220626f6e6e6520636f6e736369656e63652c206e6f75732072616e67656f6e73207363727570756c657573656d656e7420756e206d61727175652d7061676520646520706c75732064616e7320756e20736f75732d646f73736965722071756920656e20636f6d706f7274652064c3a96ac3a0203235362c206e6f7573206e6f746f6e7320756e20c3a96cc3a96d656e7420646520706c75732064616e73206c6120746f756a6f757273207269646963756c656d656e74206c6f6e67756520746f75646f756c697374652c2062726566206e6f75732072656d6574746f6e7320c3a020706c757320746172642c2063e280996573742dc3a02d64697265206c6520706c757320736f7576656e742061757820696e74726f757661626c65732063616c656e6465732067726563717565732c206c6520736f696e206465206c69726520767261696d656e7420756e2061727469636c65206a7567c3a920696e74c3a972657373616e742c20646520726567617264657220756e6520766964c3a96f207369676e616cc3a96520706172206c65732072c3a97a6f73736f63696f732c206465206c69726520756e20636861706974726520656e746965722064e28099756e206f75767261676520646973706f6e69626c6520656e206c69676e65e280a63c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e416c6f7273206269656e2073c3bb722c20c3a02064c3a966617574206465206e6f757320646f6e6e657220746f7574206c652074656d70732071756920736572616974206ec3a963657373616972652c2064657320736f6c7574696f6e73206578697374656e7420706f7572206e6f7573207065726d657474726520646520c2abc2a06c69726520706c75732074617264c2a0c2bb20656e20736175766567617264616e74206c65207072c3a9636965757820706f6c6c656e206465206e6f7320627574696e61676573206465207369746520656e20736974652c2065742064e28099656e20666169726520756c74c3a97269657572656d656e7420766f747265206d69656cc2a03b2063e280996573742062656c20657420626f6e206d616973206c65732072756368657320736f6e7420756e207065752064697374616e7465732c20c3a7612073e28099617070656c6c65206c6520636c6f756420286e6f7320616d69732074656368696573206de280996f6e74206269656e206578706c697175c3a9206d616973206ae280996169207365756c656d656e7420636f6d70726973207175652064657320747275637320c3a0206d6f6920736f6e742073757220646573206d616368696e6573206c6f696e7461696e65732c20c3a761206e65206d652072617373757265207061732074726f702920657420656c6c657320736f6e7420736f7576656e742070726f707269c3a97461697265732c206e65206c61697373616e7420656e7472657220717565206c6573203c733e7574696c69736174657572733c2f733e20636f6e736f6d6d61746575727320706179616e74732065742071756920636f6e73656e74656e7420c3a0206c6575727320636f6e646974696f6e732e2053616e7320636f6d70746572207175652064652067726f7320626f7572646f6e73207669656e6e656e742070726f666974657220706c7573206f75206d6f696e73206469736372c3a874656d656e7420646520746f757465732063657320747261636573206465206e6f75732d6dc3aa6d657320717569207065726d657474656e74206465206d6f6ec3a97469736572206e6f7472652070726f66696cc2a03a207369206a6520636f6c6c65637465207375722063657320736572766963657320286e65206c6573206e6f6d6d6f6e73207061732c206a757374656d656e742920756e652073c3a97269652064e2809961727469636c657320737572206ce280996964c3a965206465204e6174757265206368657a2044696465726f742c206a6520726563657672616920646976657273657320736f6c6c696369746174696f6e7320706f757220646576656e697220636c69656e74206465206c6120626f757469717565204e61747572652026616d703b2044c3a9636f75766572746520647520626f756c65766172642044696465726f742e2045742073692064e280996176656e74757265206c65732070726f6772616d6d6573206465206c61204e5341206d6f756c696e656e7420737572206c6520736572766963652c206a6520736572616920706575742dc3aa74726520756e206a6f75722064616e7320756e65206c6973746520646573206d696c6974616e7473206e61747572697374657320696e64c3a973697261626c657320737572206c657320766f6c73206465206c612050616e416d20286a65206e65207361697320706c75732074726f70207369206a6520706c616973616e7465206cc3a02c2066696e616c656d656e74e280a6293c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4c6120626f6e6e65206964c3a965c2a03a20c2abc2a0736520636f6e7374697475657220756e2072c3a9736572766f697220646520646f63756d656e74732073c3a96c656374696f6e6ec3a97320c3a020706172636f7572697220706c75732074617264c2a0c2bb20617070656c61697420646f6e6320756e6520617574726520626f6e6e65206964c3a9652c2063656c6c652064e2809961766f6972206c6520636f6e7472c3b46c652064652063652072c3a9736572766f69722c206465206e6f74726520636f6c6c656374696f6e20706572736f6e6e656c6c652e2043e28099657374204e69636f6c6173204cc59375696c6c65742c2063692d646573736f757320696e74657276696577c3a92c207175692073e28099792065737420636f6c6cc3a9206176656320756e652062656c6c65206170706c69636174696f6e20617070656cc3a96520657568e280a6206f75692c20617070656cc3a9652057616c6c616261672e3c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4672616d61736f667420736f757469656e742064e28099617574616e7420706c757320736f6e20696e6974696174697665207175e280993c6120687265663d22687474703a2f2f7777772e6672616d61626c6f672e6f72672f696e6465782e7068702f706f73742f323031342f30312f33312f4765656b74696f6e6e6572642d57616c6c61626167223e6f6e206c7569206120636865726368c3a920646573206d6973c3a872657320706f757220756e6520686973746f697265206465206e6f6d3c2f613e206574207175e28099696c2065737420706f737369626c652064e28099696e7374616c6c657220736f692d6dc3aa6d6520756e6520636f7069652064652057616c6c616261672073757220736f6e2070726f70726520736974652e3c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4c6520706574697420706c7573206465204672616d61736f66742c2072c3a97365617520746f756a6f7572732064c3a973697265757820646520766f75732070726f706f7365722064657320616c7465726e617469766573206c6962c3a972617472696365732c2063e2809965737420646520766f75732070726f706f736572202873757220696e736372697074696f6e207072c3a9616c61626c652920756e20616363c3a873206175204672616d616261672c2061757472656d656e742064697420766f7472652057616c6c616261672073757220756e2073657276657572204672616d612a2061766563206e6f74726520676172616e74696520646520636f6e666964656e7469616c6974c3a92e20436f6d6d6520706f7572206c65204672616d616e6577732c206e6f757320766f7573206163637565696c6c6f6e7320766f6c6f6e74696572732064616e73206c61206c696d697465206465206e6f732063617061636974c3a9732c20656e20766f757320696e766974616e7420c3a020766f7573206c616e6365722064616e7320766f747265206175746f2d68c3a962657267656d656e742064652057616c6c616261672e3c6272202f3e4365742061727469636c65206573742074726f70206c6f6e67c2a03f204d657474657a2d6c652064616e73203c6120687265663d22687474703a2f2f7777772e6672616d616261672e6f72672f696e6465782e706870223e766f747265204672616d616261673c2f613e20657420686f702e3c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4672616d61626c6f67c2a03a2053616c7574204e69636f6c6173e280a62054752070657578207465207072c3a973656e74657220627269c3a876656d656e74c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e53616c7574c2a0212044c3a976656c6f70706575722050485020646570756973207175656c7175657320616e6ec3a96573206d61696e74656e616e742028313020616e73292c206ae28099616920766f756c75206d652072656d657474726520c3a0206e697665617520746563686e697175656d656e74207061726c616e742028646570756973203320616e732c206ae28099616920706173206d616c206cc3a26368c3a9206c6520636c6176696572292e20506f7572206d6573206265736f696e7320706572736f732c206ae28099616920646f6e63206372c3a9c3a920756e2070657469742070726f6a657420706f75722072656d706c6163657220756e6520736f6c7574696f6e2070726f707269c3a97461697265206578697374616e74652e2053616e7320617563756e65207072c3a974656e74696f6e2c206ae2809961692068c3a962657267c3a92063652070726f6a6574207375722047697468756220657420636f6d6d652063e28099657374206c61207365756c6520736f6c7574696f6e203c656d3e6f70656e20736f757263653c2f656d3e20646520636520747970652c206c65206e6f6d62726520646520706572736f6e6e657320696e74c3a972657373c3a965732061206175676d656e74c3a920e280a63c2f703e0a3c703e3c656d3e4c6573207574696c6973617465757273206465207365727669636573204672616d61736f6674206e65206c6520736176656e742070617320666f7263c3a96d656e742c206d6169732074752061732064c3a96ac3a020706173206d616c207061727469636970c3a920c3a0206c61204672616d6147616c617869652c206e6f6ec2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e456e2065666665742e204ae28099616920636f6d6d656e63c3a920756e20706c7567696e20706f7572204672616d616e6577732c203c6120687265663d2268747470733a2f2f6769746875622e636f6d2f6e69636f736f6d622f74747273732d70757267652d6163636f756e7473223e74747273732d70757267652d6163636f756e74733c2f613e2c20717569207065726d6574206465206e6574746f796572206c61206261736520646520646f6e6ec3a9657320646520636f6d7074657320706c7573207574696c6973c3a9732e204d616973206365203c656d3e706c7567696e3c2f656d3e2061206265736f696e2064e28099c3aa747265207465726d696ec3a920c3a0203130302520706f757220c3aa74726520696e74c3a96772c3a9206175207365696e206465204672616d616e6577732028657420646f6e632064652054696e792054696e7920525353292c207369207175656c7175e28099756e20736f756861697465206de2809961696465722c20696c206ee2809979206120617563756e20736f7563692e3c6272202f3e4ae28099616920617573736920666169742031206f7520322061707061726974696f6e732064616e73206465732074726164756374696f6e7320706f7572204672616d61626c6f672e205269656e2064e2809965787472616f7264696e616972652c206a65206e652073756973207061732062696c696e6775652c20c3a761206d65207065726d6574206465206de28099656e747261c3ae6e65722e3c2f703e0a3c703e3c656d3e5061726c6f6e73206465207375697465206465206365207175692066c3a2636865c2a03a20746f6e206170706c69636174696f6e2057616c6c616261672c20656c6c652073e28099617070656c6c6169742070617320e2809c506f636865e2809d2c206176616e74c2a03f205475206e6f7573207261636f6e746573206ce28099686973746f697265c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e45756820656e20656666657420e280a62044c3a96ac3a02c20706f757271756f69203c656d3e706f6368653c2f656d3ec2a03f20506172636520717565206ce28099756e206465732074726f697320c2abc2a074c3a96e6f7273c2a0c2bb20737572206c65206d61726368c3a92073e28099617070656c6c65203c656d3e506f636b65743c2f656d3e2e20436f6d6d65206d6f6e206170706c69206ee28099c3a9746169742064657374696ec3a965207175e28099c3a0206d6f6e20757361676520706572736f6e6e656c2061752064c3a9706172742c206a65206e65206d6520737569732070617320746f72747572c3a9206269656e206c6f6e6774656d70732e3c2f703e0a3c703e43657420c3a974c3a92c206f6e2061206661696c6c69206368616e676572206465206e6f6d2c207175616e6420696c2079206120657520646520706c757320656e20706c75732064e280997574696c69736174657572732e2045742070756973206f6e2073e28099657374206469742071756520706f6368652c2063e28099c3a97461697420706173206d616c2c20c3a76120736f6e6e616974206269656e206672616ec3a761697320657420707569732061766563206c6573207175656c717565732064697a61696e65732064e280997574696c69736174657572732c206f6e206e652067c3aa6e657261697420706572736f6e6e652e3c2f703e0a3c703e43e280996573742073616e7320636f6d707465722061766563206c657320736f6369c3a974c3a97320616dc3a972696361696e6573206574206c6575722066c3a2636865757365206d616e696520646520766f756c6f697220656e766f796572206c657572732061766f6361747320c3a020746f757420626f7574206465206368616d702e204c65203233206a616e766965722c206ae280996169207265c3a77520756e20656d61696c206465206c61207061727420647520636162696e65742064e2809961766f6361747320646520506f636b6574206d652064656d616e64616e74206465206368616e676572206c65206e6f6d2c206c65206c6f676f2c206465206e6520706c7573207574696c69736572206c65207465726d6520e2809c726561642d69742d6c61746572e2809d2028c2abc2a06c6973657a206c6520706c75732074617264c2a0c2bb29206574206465206e6520706c757320646972652071756520506f636b6574206ee280996573742070617320677261747569742028746f7574206573742070617274692064e280993c6120687265663d2268747470733a2f2f747769747465722e636f6d2f77616c6c616261676170702f7374617475732f343233373836333635393434323235373932223e756e2074776565743c2f613e206fc3b9206a65207175616c6966696520506f636b657420646520c2abc2a06e6f6e2066726565c2a0c2bb20c3a0207361766f6972206e6f6e206c69627265292e20427265662c206dc3aa6d65207369206a652073656d626c6169732064616e73206d6f6e2064726f69742c206ae280996169207175616e64206dc3aa6d652070726973206c612064c3a9636973696f6e206465206368616e676572206465206e6f6d2065742057616c6c6162616720657374206ec3a92c20737569746520617578203c6120687265663d22687474703a2f2f6672616d61646174652e6f72672f73747564732e7068703f736f6e646167653d6c6c6370366f6a70796339706b6c6861223e64697a61696e65732064652070726f706f736974696f6e73206465206e6f6d207265c3a77565733c2f613e2e2043e2809965737420756e206dc3a96c616e676520656e747265206c652077616c6c61627920286465206c612066616d696c6c6520646573206b616e676f75726f75732c207175692073746f636b656e742064616e73206c65757220706f63686520636520717569206c65757220657374206368657229206574203c656d3e6261673c2f656d3e20286c6573207465726d657320736163202f207361636f636865202f2062657361636520736f6e7420c3a96e6f726dc3a96d656e7420726576656e7573292e204d616973206d61696e74656e616e742c206f6e207661206465206ce280996176616e742c20706c75732064652074656d707320c3a020706572647265206176656320c3a7612c206f6e2061206475207061696e20737572206c6120706c616e6368652e3c6272202f3e3c696d67207372633d22687474703a2f2f7777772e6672616d61626c6f672e6f72672f7075626c69632f5f696d672f6672616d61626c6f672f77616c6c6162795f626162792e6a70672220616c743d2277616c6c61627920617665632062c3a962c3a92064616e7320736120706f6368652220636c6173733d22633122207469746c653d2277616c6c61627920617665632062c3a962c3a92064616e7320736120706f63686522202f3e206372c3a96469742070686f746f203c6120687265663d22687474703a2f2f7777772e666c69636b722e636f6d2f70686f746f732f3236373832383634404e30302f353032373230323233342f696e2f70686f746f6c6973742d3845654a35412d6831544c36762d4e454c38312d636e4e6b536f2d39594d3174762d374b636736622d387a70416f612d61315a4c4d4e2d39594d3339722d3768355341442d38456548664c2d3845654677752d647456776e4d2d38756f4d45312d4a457a58652d47713471792d3932564a50522d43786531762d38483344324a2d61315a464e732d395937324b362d38456547784c2d354c353346782d354e6b454e732d3555384354592d354e6b7373682d6e6b6176462d3943726777502d3773644341612d647566324b682d685a65707a792d685a645531652d685a656f66462d685a656b44672d685a656741592d685a654d5a6e2d6a61486741662d3850383744322d354e677152762d6154343851422d685a645634592d685a654336342d45526770732d3556594747642d3556594a42312d354e6b72466b2d364a786837682d3768395075512d4552664d782d6831553169682d683155534278223e57696c6c69616d2057617262793c2f613e20717569206175746f72697365206578706c69636974656d656e7420746f7574652072c3a97574696c69736174696f6e2e3c2f703e0a3c703e3c656d3e426f6e2c20616c6f7273206578706c697175652d6d6f6920636520717565206a65207661697320706f75766f69722066616972652061766563204672616d61626167e280a63c6272202f3e3c2f656d3e3c2f703e0a3c703e416c6f7273204672616d616261672c20c3a761207465207065726d6574206465207465206372c3a9657220756e20636f6d7074652067726174756974656d656e74206574206c696272656d656e7420706f757220706f75766f6972207574696c697365722057616c6c616261672e205365756c6520746f6e206164726573736520656d61696c20657374206ec3a963657373616972652c206f6e207365206368617267652064e28099696e7374616c6c6572206574206465206d657474726520c3a0206a6f75722057616c6c6162616720706f757220746f692e20547520706575782064e2809961696c6c657572732070726f6669746572203c6120687265663d22687474703a2f2f7777772e6672616d61736f66742e6e65742f23746f705067436c6f7564223e64e280996175747265732073657276696365732070726f706f73c3a97320706172204672616d61736f6674206963693c2f613e2e3c2f703e0a3c703ec380206365206a6f75722c20696c207920612038333420636f6d70746573206372c3a9c3a97320737572204672616d616261672e3c2f703e0a3c703e3c656d3e566f7573206176657a20767261696d656e7420636f6ec3a7752063652073657276696365206166696e207175e280996f6e20707569737365206ce280997574696c69736572206176656320756e206d6178696d756d2064e280996f7574696c732c206e6f6ec2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e4175746f7572206465206ce280996170706c69636174696f6e207765622c20696c206578697374652064c3a96ac3a020646573206170706c69636174696f6e7320706f757220736d61727470686f6e65732028416e64726f69642065742057696e646f77732050686f6e65292c2064657320657874656e73696f6e732046697265666f7820657420476f6f676c65204368726f6d652e3c2f703e0a3c703e436f6d6d652057616c6c6162616720706f7373c3a864652064657320666c7578205253532c2063e2809965737420666163696c65206465206c697265206c65732061727469636c657320736175766567617264c3a97320737572207361206c697365757365202873692063656c6c652d6369207065726d6574206465206c6972652064657320666c757820525353292e2043616c696272652028c2abc2a06c6f67696369656c206465206c6563747572652c2064652067657374696f6e206465206269626c696f7468c3a87175657320657420646520636f6e76657273696f6e206465206669636869657273206e756dc3a972697175657320646520747970652065626f6f6b206f75206c6976726520c3a96c656374726f6e69717565c2a0c2bb2c6e6f757320646974207562756e74752d66722e6f72672920696e74c3a867726520646570756973207175656c717565732073656d61696e6573206d61696e74656e616e74206c6120706f73736962696c6974c3a92064652072c3a9637570c3a9726572206c65732061727469636c6573206e6f6e206c75732c20707261746971756520706f757220666169726520756e20666963686965722065507562c2a0213c2f703e0a3c703e44e28099617574726573206170706c69636174696f6e7320776562207065726d657474656e74206ce28099696e74c3a967726174696f6e20617665632057616c6c61626167202846726573685253532c204c6565642065742054696e792054696e792052535320706f7572206c657320616772c3a96761746575727320646520666c7578292e204ce2809941504920717569207365726120646973706f6e69626c652064616e73206c612070726f636861696e652076657273696f6e2064652057616c6c61626167207065726d657474726120656e636f726520706c75732064e28099696e74657261637469766974c3a92e3c2f703e0a3c703e3c656d3e5920612d742d696c20756e206d6f6465206465206c65637475726520686f7273206c69676e65206f75206573742d6365207175652063e28099657374207072c3a9767520706f7572206c65732070726f636861696e65732076657273696f6e73c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e496c2079206120756e2070736575646f206d6f646520686f7273206c69676e652c20646973706f6e69626c652061766563206ce280996170706c69636174696f6e20416e64726f69642e204f6e20706575742072c3a9637570c3a9726572202876696120756e20666c75782052535329206c65732061727469636c6573206e6f6e206c757320717565206ce280996f6e206120736175766567617264c3a9732e20556e6520666f69732064c3a9636f6e6e656374c3a92c206f6e207065757420636f6e74696e75657220c3a0206c6972652073757220736f6e20736d61727470686f6e65206f75207361207461626c65747465206c65732061727469636c65732e2050617220636f6e7472652c20696c206d616e7175652064657320666f6e6374696f6e6e616c6974c3a973c2a03a207175616e64207475206d61727175657320756e2061727469636c6520636f6d6d65206c752c206365206ee28099657374207061732073796e6368726f6e6973c3a92061766563206c612076657273696f6e207765622064652057616c6c616261672e204ae28099657370c3a8726520717565206a652073756973207072657371756520636c6169722064616e73206d6573206578706c69636174696f6e732e3c2f703e0a3c703e506f7572206c612076322c20717569206573742064c3a96ac3a020656e20636f7572732064652064c3a976656c6f7070656d656e742c206fc3b9206a652073756973206269656e20616964c3a9207061722056696e63656e74204a6f757373652c206f6e2061757261206c6120706f73736962696c6974c3a92064e2809961766f697220756e2076726169206d6f646520686f7273206c69676e652e3c2f703e0a3c703e3c656d3e416c6f7273207369206f6e2076657574206169646572202f2070617274696369706572202f20747269666f75696c6c6572206c6520636f6465202f20766f757320656e766f79657220646573207265746f7572732c206f6e206661697420636f6d6d656e74c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e4f6e207065757420616964657220646520706c75736965757273206661c3a76f6e73c2a03a3c2f703e0a3c756c3e3c6c693e7574696c697365722077616c6c61626167206574206e6f75732072656d6f6e746572206c65732070726f626cc3a86d65732072656e636f6e7472c3a973c2a03b3c2f6c693e0a3c6c693e706172746963697065722061752064c3a976656c6f7070656d656e74206465206ce280996170706c69636174696f6e2068747470733a2f2f6769746875622e636f6d2f77616c6c616261672f77616c6c616261672053692053696c6578202f2053796d666f6e7932202f2048544d4c35202f206574632e207465207061726c656e742c206ee2809968c3a97369746520706173c2a0213c2f6c693e0a3c6c693e636f6d6d6520746f75742070726f6a65742c206c652067726f7320706f696e74206e6f697220657374206c65206d616e71756520646520646f63756d656e746174696f6e2e203c6120687265663d22687474703a2f2f646f632e77616c6c616261672e6f7267223e456c6c652065737420646973706f206963693c2f613e206d61697320696c206d616e71756520706c65696e2064652063686f73657320657420746f7574206ee280996573742070617320c3a0206a6f7572c2a03b3c2f6c693e0a3c6c693e7061726c65722064652057616c6c61626167206175746f757220646520766f7573c2a03b3c2f6c693e0a3c6c693e696c20657869737465203c6120687265663d2268747470733a2f2f666c617474722e636f6d2f7468696e672f313236353438302f706f6368652d612d726561642d69742d6c617465722d6f70656e2d736f757263652d73797374656d223e756e20636f6d70746520466c617474723c2f613e2e3c2f6c693e0a3c2f756c3e3c703e3c656d3e4c65206d6f74206465206c612066696ee280a63f3c6272202f3e3c2f656d3e3c2f703e0a3c703e4d6572636920c3a0204672616d61736f66742064e280996163637565696c6c697220657420646520736f7574656e69722057616c6c61626167c2a0213c2f703e0a3c703e4c6120726f7574652065737420656e636f7265206269656e206c6f6e67756520706f7572206e6520706c7573207574696c6973657220646520736f6c7574696f6e732070726f707269c3a97461697265732c206d616973206f6e2064657672616974207920617272697665722c206e6f6ec2a03f3c2f703e0a3c703e3c696d67207372633d22687474703a2f2f7777772e6672616d61626c6f672e6f72672f7075626c69632f5f696d672f6672616d61626c6f672f706c65696e4c6573506f636865732e706e672220616c743d226672616d61736f667420706c65696e206c657320706f636865732220636c6173733d22633122207469746c653d226672616d61736f667420706c65696e206c657320706f6368657322202f3e3c6272202f3e3c6120687265663d22687474703a2f2f6672616d616c61622e6f72672f676b6e642d63726561746f722f223e6861636b657a2047c3a967c3a9c2a0213c2f613e3c2f703e0a', 'hex'), 'UTF8'), 1), ('wallabag/wallabag', 'https://github.com/wallabag/wallabag', false, false, convert_from(decode('3c7370616e20636c6173733d226e616d65223e524541444d452e6d643c2f7370616e3e3c703e77616c6c6162616720697320612073656c6620686f737461626c65206170706c69636174696f6e20616c6c6f77696e6720796f7520746f206e6f74206d69737320616e7920636f6e74656e7420616e796d6f72652e20436c69636b2c20736176652c2072656164206974207768656e20796f752063616e2e20497420657874726163747320636f6e74656e7420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c703e4d6f726520696e666f726d6174696f6e73206f6e206f757220776562736974653a203c6120687265663d22687474703a2f2f77616c6c616261672e6f7267223e77616c6c616261672e6f72673c2f613e3c2f703e0a3c68323e3c6120636c6173733d22616e63686f722220687265663d2268747470733a2f2f6769746875622e636f6d2f77616c6c616261672f77616c6c61626167236c6963656e7365223e3c2f613e4c6963656e73653c2f68323e0a3c703e436f7079726967687420c2a920323031302d32303134204e69636f6c6173204cc59375696c6c6574203c6120687265663d226d61696c746f3a6e69636f6c6173406c6f6575696c6c65742e6f7267223e6e69636f6c6173406c6f6575696c6c65742e6f72673c2f613e205468697320776f726b20697320667265652e20596f752063616e2072656469737472696275746520697420616e642f6f72206d6f6469667920697420756e64657220746865207465726d73206f662074686520446f205768617420546865204675636b20596f752057616e7420546f205075626c6963204c6963656e73652c2056657273696f6e20322c206173207075626c69736865642062792053616d20486f63657661722e205365652074686520434f5059494e472066696c6520666f72206d6f72652064657461696c732e3c2f703e0a', 'hex'), 'UTF8'), 1), ('a self hostable application for saving web pages | wallabag', 'https://www.wallabag.org/', false, true, convert_from(decode('3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e77616c6c616261672028666f726d65726c7920706f636865292069732061203c7374726f6e673e73656c6620686f737461626c65206170706c69636174696f6e20666f7220736176696e67207765622070616765733c2f7374726f6e673e2e20556e6c696b65206f746865722073657276696365732cc2a077616c6c6162616720697320667265652028617320696e2066726565646f6d2920616e64206f70656e20736f757263652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e576974682074686973206170706c69636174696f6e20796f752077696c6c206e6f74206d69737320636f6e74656e7420616e796d6f72652e203c7374726f6e673e436c69636b2c20736176652c2072656164206974207768656e20796f752077616e743c2f7374726f6e673e2e2049742073617665732074686520636f6e74656e7420796f752073656c65637420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3620636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c68323e486f7720697420776f726b733c2f68323e0a3c703e5468616e6b7320746f2074686520626f6f6b6d61726b6c6574206f72203c61207469746c653d22446f776e6c6f6164732220687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f646f776e6c6f6164732f223e74686972642d7061727479206170706c69636174696f6e733c2f613e2c20796f75207361766520616e2061727469636c6520696e20796f7572c2a077616c6c6162616720746f2072656164206974206c617465722e205468656e2c207768656e20796f75206f70656e20796f75722077616c6c616261672c203c7374726f6e673e796f752063616e20636f6d666f727461626c79207265616420796f75722061727469636c65733c2f7374726f6e673e2e3c2f703e0a3c68323e486f7720746f207573652077616c6c616261673c2f68323e0a3c703e5468657265206172652074776f207761797320746f207573652077616c6c616261673a20796f752063616e203c6120687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f6672657175656e746c792d61736b65642d7175657374696f6e732f23486f775f63616e5f495f696e7374616c6c5f77616c6c616261675f616e645f776861745f6172655f7468655f726571756972656d656e7473223e696e7374616c6c2069743c2f613ec2a06f6e20796f75722077656220736572766572206f7220796f752063616ec2a03c6120687265663d22687474703a2f2f6170702e696e746865706f6368652e636f6d223e63726561746520616e206163636f756e743c2f613ec2a06174204672616d616261672028776520696e7374616c6c20616e642075706772616465c2a077616c6c6162616720666f7220796f75292e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a', 'hex'), 'UTF8'), 1)"; - $moreQueries[] = "INSERT INTO tags (value) VALUES ('opensource')"; - $moreQueries[] = "INSERT INTO tags_entries (entry_id, tag_id) VALUES (2, 1)"; + $moreQueries[] = "INSERT INTO tags (value) VALUES ('opensource')"; + $moreQueries[] = "INSERT INTO tags_entries (entry_id, tag_id) VALUES (2, 1)"; - $sql_structure = file_get_contents('install/postgres.sql'); - } - - $content = str_replace("define ('STORAGE', 'sqlite');", "define ('STORAGE', '".$_POST['db_engine']."');", $content); - file_put_contents('inc/poche/config.inc.php', $content); + $sql_structure = file_get_contents('install/postgres.sql'); } + // create database structure + $query = $handle->exec($sql_structure); + } catch (PDOException $e) { + $errors[] = $e->getMessage(); + $continue = false; + } + } + } + if ($continue) { + $sql = "INSERT INTO users (username, password, name, email) VALUES (?, ?, ?, '')"; + $params = array($username, $salted_password, $username); + $query = executeQuery($handle, $sql, $params); - if ($continue) { - - function executeQuery($handle, $sql, $params) { - try - { - $query = $handle->prepare($sql); - $query->execute($params); - return $query->fetchAll(); - } - catch (Exception $e) - { - return FALSE; - } - } - - if ($_POST['db_engine'] != "sqlite") { - // create database structure - $query = $handle->exec($sql_structure); - } - - // Create user - $handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - - $sql = "INSERT INTO users (username, password, name, email) VALUES (?, ?, ?, '')"; - $params = array($username, $salted_password, $username); - $query = executeQuery($handle, $sql, $params); - - $id_user = (int)$handle->lastInsertId('users_id_seq'); + $id_user = (int)$handle->lastInsertId('users_id_seq'); - $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; - $params = array($id_user, 'pager', '10'); - $query = executeQuery($handle, $sql, $params); + $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; + $params = array($id_user, 'pager', '10'); + $query = executeQuery($handle, $sql, $params); - $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; - $params = array($id_user, 'language', 'en_EN.UTF8'); - $query = executeQuery($handle, $sql, $params); + $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; + $params = array($id_user, 'language', 'en_EN.UTF8'); + $query = executeQuery($handle, $sql, $params); - foreach ($moreQueries as $query) { - executeQuery($handle, $query, array()); - } + foreach ($moreQueries as $query) { + executeQuery($handle, $query, array()); + } + - $successes[] = 'wallabag is now installed. You can now access it !'; - } + if (!copy('inc/poche/config.inc.default.php', 'inc/poche/config.inc.php')) { + $errors[] = 'Installation aborted, impossible to create inc/poche/config.inc.php file. Maybe you don\'t have write access to create it.'; + } else { + if ($_POST['db_engine'] != 'sqlite') { + $content = str_replace("define ('STORAGE', 'sqlite');", "define ('STORAGE', '".$_POST['db_engine']."');", $content); + file_put_contents('inc/poche/config.inc.php', $content); } + $content = str_replace("define ('SALT', '');", "define ('SALT', '".$salt."');", $content); + file_put_contents('inc/poche/config.inc.php', $content); + $final = true; } } +} ?> @@ -210,6 +181,175 @@ else if (isset($_POST['install'])) { + + + +
@@ -220,11 +360,12 @@ else if (isset($_POST['install'])) {
+
  • Offline Doc
  • +
  • Online doc
  • +
  • help
  • +
  • wallabag.org
  • + +

    Errors during installation:

    @@ -258,56 +399,269 @@ else if (isset($_POST['install'])) {

    To install wallabag, you just have to fill the following fields. That's all.

    -

    If you need help, you can read the doc: offline documentation and online one (already up-to-date).

    -

    Don't forget to check your server compatibility here.

    -
    -
    - Technical settings - -
    wallabag needs twig, a template engine (?). Two ways to install it:
    -
      -
    • automatically download and extract vendor.zip into your wallabag folder. -

      - - Be careful, zip extension is not enabled in your PHP configuration. You'll have to unzip vendor.zip manually. - - This method is mainly recommended if you don't have a dedicated server.
    • -
    • use Composer :
      curl -s http://getcomposer.org/installer | php
      -php composer.phar install
    • -
    -
    - + +
    +

    Server compatibility test

    + +
    All good
    + +
    Some warnings, but the minimum is here !
    + +
    Bad news : you can't run wallabag
    + +
    + +
    +
    +
    +

    : Compatibility Test

    + + + + + + + + + + + + + + + + + + + + Enabled' : ' + + + + + + At least one driver is enabled' : ' + + + + + + Enabled, and sane' : ' + + + + + + Enabled' : ' + + + + + + Enabled' : ' + + + + + + Enabled' : ' + + + + + + Enabled' : ' + + + + + Enabled' : ' + + + + + + Enabled' : ' + + + + + + Enabled' : ' + + + + + + Enabled' : ' + + + + + + Enabled' : ' + + + + + + Enabled' : ' + + + + + + Enabled' : ' + + + + + + + + + + + + + + + + + Enabled' : ' + + + +
    TestShould BeWhat You HaveWhat it means
    PHP5.3.3 or higherPHP: You are running a supported version of PHP.' : 'PHP: You are running an unsupported version of PHP. ' . $status['app_name'] . ' will not work here.' ;?>
    PDOEnabledDisabled'; ?>PDO: You have PDO support enabled.' : 'PDO: Your PHP installation doesn\'t support PHP PDO. ' . $status['app_name'] . ' will not work here.' ?>
    PDO DriversOne of the PDO drivers must be installedNo driver available'; ?>PDO: You have at least one PDO driver installed.' : 'PDO Drivers: Your PHP installation doesn\'t have any PDO driver installed. ' . $status['app_name'] . ' will not work here.' ?>
    XMLEnabledDisabled, or broken'; ?>XML: You have XMLReader support or a version of XML support that isn\'t broken installed.' : 'XML: Your PHP installation doesn\'t support XML parsing. ' . $status['app_name'] . ' will not work here.' ?>
    PCREEnabledDisabled'; ?>PCRE: You have PCRE support installed.' : 'PCRE: Your PHP installation doesn\'t support Perl-Compatible Regular Expressions. ' . $status['app_name'] .' will not work here.' ?>
    ZlibEnabledDisabled'; ?>Zlib: You have Zlib enabled. This allows SimplePie to support GZIP-encoded pages.' : 'Zlib: The Zlib extension is not available. SimplePie will ignore any GZIP-encoding, and instead handle pages as uncompressed text.' ?>
    mbstringEnabledDisabled'; ?>mbstring and iconv: You have both mbstring and iconv installed! This will allow to handle the greatest number of languages. + mbstring: mbstring is installed, but iconv is not. + iconv: iconv is installed, but mbstring is not. + mbstring and iconv: You do not have either of the extensions installed. This will significantly impair your ability to read non-English pages, as well as even some English ones. + +
    iconvEnabledDisabled'; ?>
    DOM / XML extensionEnabledDisabled'; ?>DOM/XML: You can parse ini files.' : 'DOM/XML: Your PHP configuration isn\'t standard, you\'re missing PHP-DOM. You may try to install a package or recompile PHP. ' . $status['app_name'] . ' will not work here.'; ?>
    Data filteringEnabledDisabled'; ?>Data filtering: You can use the PHP build-in DOM to operate on XML documents.' : 'Data filtering: Your PHP configuration has the filter extension disabled. ' . $status['app_name'] . ' will not work here.' ?>
    GDEnabledDisabled'; ?>GD: You have GD support installed.' : 'GD: The GD extension is not available. ' . $status['app_name'] . ' will not be able to download pictures locally on your server.' ?>
    TidyEnabledDisabled'; ?>Tidy: You have Tidy support installed.' : 'Tidy: The Tidy extension is not available.' . $status['app_name'] . ' should still work with most pages, but you may experience problems with some. You can install it with sudo apt-get install php5-tidy and then reload Apache sudo service apache2 reload.' ; ?>
    cURLEnabledDisabled'; ?>cURL: You have cURL support installed.' : 'cURL: The cURL extension is not available. SimplePie will use fsockopen() instead.' ?>
    Parse ini fileEnabledDisabled'; ?>Parse ini: You can parse ini files.' : 'Parse ini files function : Bad luck : your webhost has decided to block the use of the parse_ini_file function. ' . $status['app_name'] . ' will not work here.' ?>
    Parallel URL fetchingEnabledDisabled'; ?>Parallel URL fetching: You have HttpRequestPool or curl_multi support installed.' : 'Parallel URL fetching: HttpRequestPool or curl_multi support is not available. ' . $status['app_name'] . ' will use file_get_contents() instead to fetch URLs sequentially rather than in parallel.' ?>
    allow_url_fopenEnabledEnabledallow_url_fopen: You have allow_url_fopen enabled. + + Disabledallow_url_fopen is disabled, but curl is supported, so it should be ok.Disabledallow_url_fopen: Your PHP configuration has allow_url_fopen disabled. + will not work here.
    gettextEnabledDisabled'; ?>Gettext: You have gettext enabled.' : 'GetText: The gettext extension is not available. The system we use to display wallabag in various languages is not available. ' . $status['app_name'] .' will not work here.' ?>
    +
    +
    +
    + + +

    Bottom Line: Yes, you can run !

    +

    Your webhost has its act together!

    +

    Note: Passing this test does not guarantee that will run on your webhost — it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.

    + + +

    Bottom Line: Yes, you can run !

    +

    For most pages, it'll run with no problems. There are certain languages that you might have a hard time with though.

    +

    Note: Passing this test does not guarantee that will run on your webhost — it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.

    + +

    Bottom Line: We're sorry…

    +

    Your webhost does not support the minimum requirements for . It may be a good idea to contact your webhost and point them to the results of this test. They may be able to enable/install the required components.

    +

    If this is your own server and you think you have all the requirements installed, please get in touch with us.

    + +
    + +
    +

    This compatibility test has been borrowed (and slightly adapted by fivefilters.org) from the one supplied by SimplePie.org.

    +
    +
    + +
    +
    +

    Twig installation

    + + +

    wallabag needs twig, a template engine (?). Two ways to install it:

    +
      +
    • automatically download and extract vendor.zip into your wallabag folder. +

      + + Be careful, zip extension is not enabled in your PHP configuration. You'll have to unzip vendor.zip manually. + + This method is mainly recommended if you don't have a dedicated server.
    • +
    • use Composer in your wallabag folder :
      curl -s http://getcomposer.org/installer | php
      +php composer.phar install
      + Reload to check +
    • +
    + + + Twig is properly installed. + +
    +
    +
    +
    + Database settings

    Database engine:

      -
    • -
      -

      You have to enable pdo_sqlite extension.

      -
      -
    • -
    • - -
        -
      • -
      • -
      • -
      • -
      -
    • -
    • - -
        +
      • + + + +
        +

        You have to enable pdo_sqlite extension to use SQLite.

        +
        + +
      • +
      • + + +
        +

        All fields have to be filled.

        +
        +
          +
        • +
        • +
        • +
        • +
        • +
          Warning : UTF-8 MB4 is used to fully support unicode characters. It is available only with MySQL starting with version 5.5.3. + Install will failed if you check this while using an older MySQL server.
        • +
        + +
        +

        You have to enable pdo_mysql extension to use MySQL.

        +
        + +
      • +
      • + + +
        +

        All fields have to be filled.

        +
        +
        • -
        -
      • +
      + +
      +

      You have to enable pdo_pgsql extension to use PostgreSQL.

      +
      + +

    - -
    +
    +
    + SQLite is the most simple database system of all three. It is therefore recommended for people who don't want or know how to configure other database systems. +
    +
    + MySQL (also called MariaDB) is one of the most popular database systems. It comes with most shared hosting plans. +
    +
    + PostgreSQL. Because some people prefer it to MySQL. With reasons. +
    +
    +
    +
    +
    +
    User settings

    @@ -323,53 +677,100 @@ php composer.phar install

    - +
    + +
    +

    wallabag is now installed ! :-)

    + Click here to access the login form
    + The installation will now try to delete the install directory. If this fails, delete it manually.
    + diff --git a/install/install_functions.php b/install/install_functions.php new file mode 100644 index 00000000..a4830569 --- /dev/null +++ b/install/install_functions.php @@ -0,0 +1,107 @@ + + * @copyright 2013 + * @license http://opensource.org/licenses/MIT see COPYING file + */ + +function status() { +$app_name = 'wallabag'; + +$php_ok = (function_exists('version_compare') && version_compare(phpversion(), '5.3.3', '>=')); +$pdo_ok = class_exists('PDO'); +$pcre_ok = extension_loaded('pcre'); +$zlib_ok = extension_loaded('zlib'); +$mbstring_ok = extension_loaded('mbstring'); +$dom_ok = extension_loaded('DOM'); +$iconv_ok = extension_loaded('iconv'); +$tidy_ok = function_exists('tidy_parse_string'); +$curl_ok = function_exists('curl_exec'); +$parse_ini_ok = function_exists('parse_ini_file'); +$parallel_ok = ((extension_loaded('http') && class_exists('HttpRequestPool')) || ($curl_ok && function_exists('curl_multi_init'))); +$allow_url_fopen_ok = (bool)ini_get('allow_url_fopen'); +$filter_ok = extension_loaded('filter'); +$gettext_ok = function_exists("gettext"); +$gd_ok = extension_loaded('gd'); +$pdo_drivers = pdoDrivers(); +$pdo_drivers_passing = $pdo_drivers['sqlite'] || $pdo_drivers['mysql'] || $pdo_drivers['postgres']; +$urlfetching = $curl_ok || $allow_url_fopen_ok; + + + +if (extension_loaded('xmlreader')) { + $xml_ok = true; +} elseif (extension_loaded('xml')) { + $parser_check = xml_parser_create(); + xml_parse_into_struct($parser_check, '&', $values); + xml_parser_free($parser_check); + $xml_ok = isset($values[0]['value']); +} else { + $xml_ok = false; +} + +$status = array('app_name' => $app_name, 'php' => $php_ok, 'pdo' => $pdo_ok, + 'pdo_drivers_passing' => $pdo_drivers_passing, 'xml' => $xml_ok, 'pcre' => $pcre_ok, + 'zlib' => $zlib_ok, 'mbstring' => $mbstring_ok, 'dom' => $dom_ok, 'iconv' => $iconv_ok, 'tidy' => $tidy_ok, 'curl' => $curl_ok, + 'parse_ini' => $parse_ini_ok, 'parallel' => $parallel_ok, 'allow_url_fopen' => $allow_url_fopen_ok, 'filter' => $filter_ok, + 'gettext' => $gettext_ok, 'gd' => $gd_ok, 'urlfetching' => $urlfetching); + +return $status; +} +function isOkay() { + return !in_array(false, status()); +} + +function isPassing() { + $status = status(); + unset($status['curl'], $status['parallel'], $status['tidy'], $status['gd'], $status['filter'], $status['allow_url_fopen']); + return !in_array(false, $status); +} + +function pdoDrivers() { + $pdo_driver_sqlite = extension_loaded('pdo_sqlite'); + $pdo_driver_mysql = extension_loaded('pdo_mysql'); + $pdo_driver_postgres = extension_loaded('pdo_pgsql'); + + $pdo_drivers = array('sqlite' => $pdo_driver_sqlite, 'mysql' => $pdo_driver_mysql, + 'postgres' => $pdo_driver_postgres); + + return $pdo_drivers; +} + +/* Function taken from at http://php.net/manual/en/function.rmdir.php#110489 + * Idea : nbari at dalmp dot com + * Rights unknown + * Here in case of .gitignore files + */ + +function delTree($dir) { + $files = array_diff(scandir($dir), array('.','..')); + foreach ($files as $file) { + (is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file"); + } + return rmdir($dir); + } + +function generate_salt() { + mt_srand(microtime(true)*100000 + memory_get_usage(true)); + return md5(uniqid(mt_rand(), true)); +} + +function executeQuery($handle, $sql, $params) { + try + { + $query = $handle->prepare($sql); + $query->execute($params); + return $query->fetchAll(); + } + catch (Exception $e) + { + return FALSE; + } +} + +?> \ No newline at end of file diff --git a/install/wallabag_compatibility_test.php b/install/wallabag_compatibility_test.php deleted file mode 100644 index 61a8e99f..00000000 --- a/install/wallabag_compatibility_test.php +++ /dev/null @@ -1,427 +0,0 @@ - - * @copyright 2013 - * @license http://opensource.org/licenses/MIT see COPYING file - */ - -$app_name = 'wallabag'; - -$php_ok = (function_exists('version_compare') && version_compare(phpversion(), '5.3.3', '>=')); -$pcre_ok = extension_loaded('pcre'); -$zlib_ok = extension_loaded('zlib'); -$mbstring_ok = extension_loaded('mbstring'); -$dom_ok = extension_loaded('DOM'); -$iconv_ok = extension_loaded('iconv'); -$tidy_ok = function_exists('tidy_parse_string'); -$curl_ok = function_exists('curl_exec'); -$parse_ini_ok = function_exists('parse_ini_file'); -$parallel_ok = ((extension_loaded('http') && class_exists('HttpRequestPool')) || ($curl_ok && function_exists('curl_multi_init'))); -$allow_url_fopen_ok = (bool)ini_get('allow_url_fopen'); -$filter_ok = extension_loaded('filter'); -$gettext_ok = function_exists("gettext"); -$gd_ok = extension_loaded('gd'); - - -if (extension_loaded('xmlreader')) { - $xml_ok = true; -} elseif (extension_loaded('xml')) { - $parser_check = xml_parser_create(); - xml_parse_into_struct($parser_check, '&', $values); - xml_parser_free($parser_check); - $xml_ok = isset($values[0]['value']); -} else { - $xml_ok = false; -} - -header('Content-type: text/html; charset=UTF-8'); - -?> - - - -<?php echo $app_name; ?>: Server Compatibility Test - - - - - - - -
    -
    - -
    -

    : Compatibility Test

    - - - - - - - - - - - - - - - - - - Enabled, and sane' : ' - - - - - Enabled' : ' - - - - - - - - Enabled' : ' - - - - - Enabled' : ' - - - - - Enabled' : ' - - - - - Enabled' : ' - - - - - Enabled' : ' - - - - - Enabled' : ' - - - - - Enabled' : ' - - - - - Enabled' : ' - - - - - Enabled' : ' - - -
    TestShould BeWhat You Have
    PHP5.3.3 or higher
    XMLEnabledDisabled, or broken'; ?>
    PCREEnabledDisabled'; ?>
    DOM / XML extensionEnabledDisabled'; ?>
    Data filteringEnabledDisabled'; ?>
    GDEnabledDisabled'; ?>
    TidyEnabledDisabled'; ?>
    cURLEnabledDisabled'; ?>
    Parse ini fileEnabledDisabled'; ?>
    Parallel URL fetchingEnabledDisabled'; ?>
    allow_url_fopenEnabledDisabled'; ?>
    gettextEnabledDisabled'; ?>
    -
    - -
    -

    What does this mean?

    -
      - - -
    1. You have everything you need to run properly! Congratulations!
    2. - - -
    3. PHP: You are running a supported version of PHP. No problems here.
    4. - -
    5. XML: You have XMLReader support or a version of XML support that isn't broken installed. No problems here.
    6. - -
    7. PCRE: You have PCRE support installed. No problems here.
    8. - - -
    9. allow_url_fopen: You have allow_url_fopen enabled. No problems here.
    10. - - -
    11. Gettext: You have gettext enabled. No problems here.
    12. - - -
    13. Parse ini: You can parse ini files. No problems here.
    14. - - -
    15. DOM/XML: You can parse ini files. No problems here.
    16. - - -
    17. Data filtering: You can use the PHP build-in DOM to operate on XML documents. No problems here.
    18. - - -
    19. Zlib: You have Zlib enabled. This allows SimplePie to support GZIP-encoded feeds. No problems here.
    20. - -
    21. Zlib: The Zlib extension is not available. SimplePie will ignore any GZIP-encoding, and instead handle feeds as uncompressed text.
    22. - - - -
    23. mbstring and iconv: You have both mbstring and iconv installed! This will allow to handle the greatest number of languages. No problems here.
    24. - -
    25. mbstring: mbstring is installed, but iconv is not.
    26. - -
    27. iconv: iconv is installed, but mbstring is not.
    28. - -
    29. mbstring and iconv: You do not have either of the extensions installed. This will significantly impair your ability to read non-English feeds, as well as even some English ones.
    30. - - - -
    31. GD: You have GD support installed. No problems here.
    32. - -
    33. GD: The GD extension is not available. will not be able to download pictures locally on your server.
    34. - - - -
    35. Tidy: You have Tidy support installed. No problems here.
    36. - -
    37. Tidy: The Tidy extension is not available. should still work with most feeds, but you may experience problems with some. You can install it with sudo apt-get install php5-tidy and then reload Apache sudo service apache2 reload.
    38. - - - -
    39. cURL: You have cURL support installed. No problems here.
    40. - -
    41. cURL: The cURL extension is not available. SimplePie will use fsockopen() instead.
    42. - - - -
    43. Parallel URL fetching: You have HttpRequestPool or curl_multi support installed. No problems here.
    44. - -
    45. Parallel URL fetching: HttpRequestPool or curl_multi support is not available. will use file_get_contents() instead to fetch URLs sequentially rather than in parallel.
    46. - - - -
    47. Data filtering: Your PHP configuration has the filter extension disabled. will not work here.
    48. - - - -
    49. DOM/XML: Your PHP configuration isn't standard, you're missing PHP-DOM. You may try to install a package or recompile PHP. will not work here.
    50. - - - -
    51. Parse ini files function : Bad luck : your webhost has decided to block the use of the parse_ini_file function. will not work here. - - - -
    52. GetText: The gettext extension is not available. The system we use to display wallabag in various languages is not available. will not work here.
    53. - - - -
    54. allow_url_fopen: Your PHP configuration has allow_url_fopen disabled. will not work here.
    55. - - - -
    56. PCRE: Your PHP installation doesn't support Perl-Compatible Regular Expressions. will not work here.
    57. - - -
    58. XML: Your PHP installation doesn't support XML parsing. will not work here.
    59. - - -
    60. PHP: You are running an unsupported version of PHP. will not work here.
    61. - - -
    -
    - -
    - - -

    Bottom Line: Yes, you can!

    -

    Your webhost has its act together!

    - -

    You can download the latest version of from wallabag.org.

    -

    If you already have done that, you should access the index.php file of your installation to configure and/or start using wallabag

    - -

    You can now return to the installation section.

    - -

    Note: Passing this test does not guarantee that will run on your webhost — it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.

    - - -

    Bottom Line: Yes, you can!

    -

    For most feeds, it'll run with no problems. There are certain languages that you might have a hard time with though.

    - -

    You can download the latest version of from wallabag.org.

    -

    If you already have done that, you should access the index.php file of your installation to configure and/or start using wallabag

    - -

    You can now return to the installation section.

    - -

    Note: Passing this test does not guarantee that will run on your webhost — it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.

    - -

    Bottom Line: We're sorry…

    -

    Your webhost does not support the minimum requirements for . It may be a good idea to contact your webhost and point them to the results of this test. They may be able to enable/install the required components.

    - -
    - -
    -

    This compatibility test has been borrowed (and slightly adapted by fivefilters.org) from the one supplied by SimplePie.org.

    -
    - -
    - -
    - - - 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 bd18817f..3add116c 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 8b82721d..47801007 100644 --- a/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po +++ b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po @@ -1,18 +1,26 @@ msgid "" msgstr "" -"Project-Id-Version: Wallabag\n" +"Project-Id-Version: wallabag\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-03-27 13:41+0100\n" +"POT-Creation-Date: 2014-02-25 15:17+0300\n" "PO-Revision-Date: \n" -"Last-Translator: Kevin Meyer \n" +"Last-Translator: Julian Oster \n" "Language-Team: \n" -"Language: de\n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.6.4\n" +"X-Generator: Poedit 1.7.3\n" "X-Poedit-Basepath: .\n" -"X-Poedit-SearchPath-0: /Users/kevinmeyer/Dropbox/dev_web/wallabag-dev\n" + +msgid "wallabag, a read it later open source system" +msgstr "wallabag, ein \"Read-it-later\"-Open-Source-System" + +msgid "login failed: user doesn't exist" +msgstr "Anmeldung fehlgeschlagen: Benutzer existiert nicht" + +msgid "return home" +msgstr "Auf Startseite zurückkehren" msgid "config" msgstr "Konfiguration" @@ -21,13 +29,19 @@ msgid "Saving articles" msgstr "Artikel speichern" msgid "There are several ways to save an article:" -msgstr "Es gibt viele Methoden um Artikel zu speichern:" +msgstr "Es gibt mehrere Wege, um einen Artikel zu speichern:" msgid "read the documentation" -msgstr "Die Dokumentation lesen" +msgstr "Dokumentation lesen" msgid "download the extension" -msgstr "installiere die Erweiterung" +msgstr "Erweiterung herunterladen" + +msgid "Firefox Add-On" +msgstr "Firefox-Addon" + +msgid "Chrome Extension" +msgstr "Chrome-Erweiterung" msgid "via F-Droid" msgstr "via F-Droid" @@ -39,16 +53,16 @@ msgid "via Google Play" msgstr "via Google Play" msgid "download the application" -msgstr "lade die App" +msgstr "App herunterladen" msgid "By filling this field" -msgstr "Durch Ausfüllen dieses Feldes" +msgstr "Durch das Ausfüllen dieses Feldes" msgid "bag it!" msgstr "bag it!" msgid "Bookmarklet: drag & drop this link to your bookmarks bar" -msgstr "Bookmarklet: Ziehe diesen Link in deine Lesezeichen-Leiste" +msgstr "Bookmarklet: Ziehe diesen Link in deine Lesezeichen" msgid "Upgrading wallabag" msgstr "wallabag aktualisieren" @@ -57,58 +71,46 @@ msgid "Installed version" msgstr "Installierte Version" msgid "Latest stable version" -msgstr "Neuste stabile Version" +msgstr "Letzte stabile Version" msgid "A more recent stable version is available." -msgstr "Eine neuere stabile Version ist verfügbar." +msgstr "Eine neuere Version ist verfügbar." msgid "You are up to date." -msgstr "Du bist auf den neuesten Stand." - -msgid "Last check:" -msgstr "Zuletzt geprüft:" +msgstr "Du bist auf dem aktuellsten Stand." msgid "Latest dev version" -msgstr "Neuste Entwicklungsversion" +msgstr "Letzte Entwickler-Version" msgid "A more recent development version is available." -msgstr "Eine neuere Entwicklungsversion ist verfügbar." +msgstr "Eine neuere Entwickler-Version ist verfügbar." msgid "You can clear cache to check the latest release." -msgstr "Leere den Cache um die neueste Version zu prüfen." +msgstr "Du kannst den Cache leeren, um nach neueren Versionen zu suchen." msgid "Feeds" msgstr "Feeds" -msgid "" -"Your feed token is currently empty and must first be generated to enable " -"feeds. Click here to generate it." -msgstr "" -"Dein Feed Token ist noch nicht vorhanden und muss zunächst generiert werden, " -"um deine Feeds zu aktivieren. Klicke hier um ihn zu generieren." +msgid "Your feed token is currently empty and must first be generated to enable feeds. Click here to generate it." +msgstr "Dein Feed-Token ist momentan leer und muss generiert werden, um die Feeds zu aktivieren. Klicke hier, um ihn zu erstellen." msgid "Unread feed" -msgstr "Ungelesen Feed" +msgstr "Feed für Ungelesenes" msgid "Favorites feed" -msgstr "Favoriten Feed" +msgstr "Feed für Favoriten" msgid "Archive feed" -msgstr "Archiv Feed" +msgstr "Archiv-Feed" msgid "Your token:" msgstr "Dein Token:" msgid "Your user id:" -msgstr "Deine User ID:" +msgstr "Deine Benutzer-ID:" -msgid "" -"You can regenerate your token: generate!" -"." -msgstr "" -"Hier kannst du dein Token erzeugen: Generieren!." +msgid "You can regenerate your token: generate!." +msgstr "Du kannst deinen Token regenerieren: generieren!." msgid "Change your theme" msgstr "Theme ändern" @@ -138,76 +140,58 @@ msgid "Repeat your new password:" msgstr "Neues Passwort wiederholen:" msgid "Import" -msgstr "Import" +msgstr "Importieren" -msgid "" -"Importing from other services can be quite long, and webservers default " -"configuration often prevents long scripts execution time, so it must be done " -"in multiple parts." -msgstr "" -"Der Import von anderen Diensten kann sehr lange dauern. Deswegen bricht der " -"Webserver diesen in vielen Konfigurationen ab. Daher muss der Import in " -"mehrere Teile aufgeteilt werden." +msgid "You can import your Pocket, Readability, Instapaper, Wallabag or any data in appropriate json or html format." +msgstr "Du kannst aus Pocket, Readability, Instapaper, wallabag oder einer beliebigen Datei in angebrachtem JSON- oder HTML-Format importieren." + +msgid "Please execute the import script locally as it can take a very long time." +msgstr "Führe das Import-Skript lokal aus, da der Import sehr lange dauern kann." -msgid "First, select the export file on your computer and upload it." -msgstr "Wähle eine Datei von deinem Computer aus und lade sie hoch." +msgid "Please select export file on your computer and press \"Import\" button below. Wallabag will parse your file, insert all URLs and start fetching of articles if required." +msgstr "" +"Wähle die Export-Datei auf deinem Computer aus und drücke den \"Import\"-Button unten. Wallabag wird deine Datei durchsuchen, alle URLs in der Datenbank speichern und die Artikel " +"herunterladen, sofern dies erforderlich ist." -msgid "File:" -msgstr "Datei:" +msgid "You can click here to fetch content for articles with no content." +msgstr "Du kannst hier klicken, um den Inhalt für Artikel ohne Inhalt herunterzuladen." -msgid "Upload" -msgstr "Hochladen" +msgid "More info in the official documentation:" +msgstr "Mehr Infos in der offiziellen Dokumentation:" -msgid "Then, click on the right link below." -msgstr "Klicke dann unten auf den entsprechenden Link." +msgid "(?)" +msgstr "(?)" msgid "Import from Pocket" -msgstr "Import aus Pocket" +msgstr "Aus Pocket importieren" #, php-format -msgid "(after uploaded %s file)" -msgstr "(nach Upload der Datei %s)" +msgid "(you must have a %s file on your server)" +msgstr "(du solltest eine %s Datei auf deinem Server haben)" msgid "Import from Readability" -msgstr "Import aus Readability" +msgstr "Aus Readability importieren" msgid "Import from Instapaper" -msgstr "Import aus Instapaper" +msgstr "Aus Instapaper importieren" msgid "Import from wallabag" -msgstr "Import aus Readability" +msgstr "Aus wallabag importieren" -msgid "" -"3. Your feed token is currently empty and must first be generated to fetch " -"content. Click here to generate it." -msgstr "" -"3. Dein Feed Token ist noch nicht vorhanden und muss zunächst generiert " -"werden, um Inhalt abrufen zu können. Klicke hier um ihn zu generieren." - -msgid "Finally, you have to fetch content for imported items." -msgstr "Jetzt musst du den Inhalt der importierten Artikel abrufen." +msgid "Export your wallabag data" +msgstr "Deine wallabag-Daten exportieren" msgid "Click here" -msgstr "Klicke hier" - -msgid "to fetch content for 10 articles" -msgstr "um den Inhalt von 10 Artikeln abzurufen" - -msgid "" -"If you have console access to your server, you can also create a cron task:" -msgstr "" -"Wenn du Konsolenzugang zu deinem Server hast kannst du auch einen cron " -"erstellen:" - -msgid "Export your wallabag data" -msgstr "Exportieren deine wallabag Daten" +msgstr "Hier klicken, " msgid "to download your database." -msgstr "um deine Datenbank herunterzuladen" +msgstr "um die Datenbank herunterzuladen." msgid "to export your wallabag data." -msgstr "um deine Daten aus wallabag zu exportieren." +msgstr "um die wallabag-Daten zu exportieren." + +msgid "Export JSON" +msgstr "JSON exportieren" msgid "Cache" msgstr "Cache" @@ -215,444 +199,437 @@ msgstr "Cache" msgid "to delete cache." msgstr "um den Cache zu löschen." -msgid "Tags" -msgstr "Tags" +msgid "Delete Cache" +msgstr "Cache löschen, " + +msgid "You can enter multiple tags, separated by commas." +msgstr "Du kannst mehrere Schlagworte, getrennt von einem Komma, hinzufügen." + +msgid "Add tags:" +msgstr "Schlagworte hinzufügen:" + +msgid "no tags" +msgstr "keine schlagworte" + +msgid "The tag has been applied successfully" +msgstr "Das Schlagwort wurde erfolgreich übernommen." + +msgid "interview" +msgstr "interview" + +msgid "editorial" +msgstr "editorial" + +msgid "video" +msgstr "video" + +msgid "return to article" +msgstr "zum artikel zurückkehren" + +msgid "plop" +msgstr "plop" + +msgid "You can check your configuration here." +msgstr "Du kannst deine Konfiguration hier überprüfen." + +msgid "favoris" +msgstr "Favoriten" + +msgid "archive" +msgstr "archiv" + +msgid "unread" +msgstr "ungelesen" msgid "by date asc" -msgstr "nach Datum aufsteigend" +msgstr "nach Datum, aufsteigend" msgid "by date" msgstr "nach Datum" msgid "by date desc" -msgstr "nach Datum absteigend" +msgstr "nach Datum, absteigend" msgid "by title asc" -msgstr "nach Titel aufsteigend" +msgstr "nach Titel, aufsteigend" msgid "by title" msgstr "nach Titel" msgid "by title desc" -msgstr "nach Titel absteigend" - -#, fuzzy -msgid "toggle view mode" -msgstr "Favorit" +msgstr "nach Titel, absteigend" -msgid "home" -msgstr "Start" +msgid "Tag" +msgstr "Schlagwort" -msgid "favorites" -msgstr "Favoriten" +msgid "No articles found." +msgstr "Keine Artikel gefunden." -msgid "archive" -msgstr "Archiv" +msgid "Toggle mark as read" +msgstr "Als gelesen/ungelesen markieren" -msgid "tags" -msgstr "Tags" +msgid "toggle favorite" +msgstr "favorisieren" -msgid "save a link" -msgstr "Speichere einen Link" +msgid "delete" +msgstr "löschen" -msgid "search" -msgstr "Suche" +msgid "original" +msgstr "original" -msgid "logout" -msgstr "Logout" +msgid "estimated reading time:" +msgstr "Geschätzte Lesezeit:" -msgid "return home" -msgstr "Zurück zum Start" +msgid "mark all the entries as read" +msgstr "Alle Einträge als gelesen markieren" -#, fuzzy -msgid "Search" -msgstr "Archiv" +msgid "results" +msgstr "Ergebnisse" -msgid "powered by" -msgstr "bereitgestellt von" +msgid "installation" +msgstr "installation" -msgid "debug mode is on so cache is off." -msgstr "Debug Modus ist aktiviert, das Caching ist somit deaktiviert" +msgid "install your wallabag" +msgstr "deine wallabag installieren" -msgid "your wallabag version:" -msgstr "Deine wallabag Version" +msgid "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to read the documentation on wallabag website." +msgstr "" +"wallabag ist noch nicht installiert. Fülle das untenstehende Formular aus, um wallabag zu installieren. Scheue dich nicht davor, die Dokumentation " +"auf der wallabag-Webseite zur Hilfe zu ziehen." -msgid "storage:" -msgstr "Speicher:" +msgid "Login" +msgstr "Anmelden" -msgid "Save a link" -msgstr "Speichere einen Link" +msgid "Repeat your password" +msgstr "Passwort wiederholen" -msgid "save link!" -msgstr "Link speichern!" +msgid "Install" +msgstr "Installieren" -msgid "unread" -msgstr "ungelesen" +msgid "login to your wallabag" +msgstr "Melde dich in deiner wallabag an" -msgid "Tag" -msgstr "Tag" +msgid "Login to wallabag" +msgstr "In wallabag anmelden" -msgid "No articles found." -msgstr "Keine Artikel gefunden." +msgid "you are in demo mode, some features may be disabled." +msgstr "Du bist im Demo-Modus, einige Features sind möglicherweise deaktiviert." -msgid "estimated reading time:" -msgstr "geschätzte Lesezeit:" +msgid "Username" +msgstr "Benutzername" -msgid "estimated reading time :" -msgstr "geschätzte Lesezeit:" +msgid "Stay signed in" +msgstr "Angemeldet bleiben" -msgid "Toggle mark as read" -msgstr "Als gelesen markieren" +msgid "(Do not check on public computers)" +msgstr "(nicht auf öffentlichen Computern ankreuzen)" -msgid "toggle favorite" -msgstr "Favorit" +msgid "Sign in" +msgstr "Anmelden" -msgid "delete" -msgstr "Löschen" +msgid "favorites" +msgstr "favoriten" -msgid "original" -msgstr "Original" +msgid "estimated reading time :" +msgstr "Geschätzte Lesezeit:" msgid "Mark all the entries as read" -msgstr "Markiere alle als gelesen" +msgstr "Alle Einträge als gelesen markieren" -msgid "results" -msgstr "Ergebnisse" +msgid "Return home" +msgstr "Zur Startseite zurückkehren" -msgid "Uh, there is a problem with the cron." -msgstr "Oh, es gab ein Problem mit dem cron." +msgid "Back to top" +msgstr "Nach oben scrollen" -msgid "Untitled" -msgstr "Ohne Titel" - -msgid "the link has been added successfully" -msgstr "Speichern des Links erfolgreich" - -msgid "error during insertion : the link wasn't added" -msgstr "Fehler beim Einfügen: Der Link wurde nicht hinzugefügt" - -msgid "the link has been deleted successfully" -msgstr "Löschen des Links erfolgreich" - -msgid "the link wasn't deleted" -msgstr "Der Link wurde nicht entfernt" +msgid "Mark as read" +msgstr "Als gelesen markieren" -msgid "Article not found!" -msgstr "Artikel nicht gefunden!" +msgid "Favorite" +msgstr "Favorisieren" -msgid "previous" -msgstr "vorherige" +msgid "Toggle favorite" +msgstr "favorisieren" -msgid "next" -msgstr "nächste" +msgid "Delete" +msgstr "Löschen" -msgid "in demo mode, you can't update your password" -msgstr "im Demo-Modus kann das Passwort nicht geändert werden" +msgid "Tweet" +msgstr "Twittern" -msgid "your password has been updated" -msgstr "Dein Passwort wurde geändert" +msgid "Email" +msgstr "Email" -msgid "" -"the two fields have to be filled & the password must be the same in the two " -"fields" -msgstr "Beide Felder müssen mit selbem Inhalt ausgefüllt sein" +msgid "shaarli" +msgstr "shaarli" -msgid "still using the \"" -msgstr "nutze immernoch die \"" +msgid "flattr" +msgstr "flattr" -msgid "that theme does not seem to be installed" -msgstr "dieses Theme scheint nicht installiert zu sein" +msgid "Does this article appear wrong?" +msgstr "Erscheint dieser Artikel nicht richtig?" -msgid "you have changed your theme preferences" -msgstr "Du hast deine Theme Einstellungen geändert" +msgid "tags:" +msgstr "schlagworte:" -msgid "that language does not seem to be installed" -msgstr "Diese Sprache scheint nicht installiert zu sein" +msgid "Edit tags" +msgstr "Schlagworte bearbeiten" -msgid "you have changed your language preferences" -msgstr "Du hast deine Spracheinstellungen geändert" +msgid "save link!" +msgstr "link speichern!" -msgid "login failed: you have to fill all fields" -msgstr "Anmeldung fehlgeschlagen: Alle Felder müssen ausgefüllt werden" +msgid "home" +msgstr "start" -msgid "welcome to your wallabag" -msgstr "Willkommen bei deiner wallabag" +msgid "tags" +msgstr "schlagworte" -msgid "login failed: bad login or password" -msgstr "Anmeldung fehlgeschlagen: Falscher Benutzername oder Passwort" +msgid "logout" +msgstr "abmelden" -msgid "" -"import from instapaper completed. You have to execute the cron to fetch " -"content." -msgstr "" -"Import aus Instapaper vollständig. Führe den cronjob aus um den Inhalt " -"abzurufen." +msgid "powered by" +msgstr "Angetrieben von" -msgid "" -"import from pocket completed. You have to execute the cron to fetch content." -msgstr "" -"Import aus Pocket vollständig. Führe den cronjob aus um den Inhalt abzurufen." +msgid "debug mode is on so cache is off." +msgstr "Der Debug-Modus ist aktiviert, also ist der Cache deaktiviert." -msgid "" -"import from Readability completed. You have to execute the cron to fetch " -"content." -msgstr "" -"Import aus Readability vollständig. Führe den cronjob aus um den Inhalt " -"abzurufen." +msgid "your wallabag version:" +msgstr "Deine wallabag-Version:" -msgid "" -"import from Poche completed. You have to execute the cron to fetch content." -msgstr "" -"Import aus Poche vollständig. Führe den cronjob aus um den Inhalt abzurufen." +msgid "storage:" +msgstr "speicher:" -msgid "Unknown import provider." -msgstr "Unbekannter Import Anbieter." +msgid "save a link" +msgstr "einen link speichern" -msgid "Could not find required \"" -msgstr "Nicht gefunden: \"" +msgid "back to home" +msgstr "zurück zur startseite" -msgid "File uploaded. You can now execute import." -msgstr "Datei hochgeladen. Du kannst nun importieren." +msgid "toggle mark as read" +msgstr "als gelesen/ungelesen markieren" -msgid "Error while importing file. Do you have access to upload it?" -msgstr "Fehler beim Importieren. Hast du das Recht zum Hochladen?" +msgid "tweet" +msgstr "tweet" -msgid "User with this id (" -msgstr "Nutzer mit dieser id (" +msgid "email" +msgstr "email" -msgid "Uh, there is a problem while generating feeds." -msgstr "Oh, es gab ein Problem beim Erstellen des Feeds." +msgid "this article appears wrong?" +msgstr "dieser artikel erscheint falsch?" -msgid "Cache deleted." -msgstr "Cache gelöscht" +msgid "No link available here!" +msgstr "Kein Link verfügbar!" -msgid "Oops, it seems you don't have PHP 5." -msgstr "Oops, es scheint als würde PHP 5 fehlen." +msgid "Poching a link" +msgstr "Link speichern" -msgid "wallabag, a read it later open source system" -msgstr "wallabag, ein Später-Lesen Open Source System" +msgid "by filling this field" +msgstr "mit dem Ausfüllen dieses Feldes" -msgid "login failed: user doesn't exist" -msgstr "Anmeldung fehlgeschlagen: Benutzer existiert nicht" +msgid "bookmarklet: drag & drop this link to your bookmarks bar" +msgstr "Bookmarklet: Drag & drop diesen Link in deine Lesezeichen" -#~ msgid "You can enter multiple tags, separated by commas." -#~ msgstr "Du kannst mehrere Tags, durch Kommata getrennt, eingeben." +msgid "Drag & drop this link to your bookmarks bar:" +msgstr "Drag & drop diesen Link in deine Lesezeichen:" -#~ msgid "return to article" -#~ msgstr "zurück zum Artikel" +msgid "your version" +msgstr "deine Version" -#, fuzzy -#~ msgid "favoris" -#~ msgstr "Favoriten" +msgid "latest stable version" +msgstr "letzte stabile Version" -#~ msgid "mark all the entries as read" -#~ msgstr "Markiere alle als gelesen" +msgid "a more recent stable version is available." +msgstr "Eine aktuellere Version ist verfügbar." -#~ msgid "Back to top" -#~ msgstr "Nach Oben" +msgid "you are up to date." +msgstr "Du bist auf dem aktuellsten Stand." -#~ msgid "Mark as read" -#~ msgstr "Als gelesen markieren" +msgid "latest dev version" +msgstr "Letzte Entwickler-Version" -#~ msgid "Favorite" -#~ msgstr "Favoriten" +msgid "a more recent development version is available." +msgstr "Eine neuere Entwickler-Version ist verfügbar." -#~ msgid "Toggle favorite" -#~ msgstr "Favorit" +msgid "Please execute the import script locally, it can take a very long time." +msgstr "Führe das Import-Skript lokal aus, da der Import sehr lange dauern kann." -#~ msgid "Delete" -#~ msgstr "Löschen" +msgid "More infos in the official doc:" +msgstr "Mehr Informationen in der offiziellen Dokumentation:" -#~ msgid "Tweet" -#~ msgstr "Twittern" +msgid "import from Pocket" +msgstr "Aus Pocket importieren" -#~ msgid "Email" -#~ msgstr "per E-Mail senden" +msgid "import from Readability" +msgstr "Aus Readability importieren" -#~ msgid "shaarli" -#~ msgstr "Shaarli" +msgid "import from Instapaper" +msgstr "Aus Instapaper importieren" -#~ msgid "flattr" -#~ msgstr "flattr" +msgid "Tags" +msgstr "Schlagworte" -#~ msgid "Does this article appear wrong?" -#~ msgstr "Erscheint dieser Artikel falsch?" +msgid "Untitled" +msgstr "Untitled" -#~ msgid "Edit tags" -#~ msgstr "Tags bearbeiten" +msgid "the link has been added successfully" +msgstr "Der Link wurde erfolgreich hinzugefügt" -#~ msgid "Start typing for auto complete." -#~ msgstr "Beginne zu tippen für die Autovervollständigung." +msgid "error during insertion : the link wasn't added" +msgstr "Fehler während des Imports: Der Link wurde nicht hinzugefügt." -#~ msgid "Return home" -#~ msgstr "Zurück zum Start" +msgid "the link has been deleted successfully" +msgstr "Der Link wurde erfolgreich gelöscht" -#~ msgid "tags:" -#~ msgstr "Tags:" +msgid "the link wasn't deleted" +msgstr "Der Link wurde nicht gelöscht." -#~ msgid "login to your wallabag" -#~ msgstr "Bei wallabag anmelden" +msgid "Article not found!" +msgstr "Artikel nicht gefunden!" -#~ msgid "you are in demo mode, some features may be disabled." -#~ msgstr "" -#~ "Du befindest dich im Demomodus, einige Funktionen könnten deaktiviert " -#~ "sein." +msgid "previous" +msgstr "vorherige" -#~ msgid "Login" -#~ msgstr "Benutzername" +msgid "next" +msgstr "nächste" -#~ msgid "Stay signed in" -#~ msgstr "Angemeldet bleiben" +msgid "in demo mode, you can't update your password" +msgstr "Im Demo-Modus kannst du as Kennwort nicht aktualisieren." -#~ msgid "(Do not check on public computers)" -#~ msgstr "(nicht auf einem öffentlichen Computer anhaken)" +msgid "your password has been updated" +msgstr "Dein Passwort wurde aktualisiert" -#~ msgid "plop" -#~ msgstr "plop" +msgid "the two fields have to be filled & the password must be the same in the two fields" +msgstr "Beide Felder müssen ausgefüllt sein und das gleiche Passwort beinhalten" -#~ msgid "Login to wallabag" -#~ msgstr "Bei wallabag anmelden" +msgid "still using the \"" +msgstr "nutze immernoch die \"" -#~ msgid "Username" -#~ msgstr "Benutzername" +msgid "that theme does not seem to be installed" +msgstr "Dieses Theme scheint nicht installiert zu sein." -#~ msgid "Sign in" -#~ msgstr "Einloggen" +msgid "you have changed your theme preferences" +msgstr "Du hast deine Theme-Einstellungen geändert" -#~ msgid "Enter your search here" -#~ msgstr "Gib hier deine Suchanfrage ein" +msgid "that language does not seem to be installed" +msgstr "Diese Sprache scheint nicht installiert zu sein" -#~ msgid "installation" -#~ msgstr "Installieren" +msgid "you have changed your language preferences" +msgstr "Du hast deine Spracheinstellungen geändert" -#~ msgid "install your wallabag" -#~ msgstr "Installiere deine wallabag" +msgid "login failed: you have to fill all fields" +msgstr "Anmeldung fehlgeschlagen: Du musst alle Felder ausfüllen" -#~ msgid "" -#~ "wallabag is still not installed. Please fill the below form to install " -#~ "it. Don't hesitate to read the " -#~ "documentation on wallabag website." -#~ msgstr "" -#~ "wallabag ist noch nicht installiert. Bitte fülle die Felder unten aus, um " -#~ "die Installation durchzuführen. Zögere nicht, die Dokumentation auf der Website von wallabag zu lesen, " -#~ "falls du Probleme haben solltest." +msgid "welcome to your wallabag" +msgstr "Willkommen in deiner wallabag" -#~ msgid "Repeat your password" -#~ msgstr "Wiederhole dein Passwort" +msgid "login failed: bad login or password" +msgstr "Anmeldung fehlgeschlagen: Falscher Benutzername oder falsches Passwort" -#~ msgid "Install" -#~ msgstr "Installieren" +msgid "import from instapaper completed" +msgstr "Import aus Instapaper abgeschlossen" -#~ msgid "No link available here!" -#~ msgstr "Kein Link verfügbar!" +msgid "import from pocket completed" +msgstr "Import aus Pocket abgeschlossen" -#~ msgid "toggle mark as read" -#~ msgstr "Als gelesen markieren" +msgid "import from Readability completed. " +msgstr "Import aus Readability abgeschlossen." -#~ msgid "" -#~ "You can check your " -#~ "configuration here." -#~ msgstr "" -#~ "Du kannst deine Konfiguration hier testen." +msgid "import from Poche completed. " +msgstr "Import aus wallabag abgeschlossen." -#~ msgid "back to home" -#~ msgstr "züruck zur Hauptseite" +msgid "Unknown import provider." +msgstr "Unbekannter Import-Provider." -#~ msgid "tweet" -#~ msgstr "Twittern" +msgid "Incomplete inc/poche/define.inc.php file, please define \"" +msgstr "Die Datei /inc/poche/define.inc.php ist unvollständig, bitte definiere \"" -#~ msgid "email" -#~ msgstr "senden per E-Mail" +msgid "Could not find required \"" +msgstr "Nicht gefunden: \"" -#~ msgid "this article appears wrong?" -#~ msgstr "dieser Artikel erscheint falsch?" +msgid "Uh, there is a problem while generating feeds." +msgstr "Oh, es gibt ein Problem bei dem Generieren der Feeds." -#~ msgid "Poching a link" -#~ msgstr "Poche einen Link" +msgid "Cache deleted." +msgstr "Cache geleert." -#~ msgid "by filling this field" -#~ msgstr "durch das ausfüllen dieses Feldes:" +msgid "Oops, it seems you don't have PHP 5." +msgstr "Ups, es sieht so aus, als ob du nicht PHP 5 hast." -#~ msgid "bookmarklet: drag & drop this link to your bookmarks bar" -#~ msgstr "Bookmarklet: Ziehe diesen Link in deine Lesezeichen-Leiste" +msgid "Add user" +msgstr "Benutzer hinzufügen" -#~ msgid "your version" -#~ msgstr "Deine Version" +msgid "Add a new user :" +msgstr "Neuen Benutzer hinzufügen:" -#~ msgid "latest stable version" -#~ msgstr "Neuste stabile Version" +msgid "Login for new user" +msgstr "Benutzername des neuen Benutzers" -#~ msgid "a more recent stable version is available." -#~ msgstr "Eine neuere stabile Version ist verfügbar." +msgid "Password for new user" +msgstr "Passwort des neuen Benutzers" -#~ msgid "you are up to date." -#~ msgstr "Du bist auf den neuesten Stand." +msgid "Email for new user (not required)" +msgstr "E-Mail-Adresse des neuen Benutzers (nicht erforderlich)" -#~ msgid "latest dev version" -#~ msgstr "Neuste Entwicklungsversion" +msgid "Send" +msgstr "Senden" -#~ msgid "a more recent development version is available." -#~ msgstr "Eine neuere Entwicklungsversion ist verfügbar." +msgid "Delete account" +msgstr "Account löschen" -#~ msgid "" -#~ "Please execute the import script locally, it can take a very long time." -#~ msgstr "" -#~ "Bitte führe das Import Script lokal aus, dies kann eine Weile dauern." +msgid "You can delete your account by entering your password and validating." +msgstr "Du kannst deinen Account löschen, indem du dein Kennwort eintippst und validierst." -#~ msgid "More infos in the official doc:" -#~ msgstr "Mehr Informationen in der offiziellen Dokumentation:" +msgid "Be careful, data will be erased forever (that is a very long time)." +msgstr "Pass auf, die Daten werden für immer gelöscht werden (eine sehr lange Zeit)." -#~ msgid "import from Pocket" -#~ msgstr "Import aus Pocket" +msgid "Type here your password" +msgstr "Kennwort hier eintippen" -#~ msgid "(you must have a %s file on your server)" -#~ msgstr "(du brauchst eine %s Datei auf deinem Server)" +msgid "You are the only user, you cannot delete your own account." +msgstr "Du kannst deinen Account nicht löschen, weil du der einzige Benutzer bist." -#~ msgid "import from Readability" -#~ msgstr "Import aus Readability" +msgid "To completely remove wallabag, delete the wallabag folder on your web server (and eventual databases)." +msgstr "Um wallabag komplett zu entfernen, lösche den wallabag-Ordner und die Datenbank(en) von deinem Webserver." -#~ msgid "import from Instapaper" -#~ msgstr "Import aus Instapaper" +msgid "Enter your search here" +msgstr "Suchbegriff hier eintippen" -#~ msgid "You can also create a cron task:" -#~ msgstr "Du kannst auch einen cronjob anlegen:" +msgid "Tag these results as" +msgstr "Diese Ergebnisse verschlagworten mit" -#~ msgid "" -#~ "Please execute the import script locally as it can take a very long time." -#~ msgstr "" -#~ "Bitte führe das Import Script lokal aus, da dies eine Weile dauern kann." +# ebook +msgid "Fancy an E-Book ?" +msgstr "Willst du ein E-Book?" -#~ msgid "More info in the official documentation:" -#~ msgstr "Mehr Informationen in der offiziellen Dokumentation:" +msgid "Click on this link to get all your articles in one ebook (ePub 3 format)." +msgstr "Klicke auf diesen Link, um alle Artikel in ein E-Book (EPUB 3-Format) zu exportieren." -#~ msgid "import from instapaper completed" -#~ msgstr "Import aus Instapaper erfolgreich" +msgid "This can take a while and can even fail if you have too many articles, depending on your server configuration." +msgstr "Dies kann eine Weile dauern oder sogar fehlschlagen, wenn du zu viele Artikel hast, abhängig von deiner Server-Konfiguration." -#~ msgid "import from pocket completed" -#~ msgstr "Import aus Pocket erfolgreich" +msgid "Download the articles from this tag in an epub" +msgstr "Die Artikel von diesem Schlagwort als EPUB herunterladen" -#~ msgid "import from Poche completed. " -#~ msgstr "Import aus Poche erfolgreich" +msgid "Download the articles from this search in an epub" +msgstr "Alle Artikel aus dieser Suche als EPUB herunterladen" -#~ msgid "Incomplete inc/poche/define.inc.php file, please define \"" -#~ msgstr "Unvollständige inc/poche/define.inc.php Datei, bitte setze \"" +msgid "Download the articles from this category in an epub" +msgstr "Alle Artikel aus dieser Kategorie als EPUB herunterladen" #~ msgid "poche it!" -#~ msgstr "Poche es!" +#~ msgstr "poche it!" #~ msgid "Updating poche" -#~ msgstr "Poche aktualisieren" +#~ msgstr "Updating poche" #~ msgid "create an issue" -#~ msgstr "ein Ticket erstellen" +#~ msgstr "create an issue" #~ msgid "or" -#~ msgstr "oder" +#~ msgstr "or" #~ msgid "contact us by mail" -#~ msgstr "kontaktieren Sie uns per E-Mail" +#~ msgstr "contact us by mail" #~ msgid "your poche version:" -#~ msgstr "Deine Poche Version" +#~ msgstr "your poche version:" diff --git a/locale/en_GB.utf8/LC_MESSAGES/en_GB.utf8.mo b/locale/en_GB.utf8/LC_MESSAGES/en_GB.utf8.mo new file mode 100644 index 00000000..c6678458 Binary files /dev/null and b/locale/en_GB.utf8/LC_MESSAGES/en_GB.utf8.mo differ diff --git a/locale/en_GB.utf8/LC_MESSAGES/en_GB.utf8.po b/locale/en_GB.utf8/LC_MESSAGES/en_GB.utf8.po new file mode 100644 index 00000000..e6c558dc --- /dev/null +++ b/locale/en_GB.utf8/LC_MESSAGES/en_GB.utf8.po @@ -0,0 +1,681 @@ +msgid "" +msgstr "" +"Project-Id-Version: wallabag\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-02-25 15:17+0300\n" +"PO-Revision-Date: \n" +"Last-Translator: tcit \n" +"Language-Team: \n" +"Language: en-GB\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" +"X-Poedit-Basepath: .\n" + +msgid "wallabag, a read it later open source system" +msgstr "wallabag, an open source \"Read It Later\" service" + +msgid "login failed: user doesn't exist" +msgstr "Login failed: user doesn't exist" + +msgid "return home" +msgstr "Return Home" + +msgid "config" +msgstr "Config" + +msgid "Saving articles" +msgstr "Saving articles" + +msgid "There are several ways to save an article:" +msgstr "There are several ways to save an article:" + +msgid "read the documentation" +msgstr "Read the documentation" + +msgid "download the extension" +msgstr "Download the extension" + +msgid "Firefox Add-On" +msgstr "Firefox Add-On" + +msgid "Chrome Extension" +msgstr "Chrome Extension" + +msgid "via F-Droid" +msgstr "via F-Droid" + +msgid " or " +msgstr " or " + +msgid "via Google Play" +msgstr "via Google Play" + +msgid "download the application" +msgstr "Download the application" + +msgid "By filling this field" +msgstr "By filling in this field" + +msgid "bag it!" +msgstr "bag it!" + +msgid "Bookmarklet: drag & drop this link to your bookmarks bar" +msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar" + +msgid "Upgrading wallabag" +msgstr "Upgrading wallabag" + +msgid "Installed version" +msgstr "Installed 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 "Feeds" +msgstr "Feeds" + +msgid "" +"Your feed token is currently empty and must first be generated to enable " +"feeds. Click here to generate it." +msgstr "" +"Your feed token is currently empty. You must generated it to enable feeds. " +"Generate Feed Token." + +msgid "Unread feed" +msgstr "Unread feed" + +msgid "Favorites feed" +msgstr "Favourites feed" + +msgid "Archive feed" +msgstr "Archive feed" + +msgid "Your token:" +msgstr "Your token:" + +msgid "Your user id:" +msgstr "Your user ID:" + +msgid "" +"You can regenerate your token: generate!" +"." +msgstr "Regenerate Token" + +msgid "Change your theme" +msgstr "Change Your Theme" + +msgid "Theme:" +msgstr "Theme:" + +msgid "Update" +msgstr "Update" + +msgid "Change your language" +msgstr "Change Your Language" + +msgid "Language:" +msgstr "Language:" + +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 "Import" +msgstr "Import" + +msgid "" +"You can import your Pocket, Readability, Instapaper, Wallabag or any data in " +"appropriate json or html format." +msgstr "" +"You can import your Pocket, Readability, Instapaper, wallabag or any other " +"data in JSON or HTML format." + +msgid "" +"Please execute the import script locally as it can take a very long time." +msgstr "Please run the import script locally as it can take a very long time." + +msgid "" +"Please select export file on your computer and press \"Import\" button " +"below. Wallabag will parse your file, insert all URLs and start fetching of " +"articles if required." +msgstr "" +"Please select export file on your computer and press the “" +"Import” button below. wallabag will parse your file, insert all URLs " +"and start fetching articles if required. Please execute the import script " +"locally as it can take a very long time." + +msgid "You can click here to fetch content for articles with no content." +msgstr "Fetch content for articles with no content" + +msgid "More info in the official documentation:" +msgstr "More info in the official documentation:" + +msgid "" +"(?)" +msgstr "" +"(?)" + +msgid "Import from Pocket" +msgstr "Import from Pocket" + +#, php-format +msgid "(you must have a %s file on your server)" +msgstr "(you must have a %s file on your server)" + +msgid "Import from Readability" +msgstr "Import from Readability" + +msgid "Import from Instapaper" +msgstr "Import from Instapaper" + +msgid "Import from wallabag" +msgstr "Import from wallabag" + +msgid "Export your wallabag data" +msgstr "Export your wallabag data" + +msgid "Click here" +msgstr "Click here" + +msgid "to download your database." +msgstr "to download your database." + +msgid "to export your wallabag data." +msgstr "to export your wallabag data." + +msgid "Export JSON" +msgstr "Export JSON" + +msgid "Cache" +msgstr "Cache" + +msgid "to delete cache." +msgstr "to delete cache." + +msgid "Delete Cache" +msgstr "Delete Cache" + +msgid "You can enter multiple tags, separated by commas." +msgstr "You can enter multiple tags, separated by commas." + +msgid "Add tags:" +msgstr "Add tags:" + +msgid "no tags" +msgstr "no tags" + +msgid "The tag has been applied successfully" +msgstr "The tag has been applied successfully" + +msgid "interview" +msgstr "interview" + +msgid "editorial" +msgstr "editorial" + +msgid "video" +msgstr "video" + +msgid "return to article" +msgstr "Return to article" + +msgid "plop" +msgstr "plop" + +msgid "" +"You can check your configuration " +"here." +msgstr "" +"You can check your configuration " +"here." + +msgid "favoris" +msgstr "Favourites" + +msgid "archive" +msgstr "Archive" + +msgid "unread" +msgstr "Unread" + +msgid "by date asc" +msgstr "by date ascending" + +msgid "by date" +msgstr "by date" + +msgid "by date desc" +msgstr "by date descending" + +msgid "by title asc" +msgstr "by title ascending" + +msgid "by title" +msgstr "by title" + +msgid "by title desc" +msgstr "by title descending" + +msgid "Tag" +msgstr "Tag" + +msgid "No articles found." +msgstr "No articles found." + +msgid "Toggle mark as read" +msgstr "Toggle mark as read" + +msgid "toggle favorite" +msgstr "Toggle favourite" + +msgid "delete" +msgstr "Delete" + +msgid "original" +msgstr "Original" + +msgid "estimated reading time:" +msgstr "Estimated reading time:" + +msgid "mark all the entries as read" +msgstr "Mark all the entries as read" + +msgid "results" +msgstr "Results" + +msgid "installation" +msgstr "Installation" + +msgid "install your wallabag" +msgstr "Install your wallabag" + +msgid "" +"wallabag is still not installed. Please fill the below form to install it. " +"Don't hesitate to read the documentation " +"on wallabag website." +msgstr "" +"wallabag is still not installed. Please fill in the form to install it. If " +"you need help, please read the " +"documentation on wallabag website." + +msgid "Login" +msgstr "Login" + +msgid "Repeat your password" +msgstr "Repeat your password" + +msgid "Install" +msgstr "Install" + +msgid "login to your wallabag" +msgstr "Login to your wallabag" + +msgid "Login to wallabag" +msgstr "Login to wallabag" + +msgid "you are in demo mode, some features may be disabled." +msgstr "You are in demo mode; some features may be disabled." + +msgid "Username" +msgstr "Username" + +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" + +msgid "favorites" +msgstr "Favourites" + +msgid "estimated reading time :" +msgstr "Estimated reading time:" + +msgid "Mark all the entries as read" +msgstr "Mark all the entries as read" + +msgid "Return home" +msgstr "Return home" + +msgid "Back to top" +msgstr "Back to top" + +msgid "Mark as read" +msgstr "Mark as read" + +msgid "Favorite" +msgstr "Favourite" + +msgid "Toggle favorite" +msgstr "Toggle favourite" + +msgid "Delete" +msgstr "Delete" + +msgid "Tweet" +msgstr "Tweet" + +msgid "Email" +msgstr "Email" + +msgid "shaarli" +msgstr "shaarli" + +msgid "flattr" +msgstr "flattr" + +msgid "Does this article appear wrong?" +msgstr "Does this article display incorrectly?" + +msgid "tags:" +msgstr "tags:" + +msgid "Edit tags" +msgstr "Edit Tags" + +msgid "save link!" +msgstr "Save Link" + +msgid "home" +msgstr "Home" + +msgid "tags" +msgstr "Tags" + +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 the cache is off." + +msgid "your wallabag version:" +msgstr "Your wallabag version:" + +msgid "storage:" +msgstr "Storage:" + +msgid "save a link" +msgstr "Save a Link" + +msgid "back to home" +msgstr "Back to Home" + +msgid "toggle mark as read" +msgstr "Toggle mark as read" + +msgid "tweet" +msgstr "Tweet" + +msgid "email" +msgstr "Email" + +msgid "this article appears wrong?" +msgstr "This article displays incorrectly?" + +msgid "No link available here!" +msgstr "No link available here" + +msgid "Poching a link" +msgstr "bagging a link" + +msgid "by filling this field" +msgstr "by filling in this field" + +msgid "bookmarklet: drag & drop this link to your bookmarks bar" +msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar" + +msgid "Drag & drop this link to your bookmarks bar:" +msgstr "Drag & drop this link to your bookmarks bar:" + +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 development version" + +msgid "a more recent development version is available." +msgstr "A more recent development version is available." + +msgid "You can clear cache to check the latest release." +msgstr "" +"You can clear the cache to check for the latest " +"release." + +msgid "Please execute the import script locally, it can take a very long time." +msgstr "Please run the import script locally as it can take a very long time." + +msgid "More infos in the official doc:" +msgstr "More information 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 "Tags" +msgstr "Tags" + +msgid "Untitled" +msgstr "Untitled" + +msgid "the link has been added successfully" +msgstr "The link has been added successfully." + +msgid "error during insertion : the link wasn't added" +msgstr "Error during insertion: the link wasn't added." + +msgid "the link has been deleted successfully" +msgstr "The link has been deleted successfully." + +msgid "the link wasn't deleted" +msgstr "The link wasn't deleted." + +msgid "Article not found!" +msgstr "Article not found." + +msgid "previous" +msgstr "Previous" + +msgid "next" +msgstr "Next" + +msgid "in demo mode, you can't update your password" +msgstr "In demo mode, you can't update your password." + +msgid "your password has been updated" +msgstr "Your password has been updated." + +msgid "" +"the two fields have to be filled & the password must be the same in the two " +"fields" +msgstr "" +"The two fields must be filled in, and the password must be the same in both " +"fields" + +msgid "still using the \"" +msgstr "Still using the \"" + +msgid "that theme does not seem to be installed" +msgstr "That theme is not installed." + +msgid "you have changed your theme preferences" +msgstr "You have changed your theme preferences." + +msgid "that language does not seem to be installed" +msgstr "That language is not installed." + +msgid "you have changed your language preferences" +msgstr "You have changed your language preferences." + +msgid "login failed: you have to fill all fields" +msgstr "Login failed: you have to fill in all the fields." + +msgid "welcome to your wallabag" +msgstr "Welcome to your wallabag." + +msgid "login failed: bad login or password" +msgstr "Login failed: bad login or password." + +msgid "import from instapaper completed" +msgstr "Import from Instapaper completed." + +msgid "import from pocket completed" +msgstr "Import from Pocket completed." + +msgid "import from Readability completed. " +msgstr "Import from Readability completed." + +msgid "import from Poche completed. " +msgstr "Import from Poche completed. " + +msgid "Unknown import provider." +msgstr "Unknown import provider." + +msgid "Incomplete inc/poche/define.inc.php file, please define \"" +msgstr "Incomplete inc/poche/define.inc.php file, please define \"" + +msgid "Could not find required \"" +msgstr "Could not find required \"" + +msgid "Uh, there is a problem while generating feeds." +msgstr "There is a problem generating feeds." + +msgid "Cache deleted." +msgstr "Cache deleted." + +msgid "Oops, it seems you don't have PHP 5." +msgstr "Oops, it seems you don't have PHP 5." + +msgid "Add user" +msgstr "Add User" + +msgid "Add a new user :" +msgstr "Add a new user:" + +msgid "Login for new user" +msgstr "Login for new user:" + +msgid "Password for new user" +msgstr "Password for new user:" + +msgid "Email for new user (not required)" +msgstr "Email for new user (not required):" + +msgid "Send" +msgstr "Send" + +msgid "Delete account" +msgstr "Delete Account" + +msgid "You can delete your account by entering your password and validating." +msgstr "You can delete your account by entering your password and confirming." + +msgid "Be careful, data will be erased forever (that is a very long time)." +msgstr "Be careful, data will be erased forever (that is a very long time)." + +msgid "Type here your password" +msgstr "Enter your password" + +msgid "You are the only user, you cannot delete your own account." +msgstr "You are the only user; you cannot delete your own account." + +msgid "" +"To completely remove wallabag, delete the wallabag folder on your web server " +"(and eventual databases)." +msgstr "" +"To completely remove wallabag, delete the wallabag folder on your web " +"server. Then delete any any databases you have created for wallabag." + +msgid "Enter your search here" +msgstr "Enter your search here" + +msgid "Tag these results as" +msgstr "Tag these results as" + +# ebook +msgid "Fancy an E-Book ?" +msgstr "Fancy an E-Book?" + +msgid "" +"Click on this " +"link to get all your articles in one ebook (ePub 3 format)." +msgstr "" +"You can Generate " +"an EPUB to get all your articles in one ebook (EPUB 3 format)." + +msgid "" +"This can take a while and can even fail if you have too many " +"articles, depending on your server configuration." +msgstr "" +"This can take a while and can even fail if you have too many " +"articles, depending on your server configuration." + +msgid "Download the articles from this tag in an epub" +msgstr "Download the articles from this tag as an EPUB" + +msgid "Download the articles from this search in an epub" +msgstr "Download the articles from this search as an EPUB" + +msgid "Download the articles from this category in an epub" +msgstr "Download the articles from this category as an EPUB" + +#~ msgid "poche it!" +#~ msgstr "poche it!" + +#~ msgid "Updating poche" +#~ msgstr "Updating poche" + +#~ msgid "create an issue" +#~ msgstr "create an issue" + +#~ msgid "or" +#~ msgstr "or" + +#~ msgid "contact us by mail" +#~ msgstr "contact us by mail" + +#~ msgid "your poche version:" +#~ msgstr "your poche version:" diff --git a/themes/_global/img/icons/evernote-icon--black.svg b/themes/_global/img/icons/evernote-icon--black.svg new file mode 100644 index 00000000..1336648c --- /dev/null +++ b/themes/_global/img/icons/evernote-icon--black.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/themes/_global/js/saveLink.js b/themes/_global/js/saveLink.js index a7acd84c..b7dd7a34 100755 --- a/themes/_global/js/saveLink.js +++ b/themes/_global/js/saveLink.js @@ -4,6 +4,8 @@ $.fn.ready(function() { $bagitForm = $('#bagit-form'), $bagitFormForm = $('#bagit-form-form'); +$("#tags2add").hide(); + /* ========================================================================== bag it link and close button ========================================================================== */ @@ -78,6 +80,14 @@ $.fn.ready(function() { event.preventDefault(); }); +$('#showtaginput').click(function(){ + $('#tags2add').toggle(); + $('#plainurl').toggle(); + $('#showtaginput').toggleClass('icon-tags'); + $('#showtaginput').toggleClass('icon-check'); +}); + + /* ========================================================================== Keyboard gestion ========================================================================== */ diff --git a/themes/baggy/_pocheit-form.twig b/themes/baggy/_pocheit-form.twig index bf2ae903..85d33873 100755 --- a/themes/baggy/_pocheit-form.twig +++ b/themes/baggy/_pocheit-form.twig @@ -4,6 +4,10 @@ × +
    + Add tags +
    + diff --git a/themes/baggy/about.twig b/themes/baggy/about.twig index 110196a6..93c96df2 100755 --- a/themes/baggy/about.twig +++ b/themes/baggy/about.twig @@ -7,6 +7,8 @@ {% block content %}

    {% trans "About wallabag" %}

    +

    {% trans "wallabag is a read-it-later application: you can save a web page by keeping only content. Elements like ads or menus are deleted." %}

    +
    {% trans "Project website" %}
    https://www.wallabag.org
    @@ -27,8 +29,6 @@
    {{ constant('POCHE') }}
    -

    {% trans "wallabag is a read-it-later application: you can save a web page by keeping only content. Elements like ads or menus are deleted." %}

    -

    {% trans "Getting help" %}

    diff --git a/themes/baggy/config.twig b/themes/baggy/config.twig index a5a61559..95e09734 100755 --- a/themes/baggy/config.twig +++ b/themes/baggy/config.twig @@ -27,7 +27,7 @@

    {% trans "Bookmarklet" %}

    - {% trans "Drag & drop this link to your bookmarks bar:" %} {% trans "bag it!" %} + {% trans "Drag & drop this link to your bookmarks bar:" %} {% trans "bag it!" %}

    {% trans "Feeds" %}

    diff --git a/themes/baggy/css/main.css b/themes/baggy/css/main.css index 1df82910..b93a78b8 100755 --- a/themes/baggy/css/main.css +++ b/themes/baggy/css/main.css @@ -736,6 +736,18 @@ a.add-to-wallabag-link-after:after { .icon-print:before { content: "\e80d"; } +.icon-random:before { + content: "\e915"; +} +.icon-reload:before { + content: "\ea2e"; +} +.icon-evernote:before { + content: "\e603"; +} +.icon-tags:before { + content: "\e936"; +} /* .icon-image class, for image-based icons diff --git a/themes/baggy/fonts/icomoon.eot b/themes/baggy/fonts/icomoon.eot index 56323516..3d4d14ae 100644 Binary files a/themes/baggy/fonts/icomoon.eot and b/themes/baggy/fonts/icomoon.eot differ diff --git a/themes/baggy/fonts/icomoon.svg b/themes/baggy/fonts/icomoon.svg index b4586136..19fcfa1f 100644 --- a/themes/baggy/fonts/icomoon.svg +++ b/themes/baggy/fonts/icomoon.svg @@ -1,41 +1,39 @@ - - -{ - "fontFamily": "icomoon", - "majorVersion": 1, - "minorVersion": 0, - "version": "Version 1.0", - "fontId": "icomoon", - "psName": "icomoon", - "subFamily": "Regular", - "fullName": "icomoon", - "description": "Generated by IcoMoon" -} - - +Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/themes/baggy/fonts/icomoon.ttf b/themes/baggy/fonts/icomoon.ttf index bb1f21f8..923f56d8 100644 Binary files a/themes/baggy/fonts/icomoon.ttf and b/themes/baggy/fonts/icomoon.ttf differ diff --git a/themes/baggy/fonts/icomoon.woff b/themes/baggy/fonts/icomoon.woff index bab13779..a2e86d36 100644 Binary files a/themes/baggy/fonts/icomoon.woff and b/themes/baggy/fonts/icomoon.woff differ diff --git a/themes/baggy/home.twig b/themes/baggy/home.twig index 93515080..93d2815b 100755 --- a/themes/baggy/home.twig +++ b/themes/baggy/home.twig @@ -25,7 +25,7 @@ {% block pager %} {% if nb_results > 1 %}
    -
    {{ nb_results }} {% trans "results" %}{% if search_term is defined %} {% trans %}found for « {{ search_term }} »{% endtrans %}{% endif %}
    +
    {{ nb_results }} {% trans "results" %}{% if search_term is defined %} {% trans %}found for « {{ search_term }} »{% endtrans %}{% endif %} {% trans "random" %}
    {{ page_links | raw }}
    {% elseif nb_results == 1 %} diff --git a/themes/baggy/view.twig b/themes/baggy/view.twig index 1afd9df6..0d0a4438 100755 --- a/themes/baggy/view.twig +++ b/themes/baggy/view.twig @@ -15,10 +15,12 @@ {% if constant('SHARE_TWITTER') == 1 %}
  • {% endif %} {% if constant('SHARE_MAIL') == 1 %}
  • {% endif %} {% if constant('SHARE_SHAARLI') == 1 %}
  • {% trans "shaarli" %}
  • {% endif %} + {% if constant('SHARE_EVERNOTE') == 1 %}
  • {% trans "evernote" %}
  • {% endif %} {% if constant('SHARE_DIASPORA') == 1 %}
  • {% trans "diaspora" %}
  • {% endif %} {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}
  • {% trans "flattr" %}
  • {% elseif flattr.status == constant('FLATTRED') %}
  • {% trans "flattr" %} ({{ flattr.numFlattrs }})
  • {% endif %}{% endif %} {% if constant('CARROT') == 1 %}
  • Carrot
  • {% endif %} {% if constant('SHOW_PRINTLINK') == 1 %}
  • {% trans "Print" %}
  • {% endif %} + {% if constant('RELOAD_ARTICLE') == 1 %}
  • {% trans "Reload article" %}
  • {% endif %} {% if constant('EPUB') == 1 %}
  • EPUB
  • {% endif %} {% if constant('MOBI') == 1 %}
  • MOBI
  • {% endif %} {% if constant('PDF') == 1 %}
  • PDF
  • {% endif %} diff --git a/themes/default/_pocheit-form.twig b/themes/default/_pocheit-form.twig index 8c982db0..71991341 100755 --- a/themes/default/_pocheit-form.twig +++ b/themes/default/_pocheit-form.twig @@ -2,6 +2,10 @@  
    +
    + Add tags +
    +
    diff --git a/themes/default/about.twig b/themes/default/about.twig index 5ca3217c..bab9b5eb 100755 --- a/themes/default/about.twig +++ b/themes/default/about.twig @@ -7,6 +7,8 @@ {% block content %}

    {% trans "About wallabag" %}

    +

    {% trans "wallabag is a read-it-later application: you can save a web page by keeping only content. Elements like ads or menus are deleted." %}

    +
    {% trans "Project website" %}
    http://www.wallabag.org
    @@ -27,8 +29,6 @@
    {{ constant('POCHE') }}
    -

    {% trans "wallabag is a read-it-later application: you can save a web page by keeping only content. Elements like ads or menus are deleted." %}

    -

    {% trans "Helping wallabag" %}

    {% trans "wallabag is free and opensource. You can help us:" %}

    diff --git a/themes/default/config.twig b/themes/default/config.twig index bac563cf..87f964c9 100755 --- a/themes/default/config.twig +++ b/themes/default/config.twig @@ -27,7 +27,7 @@

    {% trans "Bookmarklet" %}

    - {% trans "Drag & drop this link to your bookmarks bar:" %} {% trans "bag it!" %} + {% trans "Drag & drop this link to your bookmarks bar:" %} {% trans "bag it!" %}

    {% trans "Feeds" %}

    diff --git a/themes/default/css/style-default.css b/themes/default/css/style-default.css index 4406d48f..da8703f2 100755 --- a/themes/default/css/style-default.css +++ b/themes/default/css/style-default.css @@ -43,6 +43,11 @@ a.carrot span { background-size: 16px 16px; } +a.evernote span { + background-image: url('../../_global/img/icons/evernote-icon--black.svg'); + background-size: 16px 16px; +} + a.diaspora span { background-image: url('../../_global/img/icons/diaspora-icon--black.png'); background-size: 16px 16px; @@ -67,3 +72,16 @@ a.bad-display span { a.print span { background-image: url('../img/default/print.png'); } +a.reload span { + background-image: url('../img/default/reload.png'); +} +.edit-tags span { + background-image: url('../img/default/tags.png'); + display: inline-block; + width: 16px; + height: 16px; + /* Hide textual content */ + overflow: hidden; + text-align: left; + text-indent: -9999px; +} diff --git a/themes/default/css/style.css b/themes/default/css/style.css index b25373d6..a122dc54 100755 --- a/themes/default/css/style.css +++ b/themes/default/css/style.css @@ -151,6 +151,16 @@ a:visited { text-indent: -9999px; } +.random { + display: inline-block; + width: 16px; + height: 16px; + overflow: hidden; + text-align: left; + text-indent: -9999px; + background-image: url('../img/default/dice.png'); +} + /*** ***/ /*** ARTICLE PAGE ***/ diff --git a/themes/default/home.twig b/themes/default/home.twig index b9000559..8fe56397 100755 --- a/themes/default/home.twig +++ b/themes/default/home.twig @@ -31,7 +31,8 @@ {% block pager %} {% if nb_results > 1 %}
    -
    {{ nb_results }} {% trans "results" %}{% if searchterm is defined %}{% trans " found for « " %} {{ searchterm }} »{% endif %}
    +
    {{ nb_results }} {% trans "results" %}{% if searchterm is defined %}{% trans " found for « " %} {{ searchterm }} »{% endif %} + {% trans "random" %}
    {{ page_links | raw }}
    {% elseif nb_results == 1 %} diff --git a/themes/default/img/default/dice.png b/themes/default/img/default/dice.png new file mode 100644 index 00000000..70af6d0b Binary files /dev/null and b/themes/default/img/default/dice.png differ diff --git a/themes/default/img/default/reload.png b/themes/default/img/default/reload.png new file mode 100644 index 00000000..4c0528e7 Binary files /dev/null and b/themes/default/img/default/reload.png differ diff --git a/themes/default/img/default/tags.png b/themes/default/img/default/tags.png new file mode 100644 index 00000000..3714203e Binary files /dev/null and b/themes/default/img/default/tags.png differ diff --git a/themes/default/view.twig b/themes/default/view.twig index 8f3a26c3..87371d13 100755 --- a/themes/default/view.twig +++ b/themes/default/view.twig @@ -14,10 +14,12 @@ {% if constant('SHARE_TWITTER') == 1 %}
  • {% endif %} {% if constant('SHARE_MAIL') == 1 %}
  • {% endif %} {% if constant('SHARE_SHAARLI') == 1 %}
  • {% trans "shaarli" %}
  • {% endif %} + {% if constant('SHARE_EVERNOTE') == 1 %}
  • {% trans "evernote" %}
  • {% endif %} {% if constant('SHARE_DIASPORA') == 1 %}
  • {% trans "diaspora" %}
  • {% endif %} {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}
  • {% trans "flattr" %}
  • {% elseif flattr.status == constant('FLATTRED') %}
  • {% trans "flattr" %}{{ flattr.numFlattrs }}
  • {% endif %}{% endif %} {% if constant('CARROT') == 1 %}
  • {% trans "carrot" %}
  • {% endif %} {% if constant('SHOW_PRINTLINK') == 1 %}
  • {% trans "Print" %}
  • {% endif %} + {% if constant('RELOAD_ARTICLE') == 1 %}
  • {% trans "Reload article" %}
  • {% endif %}} {% if constant('EPUB') == 1 %}
  • EPUB
  • {% endif %} {% if constant('MOBI') == 1 %}
  • MOBI
  • {% endif %} {% if constant('PDF') == 1 %}
  • PDF
  • {% endif %}