aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xinc/3rdparty/site_config/standard/gist.github.com.txt8
-rw-r--r--inc/3rdparty/site_config/standard/jungle-world.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/toolinux.com.txt5
-rwxr-xr-xinc/poche/Database.class.php4
-rwxr-xr-xinc/poche/Poche.class.php95
-rwxr-xr-xinc/poche/Routing.class.php5
-rw-r--r--inc/poche/WallabagEBooks.class.php3
-rwxr-xr-xinc/poche/config.inc.default.php5
-rwxr-xr-xinstall/index.php741
-rw-r--r--install/install_functions.php107
-rw-r--r--install/wallabag_compatibility_test.php427
-rw-r--r--locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mobin10620 -> 16993 bytes
-rw-r--r--locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po741
-rw-r--r--locale/en_GB.utf8/LC_MESSAGES/en_GB.utf8.mobin0 -> 15936 bytes
-rw-r--r--locale/en_GB.utf8/LC_MESSAGES/en_GB.utf8.po681
-rw-r--r--locale/en_US.utf8/LC_MESSAGES/en_US.utf8.mobin15793 -> 17302 bytes
-rw-r--r--locale/en_US.utf8/LC_MESSAGES/en_US.utf8.po50
-rw-r--r--locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mobin21037 -> 22690 bytes
-rw-r--r--locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po52
-rw-r--r--themes/_global/img/icons/evernote-icon--black.svg8
-rwxr-xr-xthemes/_global/js/saveLink.js10
-rwxr-xr-xthemes/baggy/_pocheit-form.twig4
-rwxr-xr-xthemes/baggy/about.twig4
-rwxr-xr-xthemes/baggy/config.twig2
-rwxr-xr-xthemes/baggy/css/main.css12
-rw-r--r--themes/baggy/fonts/icomoon.eotbin3896 -> 6304 bytes
-rw-r--r--themes/baggy/fonts/icomoon.svg70
-rw-r--r--themes/baggy/fonts/icomoon.ttfbin3732 -> 6140 bytes
-rw-r--r--themes/baggy/fonts/icomoon.woffbin3664 -> 6216 bytes
-rwxr-xr-xthemes/baggy/home.twig2
-rwxr-xr-xthemes/baggy/view.twig2
-rwxr-xr-xthemes/default/_pocheit-form.twig4
-rwxr-xr-xthemes/default/about.twig4
-rwxr-xr-xthemes/default/config.twig2
-rwxr-xr-xthemes/default/css/style-default.css18
-rwxr-xr-xthemes/default/css/style.css10
-rwxr-xr-xthemes/default/home.twig3
-rw-r--r--themes/default/img/default/dice.pngbin0 -> 243 bytes
-rw-r--r--themes/default/img/default/reload.pngbin0 -> 343 bytes
-rw-r--r--themes/default/img/default/tags.pngbin0 -> 332 bytes
-rwxr-xr-xthemes/default/view.twig2
41 files changed, 2035 insertions, 1049 deletions
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 @@
1body: //div[@class="highlight"]/pre
2 1
3prune: no 2title: //div[contains(@class,'gist-description')]
4tidy: no 3body: //div[contains(@class,'blob-wrapper')]
5 4test_url: https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
6test_url: https://gist.github.com/1258908 \ No newline at end of file
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 @@
1title: //h1
2body: //div[contains(@class,'story')]
3test_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 @@
1title: //h2[contains(@class,'news')]
2body: //div[contains(@class,'articleContent')]
3date: substring-after(//div[@class = 'SupaDate']/text(), 'le')
4
5test_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 {
293 $sql_limit = "LIMIT ".$limit." OFFSET 0"; 293 $sql_limit = "LIMIT ".$limit." OFFSET 0";
294 } 294 }
295 295
296 $sql = "SELECT * FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE 'Untitled - Import%' AND user_id=? ORDER BY id " . $sql_limit; 296 $sql = "SELECT * FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE '%Import%' AND user_id=? ORDER BY id " . $sql_limit;
297 $query = $this->executeQuery($sql, array($user_id)); 297 $query = $this->executeQuery($sql, array($user_id));
298 $entries = $query->fetchAll(); 298 $entries = $query->fetchAll();
299 299
@@ -302,7 +302,7 @@ class Database {
302 302
303 public function retrieveUnfetchedEntriesCount($user_id) 303 public function retrieveUnfetchedEntriesCount($user_id)
304 { 304 {
305 $sql = "SELECT count(*) FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE 'Untitled - Import%' AND user_id=?"; 305 $sql = "SELECT count(*) FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE '%Import%' AND user_id=?";
306 $query = $this->executeQuery($sql, array($user_id)); 306 $query = $this->executeQuery($sql, array($user_id));
307 list($count) = $query->fetch(); 307 list($count) = $query->fetch();
308 308
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php
index 36c8693c..cd7578e3 100755
--- a/inc/poche/Poche.class.php
+++ b/inc/poche/Poche.class.php
@@ -74,7 +74,7 @@ class Poche
74 /** 74 /**
75 * Creates a new user 75 * Creates a new user
76 */ 76 */
77 public function createNewUser($username, $password, $email = "") 77 public function createNewUser($username, $password, $email = "", $internalRegistration = false)
78 { 78 {
79 Tools::logm('Trying to create a new user...'); 79 Tools::logm('Trying to create a new user...');
80 if (!empty($username) && !empty($password)){ 80 if (!empty($username) && !empty($password)){
@@ -82,9 +82,43 @@ class Poche
82 $email = filter_var($email, FILTER_SANITIZE_STRING); 82 $email = filter_var($email, FILTER_SANITIZE_STRING);
83 if (!$this->store->userExists($newUsername)){ 83 if (!$this->store->userExists($newUsername)){
84 if ($this->store->install($newUsername, Tools::encodeString($password . $newUsername), $email)) { 84 if ($this->store->install($newUsername, Tools::encodeString($password . $newUsername), $email)) {
85 Tools::logm('The new user ' . $newUsername . ' has been installed'); 85 if ($email != "") { // if email is filled
86 $this->messages->add('s', sprintf(_('The new user %s has been installed. Do you want to <a href="?logout">logout ?</a>'), $newUsername)); 86 if (SEND_CONFIRMATION_EMAIL && function_exists('mail')) {
87 Tools::redirect(); 87
88 // if internal registration
89 $body_internal = _('Hi,') . "\r\n\r\n" . sprintf(_('Someone just created a wallabag account for you on %1$s.'), Tools::getPocheUrl()) .
90 "\r\n\r\n" . sprintf(_('Your login is %1$s.'), $newUsername) ."\r\n\r\n" .
91 _('Note : The password has been chosen by the person who created your account. Get in touch with that person to know your password and change it as soon as possible') . "\r\n\r\n" .
92 _('Have fun with it !') . "\r\n\r\n" .
93 _('This is an automatically generated message, no one will answer if you respond to it.');
94
95 // if external (public) registration
96 $body = "Hi, " . $newUsername . "\r\n\r\nYou've just created a wallabag account on " . Tools::getPocheUrl() . ".\r\nHave fun with it !";
97 $body = $internalRegistration ? $body_internal : $body;
98
99 $body = wordwrap($body, 70, "\r\n"); // cut lines with more than 70 caracters (MIME standard)
100 if (mail($email, sprintf(_('Your new wallabag account on %1$s'), Tools::getPocheUrl()), $body,
101 'X-Mailer: PHP/' . phpversion() . "\r\n" .
102 'Content-type: text/plain; charset=UTF-8' . "\r\n" .
103 "From: " . $newUsername . "@" . gethostname() . "\r\n")) {
104 Tools::logm('The user ' . $newUsername . ' has been emailed');
105 $this->messages->add('i', sprintf(_('The new user %1$s has been sent an email at %2$s. You may have to check spam folder.'), $newUsername, $email));
106
107 } else {
108 Tools::logm('A problem has been encountered while sending an email');
109 $this->messages->add('e', _('A problem has been encountered while sending an email'));
110 }
111 } else {
112 Tools::logm('The user has been created, but the server did not authorize sending emails');
113 $this->messages->add('i', _('The server did not authorize sending a confirmation email'));
114 }
115 } else {
116 Tools::logm('The user has been created, but no email was saved, so no confimation email was sent');
117 $this->messages->add('i', _('The user was created, but no email was sent because email was not filled in'));
118 }
119 Tools::logm('The new user ' . $newUsername . ' has been installed');
120 $this->messages->add('s', sprintf(_('The new user %s has been installed. Do you want to <a href="?logout">logout ?</a>'), $newUsername));
121 Tools::redirect();
88 } 122 }
89 else { 123 else {
90 Tools::logm('error during adding new user'); 124 Tools::logm('error during adding new user');
@@ -199,9 +233,9 @@ class Poche
199 } 233 }
200 234
201 if ($autoclose == TRUE) { 235 if ($autoclose == TRUE) {
202 Tools::redirect('?view=home'); 236 Tools::redirect('?view=home&closewin=true');
203 } else { 237 } else {
204 Tools::redirect('?view=home&closewin=true'); 238 Tools::redirect('?view=home');
205 } 239 }
206 return $last_id; 240 return $last_id;
207 break; 241 break;
@@ -341,6 +375,27 @@ class Poche
341 $this->messages->add('s', _('The tag has been successfully deleted')); 375 $this->messages->add('s', _('The tag has been successfully deleted'));
342 Tools::redirect(); 376 Tools::redirect();
343 break; 377 break;
378
379 case 'reload_article' :
380 Tools::logm('reload article');
381 $id = $_GET['id'];
382 $entry = $this->store->retrieveOneById($id, $this->user->getId());
383 Tools::logm('reload url ' . $entry['url']);
384 $url = new Url(base64_encode($entry['url']));
385 $this->action('add', $url);
386 break;
387
388 /* 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 */
389 case 'random':
390 $id = 0;
391 while ($this->store->retrieveOneById($id,$this->user->getId()) == null) {
392 $count = $this->store->getEntriesByViewCount($view, $this->user->getId());
393 $id = rand(1,$count);
394 }
395 Tools::logm('get a random article');
396 Tools::redirect('?view=view&id=' . $id);
397 //$this->displayView('view', $id);
398 break;
344 default: 399 default:
345 break; 400 break;
346 } 401 }
@@ -723,17 +778,23 @@ class Poche
723 $purifier = $this->_getPurifier(); 778 $purifier = $this->_getPurifier();
724 foreach($items as $item) { 779 foreach($items as $item) {
725 $url = new Url(base64_encode($item['url'])); 780 $url = new Url(base64_encode($item['url']));
726 Tools::logm('Fetching article ' . $item['id']); 781 if( $url->isCorrect() )
727 $content = Tools::getPageContent($url); 782 {
728 $title = (($content['rss']['channel']['item']['title'] != '') ? $content['rss']['channel']['item']['title'] : _('Untitled')); 783 Tools::logm('Fetching article ' . $item['id']);
729 $body = (($content['rss']['channel']['item']['description'] != '') ? $content['rss']['channel']['item']['description'] : _('Undefined')); 784 $content = Tools::getPageContent($url);
730 785 $title = (($content['rss']['channel']['item']['title'] != '') ? $content['rss']['channel']['item']['title'] : _('Untitled'));
731 // clean content to prevent xss attack 786 $body = (($content['rss']['channel']['item']['description'] != '') ? $content['rss']['channel']['item']['description'] : _('Undefined'));
732 787
733 $title = $purifier->purify($title); 788 // clean content to prevent xss attack
734 $body = $purifier->purify($body); 789
735 $this->store->updateContentAndTitle($item['id'], $title, $body, $this->user->getId()); 790 $title = $purifier->purify($title);
736 Tools::logm('Article ' . $item['id'] . ' updated.'); 791 $body = $purifier->purify($body);
792 $this->store->updateContentAndTitle($item['id'], $title, $body, $this->user->getId());
793 Tools::logm('Article ' . $item['id'] . ' updated.');
794 } else
795 {
796 Tools::logm('Unvalid URL (' . $item['url'] .') to fetch for article ' . $item['id']);
797 }
737 } 798 }
738 } 799 }
739 } 800 }
diff --git a/inc/poche/Routing.class.php b/inc/poche/Routing.class.php
index 8d6abefd..e9b67771 100755
--- a/inc/poche/Routing.class.php
+++ b/inc/poche/Routing.class.php
@@ -33,6 +33,7 @@ class Routing
33 $this->view = Tools::checkVar('view', 'home'); 33 $this->view = Tools::checkVar('view', 'home');
34 $this->action = Tools::checkVar('action'); 34 $this->action = Tools::checkVar('action');
35 $this->id = Tools::checkVar('id'); 35 $this->id = Tools::checkVar('id');
36 $this->autoclose = Tools::checkVar('autoclose',FALSE);
36 $_SESSION['sort'] = Tools::checkVar('sort', 'id'); 37 $_SESSION['sort'] = Tools::checkVar('sort', 'id');
37 $this->url = new Url((isset ($_GET['url'])) ? $_GET['url'] : ''); 38 $this->url = new Url((isset ($_GET['url'])) ? $_GET['url'] : '');
38 } 39 }
@@ -64,7 +65,7 @@ class Routing
64 $tplVars = array(); 65 $tplVars = array();
65 66
66 if (\Session::isLogged()) { 67 if (\Session::isLogged()) {
67 $this->wallabag->action($this->action, $this->url, $this->id); 68 $this->wallabag->action($this->action, $this->url, $this->id, FALSE, $this->autoclose);
68 $tplFile = Tools::getTplFile($this->view); 69 $tplFile = Tools::getTplFile($this->view);
69 $tplVars = array_merge($this->vars, $this->wallabag->displayView($this->view, $this->id)); 70 $tplVars = array_merge($this->vars, $this->wallabag->displayView($this->view, $this->id));
70 } elseif(ALLOW_REGISTER && isset($_GET['registerform'])) { 71 } elseif(ALLOW_REGISTER && isset($_GET['registerform'])) {
@@ -124,7 +125,7 @@ class Routing
124 // update password 125 // update password
125 $this->wallabag->updatePassword($_POST['password'], $_POST['password_repeat']); 126 $this->wallabag->updatePassword($_POST['password'], $_POST['password_repeat']);
126 } elseif (isset($_GET['newuser'])) { 127 } elseif (isset($_GET['newuser'])) {
127 $this->wallabag->createNewUser($_POST['newusername'], $_POST['password4newuser']); 128 $this->wallabag->createNewUser($_POST['newusername'], $_POST['password4newuser'], $_POST['newuseremail'], true);
128 } elseif (isset($_GET['deluser'])) { 129 } elseif (isset($_GET['deluser'])) {
129 $this->wallabag->deleteUser($_POST['password4deletinguser']); 130 $this->wallabag->deleteUser($_POST['password4deletinguser']);
130 } elseif (isset($_GET['epub'])) { 131 } elseif (isset($_GET['epub'])) {
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
202 } 202 }
203 $mobi->setContentProvider($content); 203 $mobi->setContentProvider($content);
204 204
205 // the browser inside Kindle Devices doesn't likes special caracters either, we limit to A-z/0-9
206 $this->bookFileName = preg_replace('/[^A-Za-z0-9\-]/', '', $this->bookFileName);
207
205 // we offer file to download 208 // we offer file to download
206 $mobi->download($this->bookFileName.'.mobi'); 209 $mobi->download($this->bookFileName.'.mobi');
207 Tools::logm('Mobi file produced'); 210 Tools::logm('Mobi file produced');
diff --git a/inc/poche/config.inc.default.php b/inc/poche/config.inc.default.php
index 000faf1c..e569dddd 100755
--- a/inc/poche/config.inc.default.php
+++ b/inc/poche/config.inc.default.php
@@ -46,6 +46,7 @@
46@define ('SHARE_MAIL', TRUE); 46@define ('SHARE_MAIL', TRUE);
47@define ('SHARE_SHAARLI', FALSE); 47@define ('SHARE_SHAARLI', FALSE);
48@define ('SHAARLI_URL', 'http://myshaarliurl.com'); 48@define ('SHAARLI_URL', 'http://myshaarliurl.com');
49@define ('SHARE_EVERNOTE', FALSE);
49@define ('SHARE_DIASPORA', FALSE); 50@define ('SHARE_DIASPORA', FALSE);
50@define ('DIASPORA_URL', 'http://diasporapod.com'); # Don't add a / at the end 51@define ('DIASPORA_URL', 'http://diasporapod.com'); # Don't add a / at the end
51@define ('FLATTR', TRUE); 52@define ('FLATTR', TRUE);
@@ -60,10 +61,14 @@
60@define ('MOBI', FALSE); 61@define ('MOBI', FALSE);
61@define ('PDF', FALSE); 62@define ('PDF', FALSE);
62 63
64// registration
65@define ('SEND_CONFIRMATION_EMAIL', TRUE); // TO BE CHANGED DEPENDING ON POLL
66
63// display or not print link in article view 67// display or not print link in article view
64@define ('SHOW_PRINTLINK', '1'); 68@define ('SHOW_PRINTLINK', '1');
65// display or not percent of read in article view. Affects only default theme. 69// display or not percent of read in article view. Affects only default theme.
66@define ('SHOW_READPERCENT', '1'); 70@define ('SHOW_READPERCENT', '1');
71@define ('RELOAD_ARTICLE', TRUE);
67@define ('ABS_PATH', 'assets/'); 72@define ('ABS_PATH', 'assets/');
68 73
69@define ('DEFAULT_THEME', 'baggy'); 74@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 @@
11$errors = array(); 11$errors = array();
12$successes = array(); 12$successes = array();
13 13
14/* Function taken from at http://php.net/manual/en/function.rmdir.php#110489 14$final = false;
15 * Idea : nbari at dalmp dot com 15
16 * Rights unknown 16require_once('install_functions.php');
17 * Here in case of .gitignore files
18 */
19function delTree($dir) {
20 $files = array_diff(scandir($dir), array('.','..'));
21 foreach ($files as $file) {
22 (is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file");
23 }
24 return rmdir($dir);
25 }
26 17
27if (isset($_GET['clean'])) { 18if (isset($_GET['clean'])) {
28 if (is_dir('install')){ 19 if (is_dir('install')){
@@ -58,136 +49,116 @@ if (isset($_POST['download'])) {
58else if (isset($_POST['install'])) { 49else if (isset($_POST['install'])) {
59 if (!is_dir('vendor')) { 50 if (!is_dir('vendor')) {
60 $errors[] = 'You must install twig before.'; 51 $errors[] = 'You must install twig before.';
61 } 52 } else {
62 else {
63 $continue = true; 53 $continue = true;
64 // Create config.inc.php 54 $salt = generate_salt();
65 if (!copy('inc/poche/config.inc.default.php', 'inc/poche/config.inc.php')) { 55 $content = file_get_contents('inc/poche/config.inc.default.php');
66 $errors[] = 'Installation aborted, impossible to create inc/poche/config.inc.php file. Maybe you don\'t have write access to create it.';
67 $continue = false;
68 }
69 else {
70 function generate_salt() {
71 mt_srand(microtime(true)*100000 + memory_get_usage(true));
72 return md5(uniqid(mt_rand(), true));
73 }
74
75 $content = file_get_contents('inc/poche/config.inc.php');
76 $salt = generate_salt();
77 $content = str_replace("define ('SALT', '');", "define ('SALT', '".$salt."');", $content);
78 file_put_contents('inc/poche/config.inc.php', $content);
79 }
80 56
81 if ($continue) { 57 // User informations
58 $username = trim($_POST['username']);
59 $password = trim($_POST['password']);
60 $salted_password = sha1($password . $username . $salt);
82 61
83 // User informations 62 // Database informations
84 $username = trim($_POST['username']); 63 $moreQueries = array();
85 $password = trim($_POST['password']);
86 $salted_password = sha1($password . $username . $salt);
87 64
88 // Database informations 65 if ($_POST['db_engine'] == 'sqlite') {
89 $moreQueries = array(); 66 if (!copy('install/poche.sqlite', 'db/poche.sqlite')) {
90 if ($_POST['db_engine'] == 'sqlite') { 67 $errors[] = 'Impossible to create the SQLite database file.';
91 if (!copy('install/poche.sqlite', 'db/poche.sqlite')) {
92 $errors[] = 'Impossible to create inc/poche/config.inc.php file.';
93 $continue = false;
94 }
95 else {
96 $db_path = 'sqlite:' . realpath('') . '/db/poche.sqlite';
97 $handle = new PDO($db_path);
98 $sql_structure = "";
99 }
100 } 68 }
101 else { 69 else {
102 $content = file_get_contents('inc/poche/config.inc.php'); 70 $db_path = 'sqlite:' . realpath('') . '/db/poche.sqlite';
71 $handle = new PDO($db_path);
72 $handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
73 $sql_structure = "";
74 }
75 } else {
76 // MySQL and Postgre
77 try {
103 78
104 if ($_POST['db_engine'] == 'mysql') { 79 if ($_POST['db_engine'] == 'mysql') {
80 if (isset($_POST['mysql_utf8_mb4'])) {
81 //with UTF8-MB4
105 $db_path = 'mysql:host=' . $_POST['mysql_server'] . ';dbname=' . $_POST['mysql_database'] . ';charset=utf8mb4'; 82 $db_path = 'mysql:host=' . $_POST['mysql_server'] . ';dbname=' . $_POST['mysql_database'] . ';charset=utf8mb4';
106 $content = str_replace("define ('STORAGE_SERVER', 'localhost');", "define ('STORAGE_SERVER', '".$_POST['mysql_server']."');", $content);
107 $content = str_replace("define ('STORAGE_DB', 'poche');", "define ('STORAGE_DB', '".$_POST['mysql_database']."');", $content);
108 $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['mysql_user']."');", $content);
109 $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['mysql_password']."');", $content);
110 $handle = new PDO($db_path, $_POST['mysql_user'], $_POST['mysql_password'], array( 83 $handle = new PDO($db_path, $_POST['mysql_user'], $_POST['mysql_password'], array(
111 PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4', 84 PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
112 )); 85 ));
86 } else { // regular UTF8
87 $db_path = 'mysql:host=' . $_POST['mysql_server'] . ';dbname=' . $_POST['mysql_database'];
88 $handle = new PDO($db_path, $_POST['mysql_user'], $_POST['mysql_password']);
89 }
90 $content = str_replace("define ('STORAGE_SERVER', 'localhost');", "define ('STORAGE_SERVER', '".$_POST['mysql_server']."');", $content);
91 $content = str_replace("define ('STORAGE_DB', 'poche');", "define ('STORAGE_DB', '".$_POST['mysql_database']."');", $content);
92 $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['mysql_user']."');", $content);
93 $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['mysql_password']."');", $content);
113 94
114 $moreQueries[] = "INSERT INTO `entries` (`id`, `title`, `url`, `is_read`, `is_fav`, `content`, `user_id`) VALUES 95 $moreQueries[] = "INSERT INTO `entries` (`id`, `title`, `url`, `is_read`, `is_fav`, `content`, `user_id`) VALUES
115(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), 96(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),
116(2, 'wallabag/wallabag', 'https://github.com/wallabag/wallabag', 0, 0, 0x3c7370616e20636c6173733d226e616d65223e524541444d452e6d643c2f7370616e3e3c703e77616c6c6162616720697320612073656c6620686f737461626c65206170706c69636174696f6e20616c6c6f77696e6720796f7520746f206e6f74206d69737320616e7920636f6e74656e7420616e796d6f72652e20436c69636b2c20736176652c2072656164206974207768656e20796f752063616e2e20497420657874726163747320636f6e74656e7420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c703e4d6f726520696e666f726d6174696f6e73206f6e206f757220776562736974653a203c6120687265663d22687474703a2f2f77616c6c616261672e6f7267223e77616c6c616261672e6f72673c2f613e3c2f703e0a3c68323e3c6120636c6173733d22616e63686f722220687265663d2268747470733a2f2f6769746875622e636f6d2f77616c6c616261672f77616c6c61626167236c6963656e7365223e3c2f613e4c6963656e73653c2f68323e0a3c703e436f7079726967687420c2a920323031302d32303134204e69636f6c6173204cc59375696c6c6574203c6120687265663d226d61696c746f3a6e69636f6c6173406c6f6575696c6c65742e6f7267223e6e69636f6c6173406c6f6575696c6c65742e6f72673c2f613e205468697320776f726b20697320667265652e20596f752063616e2072656469737472696275746520697420616e642f6f72206d6f6469667920697420756e64657220746865207465726d73206f662074686520446f205768617420546865204675636b20596f752057616e7420546f205075626c6963204c6963656e73652c2056657273696f6e20322c206173207075626c69736865642062792053616d20486f63657661722e205365652074686520434f5059494e472066696c6520666f72206d6f72652064657461696c732e3c2f703e0a, 1), 97(2, 'wallabag/wallabag', 'https://github.com/wallabag/wallabag', 0, 0, 0x3c7370616e20636c6173733d226e616d65223e524541444d452e6d643c2f7370616e3e3c703e77616c6c6162616720697320612073656c6620686f737461626c65206170706c69636174696f6e20616c6c6f77696e6720796f7520746f206e6f74206d69737320616e7920636f6e74656e7420616e796d6f72652e20436c69636b2c20736176652c2072656164206974207768656e20796f752063616e2e20497420657874726163747320636f6e74656e7420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c703e4d6f726520696e666f726d6174696f6e73206f6e206f757220776562736974653a203c6120687265663d22687474703a2f2f77616c6c616261672e6f7267223e77616c6c616261672e6f72673c2f613e3c2f703e0a3c68323e3c6120636c6173733d22616e63686f722220687265663d2268747470733a2f2f6769746875622e636f6d2f77616c6c616261672f77616c6c61626167236c6963656e7365223e3c2f613e4c6963656e73653c2f68323e0a3c703e436f7079726967687420c2a920323031302d32303134204e69636f6c6173204cc59375696c6c6574203c6120687265663d226d61696c746f3a6e69636f6c6173406c6f6575696c6c65742e6f7267223e6e69636f6c6173406c6f6575696c6c65742e6f72673c2f613e205468697320776f726b20697320667265652e20596f752063616e2072656469737472696275746520697420616e642f6f72206d6f6469667920697420756e64657220746865207465726d73206f662074686520446f205768617420546865204675636b20596f752057616e7420546f205075626c6963204c6963656e73652c2056657273696f6e20322c206173207075626c69736865642062792053616d20486f63657661722e205365652074686520434f5059494e472066696c6520666f72206d6f72652064657461696c732e3c2f703e0a, 1),
117(3, 'a self hostable application for saving web pages | wallabag', 'https://www.wallabag.org/', 0, 1, 0x0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e77616c6c616261672028666f726d65726c7920706f636865292069732061203c7374726f6e673e73656c6620686f737461626c65206170706c69636174696f6e20666f7220736176696e67207765622070616765733c2f7374726f6e673e2e20556e6c696b65206f746865722073657276696365732cc2a077616c6c6162616720697320667265652028617320696e2066726565646f6d2920616e64206f70656e20736f757263652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e576974682074686973206170706c69636174696f6e20796f752077696c6c206e6f74206d69737320636f6e74656e7420616e796d6f72652e203c7374726f6e673e436c69636b2c20736176652c2072656164206974207768656e20796f752077616e743c2f7374726f6e673e2e2049742073617665732074686520636f6e74656e7420796f752073656c65637420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3620636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c68323e486f7720697420776f726b733c2f68323e0a3c703e5468616e6b7320746f2074686520626f6f6b6d61726b6c6574206f72203c61207469746c653d22446f776e6c6f6164732220687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f646f776e6c6f6164732f223e74686972642d7061727479206170706c69636174696f6e733c2f613e2c20796f75207361766520616e2061727469636c6520696e20796f7572c2a077616c6c6162616720746f2072656164206974206c617465722e205468656e2c207768656e20796f75206f70656e20796f75722077616c6c616261672c203c7374726f6e673e796f752063616e20636f6d666f727461626c79207265616420796f75722061727469636c65733c2f7374726f6e673e2e3c2f703e0a3c68323e486f7720746f207573652077616c6c616261673c2f68323e0a3c703e5468657265206172652074776f207761797320746f207573652077616c6c616261673a20796f752063616e203c6120687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f6672657175656e746c792d61736b65642d7175657374696f6e732f23486f775f63616e5f495f696e7374616c6c5f77616c6c616261675f616e645f776861745f6172655f7468655f726571756972656d656e7473223e696e7374616c6c2069743c2f613ec2a06f6e20796f75722077656220736572766572206f7220796f752063616ec2a03c6120687265663d22687474703a2f2f6170702e696e746865706f6368652e636f6d223e63726561746520616e206163636f756e743c2f613ec2a06174204672616d616261672028776520696e7374616c6c20616e642075706772616465c2a077616c6c6162616720666f7220796f75292e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a, 1);"; 98(3, 'a self hostable application for saving web pages | wallabag', 'https://www.wallabag.org/', 0, 1, 0x0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e77616c6c616261672028666f726d65726c7920706f636865292069732061203c7374726f6e673e73656c6620686f737461626c65206170706c69636174696f6e20666f7220736176696e67207765622070616765733c2f7374726f6e673e2e20556e6c696b65206f746865722073657276696365732cc2a077616c6c6162616720697320667265652028617320696e2066726565646f6d2920616e64206f70656e20736f757263652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e576974682074686973206170706c69636174696f6e20796f752077696c6c206e6f74206d69737320636f6e74656e7420616e796d6f72652e203c7374726f6e673e436c69636b2c20736176652c2072656164206974207768656e20796f752077616e743c2f7374726f6e673e2e2049742073617665732074686520636f6e74656e7420796f752073656c65637420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3620636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c68323e486f7720697420776f726b733c2f68323e0a3c703e5468616e6b7320746f2074686520626f6f6b6d61726b6c6574206f72203c61207469746c653d22446f776e6c6f6164732220687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f646f776e6c6f6164732f223e74686972642d7061727479206170706c69636174696f6e733c2f613e2c20796f75207361766520616e2061727469636c6520696e20796f7572c2a077616c6c6162616720746f2072656164206974206c617465722e205468656e2c207768656e20796f75206f70656e20796f75722077616c6c616261672c203c7374726f6e673e796f752063616e20636f6d666f727461626c79207265616420796f75722061727469636c65733c2f7374726f6e673e2e3c2f703e0a3c68323e486f7720746f207573652077616c6c616261673c2f68323e0a3c703e5468657265206172652074776f207761797320746f207573652077616c6c616261673a20796f752063616e203c6120687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f6672657175656e746c792d61736b65642d7175657374696f6e732f23486f775f63616e5f495f696e7374616c6c5f77616c6c616261675f616e645f776861745f6172655f7468655f726571756972656d656e7473223e696e7374616c6c2069743c2f613ec2a06f6e20796f75722077656220736572766572206f7220796f752063616ec2a03c6120687265663d22687474703a2f2f6170702e696e746865706f6368652e636f6d223e63726561746520616e206163636f756e743c2f613ec2a06174204672616d616261672028776520696e7374616c6c20616e642075706772616465c2a077616c6c6162616720666f7220796f75292e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a, 1);";
118 $moreQueries[] = "INSERT INTO `tags` (`id`, `value`) VALUES (1, 'opensource');"; 99 $moreQueries[] = "INSERT INTO `tags` (`id`, `value`) VALUES (1, 'opensource');";
119 $moreQueries[] = "INSERT INTO `tags_entries` (`id`, `entry_id`, `tag_id`) VALUES (1, 2, 1);"; 100 $moreQueries[] = "INSERT INTO `tags_entries` (`id`, `entry_id`, `tag_id`) VALUES (1, 2, 1);";
120 101
121 $sql_structure = file_get_contents('install/mysql.sql'); 102 $sql_structure = file_get_contents('install/mysql.sql');
122 } 103 }
123 else if ($_POST['db_engine'] == 'postgres') { 104 else if ($_POST['db_engine'] == 'postgres') {
124 $db_path = 'pgsql:host=' . $_POST['pg_server'] . ';dbname=' . $_POST['pg_database']; 105 $db_path = 'pgsql:host=' . $_POST['pg_server'] . ';dbname=' . $_POST['pg_database'];
125 $content = str_replace("define ('STORAGE_SERVER', 'localhost');", "define ('STORAGE_SERVER', '".$_POST['pg_server']."');", $content); 106 $content = str_replace("define ('STORAGE_SERVER', 'localhost');", "define ('STORAGE_SERVER', '".$_POST['pg_server']."');", $content);
126 $content = str_replace("define ('STORAGE_DB', 'poche');", "define ('STORAGE_DB', '".$_POST['pg_database']."');", $content); 107 $content = str_replace("define ('STORAGE_DB', 'poche');", "define ('STORAGE_DB', '".$_POST['pg_database']."');", $content);
127 $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['pg_user']."');", $content); 108 $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['pg_user']."');", $content);
128 $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['pg_password']."');", $content); 109 $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['pg_password']."');", $content);
129 $handle = new PDO($db_path, $_POST['pg_user'], $_POST['pg_password']); 110 $handle = new PDO($db_path, $_POST['pg_user'], $_POST['pg_password']);
130 111
131 $moreQueries[] = "INSERT INTO entries (title, url, is_read, is_fav, content, user_id) VALUES 112 $moreQueries[] = "INSERT INTO entries (title, url, is_read, is_fav, content, user_id) VALUES
132('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), 113('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),
133('wallabag/wallabag', 'https://github.com/wallabag/wallabag', false, false, convert_from(decode('3c7370616e20636c6173733d226e616d65223e524541444d452e6d643c2f7370616e3e3c703e77616c6c6162616720697320612073656c6620686f737461626c65206170706c69636174696f6e20616c6c6f77696e6720796f7520746f206e6f74206d69737320616e7920636f6e74656e7420616e796d6f72652e20436c69636b2c20736176652c2072656164206974207768656e20796f752063616e2e20497420657874726163747320636f6e74656e7420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c703e4d6f726520696e666f726d6174696f6e73206f6e206f757220776562736974653a203c6120687265663d22687474703a2f2f77616c6c616261672e6f7267223e77616c6c616261672e6f72673c2f613e3c2f703e0a3c68323e3c6120636c6173733d22616e63686f722220687265663d2268747470733a2f2f6769746875622e636f6d2f77616c6c616261672f77616c6c61626167236c6963656e7365223e3c2f613e4c6963656e73653c2f68323e0a3c703e436f7079726967687420c2a920323031302d32303134204e69636f6c6173204cc59375696c6c6574203c6120687265663d226d61696c746f3a6e69636f6c6173406c6f6575696c6c65742e6f7267223e6e69636f6c6173406c6f6575696c6c65742e6f72673c2f613e205468697320776f726b20697320667265652e20596f752063616e2072656469737472696275746520697420616e642f6f72206d6f6469667920697420756e64657220746865207465726d73206f662074686520446f205768617420546865204675636b20596f752057616e7420546f205075626c6963204c6963656e73652c2056657273696f6e20322c206173207075626c69736865642062792053616d20486f63657661722e205365652074686520434f5059494e472066696c6520666f72206d6f72652064657461696c732e3c2f703e0a', 'hex'), 'UTF8'), 1), 114('wallabag/wallabag', 'https://github.com/wallabag/wallabag', false, false, convert_from(decode('3c7370616e20636c6173733d226e616d65223e524541444d452e6d643c2f7370616e3e3c703e77616c6c6162616720697320612073656c6620686f737461626c65206170706c69636174696f6e20616c6c6f77696e6720796f7520746f206e6f74206d69737320616e7920636f6e74656e7420616e796d6f72652e20436c69636b2c20736176652c2072656164206974207768656e20796f752063616e2e20497420657874726163747320636f6e74656e7420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c703e4d6f726520696e666f726d6174696f6e73206f6e206f757220776562736974653a203c6120687265663d22687474703a2f2f77616c6c616261672e6f7267223e77616c6c616261672e6f72673c2f613e3c2f703e0a3c68323e3c6120636c6173733d22616e63686f722220687265663d2268747470733a2f2f6769746875622e636f6d2f77616c6c616261672f77616c6c61626167236c6963656e7365223e3c2f613e4c6963656e73653c2f68323e0a3c703e436f7079726967687420c2a920323031302d32303134204e69636f6c6173204cc59375696c6c6574203c6120687265663d226d61696c746f3a6e69636f6c6173406c6f6575696c6c65742e6f7267223e6e69636f6c6173406c6f6575696c6c65742e6f72673c2f613e205468697320776f726b20697320667265652e20596f752063616e2072656469737472696275746520697420616e642f6f72206d6f6469667920697420756e64657220746865207465726d73206f662074686520446f205768617420546865204675636b20596f752057616e7420546f205075626c6963204c6963656e73652c2056657273696f6e20322c206173207075626c69736865642062792053616d20486f63657661722e205365652074686520434f5059494e472066696c6520666f72206d6f72652064657461696c732e3c2f703e0a', 'hex'), 'UTF8'), 1),
134('a self hostable application for saving web pages | wallabag', 'https://www.wallabag.org/', false, true, convert_from(decode('3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e77616c6c616261672028666f726d65726c7920706f636865292069732061203c7374726f6e673e73656c6620686f737461626c65206170706c69636174696f6e20666f7220736176696e67207765622070616765733c2f7374726f6e673e2e20556e6c696b65206f746865722073657276696365732cc2a077616c6c6162616720697320667265652028617320696e2066726565646f6d2920616e64206f70656e20736f757263652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e576974682074686973206170706c69636174696f6e20796f752077696c6c206e6f74206d69737320636f6e74656e7420616e796d6f72652e203c7374726f6e673e436c69636b2c20736176652c2072656164206974207768656e20796f752077616e743c2f7374726f6e673e2e2049742073617665732074686520636f6e74656e7420796f752073656c65637420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3620636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c68323e486f7720697420776f726b733c2f68323e0a3c703e5468616e6b7320746f2074686520626f6f6b6d61726b6c6574206f72203c61207469746c653d22446f776e6c6f6164732220687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f646f776e6c6f6164732f223e74686972642d7061727479206170706c69636174696f6e733c2f613e2c20796f75207361766520616e2061727469636c6520696e20796f7572c2a077616c6c6162616720746f2072656164206974206c617465722e205468656e2c207768656e20796f75206f70656e20796f75722077616c6c616261672c203c7374726f6e673e796f752063616e20636f6d666f727461626c79207265616420796f75722061727469636c65733c2f7374726f6e673e2e3c2f703e0a3c68323e486f7720746f207573652077616c6c616261673c2f68323e0a3c703e5468657265206172652074776f207761797320746f207573652077616c6c616261673a20796f752063616e203c6120687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f6672657175656e746c792d61736b65642d7175657374696f6e732f23486f775f63616e5f495f696e7374616c6c5f77616c6c616261675f616e645f776861745f6172655f7468655f726571756972656d656e7473223e696e7374616c6c2069743c2f613ec2a06f6e20796f75722077656220736572766572206f7220796f752063616ec2a03c6120687265663d22687474703a2f2f6170702e696e746865706f6368652e636f6d223e63726561746520616e206163636f756e743c2f613ec2a06174204672616d616261672028776520696e7374616c6c20616e642075706772616465c2a077616c6c6162616720666f7220796f75292e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a', 'hex'), 'UTF8'), 1)"; 115('a self hostable application for saving web pages | wallabag', 'https://www.wallabag.org/', false, true, convert_from(decode('3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e77616c6c616261672028666f726d65726c7920706f636865292069732061203c7374726f6e673e73656c6620686f737461626c65206170706c69636174696f6e20666f7220736176696e67207765622070616765733c2f7374726f6e673e2e20556e6c696b65206f746865722073657276696365732cc2a077616c6c6162616720697320667265652028617320696e2066726565646f6d2920616e64206f70656e20736f757263652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e576974682074686973206170706c69636174696f6e20796f752077696c6c206e6f74206d69737320636f6e74656e7420616e796d6f72652e203c7374726f6e673e436c69636b2c20736176652c2072656164206974207768656e20796f752077616e743c2f7374726f6e673e2e2049742073617665732074686520636f6e74656e7420796f752073656c65637420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3620636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c68323e486f7720697420776f726b733c2f68323e0a3c703e5468616e6b7320746f2074686520626f6f6b6d61726b6c6574206f72203c61207469746c653d22446f776e6c6f6164732220687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f646f776e6c6f6164732f223e74686972642d7061727479206170706c69636174696f6e733c2f613e2c20796f75207361766520616e2061727469636c6520696e20796f7572c2a077616c6c6162616720746f2072656164206974206c617465722e205468656e2c207768656e20796f75206f70656e20796f75722077616c6c616261672c203c7374726f6e673e796f752063616e20636f6d666f727461626c79207265616420796f75722061727469636c65733c2f7374726f6e673e2e3c2f703e0a3c68323e486f7720746f207573652077616c6c616261673c2f68323e0a3c703e5468657265206172652074776f207761797320746f207573652077616c6c616261673a20796f752063616e203c6120687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f6672657175656e746c792d61736b65642d7175657374696f6e732f23486f775f63616e5f495f696e7374616c6c5f77616c6c616261675f616e645f776861745f6172655f7468655f726571756972656d656e7473223e696e7374616c6c2069743c2f613ec2a06f6e20796f75722077656220736572766572206f7220796f752063616ec2a03c6120687265663d22687474703a2f2f6170702e696e746865706f6368652e636f6d223e63726561746520616e206163636f756e743c2f613ec2a06174204672616d616261672028776520696e7374616c6c20616e642075706772616465c2a077616c6c6162616720666f7220796f75292e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a', 'hex'), 'UTF8'), 1)";
135 $moreQueries[] = "INSERT INTO tags (value) VALUES ('opensource')"; 116 $moreQueries[] = "INSERT INTO tags (value) VALUES ('opensource')";
136 $moreQueries[] = "INSERT INTO tags_entries (entry_id, tag_id) VALUES (2, 1)"; 117 $moreQueries[] = "INSERT INTO tags_entries (entry_id, tag_id) VALUES (2, 1)";
137 118
138 $sql_structure = file_get_contents('install/postgres.sql'); 119 $sql_structure = file_get_contents('install/postgres.sql');
139 }
140
141 $content = str_replace("define ('STORAGE', 'sqlite');", "define ('STORAGE', '".$_POST['db_engine']."');", $content);
142 file_put_contents('inc/poche/config.inc.php', $content);
143 } 120 }
121 // create database structure
122 $query = $handle->exec($sql_structure);
123 } catch (PDOException $e) {
124 $errors[] = $e->getMessage();
125 $continue = false;
126 }
127 }
128 }
129 if ($continue) {
130 $sql = "INSERT INTO users (username, password, name, email) VALUES (?, ?, ?, '')";
131 $params = array($username, $salted_password, $username);
132 $query = executeQuery($handle, $sql, $params);
144 133
145 if ($continue) { 134 $id_user = (int)$handle->lastInsertId('users_id_seq');
146
147 function executeQuery($handle, $sql, $params) {
148 try
149 {
150 $query = $handle->prepare($sql);
151 $query->execute($params);
152 return $query->fetchAll();
153 }
154 catch (Exception $e)
155 {
156 return FALSE;
157 }
158 }
159
160 if ($_POST['db_engine'] != "sqlite") {
161 // create database structure
162 $query = $handle->exec($sql_structure);
163 }
164
165 // Create user
166 $handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
167
168 $sql = "INSERT INTO users (username, password, name, email) VALUES (?, ?, ?, '')";
169 $params = array($username, $salted_password, $username);
170 $query = executeQuery($handle, $sql, $params);
171
172 $id_user = (int)$handle->lastInsertId('users_id_seq');
173 135
174 $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; 136 $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)';
175 $params = array($id_user, 'pager', '10'); 137 $params = array($id_user, 'pager', '10');
176 $query = executeQuery($handle, $sql, $params); 138 $query = executeQuery($handle, $sql, $params);
177 139
178 $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; 140 $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)';
179 $params = array($id_user, 'language', 'en_EN.UTF8'); 141 $params = array($id_user, 'language', 'en_EN.UTF8');
180 $query = executeQuery($handle, $sql, $params); 142 $query = executeQuery($handle, $sql, $params);
181 143
182 foreach ($moreQueries as $query) { 144 foreach ($moreQueries as $query) {
183 executeQuery($handle, $query, array()); 145 executeQuery($handle, $query, array());
184 } 146 }
147
185 148
186 $successes[] = 'wallabag is now installed. You can now <a href="index.php?clean=0">access it !</a>'; 149 if (!copy('inc/poche/config.inc.default.php', 'inc/poche/config.inc.php')) {
187 } 150 $errors[] = 'Installation aborted, impossible to create inc/poche/config.inc.php file. Maybe you don\'t have write access to create it.';
151 } else {
152 if ($_POST['db_engine'] != 'sqlite') {
153 $content = str_replace("define ('STORAGE', 'sqlite');", "define ('STORAGE', '".$_POST['db_engine']."');", $content);
154 file_put_contents('inc/poche/config.inc.php', $content);
188 } 155 }
156 $content = str_replace("define ('SALT', '');", "define ('SALT', '".$salt."');", $content);
157 file_put_contents('inc/poche/config.inc.php', $content);
158 $final = true;
189 } 159 }
190} 160}
161}
191?> 162?>
192<!DOCTYPE html> 163<!DOCTYPE html>
193<html> 164<html>
@@ -210,6 +181,175 @@ else if (isset($_POST['install'])) {
210 <link rel="stylesheet" href="themes/baggy/css/print.css" media="print"> 181 <link rel="stylesheet" href="themes/baggy/css/print.css" media="print">
211 <script src="themes/_global/js/jquery-2.0.3.min.js"></script> 182 <script src="themes/_global/js/jquery-2.0.3.min.js"></script>
212 <script src="themes/baggy/js/init.js"></script> 183 <script src="themes/baggy/js/init.js"></script>
184
185
186 <style type="text/css">
187a {
188color:#000;
189text-decoration:underline;
190padding:0 1px;
191}
192a:hover {
193color:#fff;
194background-color:#333;
195text-decoration:none;
196padding:0 1px;
197}
198p {
199margin:0;
200padding:5px 0;
201}
202em {
203font-style:normal;
204background-color:#ffc;
205padding: 0.1em 0;
206}
207ul, ol {
208margin:10px 0 10px 20px;
209padding:0 0 0 15px;
210}
211ul li, ol li {
212margin:0 0 7px 0;
213padding:0 0 0 3px;
214}
215h2 {
216font-size:18px;
217padding:0;
218}
219h3 {
220font-size:16px;
221padding:0;
222margin:20px 0 5px 0;
223}
224h4 {
225font-size:14px;
226padding:0;
227margin:15px 0 5px 0;
228}
229code {
230font-size:1.1em;
231background-color:#f3f3ff;
232color:#000;
233}
234em strong {
235text-transform: uppercase;
236}
237table#chart {
238border-collapse:collapse;
239}
240table#chart th {
241background-color:#eee;
242padding:2px 3px;
243border:1px solid #fff;
244}
245table#chart td {
246text-align:center;
247padding:2px 3px;
248border:1px solid #eee;
249}
250table#chart tr.enabled td {
251/* Leave this alone */
252}
253table#chart tr.disabled td,
254table#chart tr.disabled td a {
255}
256table#chart tr.disabled td a {
257text-decoration:underline;
258}
259div.chunk {
260margin:20px 0 0 0;
261padding:0 0 10px 0;
262border-bottom:1px solid #ccc;
263}
264.footnote,
265.footnote a {
266font:10px/12px verdana, sans-serif;
267color:#aaa;
268}
269.footnote em {
270background-color:transparent;
271font-style:italic;
272}
273.good{
274background-color:#52CC5B;
275}
276.bad{
277background-color:#F74343;
278font-style:italic;
279font-weight: bold;
280}
281.pass{
282background-color:#FF9500;
283}
284.detail {
285cursor: pointer;
286}
287.descriptions {
288 margin-left: 10%;
289 position: relative;
290 top: 50%;
291}
292.database_inputs {
293 float: left;
294 width: 50%
295}
296.database_info {
297 width: 100%;
298 overflow: auto;
299}
300.compatibity_result {
301 margin: auto;
302 max-width: 350px;
303 min-height: 50px;
304 line-height: 50px;
305 text-align: center;
306 margin-bottom: 30px;
307 border-radius: 3px;
308}
309
310h2, legend {
311 font-size: 30px;
312 text-transform: uppercase;
313 font-family: "PT Sans",sans-serif;
314}
315
316legend:after {
317 content: "";
318 height: 4px;
319 width: 70px;
320 background-color: #000;
321 display: block;
322}
323#reloadpage {
324cursor: pointer;
325background-color: #000;
326color: #FFF;
327padding: 0.5em 1em;
328display: inline-block;
329border: 1px solid #000;
330}
331#reloadpage:hover {
332 background-color: #FFF;
333 color: #000;
334}
335.final {
336 margin-top: 10%;
337 margin-left: 30%;
338 max-width: 400px;
339 text-align: center;
340 border-radius: 6px;
341}
342.final h1 {
343 line-height: 50px;
344}
345
346.final em {
347 margin-top: 40px;
348 font-size: 12px;
349}
350
351</style>
352
213 </head> 353 </head>
214 <body> 354 <body>
215 <header class="w600p center mbm"> 355 <header class="w600p center mbm">
@@ -220,11 +360,12 @@ else if (isset($_POST['install'])) {
220 <div id="main"> 360 <div id="main">
221 <button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button> 361 <button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button>
222 <ul id="links" class="links"> 362 <ul id="links" class="links">
223 <li><a href="http://www.wallabag.org/frequently-asked-questions/">FAQ</a></li> 363 <li><a href="docs/" target="_blank">Offline Doc</a></li>
224 <li><a href="http://doc.wallabag.org/">doc</a></li> 364 <li><a href="http://doc.wallabag.org/" target="_blank">Online doc</a></li>
225 <li><a href="http://www.wallabag.org/help/">help</a></li> 365 <li><a href="http://support.wallabag.org/" target="_blank">help</a></li>
226 <li><a href="http://www.wallabag.org/">wallabag.org</a></li> 366 <li><a href="http://www.wallabag.org/" target="_blank">wallabag.org</a></li>
227 </ul> 367 </ul>
368 <?php if (!$final) : ?>
228 <?php if (!empty($errors)) : ?> 369 <?php if (!empty($errors)) : ?>
229 <div class='messages error install'> 370 <div class='messages error install'>
230 <p>Errors during installation:</p> 371 <p>Errors during installation:</p>
@@ -258,56 +399,269 @@ else if (isset($_POST['install'])) {
258 <?php endif; ?> 399 <?php endif; ?>
259 <?php endif; ?> 400 <?php endif; ?>
260 <p>To install wallabag, you just have to fill the following fields. That's all.</p> 401 <p>To install wallabag, you just have to fill the following fields. That's all.</p>
261 <p>If you need help, you can read the doc: <a href="docs/" target="_blank">offline documentation</a> and <a href="http://doc.wallabag.org" target="_blank">online one</a> (already up-to-date).</p> 402
262 <p>Don't forget to check your server compatibility <a href="install/wallabag_compatibility_test.php?from=install">here</a>.</p> 403 <div>
263 <form method="post"> 404 <h2>Server compatibility test</h2>
264 <fieldset> 405 <?php if (isOkay()) { ?>
265 <legend><strong>Technical settings</strong></legend> 406 <div class="compatibity_result detail good">All good</div>
266 <?php if (!is_dir('vendor')) : ?> 407 <?php } elseif (isPassing()) { ?>
267 <div class='messages notice install'>wallabag needs twig, a template engine (<a href="http://twig.sensiolabs.org/">?</a>). Two ways to install it:<br /> 408 <div class="compatibity_result detail pass">Some warnings, but the minimum is here !</div>
268 <ul> 409 <?php } else { ?>
269 <li>automatically download and extract vendor.zip into your wallabag folder. 410 <div class="compatibity_result detail bad">Bad news : you can't run wallabag</div>
270 <p><input type="submit" name="download" value="Download vendor.zip" /></p> 411 <?php } $status = status(); $pdo_drivers = pdoDrivers(); ?>
271 <?php if (!extension_loaded('zip')) : ?> 412 </div>
272 <b>Be careful, zip extension is not enabled in your PHP configuration. You'll have to unzip vendor.zip manually.</b> 413
273 <?php endif; ?> 414 <div class="details">
274 <em>This method is mainly recommended if you don't have a dedicated server.</em></li> 415 <div>
275 <li>use <a href="http://getcomposer.org/">Composer</a> :<pre><code>curl -s http://getcomposer.org/installer | php 416 <hr>
276php composer.phar install</code></pre></li> 417 <h2 style="text-align:center;"><?php echo $status['app_name']; ?>: Compatibility Test</h2>
277 </ul> 418 <table cellpadding="0" cellspacing="0" border="0" width="100%" id="chart">
278 </div> 419 <thead>
279 <?php endif; ?> 420 <tr>
421 <th>Test</th>
422 <th>Should Be</th>
423 <th>What You Have</th>
424 <th>What it means</th>
425 </tr>
426 </thead>
427 <tbody>
428 <tr class="<?php echo ($status['php']) ? 'enabled' : 'disabled'; ?>">
429 <td>PHP</td>
430 <td>5.3.3 or higher</td>
431 <td class="<?php echo ($status['php']) ? 'good' : 'disabled'; ?>"><?php echo phpversion(); ?></td>
432 <td><?php echo ($status['php']) ? '<strong>PHP:</strong> You are running a supported version of PHP.' : '<strong>PHP:</strong> You are running an unsupported version of PHP. <strong>' . $status['app_name'] . ' will not work here.</strong>' ;?></td>
433 </tr>
434 <tr class="<?php echo ($status['pdo']) ? 'enabled' : 'disabled'; ?>">
435 <td><a href="http://php.net/manual/en/book.pdo.php">PDO</a></td>
436 <td>Enabled</td>
437 <?php echo ($status['pdo']) ? '<td class="good">Enabled</span>' : '<td class="bad">Disabled'; ?></td>
438 <td><?php echo ($status['pdo']) ? '<strong>PDO:</strong> You have PDO support enabled.' : '<strong>PDO:</strong> Your PHP installation doesn\'t support PHP PDO. <strong>' . $status['app_name'] . ' will not work here.</strong>' ?></td>
439 </tr>
440 <tr class="<?php echo ($status['pdo_drivers_passing']) ? 'enabled' : 'disabled'; ?>">
441 <td>PDO Drivers</td>
442 <td>One of the PDO drivers must be installed</td>
443 <?php echo ($status['pdo_drivers_passing']) ? '<td class="good">At least one driver is enabled</span>' : '<td class="bad">No driver available'; ?></td>
444 <td><?php echo ($status['pdo_drivers_passing']) ? '<strong>PDO:</strong> You have at least one PDO driver installed.' : '<strong>PDO Drivers:</strong> Your PHP installation doesn\'t have any PDO driver installed. <strong>' . $status['app_name'] . ' will not work here.</strong>' ?></td>
445 </tr>
446 <tr class="<?php echo ($status['xml']) ? 'enabled' : 'disabled'; ?>">
447 <td><a href="http://php.net/xml">XML</a></td>
448 <td>Enabled</td>
449 <?php echo ($status['xml']) ? '<td class="good">Enabled, and sane</span>' : '<td class="bad">Disabled, or broken'; ?></td>
450 <td><?php echo ($status['xml']) ? '<strong>XML:</strong> You have XMLReader support or a version of XML support that isn\'t broken installed.' : '<strong>XML:</strong> Your PHP installation doesn\'t support XML parsing. <strong>' . $status['app_name'] . ' will not work here.</strong>' ?></td>
451 </tr>
452 <tr class="<?php echo ($status['pcre']) ? 'enabled' : 'disabled'; ?>">
453 <td><a href="http://php.net/pcre">PCRE</a></td>
454 <td>Enabled</td>
455 <?php echo ($status['pcre']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
456 <td><?php echo ($status['pcre']) ? '<strong>PCRE:</strong> You have PCRE support installed.' : '<strong>PCRE:</strong> Your PHP installation doesn\'t support Perl-Compatible Regular Expressions. <strong>' . $status['app_name'] .' will not work here.</strong>' ?></td>
457 </tr>
458 <tr class="<?php echo ($status['zlib']) ? 'enabled' : 'disabled'; ?>">
459 <td><a href="http://php.net/zlib">Zlib</a></td>
460 <td>Enabled</td>
461 <?php echo ($status['zlib']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
462 <td><?php echo ($status['zlib']) ? '<strong>Zlib:</strong> You have <code>Zlib</code> enabled. This allows SimplePie to support GZIP-encoded pages.' : '<strong>Zlib:</strong> The <code>Zlib</code> extension is not available. SimplePie will ignore any GZIP-encoding, and instead handle pages as uncompressed text.' ?></td>
463 </tr>
464 <tr class="<?php echo ($status['mbstring']) ? 'enabled' : 'disabled'; ?>">
465 <td><a href="http://php.net/mbstring">mbstring</a></td>
466 <td>Enabled</td>
467 <?php echo ($status['mbstring']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
468 <td rowspan="2"><?php if(($status['mbstring']) && ($status['iconv'])) { ?><strong>mbstring and iconv:</strong> You have both <code>mbstring</code> and <code>iconv</code> installed! This will allow <?php echo $status['app_name']; ?> to handle the greatest number of languages.
469 <?php } elseif ($status['mbstring']) { ?><strong>mbstring:</strong> <code>mbstring</code> is installed, but <code>iconv</code> is not.
470 <?php } elseif ($status['iconv']) { ?><strong>iconv:</strong> <code>iconv</code> is installed, but <code>mbstring</code> is not.
471 <?php } else { ?><strong>mbstring and iconv:</strong> <em>You do not have either of the extensions installed.</em> This will significantly impair your ability to read non-English pages, as well as even some English ones.
472 <?php } ?>
473 </td>
474 </tr>
475 <tr class="<?php echo ($status['iconv']) ? 'enabled' : 'disabled'; ?>">
476 <td><a href="http://php.net/iconv">iconv</a></td>
477 <td>Enabled</td>
478 <?php echo ($status['iconv']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
479 </tr>
480 <tr class="<?php echo ($status['dom']) ? 'enabled' : 'disabled'; ?>">
481 <td><a href="http://php.net/manual/en/book.dom.php">DOM / XML extension</a></td>
482 <td>Enabled</td>
483 <?php echo ($status['dom']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
484 <td><?php echo ($status['dom']) ? '<strong>DOM/XML:</strong> You can parse <em>ini</em> files.' : '<strong>DOM/XML:</strong> Your PHP configuration isn\'t standard, you\'re missing PHP-DOM. You may try to install a package or recompile PHP. <strong>' . $status['app_name'] . ' will not work here.</strong>'; ?></td>
485 </tr>
486 <tr class="<?php echo ($status['filter']) ? 'enabled' : 'disabled'; ?>">
487 <td><a href="http://uk.php.net/manual/en/book.filter.php">Data filtering</a></td>
488 <td>Enabled</td>
489 <?php echo ($status['filter']) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td>
490 <td><?php echo ($status['filter']) ? '<strong>Data filtering:</strong> You can use the PHP build-in DOM to operate on XML documents.' : '<strong>Data filtering:</strong> Your PHP configuration has the filter extension disabled. <strong>' . $status['app_name'] . ' will not work here.</strong>' ?></td>
491 </tr>
492 <tr class="<?php echo ($status['gd']) ? 'enabled' : 'disabled'; ?>">
493 <td><a href="http://php.net/manual/en/book.image.php">GD</a></td>
494 <td>Enabled</td>
495 <?php echo ($status['gd']) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td>
496 <td><?php echo($status['gd']) ? '<strong>GD:</strong> You have <code>GD</code> support installed.' : '<strong>GD:</strong> The <code>GD</code> extension is not available. ' . $status['app_name'] . ' will not be able to download pictures locally on your server.' ?></td>
497 </tr>
498 <tr class="<?php echo ($status['tidy']) ? 'enabled' : 'disabled'; ?>">
499 <td><a href="http://php.net/tidy">Tidy</a></td>
500 <td>Enabled</td>
501 <?php echo ($status['tidy']) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td>
502 <td><?php echo ($status['tidy']) ? '<strong>Tidy:</strong> You have <code>Tidy</code> support installed.' : '<strong>Tidy:</strong> The <code>Tidy</code> 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 <code>sudo apt-get install php5-tidy</code> and then reload Apache <code>sudo service apache2 reload</code>.' ; ?></td>
503 </tr>
504 <tr class="<?php echo ($status['curl']) ? 'enabled' : 'disabled'; ?>">
505 <td><a href="http://php.net/curl">cURL</a></td>
506 <td>Enabled</td>
507 <?php echo (extension_loaded('curl')) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td>
508 <td><?php echo ($status['curl']) ? '<strong>cURL:</strong> You have <code>cURL</code> support installed.' : '<strong>cURL:</strong> The <code>cURL</code> extension is not available. SimplePie will use <code>fsockopen()</code> instead.' ?></td>
509 </tr>
510 <tr class="<?php echo ($status['parse_ini']) ? 'enabled' : 'disabled'; ?>">
511 <td><a href="http://uk.php.net/manual/en/function.parse-ini-file.php">Parse ini file</td>
512 <td>Enabled</td>
513 <?php echo ($status['parse_ini']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
514 <td><?php echo ($status['parse_ini']) ? '<strong>Parse ini:</strong> You can parse <em>ini</em> files.' : '<strong>Parse ini files function :</strong> Bad luck : your webhost has decided to block the use of the <em>parse_ini_file</em> function. <strong>' . $status['app_name'] . ' will not work here.' ?></td>
515 </tr>
516 <tr class="<?php echo ($status['parallel']) ? 'enabled' : 'disabled'; ?>">
517 <td>Parallel URL fetching</td>
518 <td>Enabled</td>
519 <?php echo ($status['parallel']) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td>
520 <td><?php echo ($status['parallel']) ? '<strong>Parallel URL fetching:</strong> You have <code>HttpRequestPool</code> or <code>curl_multi</code> support installed.' : '<strong>Parallel URL fetching:</strong> <code>HttpRequestPool</code> or <code>curl_multi</code> support is not available. ' . $status['app_name'] . ' will use <code>file_get_contents()</code> instead to fetch URLs sequentially rather than in parallel.' ?></td>
521 </tr>
522 <tr class="<?php echo ($status['allow_url_fopen']) ? 'enabled' : 'disabled'; ?>">
523 <td><a href="http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen">allow_url_fopen</a></td>
524 <td>Enabled</td>
525 <?php if ($status['allow_url_fopen']) { ?>
526 <td class="good">Enabled</td>
527 <td><strong>allow_url_fopen:</strong> You have allow_url_fopen enabled.
528 <?php } elseif ($status['curl']) { ?>
529 <td class="pass">Disabled</td>
530 <td><strong>allow_url_fopen</strong> is disabled, but curl is supported, so it should be ok.</td>
531 <?php } else { ?>
532 <td class="bad">Disabled</td>
533 <td><strong>allow_url_fopen:</strong> Your PHP configuration has allow_url_fopen disabled.
534 <strong><?php echo $status['app_name']; ?> will not work here.</strong><?php } ?></td>
535 </tr>
536 <tr class="<?php echo ($status['gettext']) ? 'enabled' : 'disabled'; ?>">
537 <td><a href="http://php.net/manual/en/book.gettext.php">gettext</a></td>
538 <td>Enabled</td>
539 <?php echo ($status['gettext']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
540 <td><?php echo ($status['gettext']) ? '<strong>Gettext:</strong> You have <code>gettext</code> enabled.</em>' : '<strong>GetText:</strong> The <code>gettext</code> extension is not available. The system we use to display wallabag in various languages is not available. <strong>' . $status['app_name'] .' will not work here.</strong>' ?></td>
541 </tr>
542 </tbody>
543 </table>
544 <hr>
545 </div>
546 <div class="details">
547 <?php //if ($status['php'] && $status['xml'] && $status['pcre'] && $status['mbstring'] && $status['iconv'] && $status['filter'] && $status['allow_url_fopen']) { ?>
548 <?php if (isOkay()) { ?>
549 <h3>Bottom Line: Yes, you can run <?php echo $status['app_name']; ?> !</h3>
550 <p><em>Your webhost has its act together!</em></p>
551 <p><strong>Note</strong>: Passing this test does not guarantee that <?php echo $status['app_name']; ?> will run on your webhost &mdash; it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.</p>
552 <?php //} else if ($status['php'] && $status['xml'] && $status['pcre'] && $status['mbstring'] && $status['allow_url_fopen'] && $status['filter']) { ?>
553 <?php } else if (!isOkay() && isPassing()) { ?>
554 <h3>Bottom Line: Yes, you can run <?php echo $status['app_name']; ?> !</h3>
555 <p><em>For most pages, it'll run with no problems.</em> There are certain languages that you might have a hard time with though.</p>
556 <p><strong>Note</strong>: Passing this test does not guarantee that <?php echo $status['app_name']; ?> will run on your webhost &mdash; it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.</p>
557 <?php } else { ?>
558 <h3>Bottom Line: We're sorry…</h3>
559 <p><em>Your webhost does not support the minimum requirements for <?php echo $status['app_name']; ?>.</em> 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.</p>
560 <p>If this is your own server and you think you have all the requirements installed, please get in touch with us.</p>
561 <?php } ?>
562 </div>
563
564 <div class="chunk">
565 <p class="footnote">This compatibility test has been borrowed (and slightly adapted by <a href="http://fivefilters.org/content-only/">fivefilters.org</a>) from the one supplied by <a href="http://simplepie.org/">SimplePie.org</a>.</a></p>
566 </div>
567 </div>
568 <form method="post" class="technical">
569 <hr>
570 <div class='twig'>
571 <h2>Twig installation</h2>
572 <?php if (!is_dir('vendor')) : ?>
573
574 <p>wallabag needs twig, a template engine (<a href="http://twig.sensiolabs.org/">?</a>). Two ways to install it:</p>
575 <ul>
576 <li>automatically download and extract vendor.zip into your wallabag folder.
577 <p><input type="submit" name="download" value="Download vendor.zip" /></p>
578 <?php if (!extension_loaded('zip')) : ?>
579 <b>Be careful, zip extension is not enabled in your PHP configuration. You'll have to unzip vendor.zip manually.</b>
580 <?php endif; ?>
581 <em>This method is mainly recommended if you don't have a dedicated server.</em></li>
582 <li>use <a href="http://getcomposer.org/">Composer</a> in your wallabag folder :<pre><code>curl -s http://getcomposer.org/installer | php
583php composer.phar install</code></pre>
584 <span id="reloadpage">Reload to check</span>
585 </li>
586 </ul>
587
588 <?php else : ?>
589 Twig is properly installed.
590 <?php endif; ?>
591 </div>
592 <div class="database_info">
593 <hr>
594 <fieldset class="database_inputs">
595 <legend><strong>Database settings</strong></legend>
280 <p> 596 <p>
281 Database engine: 597 Database engine:
282 <ul> 598 <ul>
283 <li><label for="sqlite">SQLite</label> <input name="db_engine" type="radio" checked="" id="sqlite" value="sqlite" /> 599 <li>
284 <div id="pdo_sqlite" class='messages error install'> 600 <?php if ($pdo_drivers['sqlite']) { ?>
285 <p>You have to enable <a href="http://php.net/manual/ref.pdo-sqlite.php">pdo_sqlite extension</a>.</p> 601 <label for="sqlite">SQLite</label> <input name="db_engine" type="radio" checked="" id="sqlite" value="sqlite" />
286 </div> 602 <?php } else { ?>
287 </li> 603 <div class="messages notice">
288 <li> 604 <p>You have to enable <a href="http://php.net/manual/ref.pdo-sqlite.php">pdo_sqlite extension</a> to use SQLite.</p>
289 <label for="mysql">MySQL</label> <input name="db_engine" type="radio" id="mysql" value="mysql" /> 605 </div>
290 <ul id="mysql_infos"> 606 <?php } ?>
291 <li><label for="mysql_server">Server</label> <input type="text" placeholder="localhost" id="mysql_server" name="mysql_server" /></li> 607 </li>
292 <li><label for="mysql_database">Database</label> <input type="text" placeholder="wallabag" id="mysql_database" name="mysql_database" /></li> 608 <li>
293 <li><label for="mysql_user">User</label> <input type="text" placeholder="user" id="mysql_user" name="mysql_user" /></li> 609 <?php if ($pdo_drivers['mysql']) { ?>
294 <li><label for="mysql_password">Password</label> <input type="password" placeholder="p4ssw0rd" id="mysql_password" name="mysql_password" /></li> 610 <label for="mysql">MySQL</label> <input name="db_engine" type="radio" id="mysql" value="mysql" />
295 </ul> 611 <div id="pdo_mysql" class='messages notice install'>
296 </li> 612 <p>All fields have to be filled.</p>
297 <li> 613 </div>
298 <label for="postgres">PostgreSQL</label> <input name="db_engine" type="radio" id="postgres" value="postgres" /> 614 <ul id="mysql_infos">
299 <ul id="pg_infos"> 615 <li><label for="mysql_server">Server</label> <input type="text" placeholder="localhost" id="mysql_server" name="mysql_server" /></li>
616 <li><label for="mysql_database">Database</label> <input type="text" placeholder="wallabag" id="mysql_database" name="mysql_database" /></li>
617 <li><label for="mysql_user">User</label> <input type="text" placeholder="user" id="mysql_user" name="mysql_user" /></li>
618 <li><label for="mysql_password">Password</label> <input type="password" placeholder="p4ssw0rd" id="mysql_password" name="mysql_password" /></li>
619 <li><label for="mysql_utf8_mb4">Use UTF-8 MB4</label> <input id="mysql_utf8_mb4" type="checkbox" name="mysql_utf8_mb4">
620 <div id="utf8_mb4_infos"><em>Warning :</em> UTF-8 MB4 is used to fully support unicode characters. It is available only with MySQL starting with version 5.5.3.
621 Install will failed if you check this while using an older MySQL server.</div></li>
622 </ul>
623 <?php } else { ?>
624 <div class="messages notice">
625 <p>You have to enable <a href="http://php.net/manual/ref.pdo-mysql.php">pdo_mysql extension</a> to use MySQL.</p>
626 </div>
627 <?php } ?>
628 </li>
629 <li>
630 <?php if ($pdo_drivers['postgres']) { ?>
631 <label for="postgres">PostgreSQL</label> <input name="db_engine" type="radio" id="postgres" value="postgres" />
632 <div id="pdo_postgres" class='messages notice install'>
633 <p>All fields have to be filled.</p>
634 </div>
635 <ul id="pg_infos">
300 <li><label for="pg_server">Server</label> <input type="text" placeholder="localhost" id="pg_server" name="pg_server" /></li> 636 <li><label for="pg_server">Server</label> <input type="text" placeholder="localhost" id="pg_server" name="pg_server" /></li>
301 <li><label for="pg_database">Database</label> <input type="text" placeholder="wallabag" id="pg_database" name="pg_database" /></li> 637 <li><label for="pg_database">Database</label> <input type="text" placeholder="wallabag" id="pg_database" name="pg_database" /></li>
302 <li><label for="pg_user">User</label> <input type="text" placeholder="user" id="pg_user" name="pg_user" /></li> 638 <li><label for="pg_user">User</label> <input type="text" placeholder="user" id="pg_user" name="pg_user" /></li>
303 <li><label for="pg_password">Password</label> <input type="password" placeholder="p4ssw0rd" id="pg_password" name="pg_password" /></li> 639 <li><label for="pg_password">Password</label> <input type="password" placeholder="p4ssw0rd" id="pg_password" name="pg_password" /></li>
304 </ul> 640 </ul>
305 </li> 641 <?php } else { ?>
642 <div class="messages notice">
643 <p>You have to enable <a href="https://php.net/manual/ref.pdo-pgsql.php">pdo_pgsql extension</a> to use PostgreSQL.</p>
644 </div>
645 <?php } ?>
646 </li>
306 </ul> 647 </ul>
307 </p> 648 </p>
308 </fieldset> 649 </fieldset>
309 650 <div class="descriptions">
310 <fieldset> 651 <div id="sqlite_description">
652 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.
653 </div>
654 <div id="mysql_description">
655 MySQL (also called MariaDB) is one of the most popular database systems. It comes with most shared hosting plans.
656 </div>
657 <div id="postgres_description">
658 PostgreSQL. Because some people prefer it to MySQL. With reasons.
659 </div>
660 </div>
661 </div>
662 <hr>
663 <div class="usersettings">
664 <fieldset style="clear: both">
311 <legend><strong>User settings</strong></legend> 665 <legend><strong>User settings</strong></legend>
312 <p> 666 <p>
313 <label for="username">Username</label> 667 <label for="username">Username</label>
@@ -323,53 +677,100 @@ php composer.phar install</code></pre></li>
323 <input type="email" id="email" name="email" /> 677 <input type="email" id="email" name="email" />
324 </p> 678 </p>
325 </fieldset> 679 </fieldset>
326
327 <input type="submit" id="install_button" value="Install wallabag" name="install" /> 680 <input type="submit" id="install_button" value="Install wallabag" name="install" />
681 </div>
328 </form> 682 </form>
329 </div> 683 </div>
684 <?php else : ?>
685 <div class="final good">
686 <h1>wallabag is now installed ! :-) </h1>
687 <a href="index.php?clean=0">Click here to access the login form</a><br />
688 <em>The installation will now try to delete the install directory. If this fails, delete it manually.</em></div>
689 <?php endif; ?>
330 <script> 690 <script>
691 <?php if (!is_dir('vendor')) : ?>
692 $(".database_info").hide();
693 $(".usersettings").hide();
694 <?php endif ?>
695 /*
696 * Database showing/hiding
697 */
331 $("#mysql_infos").hide(); 698 $("#mysql_infos").hide();
699 $("#mysql_description").hide();
332 $("#pg_infos").hide(); 700 $("#pg_infos").hide();
701 $("#postgres_description").hide();
702 $("#sqlite_description").show();
703 $("#pdo_postgres").hide();
704 $("#pdo_mysql").hide();
705
706 /*
707 * Details hiding
708 */
709
710 $(".details").hide();
711 $("#utf8_mb4_infos").hide();
333 712
334 <?php 713 <?php
335 if (!extension_loaded('pdo_sqlite')) : ?> 714 if (!isPassing()) : ?>
336 $("#install_button").hide(); 715 $('.technical').hide();
337 <?php 716 <?php
338 else : 717 else :
339 ?> 718 ?>
340 $("#pdo_sqlite").hide(); 719 $('.technical').show();
341 <?php 720 <?php
342 endif; 721 endif;
343 ?> 722 ?>
344 723
724 $("#mysql_utf8_mb4").click(function() {
725 $("#utf8_mb4_infos").toggle();
726 });
727
345 $("input[name=db_engine]").click(function() 728 $("input[name=db_engine]").click(function()
346 { 729 {
347 if ( $("#mysql").prop('checked')) { 730 if ( $("#mysql").prop('checked')) {
348 $("#mysql_infos").show(); 731 $("#mysql_infos").show();
732 $("#pdo_mysql").show();
349 $("#pg_infos").hide(); 733 $("#pg_infos").hide();
734 $("#pdo_postgres").hide();
350 $("#pdo_sqlite").hide(); 735 $("#pdo_sqlite").hide();
351 $("#install_button").show(); 736 $("#sqlite_description").hide();
737 $("#postgres_description").hide();
738 $("#mysql_description").show();
739 $("#install_button").show();
352 } 740 }
353 else { 741 else {
354 if ( $("#postgres").prop('checked')) { 742 if ( $("#postgres").prop('checked')) {
355 $("#mysql_infos").hide(); 743 $("#mysql_infos").hide();
744 $("#pdo_mysql").hide();
356 $("#pg_infos").show(); 745 $("#pg_infos").show();
746 $("#pdo_postgres").show();
357 $("#pdo_sqlite").hide(); 747 $("#pdo_sqlite").hide();
748 $("#sqlite_description").hide();
749 $("#mysql_description").hide();
750 $("#postgres_description").show();
358 $("#install_button").show(); 751 $("#install_button").show();
359 } 752 }
360 else { 753 else {
361 $("#mysql_infos").hide(); 754 $("#mysql_infos").hide();
362 $("#pg_infos").hide(); 755 $("#pg_infos").hide();
363 <?php 756 $("#pdo_postgres").hide();
364 if (!extension_loaded('pdo_sqlite')) : ?> 757 $("#pdo_mysql").hide();
365 $("#pdo_sqlite").show(); 758 $("#sqlite_description").show();
366 $("#install_button").hide(); 759 $("#mysql_description").hide();
367 <?php 760 $("#postgres_description").hide();
368 endif;
369 ?>
370 } 761 }
371 } 762 }
372 }); 763 });
764
765 $(".detail").click(function()
766 {
767 $('.details').toggle();
768 });
769 $("#reloadpage").click(function()
770 {
771 location.reload();
772 });
773
373 </script> 774 </script>
374 </body> 775 </body>
375</html> 776</html>
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 @@
1<?php
2/**
3 * wallabag, self hostable application allowing you to not miss any content anymore
4 *
5 * @category wallabag
6 * @author Nicolas LÅ“uillet <nicolas@loeuillet.org>
7 * @copyright 2013
8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */
10
11function status() {
12$app_name = 'wallabag';
13
14$php_ok = (function_exists('version_compare') && version_compare(phpversion(), '5.3.3', '>='));
15$pdo_ok = class_exists('PDO');
16$pcre_ok = extension_loaded('pcre');
17$zlib_ok = extension_loaded('zlib');
18$mbstring_ok = extension_loaded('mbstring');
19$dom_ok = extension_loaded('DOM');
20$iconv_ok = extension_loaded('iconv');
21$tidy_ok = function_exists('tidy_parse_string');
22$curl_ok = function_exists('curl_exec');
23$parse_ini_ok = function_exists('parse_ini_file');
24$parallel_ok = ((extension_loaded('http') && class_exists('HttpRequestPool')) || ($curl_ok && function_exists('curl_multi_init')));
25$allow_url_fopen_ok = (bool)ini_get('allow_url_fopen');
26$filter_ok = extension_loaded('filter');
27$gettext_ok = function_exists("gettext");
28$gd_ok = extension_loaded('gd');
29$pdo_drivers = pdoDrivers();
30$pdo_drivers_passing = $pdo_drivers['sqlite'] || $pdo_drivers['mysql'] || $pdo_drivers['postgres'];
31$urlfetching = $curl_ok || $allow_url_fopen_ok;
32
33
34
35if (extension_loaded('xmlreader')) {
36 $xml_ok = true;
37} elseif (extension_loaded('xml')) {
38 $parser_check = xml_parser_create();
39 xml_parse_into_struct($parser_check, '<foo>&amp;</foo>', $values);
40 xml_parser_free($parser_check);
41 $xml_ok = isset($values[0]['value']);
42} else {
43 $xml_ok = false;
44}
45
46$status = array('app_name' => $app_name, 'php' => $php_ok, 'pdo' => $pdo_ok,
47 'pdo_drivers_passing' => $pdo_drivers_passing, 'xml' => $xml_ok, 'pcre' => $pcre_ok,
48 'zlib' => $zlib_ok, 'mbstring' => $mbstring_ok, 'dom' => $dom_ok, 'iconv' => $iconv_ok, 'tidy' => $tidy_ok, 'curl' => $curl_ok,
49 'parse_ini' => $parse_ini_ok, 'parallel' => $parallel_ok, 'allow_url_fopen' => $allow_url_fopen_ok, 'filter' => $filter_ok,
50 'gettext' => $gettext_ok, 'gd' => $gd_ok, 'urlfetching' => $urlfetching);
51
52return $status;
53}
54function isOkay() {
55 return !in_array(false, status());
56}
57
58function isPassing() {
59 $status = status();
60 unset($status['curl'], $status['parallel'], $status['tidy'], $status['gd'], $status['filter'], $status['allow_url_fopen']);
61 return !in_array(false, $status);
62}
63
64function pdoDrivers() {
65 $pdo_driver_sqlite = extension_loaded('pdo_sqlite');
66 $pdo_driver_mysql = extension_loaded('pdo_mysql');
67 $pdo_driver_postgres = extension_loaded('pdo_pgsql');
68
69 $pdo_drivers = array('sqlite' => $pdo_driver_sqlite, 'mysql' => $pdo_driver_mysql,
70 'postgres' => $pdo_driver_postgres);
71
72 return $pdo_drivers;
73}
74
75/* Function taken from at http://php.net/manual/en/function.rmdir.php#110489
76 * Idea : nbari at dalmp dot com
77 * Rights unknown
78 * Here in case of .gitignore files
79 */
80
81function delTree($dir) {
82 $files = array_diff(scandir($dir), array('.','..'));
83 foreach ($files as $file) {
84 (is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file");
85 }
86 return rmdir($dir);
87 }
88
89function generate_salt() {
90 mt_srand(microtime(true)*100000 + memory_get_usage(true));
91 return md5(uniqid(mt_rand(), true));
92}
93
94function executeQuery($handle, $sql, $params) {
95 try
96 {
97 $query = $handle->prepare($sql);
98 $query->execute($params);
99 return $query->fetchAll();
100 }
101 catch (Exception $e)
102 {
103 return FALSE;
104 }
105}
106
107?> \ 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 @@
1<?php
2/**
3 * wallabag, self hostable application allowing you to not miss any content anymore
4 *
5 * @category wallabag
6 * @author Nicolas LÅ“uillet <nicolas@loeuillet.org>
7 * @copyright 2013
8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */
10
11$app_name = 'wallabag';
12
13$php_ok = (function_exists('version_compare') && version_compare(phpversion(), '5.3.3', '>='));
14$pcre_ok = extension_loaded('pcre');
15$zlib_ok = extension_loaded('zlib');
16$mbstring_ok = extension_loaded('mbstring');
17$dom_ok = extension_loaded('DOM');
18$iconv_ok = extension_loaded('iconv');
19$tidy_ok = function_exists('tidy_parse_string');
20$curl_ok = function_exists('curl_exec');
21$parse_ini_ok = function_exists('parse_ini_file');
22$parallel_ok = ((extension_loaded('http') && class_exists('HttpRequestPool')) || ($curl_ok && function_exists('curl_multi_init')));
23$allow_url_fopen_ok = (bool)ini_get('allow_url_fopen');
24$filter_ok = extension_loaded('filter');
25$gettext_ok = function_exists("gettext");
26$gd_ok = extension_loaded('gd');
27
28
29if (extension_loaded('xmlreader')) {
30 $xml_ok = true;
31} elseif (extension_loaded('xml')) {
32 $parser_check = xml_parser_create();
33 xml_parse_into_struct($parser_check, '<foo>&amp;</foo>', $values);
34 xml_parser_free($parser_check);
35 $xml_ok = isset($values[0]['value']);
36} else {
37 $xml_ok = false;
38}
39
40header('Content-type: text/html; charset=UTF-8');
41
42?><!DOCTYPE html>
43
44<html lang="en">
45<head>
46<title><?php echo $app_name; ?>: Server Compatibility Test</title>
47
48<style type="text/css">
49body {
50 font:14px/1.4em "Lucida Grande", Verdana, Arial, Helvetica, Clean, Sans, sans-serif;
51 letter-spacing:0px;
52 color:#333;
53 margin:0;
54 padding:0;
55 background:#fff;
56}
57
58div#site {
59 width:550px;
60 margin:20px auto 0 auto;
61}
62
63a {
64 color:#000;
65 text-decoration:underline;
66 padding:0 1px;
67}
68
69a:hover {
70 color:#fff;
71 background-color:#333;
72 text-decoration:none;
73 padding:0 1px;
74}
75
76p {
77 margin:0;
78 padding:5px 0;
79}
80
81em {
82 font-style:normal;
83 background-color:#ffc;
84 padding: 0.1em 0;
85}
86
87ul, ol {
88 margin:10px 0 10px 20px;
89 padding:0 0 0 15px;
90}
91
92ul li, ol li {
93 margin:0 0 7px 0;
94 padding:0 0 0 3px;
95}
96
97h2 {
98 font-size:18px;
99 padding:0;
100 margin:30px 0 20px 0;
101}
102
103h3 {
104 font-size:16px;
105 padding:0;
106 margin:20px 0 5px 0;
107}
108
109h4 {
110 font-size:14px;
111 padding:0;
112 margin:15px 0 5px 0;
113}
114
115code {
116 font-size:1.1em;
117 background-color:#f3f3ff;
118 color:#000;
119}
120
121em strong {
122 text-transform: uppercase;
123}
124
125table#chart {
126 border-collapse:collapse;
127}
128
129table#chart th {
130 background-color:#eee;
131 padding:2px 3px;
132 border:1px solid #fff;
133}
134
135table#chart td {
136 text-align:center;
137 padding:2px 3px;
138 border:1px solid #eee;
139}
140
141table#chart tr.enabled td {
142 /* Leave this alone */
143}
144
145table#chart tr.disabled td,
146table#chart tr.disabled td a {
147}
148
149table#chart tr.disabled td a {
150 text-decoration:underline;
151}
152
153div.chunk {
154 margin:20px 0 0 0;
155 padding:0 0 10px 0;
156 border-bottom:1px solid #ccc;
157}
158
159.footnote,
160.footnote a {
161 font:10px/12px verdana, sans-serif;
162 color:#aaa;
163}
164
165.footnote em {
166 background-color:transparent;
167 font-style:italic;
168}
169
170.good{
171background-color:#52CC5B;
172}
173.bad{
174background-color:#F74343;
175font-style:italic;
176font-weight: bold;
177}
178.pass{
179background-color:#FF9500;
180}
181
182</style>
183
184</head>
185
186<body>
187<?php
188$frominstall = false;
189if (isset($_GET['from'])){
190 if ($_GET['from'] == 'install'){
191 $frominstall = true;
192 }}
193?>
194<div id="site">
195 <div id="content">
196
197 <div class="chunk">
198 <h2 style="text-align:center;"><?php echo $app_name; ?>: Compatibility Test</h2>
199 <table cellpadding="0" cellspacing="0" border="0" width="100%" id="chart">
200 <thead>
201 <tr>
202 <th>Test</th>
203 <th>Should Be</th>
204 <th>What You Have</th>
205 </tr>
206 </thead>
207 <tbody>
208 <tr class="<?php echo ($php_ok) ? 'enabled' : 'disabled'; ?>">
209 <td>PHP</td>
210 <td>5.3.3 or higher</td>
211 <td class="<?php echo ($php_ok) ? 'good' : 'disabled'; ?>"><?php echo phpversion(); ?></td>
212 </tr>
213 <tr class="<?php echo ($xml_ok) ? 'enabled' : 'disabled'; ?>">
214 <td><a href="http://php.net/xml">XML</a></td>
215 <td>Enabled</td>
216 <?php echo ($xml_ok) ? '<td class="good">Enabled, and sane</span>' : '<td class="bad">Disabled, or broken'; ?></td>
217 </tr>
218 <tr class="<?php echo ($pcre_ok) ? 'enabled' : 'disabled'; ?>">
219 <td><a href="http://php.net/pcre">PCRE</a></td>
220 <td>Enabled</td>
221 <?php echo ($pcre_ok) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
222 </tr>
223<!-- <tr class="<?php echo ($zlib_ok) ? 'enabled' : 'disabled'; ?>">
224 <td><a href="http://php.net/zlib">Zlib</a></td>
225 <td>Enabled</td>
226 <?php echo ($zlib_ok) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
227 </tr> -->
228<!-- <tr class="<?php echo ($mbstring_ok) ? 'enabled' : 'disabled'; ?>">
229 <td><a href="http://php.net/mbstring">mbstring</a></td>
230 <td>Enabled</td>
231 <?php echo ($mbstring_ok) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
232 </tr> -->
233<!-- <tr class="<?php echo ($iconv_ok) ? 'enabled' : 'disabled'; ?>">
234 <td><a href="http://php.net/iconv">iconv</a></td>
235 <td>Enabled</td>
236 <?php echo ($iconv_ok) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
237 </tr> -->
238 <tr class="<?php echo ($dom_ok) ? 'enabled' : 'disabled'; ?>">
239 <td><a href="http://php.net/manual/en/book.dom.php">DOM / XML extension</a></td>
240 <td>Enabled</td>
241 <?php echo ($dom_ok) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
242 </tr>
243 <tr class="<?php echo ($filter_ok) ? 'enabled' : 'disabled'; ?>">
244 <td><a href="http://uk.php.net/manual/en/book.filter.php">Data filtering</a></td>
245 <td>Enabled</td>
246 <?php echo ($filter_ok) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td>
247 </tr>
248 <tr class="<?php echo ($gd_ok) ? 'enabled' : 'disabled'; ?>">
249 <td><a href="http://php.net/manual/en/book.image.php">GD</a></td>
250 <td>Enabled</td>
251 <?php echo ($gd_ok) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td>
252 </tr>
253 <tr class="<?php echo ($tidy_ok) ? 'enabled' : 'disabled'; ?>">
254 <td><a href="http://php.net/tidy">Tidy</a></td>
255 <td>Enabled</td>
256 <?php echo ($tidy_ok) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td>
257 </tr>
258 <tr class="<?php echo ($curl_ok) ? 'enabled' : 'disabled'; ?>">
259 <td><a href="http://php.net/curl">cURL</a></td>
260 <td>Enabled</td>
261 <?php echo (extension_loaded('curl')) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td>
262 </tr>
263 <tr class="<?php echo ($parse_ini_ok) ? 'enabled' : 'disabled'; ?>">
264 <td><a href="http://uk.php.net/manual/en/function.parse-ini-file.php">Parse ini file</td>
265 <td>Enabled</td>
266 <?php echo ($parse_ini_ok) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
267 </tr>
268 <tr class="<?php echo ($parallel_ok) ? 'enabled' : 'disabled'; ?>">
269 <td>Parallel URL fetching</td>
270 <td>Enabled</td>
271 <?php echo ($parallel_ok) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td>
272 </tr>
273 <tr class="<?php echo ($allow_url_fopen_ok) ? 'enabled' : 'disabled'; ?>">
274 <td><a href="http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen">allow_url_fopen</a></td>
275 <td>Enabled</td>
276 <?php echo ($allow_url_fopen_ok) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
277 </tr>
278 <tr class="<?php echo ($gettext_ok) ? 'enabled' : 'disabled'; ?>">
279 <td><a href="http://php.net/manual/en/book.gettext.php">gettext</a></td>
280 <td>Enabled</td>
281 <?php echo ($gettext_ok) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
282 </tr>
283 </tbody>
284 </table>
285 </div>
286
287 <div class="chunk">
288 <h3>What does this mean?</h3>
289 <ol>
290 <?php //if ($php_ok && $xml_ok && $pcre_ok && $mbstring_ok && $iconv_ok && $filter_ok && $zlib_ok && $tidy_ok && $curl_ok && $parallel_ok && $allow_url_fopen_ok): ?>
291 <?php if ($php_ok && $xml_ok && $pcre_ok && $dom_ok && $filter_ok && $gd_ok && $tidy_ok && $curl_ok && $parallel_ok && $allow_url_fopen_ok && $gettext_ok && $parse_ini_ok): ?>
292 <li><em>You have everything you need to run <?php echo $app_name; ?> properly! Congratulations!</em></li>
293 <?php else: ?>
294 <?php if ($php_ok): ?>
295 <li><strong>PHP:</strong> You are running a supported version of PHP. <em>No problems here.</em></li>
296 <?php if ($xml_ok): ?>
297 <li><strong>XML:</strong> You have XMLReader support or a version of XML support that isn't broken installed. <em>No problems here.</em></li>
298 <?php if ($pcre_ok): ?>
299 <li><strong>PCRE:</strong> You have PCRE support installed. <em>No problems here.</em></li>
300
301 <?php if ($allow_url_fopen_ok): ?>
302 <li><strong>allow_url_fopen:</strong> You have allow_url_fopen enabled. <em>No problems here.</em></li>
303
304 <?php if ($gettext_ok): ?>
305 <li><strong>Gettext:</strong> You have <code>gettext</code> enabled. <em>No problems here.</em></li>
306
307 <?php if ($parse_ini_ok): ?>
308 <li><strong>Parse ini:</strong> You can parse <em>ini</em> files. <em>No problems here.</em></li>
309
310 <?php if ($dom_ok): ?>
311 <li><strong>DOM/XML:</strong> You can parse <em>ini</em> files. <em>No problems here.</em></li>
312
313 <?php if ($filter_ok): ?>
314 <li><strong>Data filtering:</strong> You can use the PHP build-in DOM to operate on XML documents. <em>No problems here.</em></li>
315
316 <?php if ($zlib_ok): ?>
317 <li><strong>Zlib:</strong> You have <code>Zlib</code> enabled. This allows SimplePie to support GZIP-encoded feeds. <em>No problems here.</em></li>
318 <?php else: ?>
319 <li><strong>Zlib:</strong> The <code>Zlib</code> extension is not available. SimplePie will ignore any GZIP-encoding, and instead handle feeds as uncompressed text.</li>
320 <?php endif; ?>
321
322 <?php if ($mbstring_ok && $iconv_ok): ?>
323 <li><strong>mbstring and iconv:</strong> You have both <code>mbstring</code> and <code>iconv</code> installed! This will allow <?php echo $app_name; ?> to handle the greatest number of languages. <em>No problems here.</em></li>
324 <?php elseif ($mbstring_ok): ?>
325 <li><strong>mbstring:</strong> <code>mbstring</code> is installed, but <code>iconv</code> is not.</li>
326 <?php elseif ($iconv_ok): ?>
327 <li><strong>iconv:</strong> <code>iconv</code> is installed, but <code>mbstring</code> is not.</li>
328 <?php else: ?>
329 <li><strong>mbstring and iconv:</strong> <em>You do not have either of the extensions installed.</em> This will significantly impair your ability to read non-English feeds, as well as even some English ones.</li>
330 <?php endif; ?>
331
332 <?php if ($gd_ok): ?>
333 <li><strong>GD:</strong> You have <code>GD</code> support installed. <em>No problems here.</em></li>
334 <?php else: ?>
335 <li><strong>GD:</strong> The <code>GD</code> extension is not available. <?php echo $app_name; ?> will not be able to download pictures locally on your server.</li>
336 <?php endif; ?>
337
338 <?php if ($tidy_ok): ?>
339 <li><strong>Tidy:</strong> You have <code>Tidy</code> support installed. <em>No problems here.</em></li>
340 <?php else: ?>
341 <li><strong>Tidy:</strong> The <code>Tidy</code> extension is not available. <?php echo $app_name; ?> should still work with most feeds, but you may experience problems with some. You can install it with <code>sudo apt-get install php5-tidy</code> and then reload Apache <code>sudo service apache2 reload</code>.</li>
342 <?php endif; ?>
343
344 <?php if ($curl_ok): ?>
345 <li><strong>cURL:</strong> You have <code>cURL</code> support installed. <em>No problems here.</em></li>
346 <?php else: ?>
347 <li><strong>cURL:</strong> The <code>cURL</code> extension is not available. SimplePie will use <code>fsockopen()</code> instead.</li>
348 <?php endif; ?>
349
350 <?php if ($parallel_ok): ?>
351 <li><strong>Parallel URL fetching:</strong> You have <code>HttpRequestPool</code> or <code>curl_multi</code> support installed. <em>No problems here.</em></li>
352 <?php else: ?>
353 <li><strong>Parallel URL fetching:</strong> <code>HttpRequestPool</code> or <code>curl_multi</code> support is not available. <?php echo $app_name; ?> will use <code>file_get_contents()</code> instead to fetch URLs sequentially rather than in parallel.</li>
354 <?php endif; ?>
355
356 <?php else: ?>
357 <li><strong>Data filtering:</strong> Your PHP configuration has the filter extension disabled. <strong><?php echo $app_name; ?> will not work here.</strong></li>
358 <?php endif; ?>
359
360 <?php else: ?>
361 <li><strong>DOM/XML:</strong> Your PHP configuration isn't standard, you're missing PHP-DOM. You may try to install a package or recompile PHP. <strong><?php echo $app_name; ?> will not work here.</strong></li>
362 <?php endif; ?>
363
364 <?php else : ?>
365 <li><strong>Parse ini files function :</strong> Bad luck : your webhost has decided to block the use of the <em>parse_ini_file</em> function. <strong><?php echo $app_name; ?> will not work here.</strong>
366 <?php endif; ?>
367
368 <?php else: ?>
369 <li><strong>GetText:</strong> The <code>gettext</code> extension is not available. The system we use to display wallabag in various languages is not available. <strong><?php echo $app_name; ?> will not work here.</strong></li>
370 <?php endif; ?>
371
372 <?php else: ?>
373 <li><strong>allow_url_fopen:</strong> Your PHP configuration has allow_url_fopen disabled. <strong><?php echo $app_name; ?> will not work here.</strong></li>
374 <?php endif; ?>
375
376 <?php else: ?>
377 <li><strong>PCRE:</strong> Your PHP installation doesn't support Perl-Compatible Regular Expressions. <strong><?php echo $app_name; ?> will not work here.</strong></li>
378 <?php endif; ?>
379 <?php else: ?>
380 <li><strong>XML:</strong> Your PHP installation doesn't support XML parsing. <strong><?php echo $app_name; ?> will not work here.</strong></li>
381 <?php endif; ?>
382 <?php else: ?>
383 <li><strong>PHP:</strong> You are running an unsupported version of PHP. <strong><?php echo $app_name; ?> will not work here.</strong></li>
384 <?php endif; ?>
385 <?php endif; ?>
386 </ol>
387 </div>
388
389 <div class="chunk">
390 <?php //if ($php_ok && $xml_ok && $pcre_ok && $mbstring_ok && $iconv_ok && $filter_ok && $allow_url_fopen_ok) { ?>
391 <?php if ($php_ok && $xml_ok && $pcre_ok && $filter_ok && $allow_url_fopen_ok && $gettext_ok && $parse_ini_ok) { ?>
392 <h3>Bottom Line: Yes, you can!</h3>
393 <p><em>Your webhost has its act together!</em></p>
394 <?php if (!$frominstall) { ?>
395 <p>You can download the latest version of <?php echo $app_name; ?> from <a href="http://wallabag.org/download">wallabag.org</a>.</p>
396 <p>If you already have done that, you should access <a href="index.php">the index.php file</a> of your installation to configure and/or start using wallabag</p>
397 <?php } else { ?>
398 <p>You can now <a href="../index.php">return to the installation section</a>.</p>
399 <?php } ?>
400 <p><strong>Note</strong>: Passing this test does not guarantee that <?php echo $app_name; ?> will run on your webhost &mdash; it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.</p>
401 <?php //} else if ($php_ok && $xml_ok && $pcre_ok && $mbstring_ok && $allow_url_fopen_ok && $filter_ok) { ?>
402 <?php } else if ($php_ok && $xml_ok && $pcre_ok && $allow_url_fopen_ok && $filter_ok && $gettext_ok && $parse_ini_ok) { ?>
403 <h3>Bottom Line: Yes, you can!</h3>
404 <p><em>For most feeds, it'll run with no problems.</em> There are certain languages that you might have a hard time with though.</p>
405 <?php if (!$frominstall) { ?>
406 <p>You can download the latest version of <?php echo $app_name; ?> from <a href="http://wallabag.org/download">wallabag.org</a>.</p>
407 <p>If you already have done that, you should access <a href="index.php">the index.php file</a> of your installation to configure and/or start using wallabag</p>
408 <?php } else { ?>
409 <p>You can now <a href="../index.php">return to the installation section</a>.</p>
410 <?php } ?>
411 <p><strong>Note</strong>: Passing this test does not guarantee that <?php echo $app_name; ?> will run on your webhost &mdash; it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.</p>
412 <?php } else { ?>
413 <h3>Bottom Line: We're sorry…</h3>
414 <p><em>Your webhost does not support the minimum requirements for <?php echo $app_name; ?>.</em> 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.</p>
415 <?php } ?>
416 </div>
417
418 <div class="chunk">
419 <p class="footnote">This compatibility test has been borrowed (and slightly adapted by <a href="http://fivefilters.org/content-only/">fivefilters.org</a>) from the one supplied by <a href="http://simplepie.org/">SimplePie.org</a>.</a></p>
420 </div>
421
422 </div>
423
424</div>
425
426</body>
427</html>
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
--- a/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo
+++ b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo
Binary files 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 @@
1msgid "" 1msgid ""
2msgstr "" 2msgstr ""
3"Project-Id-Version: Wallabag\n" 3"Project-Id-Version: wallabag\n"
4"Report-Msgid-Bugs-To: \n" 4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-03-27 13:41+0100\n" 5"POT-Creation-Date: 2014-02-25 15:17+0300\n"
6"PO-Revision-Date: \n" 6"PO-Revision-Date: \n"
7"Last-Translator: Kevin Meyer <wallabag@kevin-meyer.de>\n" 7"Last-Translator: Julian Oster <wallabag@jlnostr.de>\n"
8"Language-Team: \n" 8"Language-Team: \n"
9"Language: de\n" 9"Language: de_DE\n"
10"MIME-Version: 1.0\n" 10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n" 11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n" 12"Content-Transfer-Encoding: 8bit\n"
13"X-Generator: Poedit 1.6.4\n" 13"X-Generator: Poedit 1.7.3\n"
14"X-Poedit-Basepath: .\n" 14"X-Poedit-Basepath: .\n"
15"X-Poedit-SearchPath-0: /Users/kevinmeyer/Dropbox/dev_web/wallabag-dev\n" 15
16msgid "wallabag, a read it later open source system"
17msgstr "wallabag, ein \"Read-it-later\"-Open-Source-System"
18
19msgid "login failed: user doesn't exist"
20msgstr "Anmeldung fehlgeschlagen: Benutzer existiert nicht"
21
22msgid "return home"
23msgstr "Auf Startseite zurückkehren"
16 24
17msgid "config" 25msgid "config"
18msgstr "Konfiguration" 26msgstr "Konfiguration"
@@ -21,13 +29,19 @@ msgid "Saving articles"
21msgstr "Artikel speichern" 29msgstr "Artikel speichern"
22 30
23msgid "There are several ways to save an article:" 31msgid "There are several ways to save an article:"
24msgstr "Es gibt viele Methoden um Artikel zu speichern:" 32msgstr "Es gibt mehrere Wege, um einen Artikel zu speichern:"
25 33
26msgid "read the documentation" 34msgid "read the documentation"
27msgstr "Die Dokumentation lesen" 35msgstr "Dokumentation lesen"
28 36
29msgid "download the extension" 37msgid "download the extension"
30msgstr "installiere die Erweiterung" 38msgstr "Erweiterung herunterladen"
39
40msgid "Firefox Add-On"
41msgstr "Firefox-Addon"
42
43msgid "Chrome Extension"
44msgstr "Chrome-Erweiterung"
31 45
32msgid "via F-Droid" 46msgid "via F-Droid"
33msgstr "via F-Droid" 47msgstr "via F-Droid"
@@ -39,16 +53,16 @@ msgid "via Google Play"
39msgstr "via Google Play" 53msgstr "via Google Play"
40 54
41msgid "download the application" 55msgid "download the application"
42msgstr "lade die App" 56msgstr "App herunterladen"
43 57
44msgid "By filling this field" 58msgid "By filling this field"
45msgstr "Durch Ausfüllen dieses Feldes" 59msgstr "Durch das Ausfüllen dieses Feldes"
46 60
47msgid "bag it!" 61msgid "bag it!"
48msgstr "bag it!" 62msgstr "bag it!"
49 63
50msgid "Bookmarklet: drag & drop this link to your bookmarks bar" 64msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
51msgstr "Bookmarklet: Ziehe diesen Link in deine Lesezeichen-Leiste" 65msgstr "Bookmarklet: Ziehe diesen Link in deine Lesezeichen"
52 66
53msgid "Upgrading wallabag" 67msgid "Upgrading wallabag"
54msgstr "wallabag aktualisieren" 68msgstr "wallabag aktualisieren"
@@ -57,58 +71,46 @@ msgid "Installed version"
57msgstr "Installierte Version" 71msgstr "Installierte Version"
58 72
59msgid "Latest stable version" 73msgid "Latest stable version"
60msgstr "Neuste stabile Version" 74msgstr "Letzte stabile Version"
61 75
62msgid "A more recent stable version is available." 76msgid "A more recent stable version is available."
63msgstr "Eine neuere stabile Version ist verfügbar." 77msgstr "Eine neuere Version ist verfügbar."
64 78
65msgid "You are up to date." 79msgid "You are up to date."
66msgstr "Du bist auf den neuesten Stand." 80msgstr "Du bist auf dem aktuellsten Stand."
67
68msgid "Last check:"
69msgstr "Zuletzt geprüft:"
70 81
71msgid "Latest dev version" 82msgid "Latest dev version"
72msgstr "Neuste Entwicklungsversion" 83msgstr "Letzte Entwickler-Version"
73 84
74msgid "A more recent development version is available." 85msgid "A more recent development version is available."
75msgstr "Eine neuere Entwicklungsversion ist verfügbar." 86msgstr "Eine neuere Entwickler-Version ist verfügbar."
76 87
77msgid "You can clear cache to check the latest release." 88msgid "You can clear cache to check the latest release."
78msgstr "Leere den Cache um die neueste Version zu prüfen." 89msgstr "Du kannst den <a href=\"#cache\">Cache leeren</a>, um nach neueren Versionen zu suchen."
79 90
80msgid "Feeds" 91msgid "Feeds"
81msgstr "Feeds" 92msgstr "Feeds"
82 93
83msgid "" 94msgid "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
84"Your feed token is currently empty and must first be generated to enable " 95msgstr "Dein Feed-Token ist momentan leer und muss generiert werden, um die Feeds zu aktivieren. Klicke <a href='?feed&amp;action=generate'>hier, um ihn zu erstellen</a>."
85"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
86msgstr ""
87"Dein Feed Token ist noch nicht vorhanden und muss zunächst generiert werden, "
88"um deine Feeds zu aktivieren. Klicke <a href='?feed&amp;"
89"action=generate'>hier um ihn zu generieren</a>."
90 96
91msgid "Unread feed" 97msgid "Unread feed"
92msgstr "Ungelesen Feed" 98msgstr "Feed für Ungelesenes"
93 99
94msgid "Favorites feed" 100msgid "Favorites feed"
95msgstr "Favoriten Feed" 101msgstr "Feed für Favoriten"
96 102
97msgid "Archive feed" 103msgid "Archive feed"
98msgstr "Archiv Feed" 104msgstr "Archiv-Feed"
99 105
100msgid "Your token:" 106msgid "Your token:"
101msgstr "Dein Token:" 107msgstr "Dein Token:"
102 108
103msgid "Your user id:" 109msgid "Your user id:"
104msgstr "Deine User ID:" 110msgstr "Deine Benutzer-ID:"
105 111
106msgid "" 112msgid "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>."
107"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!" 113msgstr "Du kannst deinen Token regenerieren: <a href='?feed&amp;action=generate'>generieren!</a>."
108"</a>."
109msgstr ""
110"Hier kannst du dein Token erzeugen: <a href='?feed&amp;"
111"action=generate'>Generieren!</a>."
112 114
113msgid "Change your theme" 115msgid "Change your theme"
114msgstr "Theme ändern" 116msgstr "Theme ändern"
@@ -138,76 +140,58 @@ msgid "Repeat your new password:"
138msgstr "Neues Passwort wiederholen:" 140msgstr "Neues Passwort wiederholen:"
139 141
140msgid "Import" 142msgid "Import"
141msgstr "Import" 143msgstr "Importieren"
142 144
143msgid "" 145msgid "You can import your Pocket, Readability, Instapaper, Wallabag or any data in appropriate json or html format."
144"Importing from other services can be quite long, and webservers default " 146msgstr "Du kannst aus Pocket, Readability, Instapaper, wallabag oder einer beliebigen Datei in angebrachtem JSON- oder HTML-Format importieren."
145"configuration often prevents long scripts execution time, so it must be done " 147
146"in multiple parts." 148msgid "Please execute the import script locally as it can take a very long time."
147msgstr "" 149msgstr "Führe das Import-Skript lokal aus, da der Import sehr lange dauern kann."
148"Der Import von anderen Diensten kann sehr lange dauern. Deswegen bricht der "
149"Webserver diesen in vielen Konfigurationen ab. Daher muss der Import in "
150"mehrere Teile aufgeteilt werden."
151 150
152msgid "First, select the export file on your computer and upload it." 151msgid "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."
153msgstr "Wähle eine Datei von deinem Computer aus und lade sie hoch." 152msgstr ""
153"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 "
154"herunterladen, sofern dies erforderlich ist."
154 155
155msgid "File:" 156msgid "You can click here to fetch content for articles with no content."
156msgstr "Datei:" 157msgstr "Du kannst hier klicken, um den Inhalt für Artikel ohne Inhalt herunterzuladen."
157 158
158msgid "Upload" 159msgid "More info in the official documentation:"
159msgstr "Hochladen" 160msgstr "Mehr Infos in der offiziellen Dokumentation:"
160 161
161msgid "Then, click on the right link below." 162msgid "(<a href=\"http://doc.wallabag.org/en/User_documentation/Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)"
162msgstr "Klicke dann unten auf den entsprechenden Link." 163msgstr "(<a href=\"http://doc.wallabag.org/de/Anwender/Den_ersten_Artikel_speichern\" target=\"_blank\" title=\"Dokumentation\">?</a>)"
163 164
164msgid "Import from Pocket" 165msgid "Import from Pocket"
165msgstr "Import aus Pocket" 166msgstr "Aus Pocket importieren"
166 167
167#, php-format 168#, php-format
168msgid "(after uploaded %s file)" 169msgid "(you must have a %s file on your server)"
169msgstr "(nach Upload der Datei %s)" 170msgstr "(du solltest eine %s Datei auf deinem Server haben)"
170 171
171msgid "Import from Readability" 172msgid "Import from Readability"
172msgstr "Import aus Readability" 173msgstr "Aus Readability importieren"
173 174
174msgid "Import from Instapaper" 175msgid "Import from Instapaper"
175msgstr "Import aus Instapaper" 176msgstr "Aus Instapaper importieren"
176 177
177msgid "Import from wallabag" 178msgid "Import from wallabag"
178msgstr "Import aus Readability" 179msgstr "Aus wallabag importieren"
179 180
180msgid "" 181msgid "Export your wallabag data"
181"3. Your feed token is currently empty and must first be generated to fetch " 182msgstr "Deine wallabag-Daten exportieren"
182"content. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
183msgstr ""
184"3. Dein Feed Token ist noch nicht vorhanden und muss zunächst generiert "
185"werden, um Inhalt abrufen zu können. Klicke <a href='?feed&amp;"
186"action=generate'>hier um ihn zu generieren</a>."
187
188msgid "Finally, you have to fetch content for imported items."
189msgstr "Jetzt musst du den Inhalt der importierten Artikel abrufen."
190 183
191msgid "Click here" 184msgid "Click here"
192msgstr "Klicke hier" 185msgstr "Hier klicken, "
193
194msgid "to fetch content for 10 articles"
195msgstr "um den Inhalt von 10 Artikeln abzurufen"
196
197msgid ""
198"If you have console access to your server, you can also create a cron task:"
199msgstr ""
200"Wenn du Konsolenzugang zu deinem Server hast kannst du auch einen cron "
201"erstellen:"
202
203msgid "Export your wallabag data"
204msgstr "Exportieren deine wallabag Daten"
205 186
206msgid "to download your database." 187msgid "to download your database."
207msgstr "um deine Datenbank herunterzuladen" 188msgstr "um die Datenbank herunterzuladen."
208 189
209msgid "to export your wallabag data." 190msgid "to export your wallabag data."
210msgstr "um deine Daten aus wallabag zu exportieren." 191msgstr "um die wallabag-Daten zu exportieren."
192
193msgid "Export JSON"
194msgstr "JSON exportieren"
211 195
212msgid "Cache" 196msgid "Cache"
213msgstr "Cache" 197msgstr "Cache"
@@ -215,444 +199,437 @@ msgstr "Cache"
215msgid "to delete cache." 199msgid "to delete cache."
216msgstr "um den Cache zu löschen." 200msgstr "um den Cache zu löschen."
217 201
218msgid "Tags" 202msgid "Delete Cache"
219msgstr "Tags" 203msgstr "Cache löschen, "
204
205msgid "You can enter multiple tags, separated by commas."
206msgstr "Du kannst mehrere Schlagworte, getrennt von einem Komma, hinzufügen."
207
208msgid "Add tags:"
209msgstr "Schlagworte hinzufügen:"
210
211msgid "no tags"
212msgstr "keine schlagworte"
213
214msgid "The tag has been applied successfully"
215msgstr "Das Schlagwort wurde erfolgreich übernommen."
216
217msgid "interview"
218msgstr "interview"
219
220msgid "editorial"
221msgstr "editorial"
222
223msgid "video"
224msgstr "video"
225
226msgid "return to article"
227msgstr "zum artikel zurückkehren"
228
229msgid "plop"
230msgstr "plop"
231
232msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>."
233msgstr "Du kannst deine <a href='wallabag_compatibility_test.php'>Konfiguration hier überprüfen</a>."
234
235msgid "favoris"
236msgstr "Favoriten"
237
238msgid "archive"
239msgstr "archiv"
240
241msgid "unread"
242msgstr "ungelesen"
220 243
221msgid "by date asc" 244msgid "by date asc"
222msgstr "nach Datum aufsteigend" 245msgstr "nach Datum, aufsteigend"
223 246
224msgid "by date" 247msgid "by date"
225msgstr "nach Datum" 248msgstr "nach Datum"
226 249
227msgid "by date desc" 250msgid "by date desc"
228msgstr "nach Datum absteigend" 251msgstr "nach Datum, absteigend"
229 252
230msgid "by title asc" 253msgid "by title asc"
231msgstr "nach Titel aufsteigend" 254msgstr "nach Titel, aufsteigend"
232 255
233msgid "by title" 256msgid "by title"
234msgstr "nach Titel" 257msgstr "nach Titel"
235 258
236msgid "by title desc" 259msgid "by title desc"
237msgstr "nach Titel absteigend" 260msgstr "nach Titel, absteigend"
238
239#, fuzzy
240msgid "toggle view mode"
241msgstr "Favorit"
242 261
243msgid "home" 262msgid "Tag"
244msgstr "Start" 263msgstr "Schlagwort"
245 264
246msgid "favorites" 265msgid "No articles found."
247msgstr "Favoriten" 266msgstr "Keine Artikel gefunden."
248 267
249msgid "archive" 268msgid "Toggle mark as read"
250msgstr "Archiv" 269msgstr "Als gelesen/ungelesen markieren"
251 270
252msgid "tags" 271msgid "toggle favorite"
253msgstr "Tags" 272msgstr "favorisieren"
254 273
255msgid "save a link" 274msgid "delete"
256msgstr "Speichere einen Link" 275msgstr "löschen"
257 276
258msgid "search" 277msgid "original"
259msgstr "Suche" 278msgstr "original"
260 279
261msgid "logout" 280msgid "estimated reading time:"
262msgstr "Logout" 281msgstr "Geschätzte Lesezeit:"
263 282
264msgid "return home" 283msgid "mark all the entries as read"
265msgstr "Zu¼ck zum Start" 284msgstr "Alle Eint¤ge als gelesen markieren"
266 285
267#, fuzzy 286msgid "results"
268msgid "Search" 287msgstr "Ergebnisse"
269msgstr "Archiv"
270 288
271msgid "powered by" 289msgid "installation"
272msgstr "bereitgestellt von" 290msgstr "installation"
273 291
274msgid "debug mode is on so cache is off." 292msgid "install your wallabag"
275msgstr "Debug Modus ist aktiviert, das Caching ist somit deaktiviert" 293msgstr "deine wallabag installieren"
276 294
277msgid "your wallabag version:" 295msgid "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation on wallabag website</a>."
278msgstr "Deine wallabag Version" 296msgstr ""
297"wallabag ist noch nicht installiert. Fülle das untenstehende Formular aus, um wallabag zu installieren. Scheue dich nicht davor, die <a href='http://doc.wallabag.org/de'>Dokumentation "
298"auf der wallabag-Webseite</a> zur Hilfe zu ziehen."
279 299
280msgid "storage:" 300msgid "Login"
281msgstr "Speicher:" 301msgstr "Anmelden"
282 302
283msgid "Save a link" 303msgid "Repeat your password"
284msgstr "Speichere einen Link" 304msgstr "Passwort wiederholen"
285 305
286msgid "save link!" 306msgid "Install"
287msgstr "Link speichern!" 307msgstr "Installieren"
288 308
289msgid "unread" 309msgid "login to your wallabag"
290msgstr "ungelesen" 310msgstr "Melde dich in deiner wallabag an"
291 311
292msgid "Tag" 312msgid "Login to wallabag"
293msgstr "Tag" 313msgstr "In wallabag anmelden"
294 314
295msgid "No articles found." 315msgid "you are in demo mode, some features may be disabled."
296msgstr "Keine Artikel gefunden." 316msgstr "Du bist im Demo-Modus, einige Features sind möglicherweise deaktiviert."
297 317
298msgid "estimated reading time:" 318msgid "Username"
299msgstr "geschätzte Lesezeit:" 319msgstr "Benutzername"
300 320
301msgid "estimated reading time :" 321msgid "Stay signed in"
302msgstr "geschätzte Lesezeit:" 322msgstr "Angemeldet bleiben"
303 323
304msgid "Toggle mark as read" 324msgid "(Do not check on public computers)"
305msgstr "Als gelesen markieren" 325msgstr "(nicht auf öffentlichen Computern ankreuzen)"
306 326
307msgid "toggle favorite" 327msgid "Sign in"
308msgstr "Favorit" 328msgstr "Anmelden"
309 329
310msgid "delete" 330msgid "favorites"
311msgstr "Löschen" 331msgstr "favoriten"
312 332
313msgid "original" 333msgid "estimated reading time :"
314msgstr "Original" 334msgstr "Geschätzte Lesezeit:"
315 335
316msgid "Mark all the entries as read" 336msgid "Mark all the entries as read"
317msgstr "Markiere alle als gelesen" 337msgstr "Alle Einträge als gelesen markieren"
318 338
319msgid "results" 339msgid "Return home"
320msgstr "Ergebnisse" 340msgstr "Zur Startseite zurückkehren"
321 341
322msgid "Uh, there is a problem with the cron." 342msgid "Back to top"
323msgstr "Oh, es gab ein Problem mit dem cron." 343msgstr "Nach oben scrollen"
324 344
325msgid "Untitled" 345msgid "Mark as read"
326msgstr "Ohne Titel" 346msgstr "Als gelesen markieren"
327
328msgid "the link has been added successfully"
329msgstr "Speichern des Links erfolgreich"
330
331msgid "error during insertion : the link wasn't added"
332msgstr "Fehler beim Einfügen: Der Link wurde nicht hinzugefügt"
333
334msgid "the link has been deleted successfully"
335msgstr "Löschen des Links erfolgreich"
336
337msgid "the link wasn't deleted"
338msgstr "Der Link wurde nicht entfernt"
339 347
340msgid "Article not found!" 348msgid "Favorite"
341msgstr "Artikel nicht gefunden!" 349msgstr "Favorisieren"
342 350
343msgid "previous" 351msgid "Toggle favorite"
344msgstr "vorherige" 352msgstr "favorisieren"
345 353
346msgid "next" 354msgid "Delete"
347msgstr "nächste" 355msgstr "Löschen"
348 356
349msgid "in demo mode, you can't update your password" 357msgid "Tweet"
350msgstr "im Demo-Modus kann das Passwort nicht geändert werden" 358msgstr "Twittern"
351 359
352msgid "your password has been updated" 360msgid "Email"
353msgstr "Dein Passwort wurde geändert" 361msgstr "Email"
354 362
355msgid "" 363msgid "shaarli"
356"the two fields have to be filled & the password must be the same in the two " 364msgstr "shaarli"
357"fields"
358msgstr "Beide Felder müssen mit selbem Inhalt ausgefüllt sein"
359 365
360msgid "still using the \"" 366msgid "flattr"
361msgstr "nutze immernoch die \"" 367msgstr "flattr"
362 368
363msgid "that theme does not seem to be installed" 369msgid "Does this article appear wrong?"
364msgstr "dieses Theme scheint nicht installiert zu sein" 370msgstr "Erscheint dieser Artikel nicht richtig?"
365 371
366msgid "you have changed your theme preferences" 372msgid "tags:"
367msgstr "Du hast deine Theme Einstellungen geändert" 373msgstr "schlagworte:"
368 374
369msgid "that language does not seem to be installed" 375msgid "Edit tags"
370msgstr "Diese Sprache scheint nicht installiert zu sein" 376msgstr "Schlagworte bearbeiten"
371 377
372msgid "you have changed your language preferences" 378msgid "save link!"
373msgstr "Du hast deine Spracheinstellungen geändert" 379msgstr "link speichern!"
374 380
375msgid "login failed: you have to fill all fields" 381msgid "home"
376msgstr "Anmeldung fehlgeschlagen: Alle Felder müssen ausgefüllt werden" 382msgstr "start"
377 383
378msgid "welcome to your wallabag" 384msgid "tags"
379msgstr "Willkommen bei deiner wallabag" 385msgstr "schlagworte"
380 386
381msgid "login failed: bad login or password" 387msgid "logout"
382msgstr "Anmeldung fehlgeschlagen: Falscher Benutzername oder Passwort" 388msgstr "abmelden"
383 389
384msgid "" 390msgid "powered by"
385"import from instapaper completed. You have to execute the cron to fetch " 391msgstr "Angetrieben von"
386"content."
387msgstr ""
388"Import aus Instapaper vollständig. Führe den cronjob aus um den Inhalt "
389"abzurufen."
390 392
391msgid "" 393msgid "debug mode is on so cache is off."
392"import from pocket completed. You have to execute the cron to fetch content." 394msgstr "Der Debug-Modus ist aktiviert, also ist der Cache deaktiviert."
393msgstr ""
394"Import aus Pocket vollständig. Führe den cronjob aus um den Inhalt abzurufen."
395 395
396msgid "" 396msgid "your wallabag version:"
397"import from Readability completed. You have to execute the cron to fetch " 397msgstr "Deine wallabag-Version:"
398"content."
399msgstr ""
400"Import aus Readability vollständig. Führe den cronjob aus um den Inhalt "
401"abzurufen."
402 398
403msgid "" 399msgid "storage:"
404"import from Poche completed. You have to execute the cron to fetch content." 400msgstr "speicher:"
405msgstr ""
406"Import aus Poche vollständig. Führe den cronjob aus um den Inhalt abzurufen."
407 401
408msgid "Unknown import provider." 402msgid "save a link"
409msgstr "Unbekannter Import Anbieter." 403msgstr "einen link speichern"
410 404
411msgid "Could not find required \"" 405msgid "back to home"
412msgstr "Nicht gefunden: \"" 406msgstr "zurück zur startseite"
413 407
414msgid "File uploaded. You can now execute import." 408msgid "toggle mark as read"
415msgstr "Datei hochgeladen. Du kannst nun importieren." 409msgstr "als gelesen/ungelesen markieren"
416 410
417msgid "Error while importing file. Do you have access to upload it?" 411msgid "tweet"
418msgstr "Fehler beim Importieren. Hast du das Recht zum Hochladen?" 412msgstr "tweet"
419 413
420msgid "User with this id (" 414msgid "email"
421msgstr "Nutzer mit dieser id (" 415msgstr "email"
422 416
423msgid "Uh, there is a problem while generating feeds." 417msgid "this article appears wrong?"
424msgstr "Oh, es gab ein Problem beim Erstellen des Feeds." 418msgstr "dieser artikel erscheint falsch?"
425 419
426msgid "Cache deleted." 420msgid "No link available here!"
427msgstr "Cache gelöscht" 421msgstr "Kein Link verfügbar!"
428 422
429msgid "Oops, it seems you don't have PHP 5." 423msgid "Poching a link"
430msgstr "Oops, es scheint als würde PHP 5 fehlen." 424msgstr "Link speichern"
431 425
432msgid "wallabag, a read it later open source system" 426msgid "by filling this field"
433msgstr "wallabag, ein Später-Lesen Open Source System" 427msgstr "mit dem Ausfüllen dieses Feldes"
434 428
435msgid "login failed: user doesn't exist" 429msgid "bookmarklet: drag & drop this link to your bookmarks bar"
436msgstr "Anmeldung fehlgeschlagen: Benutzer existiert nicht" 430msgstr "Bookmarklet: Drag & drop diesen Link in deine Lesezeichen"
437 431
438#~ msgid "You can enter multiple tags, separated by commas." 432msgid "Drag &amp; drop this link to your bookmarks bar:"
439#~ msgstr "Du kannst mehrere Tags, durch Kommata getrennt, eingeben." 433msgstr "Drag &amp; drop diesen Link in deine Lesezeichen:"
440 434
441#~ msgid "return to article" 435msgid "your version"
442#~ msgstr "zurück zum Artikel" 436msgstr "deine Version"
443 437
444#, fuzzy 438msgid "latest stable version"
445#~ msgid "favoris" 439msgstr "letzte stabile Version"
446#~ msgstr "Favoriten"
447 440
448#~ msgid "mark all the entries as read" 441msgid "a more recent stable version is available."
449#~ msgstr "Markiere alle als gelesen" 442msgstr "Eine aktuellere Version ist verfügbar."
450 443
451#~ msgid "Back to top" 444msgid "you are up to date."
452#~ msgstr "Nach Oben" 445msgstr "Du bist auf dem aktuellsten Stand."
453 446
454#~ msgid "Mark as read" 447msgid "latest dev version"
455#~ msgstr "Als gelesen markieren" 448msgstr "Letzte Entwickler-Version"
456 449
457#~ msgid "Favorite" 450msgid "a more recent development version is available."
458#~ msgstr "Favoriten" 451msgstr "Eine neuere Entwickler-Version ist verfügbar."
459 452
460#~ msgid "Toggle favorite" 453msgid "Please execute the import script locally, it can take a very long time."
461#~ msgstr "Favorit" 454msgstr "Führe das Import-Skript lokal aus, da der Import sehr lange dauern kann."
462 455
463#~ msgid "Delete" 456msgid "More infos in the official doc:"
464#~ msgstr "Löschen" 457msgstr "Mehr Informationen in der offiziellen Dokumentation:"
465 458
466#~ msgid "Tweet" 459msgid "import from Pocket"
467#~ msgstr "Twittern" 460msgstr "Aus Pocket importieren"
468 461
469#~ msgid "Email" 462msgid "import from Readability"
470#~ msgstr "per E-Mail senden" 463msgstr "Aus Readability importieren"
471 464
472#~ msgid "shaarli" 465msgid "import from Instapaper"
473#~ msgstr "Shaarli" 466msgstr "Aus Instapaper importieren"
474 467
475#~ msgid "flattr" 468msgid "Tags"
476#~ msgstr "flattr" 469msgstr "Schlagworte"
477 470
478#~ msgid "Does this article appear wrong?" 471msgid "Untitled"
479#~ msgstr "Erscheint dieser Artikel falsch?" 472msgstr "Untitled"
480 473
481#~ msgid "Edit tags" 474msgid "the link has been added successfully"
482#~ msgstr "Tags bearbeiten" 475msgstr "Der Link wurde erfolgreich hinzugefügt"
483 476
484#~ msgid "Start typing for auto complete." 477msgid "error during insertion : the link wasn't added"
485#~ msgstr "Beginne zu tippen für die Autovervollständigung." 478msgstr "Fehler während des Imports: Der Link wurde nicht hinzugefügt."
486 479
487#~ msgid "Return home" 480msgid "the link has been deleted successfully"
488#~ msgstr "Zurück zum Start" 481msgstr "Der Link wurde erfolgreich gelöscht"
489 482
490#~ msgid "tags:" 483msgid "the link wasn't deleted"
491#~ msgstr "Tags:" 484msgstr "Der Link wurde nicht gelöscht."
492 485
493#~ msgid "login to your wallabag" 486msgid "Article not found!"
494#~ msgstr "Bei wallabag anmelden" 487msgstr "Artikel nicht gefunden!"
495 488
496#~ msgid "you are in demo mode, some features may be disabled." 489msgid "previous"
497#~ msgstr "" 490msgstr "vorherige"
498#~ "Du befindest dich im Demomodus, einige Funktionen könnten deaktiviert "
499#~ "sein."
500 491
501#~ msgid "Login" 492msgid "next"
502#~ msgstr "Benutzername" 493msgstr "nächste"
503 494
504#~ msgid "Stay signed in" 495msgid "in demo mode, you can't update your password"
505#~ msgstr "Angemeldet bleiben" 496msgstr "Im Demo-Modus kannst du as Kennwort nicht aktualisieren."
506 497
507#~ msgid "(Do not check on public computers)" 498msgid "your password has been updated"
508#~ msgstr "(nicht auf einem öffentlichen Computer anhaken)" 499msgstr "Dein Passwort wurde aktualisiert"
509 500
510#~ msgid "plop" 501msgid "the two fields have to be filled & the password must be the same in the two fields"
511#~ msgstr "plop" 502msgstr "Beide Felder müssen ausgefüllt sein und das gleiche Passwort beinhalten"
512 503
513#~ msgid "Login to wallabag" 504msgid "still using the \""
514#~ msgstr "Bei wallabag anmelden" 505msgstr "nutze immernoch die \""
515 506
516#~ msgid "Username" 507msgid "that theme does not seem to be installed"
517#~ msgstr "Benutzername" 508msgstr "Dieses Theme scheint nicht installiert zu sein."
518 509
519#~ msgid "Sign in" 510msgid "you have changed your theme preferences"
520#~ msgstr "Einloggen" 511msgstr "Du hast deine Theme-Einstellungen geändert"
521 512
522#~ msgid "Enter your search here" 513msgid "that language does not seem to be installed"
523#~ msgstr "Gib hier deine Suchanfrage ein" 514msgstr "Diese Sprache scheint nicht installiert zu sein"
524 515
525#~ msgid "installation" 516msgid "you have changed your language preferences"
526#~ msgstr "Installieren" 517msgstr "Du hast deine Spracheinstellungen geändert"
527 518
528#~ msgid "install your wallabag" 519msgid "login failed: you have to fill all fields"
529#~ msgstr "Installiere deine wallabag" 520msgstr "Anmeldung fehlgeschlagen: Du musst alle Felder ausfüllen"
530 521
531#~ msgid "" 522msgid "welcome to your wallabag"
532#~ "wallabag is still not installed. Please fill the below form to install " 523msgstr "Willkommen in deiner wallabag"
533#~ "it. Don't hesitate to <a href='http://doc.wallabag.org/'>read the "
534#~ "documentation on wallabag website</a>."
535#~ msgstr ""
536#~ "wallabag ist noch nicht installiert. Bitte fülle die Felder unten aus, um "
537#~ "die Installation durchzuführen. Zögere nicht, <a href='http://doc."
538#~ "wallabag.org/'>die Dokumentation auf der Website von wallabag zu lesen, "
539#~ "falls du Probleme haben solltest."
540 524
541#~ msgid "Repeat your password" 525msgid "login failed: bad login or password"
542#~ msgstr "Wiederhole dein Passwort" 526msgstr "Anmeldung fehlgeschlagen: Falscher Benutzername oder falsches Passwort"
543 527
544#~ msgid "Install" 528msgid "import from instapaper completed"
545#~ msgstr "Installieren" 529msgstr "Import aus Instapaper abgeschlossen"
546 530
547#~ msgid "No link available here!" 531msgid "import from pocket completed"
548#~ msgstr "Kein Link verfügbar!" 532msgstr "Import aus Pocket abgeschlossen"
549 533
550#~ msgid "toggle mark as read" 534msgid "import from Readability completed. "
551#~ msgstr "Als gelesen markieren" 535msgstr "Import aus Readability abgeschlossen."
552 536
553#~ msgid "" 537msgid "import from Poche completed. "
554#~ "You can <a href='wallabag_compatibility_test.php'>check your " 538msgstr "Import aus wallabag abgeschlossen."
555#~ "configuration here</a>."
556#~ msgstr ""
557#~ "Du kannst deine Konfiguration <a href='wallabag_compatibility_test."
558#~ "php'>hier testen</a>."
559 539
560#~ msgid "back to home" 540msgid "Unknown import provider."
561#~ msgstr "züruck zur Hauptseite" 541msgstr "Unbekannter Import-Provider."
562 542
563#~ msgid "tweet" 543msgid "Incomplete inc/poche/define.inc.php file, please define \""
564#~ msgstr "Twittern" 544msgstr "Die Datei /inc/poche/define.inc.php ist unvollständig, bitte definiere \""
565 545
566#~ msgid "email" 546msgid "Could not find required \""
567#~ msgstr "senden per E-Mail" 547msgstr "Nicht gefunden: \""
568 548
569#~ msgid "this article appears wrong?" 549msgid "Uh, there is a problem while generating feeds."
570#~ msgstr "dieser Artikel erscheint falsch?" 550msgstr "Oh, es gibt ein Problem bei dem Generieren der Feeds."
571 551
572#~ msgid "Poching a link" 552msgid "Cache deleted."
573#~ msgstr "Poche einen Link" 553msgstr "Cache geleert."
574 554
575#~ msgid "by filling this field" 555msgid "Oops, it seems you don't have PHP 5."
576#~ msgstr "durch das ausfüllen dieses Feldes:" 556msgstr "Ups, es sieht so aus, als ob du nicht PHP 5 hast."
577 557
578#~ msgid "bookmarklet: drag & drop this link to your bookmarks bar" 558msgid "Add user"
579#~ msgstr "Bookmarklet: Ziehe diesen Link in deine Lesezeichen-Leiste" 559msgstr "Benutzer hinzufügen"
580 560
581#~ msgid "your version" 561msgid "Add a new user :"
582#~ msgstr "Deine Version" 562msgstr "Neuen Benutzer hinzufügen:"
583 563
584#~ msgid "latest stable version" 564msgid "Login for new user"
585#~ msgstr "Neuste stabile Version" 565msgstr "Benutzername des neuen Benutzers"
586 566
587#~ msgid "a more recent stable version is available." 567msgid "Password for new user"
588#~ msgstr "Eine neuere stabile Version ist verfügbar." 568msgstr "Passwort des neuen Benutzers"
589 569
590#~ msgid "you are up to date." 570msgid "Email for new user (not required)"
591#~ msgstr "Du bist auf den neuesten Stand." 571msgstr "E-Mail-Adresse des neuen Benutzers (nicht erforderlich)"
592 572
593#~ msgid "latest dev version" 573msgid "Send"
594#~ msgstr "Neuste Entwicklungsversion" 574msgstr "Senden"
595 575
596#~ msgid "a more recent development version is available." 576msgid "Delete account"
597#~ msgstr "Eine neuere Entwicklungsversion ist verfügbar." 577msgstr "Account löschen"
598 578
599#~ msgid "" 579msgid "You can delete your account by entering your password and validating."
600#~ "Please execute the import script locally, it can take a very long time." 580msgstr "Du kannst deinen Account löschen, indem du dein Kennwort eintippst und validierst."
601#~ msgstr ""
602#~ "Bitte führe das Import Script lokal aus, dies kann eine Weile dauern."
603 581
604#~ msgid "More infos in the official doc:" 582msgid "Be careful, data will be erased forever (that is a very long time)."
605#~ msgstr "Mehr Informationen in der offiziellen Dokumentation:" 583msgstr "Pass auf, die Daten werden für immer gelöscht werden (eine sehr lange Zeit)."
606 584
607#~ msgid "import from Pocket" 585msgid "Type here your password"
608#~ msgstr "Import aus Pocket" 586msgstr "Kennwort hier eintippen"
609 587
610#~ msgid "(you must have a %s file on your server)" 588msgid "You are the only user, you cannot delete your own account."
611#~ msgstr "(du brauchst eine %s Datei auf deinem Server)" 589msgstr "Du kannst deinen Account nicht löschen, weil du der einzige Benutzer bist."
612 590
613#~ msgid "import from Readability" 591msgid "To completely remove wallabag, delete the wallabag folder on your web server (and eventual databases)."
614#~ msgstr "Import aus Readability" 592msgstr "Um wallabag komplett zu entfernen, lösche den wallabag-Ordner und die Datenbank(en) von deinem Webserver."
615 593
616#~ msgid "import from Instapaper" 594msgid "Enter your search here"
617#~ msgstr "Import aus Instapaper" 595msgstr "Suchbegriff hier eintippen"
618 596
619#~ msgid "You can also create a cron task:" 597msgid "Tag these results as"
620#~ msgstr "Du kannst auch einen cronjob anlegen:" 598msgstr "Diese Ergebnisse verschlagworten mit"
621 599
622#~ msgid "" 600# ebook
623#~ "Please execute the import script locally as it can take a very long time." 601msgid "Fancy an E-Book ?"
624#~ msgstr "" 602msgstr "Willst du ein E-Book?"
625#~ "Bitte führe das Import Script lokal aus, da dies eine Weile dauern kann."
626 603
627#~ msgid "More info in the official documentation:" 604msgid "Click on <a href=\"./?epub&amp;method=all\" title=\"Generate ePub\">this link</a> to get all your articles in one ebook (ePub 3 format)."
628#~ msgstr "Mehr Informationen in der offiziellen Dokumentation:" 605msgstr "Klicke auf <a href=\"./?epub&amp;method=all\" title=\"EPUB erstellen\">diesen Link</a>, um alle Artikel in ein E-Book (EPUB 3-Format) zu exportieren."
629 606
630#~ msgid "import from instapaper completed" 607msgid "This can <b>take a while</b> and can <b>even fail</b> if you have too many articles, depending on your server configuration."
631#~ msgstr "Import aus Instapaper erfolgreich" 608msgstr "Dies kann <b>eine Weile dauern</b> oder <b>sogar fehlschlagen</b>, wenn du zu viele Artikel hast, abhängig von deiner Server-Konfiguration."
632 609
633#~ msgid "import from pocket completed" 610msgid "Download the articles from this tag in an epub"
634#~ msgstr "Import aus Pocket erfolgreich" 611msgstr "Die Artikel von diesem Schlagwort als EPUB herunterladen"
635 612
636#~ msgid "import from Poche completed. " 613msgid "Download the articles from this search in an epub"
637#~ msgstr "Import aus Poche erfolgreich" 614msgstr "Alle Artikel aus dieser Suche als EPUB herunterladen"
638 615
639#~ msgid "Incomplete inc/poche/define.inc.php file, please define \"" 616msgid "Download the articles from this category in an epub"
640#~ msgstr "Unvollständige inc/poche/define.inc.php Datei, bitte setze \"" 617msgstr "Alle Artikel aus dieser Kategorie als EPUB herunterladen"
641 618
642#~ msgid "poche it!" 619#~ msgid "poche it!"
643#~ msgstr "Poche es!" 620#~ msgstr "poche it!"
644 621
645#~ msgid "Updating poche" 622#~ msgid "Updating poche"
646#~ msgstr "Poche aktualisieren" 623#~ msgstr "Updating poche"
647 624
648#~ msgid "create an issue" 625#~ msgid "create an issue"
649#~ msgstr "ein Ticket erstellen" 626#~ msgstr "create an issue"
650 627
651#~ msgid "or" 628#~ msgid "or"
652#~ msgstr "oder" 629#~ msgstr "or"
653 630
654#~ msgid "contact us by mail" 631#~ msgid "contact us by mail"
655#~ msgstr "kontaktieren Sie uns per E-Mail" 632#~ msgstr "contact us by mail"
656 633
657#~ msgid "your poche version:" 634#~ msgid "your poche version:"
658#~ msgstr "Deine Poche Version" 635#~ 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
--- /dev/null
+++ b/locale/en_GB.utf8/LC_MESSAGES/en_GB.utf8.mo
Binary files 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 @@
1msgid ""
2msgstr ""
3"Project-Id-Version: wallabag\n"
4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-02-25 15:17+0300\n"
6"PO-Revision-Date: \n"
7"Last-Translator: tcit <tcit@openmailbox.org>\n"
8"Language-Team: \n"
9"Language: en-GB\n"
10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n"
13"X-Generator: Poedit 1.5.4\n"
14"X-Poedit-Basepath: .\n"
15
16msgid "wallabag, a read it later open source system"
17msgstr "wallabag, an open source \"Read It Later\" service"
18
19msgid "login failed: user doesn't exist"
20msgstr "Login failed: user doesn't exist"
21
22msgid "return home"
23msgstr "Return Home"
24
25msgid "config"
26msgstr "Config"
27
28msgid "Saving articles"
29msgstr "Saving articles"
30
31msgid "There are several ways to save an article:"
32msgstr "There are several ways to save an article:"
33
34msgid "read the documentation"
35msgstr "Read the documentation"
36
37msgid "download the extension"
38msgstr "Download the extension"
39
40msgid "Firefox Add-On"
41msgstr "Firefox Add-On"
42
43msgid "Chrome Extension"
44msgstr "Chrome Extension"
45
46msgid "via F-Droid"
47msgstr "via F-Droid"
48
49msgid " or "
50msgstr " or "
51
52msgid "via Google Play"
53msgstr "via Google Play"
54
55msgid "download the application"
56msgstr "Download the application"
57
58msgid "By filling this field"
59msgstr "By filling in this field"
60
61msgid "bag it!"
62msgstr "bag it!"
63
64msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
65msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar"
66
67msgid "Upgrading wallabag"
68msgstr "Upgrading wallabag"
69
70msgid "Installed version"
71msgstr "Installed version"
72
73msgid "Latest stable version"
74msgstr "Latest stable version"
75
76msgid "A more recent stable version is available."
77msgstr "A more recent stable version is available."
78
79msgid "You are up to date."
80msgstr "You are up to date."
81
82msgid "Latest dev version"
83msgstr "Latest dev version"
84
85msgid "A more recent development version is available."
86msgstr "A more recent development version is available."
87
88msgid "Feeds"
89msgstr "Feeds"
90
91msgid ""
92"Your feed token is currently empty and must first be generated to enable "
93"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
94msgstr ""
95"Your feed token is currently empty. You must generated it to enable feeds. "
96"<a href='?feed&amp;action=generate'>Generate Feed Token</a>."
97
98msgid "Unread feed"
99msgstr "Unread feed"
100
101msgid "Favorites feed"
102msgstr "Favourites feed"
103
104msgid "Archive feed"
105msgstr "Archive feed"
106
107msgid "Your token:"
108msgstr "Your token:"
109
110msgid "Your user id:"
111msgstr "Your user ID:"
112
113msgid ""
114"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!"
115"</a>."
116msgstr "<a href='?feed&amp;action=generate'>Regenerate Token</a>"
117
118msgid "Change your theme"
119msgstr "Change Your Theme"
120
121msgid "Theme:"
122msgstr "Theme:"
123
124msgid "Update"
125msgstr "Update"
126
127msgid "Change your language"
128msgstr "Change Your Language"
129
130msgid "Language:"
131msgstr "Language:"
132
133msgid "Change your password"
134msgstr "Change Your Password"
135
136msgid "New password:"
137msgstr "New password:"
138
139msgid "Password"
140msgstr "Password"
141
142msgid "Repeat your new password:"
143msgstr "Repeat your new password:"
144
145msgid "Import"
146msgstr "Import"
147
148msgid ""
149"You can import your Pocket, Readability, Instapaper, Wallabag or any data in "
150"appropriate json or html format."
151msgstr ""
152"You can import your Pocket, Readability, Instapaper, wallabag or any other "
153"data in JSON or HTML format."
154
155msgid ""
156"Please execute the import script locally as it can take a very long time."
157msgstr "Please run the import script locally as it can take a very long time."
158
159msgid ""
160"Please select export file on your computer and press \"Import\" button "
161"below. Wallabag will parse your file, insert all URLs and start fetching of "
162"articles if required."
163msgstr ""
164"Please select export file on your computer and press the &ldquo;"
165"Import&rdquo; button below. wallabag will parse your file, insert all URLs "
166"and start fetching articles if required. Please execute the import script "
167"locally as it can take a very long time."
168
169msgid "You can click here to fetch content for articles with no content."
170msgstr "Fetch content for articles with no content"
171
172msgid "More info in the official documentation:"
173msgstr "More info in the official documentation:"
174
175msgid ""
176"(<a href=\"http://doc.wallabag.org/en/User_documentation/"
177"Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)"
178msgstr ""
179"(<a href=\"http://doc.wallabag.org/en/User_documentation/"
180"Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)"
181
182msgid "Import from Pocket"
183msgstr "Import from Pocket"
184
185#, php-format
186msgid "(you must have a %s file on your server)"
187msgstr "(you must have a %s file on your server)"
188
189msgid "Import from Readability"
190msgstr "Import from Readability"
191
192msgid "Import from Instapaper"
193msgstr "Import from Instapaper"
194
195msgid "Import from wallabag"
196msgstr "Import from wallabag"
197
198msgid "Export your wallabag data"
199msgstr "Export your wallabag data"
200
201msgid "Click here"
202msgstr "Click here"
203
204msgid "to download your database."
205msgstr "to download your database."
206
207msgid "to export your wallabag data."
208msgstr "to export your wallabag data."
209
210msgid "Export JSON"
211msgstr "Export JSON"
212
213msgid "Cache"
214msgstr "Cache"
215
216msgid "to delete cache."
217msgstr "to delete cache."
218
219msgid "Delete Cache"
220msgstr "Delete Cache"
221
222msgid "You can enter multiple tags, separated by commas."
223msgstr "You can enter multiple tags, separated by commas."
224
225msgid "Add tags:"
226msgstr "Add tags:"
227
228msgid "no tags"
229msgstr "no tags"
230
231msgid "The tag has been applied successfully"
232msgstr "The tag has been applied successfully"
233
234msgid "interview"
235msgstr "interview"
236
237msgid "editorial"
238msgstr "editorial"
239
240msgid "video"
241msgstr "video"
242
243msgid "return to article"
244msgstr "Return to article"
245
246msgid "plop"
247msgstr "plop"
248
249msgid ""
250"You can <a href='wallabag_compatibility_test.php'>check your configuration "
251"here</a>."
252msgstr ""
253"You can <a href='wallabag_compatibility_test.php'>check your configuration "
254"here</a>."
255
256msgid "favoris"
257msgstr "Favourites"
258
259msgid "archive"
260msgstr "Archive"
261
262msgid "unread"
263msgstr "Unread"
264
265msgid "by date asc"
266msgstr "by date ascending"
267
268msgid "by date"
269msgstr "by date"
270
271msgid "by date desc"
272msgstr "by date descending"
273
274msgid "by title asc"
275msgstr "by title ascending"
276
277msgid "by title"
278msgstr "by title"
279
280msgid "by title desc"
281msgstr "by title descending"
282
283msgid "Tag"
284msgstr "Tag"
285
286msgid "No articles found."
287msgstr "No articles found."
288
289msgid "Toggle mark as read"
290msgstr "Toggle mark as read"
291
292msgid "toggle favorite"
293msgstr "Toggle favourite"
294
295msgid "delete"
296msgstr "Delete"
297
298msgid "original"
299msgstr "Original"
300
301msgid "estimated reading time:"
302msgstr "Estimated reading time:"
303
304msgid "mark all the entries as read"
305msgstr "Mark all the entries as read"
306
307msgid "results"
308msgstr "Results"
309
310msgid "installation"
311msgstr "Installation"
312
313msgid "install your wallabag"
314msgstr "Install your wallabag"
315
316msgid ""
317"wallabag is still not installed. Please fill the below form to install it. "
318"Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation "
319"on wallabag website</a>."
320msgstr ""
321"wallabag is still not installed. Please fill in the form to install it. If "
322"you need help, please <a href='http://doc.wallabag.org/'>read the "
323"documentation on wallabag website</a>."
324
325msgid "Login"
326msgstr "Login"
327
328msgid "Repeat your password"
329msgstr "Repeat your password"
330
331msgid "Install"
332msgstr "Install"
333
334msgid "login to your wallabag"
335msgstr "Login to your wallabag"
336
337msgid "Login to wallabag"
338msgstr "Login to wallabag"
339
340msgid "you are in demo mode, some features may be disabled."
341msgstr "You are in demo mode; some features may be disabled."
342
343msgid "Username"
344msgstr "Username"
345
346msgid "Stay signed in"
347msgstr "Stay signed in"
348
349msgid "(Do not check on public computers)"
350msgstr "(Do not check on public computers)"
351
352msgid "Sign in"
353msgstr "Sign in"
354
355msgid "favorites"
356msgstr "Favourites"
357
358msgid "estimated reading time :"
359msgstr "Estimated reading time:"
360
361msgid "Mark all the entries as read"
362msgstr "Mark all the entries as read"
363
364msgid "Return home"
365msgstr "Return home"
366
367msgid "Back to top"
368msgstr "Back to top"
369
370msgid "Mark as read"
371msgstr "Mark as read"
372
373msgid "Favorite"
374msgstr "Favourite"
375
376msgid "Toggle favorite"
377msgstr "Toggle favourite"
378
379msgid "Delete"
380msgstr "Delete"
381
382msgid "Tweet"
383msgstr "Tweet"
384
385msgid "Email"
386msgstr "Email"
387
388msgid "shaarli"
389msgstr "shaarli"
390
391msgid "flattr"
392msgstr "flattr"
393
394msgid "Does this article appear wrong?"
395msgstr "Does this article display incorrectly?"
396
397msgid "tags:"
398msgstr "tags:"
399
400msgid "Edit tags"
401msgstr "Edit Tags"
402
403msgid "save link!"
404msgstr "Save Link"
405
406msgid "home"
407msgstr "Home"
408
409msgid "tags"
410msgstr "Tags"
411
412msgid "logout"
413msgstr "Logout"
414
415msgid "powered by"
416msgstr "Powered by"
417
418msgid "debug mode is on so cache is off."
419msgstr "Debug mode is on, so the cache is off."
420
421msgid "your wallabag version:"
422msgstr "Your wallabag version:"
423
424msgid "storage:"
425msgstr "Storage:"
426
427msgid "save a link"
428msgstr "Save a Link"
429
430msgid "back to home"
431msgstr "Back to Home"
432
433msgid "toggle mark as read"
434msgstr "Toggle mark as read"
435
436msgid "tweet"
437msgstr "Tweet"
438
439msgid "email"
440msgstr "Email"
441
442msgid "this article appears wrong?"
443msgstr "This article displays incorrectly?"
444
445msgid "No link available here!"
446msgstr "No link available here"
447
448msgid "Poching a link"
449msgstr "bagging a link"
450
451msgid "by filling this field"
452msgstr "by filling in this field"
453
454msgid "bookmarklet: drag & drop this link to your bookmarks bar"
455msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar"
456
457msgid "Drag &amp; drop this link to your bookmarks bar:"
458msgstr "Drag &amp; drop this link to your bookmarks bar:"
459
460msgid "your version"
461msgstr "your version"
462
463msgid "latest stable version"
464msgstr "latest stable version"
465
466msgid "a more recent stable version is available."
467msgstr "A more recent stable version is available."
468
469msgid "you are up to date."
470msgstr "You are up to date."
471
472msgid "latest dev version"
473msgstr "latest development version"
474
475msgid "a more recent development version is available."
476msgstr "A more recent development version is available."
477
478msgid "You can clear cache to check the latest release."
479msgstr ""
480"You can <a href=\"#cache\">clear the cache</a> to check for the latest "
481"release."
482
483msgid "Please execute the import script locally, it can take a very long time."
484msgstr "Please run the import script locally as it can take a very long time."
485
486msgid "More infos in the official doc:"
487msgstr "More information in the official doc:"
488
489msgid "import from Pocket"
490msgstr "Import from Pocket"
491
492msgid "import from Readability"
493msgstr "Import from Readability"
494
495msgid "import from Instapaper"
496msgstr "Import from Instapaper"
497
498msgid "Tags"
499msgstr "Tags"
500
501msgid "Untitled"
502msgstr "Untitled"
503
504msgid "the link has been added successfully"
505msgstr "The link has been added successfully."
506
507msgid "error during insertion : the link wasn't added"
508msgstr "Error during insertion: the link wasn't added."
509
510msgid "the link has been deleted successfully"
511msgstr "The link has been deleted successfully."
512
513msgid "the link wasn't deleted"
514msgstr "The link wasn't deleted."
515
516msgid "Article not found!"
517msgstr "Article not found."
518
519msgid "previous"
520msgstr "Previous"
521
522msgid "next"
523msgstr "Next"
524
525msgid "in demo mode, you can't update your password"
526msgstr "In demo mode, you can't update your password."
527
528msgid "your password has been updated"
529msgstr "Your password has been updated."
530
531msgid ""
532"the two fields have to be filled & the password must be the same in the two "
533"fields"
534msgstr ""
535"The two fields must be filled in, and the password must be the same in both "
536"fields"
537
538msgid "still using the \""
539msgstr "Still using the \""
540
541msgid "that theme does not seem to be installed"
542msgstr "That theme is not installed."
543
544msgid "you have changed your theme preferences"
545msgstr "You have changed your theme preferences."
546
547msgid "that language does not seem to be installed"
548msgstr "That language is not installed."
549
550msgid "you have changed your language preferences"
551msgstr "You have changed your language preferences."
552
553msgid "login failed: you have to fill all fields"
554msgstr "Login failed: you have to fill in all the fields."
555
556msgid "welcome to your wallabag"
557msgstr "Welcome to your wallabag."
558
559msgid "login failed: bad login or password"
560msgstr "Login failed: bad login or password."
561
562msgid "import from instapaper completed"
563msgstr "Import from Instapaper completed."
564
565msgid "import from pocket completed"
566msgstr "Import from Pocket completed."
567
568msgid "import from Readability completed. "
569msgstr "Import from Readability completed."
570
571msgid "import from Poche completed. "
572msgstr "Import from Poche completed. "
573
574msgid "Unknown import provider."
575msgstr "Unknown import provider."
576
577msgid "Incomplete inc/poche/define.inc.php file, please define \""
578msgstr "Incomplete inc/poche/define.inc.php file, please define \""
579
580msgid "Could not find required \""
581msgstr "Could not find required \""
582
583msgid "Uh, there is a problem while generating feeds."
584msgstr "There is a problem generating feeds."
585
586msgid "Cache deleted."
587msgstr "Cache deleted."
588
589msgid "Oops, it seems you don't have PHP 5."
590msgstr "Oops, it seems you don't have PHP 5."
591
592msgid "Add user"
593msgstr "Add User"
594
595msgid "Add a new user :"
596msgstr "Add a new user:"
597
598msgid "Login for new user"
599msgstr "Login for new user:"
600
601msgid "Password for new user"
602msgstr "Password for new user:"
603
604msgid "Email for new user (not required)"
605msgstr "Email for new user (not required):"
606
607msgid "Send"
608msgstr "Send"
609
610msgid "Delete account"
611msgstr "Delete Account"
612
613msgid "You can delete your account by entering your password and validating."
614msgstr "You can delete your account by entering your password and confirming."
615
616msgid "Be careful, data will be erased forever (that is a very long time)."
617msgstr "Be careful, data will be erased forever (that is a very long time)."
618
619msgid "Type here your password"
620msgstr "Enter your password"
621
622msgid "You are the only user, you cannot delete your own account."
623msgstr "You are the only user; you cannot delete your own account."
624
625msgid ""
626"To completely remove wallabag, delete the wallabag folder on your web server "
627"(and eventual databases)."
628msgstr ""
629"To completely remove wallabag, delete the wallabag folder on your web "
630"server. Then delete any any databases you have created for wallabag."
631
632msgid "Enter your search here"
633msgstr "Enter your search here"
634
635msgid "Tag these results as"
636msgstr "Tag these results as"
637
638# ebook
639msgid "Fancy an E-Book ?"
640msgstr "Fancy an E-Book?"
641
642msgid ""
643"Click on <a href=\"./?epub&amp;method=all\" title=\"Generate ePub\">this "
644"link</a> to get all your articles in one ebook (ePub 3 format)."
645msgstr ""
646"You can <a href=\"./?epub&amp;method=all\" title=\"Generate EPUB\">Generate "
647"an EPUB</a> to get all your articles in one ebook (EPUB 3 format)."
648
649msgid ""
650"This can <b>take a while</b> and can <b>even fail</b> if you have too many "
651"articles, depending on your server configuration."
652msgstr ""
653"This can <b>take a while</b> and can <b>even fail</b> if you have too many "
654"articles, depending on your server configuration."
655
656msgid "Download the articles from this tag in an epub"
657msgstr "Download the articles from this tag as an EPUB"
658
659msgid "Download the articles from this search in an epub"
660msgstr "Download the articles from this search as an EPUB"
661
662msgid "Download the articles from this category in an epub"
663msgstr "Download the articles from this category as an EPUB"
664
665#~ msgid "poche it!"
666#~ msgstr "poche it!"
667
668#~ msgid "Updating poche"
669#~ msgstr "Updating poche"
670
671#~ msgid "create an issue"
672#~ msgstr "create an issue"
673
674#~ msgid "or"
675#~ msgstr "or"
676
677#~ msgid "contact us by mail"
678#~ msgstr "contact us by mail"
679
680#~ msgid "your poche version:"
681#~ msgstr "your poche version:"
diff --git a/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.mo b/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.mo
index 77dee070..02523125 100644
--- a/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.mo
+++ b/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.mo
Binary files differ
diff --git a/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.po b/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.po
index 579d1aca..75dad661 100644
--- a/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.po
+++ b/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.po
@@ -663,6 +663,56 @@ msgstr "Download the articles from this search in an EPUB"
663msgid "Download the articles from this category in an epub" 663msgid "Download the articles from this category in an epub"
664msgstr "Download the articles from this category in an EPUB" 664msgstr "Download the articles from this category in an EPUB"
665 665
666# registration
667msgid "Hi,"
668msgstr "Hi,"
669
670msgid "Hi, %1$s"
671msgstr "Hi, %1$s"
672
673msgid "Someone just created a wallabag account for you on %1$s."
674msgstr "Someone just created a wallabag account for you on %1$s."
675
676msgid "Your login is %1$s."
677msgstr "Your login is %1$s."
678
679msgid "Have fun with it !"
680msgstr "Have fun with it !"
681
682msgid ""
683"This is an automatically generated message, no one will answer if you "
684"respond to it."
685msgstr ""
686"This is an automatically generated message, no one will answer if you "
687"respond to it."
688
689msgid ""
690"Note : The password has been chosen by the person who created your account. "
691"Get in touch with that person to know your password and change it as soon as "
692"possible"
693msgstr ""
694"Note : The password has been chosen by the person who created your account. "
695"Get in touch with that person to know your password and change it as soon as "
696"possible"
697
698msgid ""
699"The new user %1$s has been sent an email at %2$s. You may have to check spam "
700"folder."
701msgstr ""
702"The new user %1$s has been sent an email at %2$s. You may have to check spam "
703"folder."
704
705msgid "A problem has been encountered while sending the confirmation email"
706msgstr "A problem has been encountered while sending an confirmation email"
707
708msgid "The server did not authorize sending a confirmation email"
709msgstr "The server did not authorize sending a confirmation email"
710
711msgid ""
712"The user was created, but no email was sent because email was not filled in"
713msgstr ""
714"The user was created, but no email was sent because email was not filled in"
715
666#~ msgid "poche it!" 716#~ msgid "poche it!"
667#~ msgstr "poche it!" 717#~ msgstr "poche it!"
668 718
diff --git a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo
index 83f397a0..b3b2f6fe 100644
--- a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo
+++ b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo
Binary files differ
diff --git a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po
index fef31208..948a8356 100644
--- a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po
+++ b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po
@@ -789,6 +789,58 @@ msgstr ""
789msgid "Produced by wallabag with PHPMobi" 789msgid "Produced by wallabag with PHPMobi"
790msgstr "Produit par wallabag avec PHPMobi" 790msgstr "Produit par wallabag avec PHPMobi"
791 791
792# registration
793msgid "Hi,"
794msgstr "Salut,"
795
796msgid "Hi, %1$s"
797msgstr "Salut, %1$s"
798
799msgid "Someone just created a wallabag account for you on %1$s."
800msgstr ""
801"Quelqu'un vient juste de créer un compte wallabag pour vous à l'adresse %1$s."
802
803msgid "Your login is %1$s."
804msgstr "Votre identifiant is %1$s."
805
806msgid "Have fun with it !"
807msgstr "Amusez-vous bien !"
808
809msgid ""
810"This is an automatically generated message, no one will answer if you "
811"respond to it."
812msgstr ""
813"Ceci est un message généré automatiquement, personne ne vous répondra si "
814"vous y répondez."
815
816msgid ""
817"Note : The password has been chosen by the person who created your account. "
818"Get in touch with that person to know your password and change it as soon as "
819"possible"
820msgstr ""
821"Note : Votre mot de passe a été défini par la personne ayant créé votre "
822"compte. Vous devriez entrer en contact avec cette personne pour connaître "
823"votre mot de passe et le changer dès que possible"
824
825msgid ""
826"The new user %1$s has been sent an email at %2$s. You may have to check spam "
827"folder."
828msgstr ""
829"Un email a été envoyé au nouvel utiliateur %1$s à l'adresse %2$s. Il peut "
830"être nécessaire de vérifier le dossier des spams."
831
832msgid "A problem has been encountered while sending the confirmation email"
833msgstr "Un problème a été rencontré lors de l'envoi de l'email de confirmation"
834
835msgid "The server did not authorize sending a confirmation email"
836msgstr "Le serveur n'autorise pas l'envoi d'un email de confirmation"
837
838msgid ""
839"The user was created, but no email was sent because email was not filled in"
840msgstr ""
841"L'utilisateur a été créé, mais aucun mail n'a été envoyé car l'email n'était "
842"pas renseigné"
843
792msgid "Mail function is disabled. You can't send emails from your server" 844msgid "Mail function is disabled. You can't send emails from your server"
793msgstr "" 845msgstr ""
794"La fonction mail est désactivée. Vous ne pouvez pas envoyer d'E-mails depuis " 846"La fonction mail est désactivée. Vous ne pouvez pas envoyer d'E-mails depuis "
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 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Generated by IcoMoon.io -->
3<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="640" height="640" viewBox="0 0 640 640"><g id="icomoon-ignore">
5</g>
6<path d="M554.848 137.824c0-36.8-55.424-40.864-55.424-40.864l-130.208-8.192c0 0-2.784-35.424-29.088-47.744-26.304-12.256-55.232-8.512-76.032-8.32-20.8 0.224-25.696 26.72-25.696 51.744 0 24.992 0.448 53.888 0.448 72 0 32.576-14.304 46.368-50.112 46.368h-73.824c-20.64-1.312-36.704 2.048-36.704 18.752 0 16.736 24.288 159.136 57.632 192 19.36 19.072 137.76 32.448 162.688 32.448s16.608-73.632 23.552-73.632c6.944 0 14.528 41.568 53.824 51.296 39.232 9.824 91.648 8 94.432 35.936 3.616 36.864 6.944 84.544-17.312 87.936l-54.912 2.176c-37.632-2.688-27.52-43.808-10.912-43.808s24.928-0.608 24.928-0.608l2.080-44.992c0 0-86.176-10.176-89.824 47.936-3.36 53.12 5.76 78.176 12.448 83.616 6.688 5.504 18.272 16.128 123.808 16.128 148.704 0 94.208-433.376 94.208-470.176zM494.080 330.24c-5.824 6.272-26.944-10.24-47.104-10.24-20.192 0-41.952 10.688-47.072 3.616-5.12-7.008 4.672-63.68 42.688-63.68s57.376 64.128 51.488 70.304z" fill="rgb(68, 68, 68)"></path>
7<path d="M185.728 133.312c0-7.328 1.856-95.488 1.856-95.488l-112.16 110.080c0 0 77.504 0 92.736 0 15.232-0.032 17.568-7.328 17.568-14.592z" fill="rgb(68, 68, 68)"></path>
8</svg>
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() {
4 $bagitForm = $('#bagit-form'), 4 $bagitForm = $('#bagit-form'),
5 $bagitFormForm = $('#bagit-form-form'); 5 $bagitFormForm = $('#bagit-form-form');
6 6
7$("#tags2add").hide();
8
7 /* ========================================================================== 9 /* ==========================================================================
8 bag it link and close button 10 bag it link and close button
9 ========================================================================== */ 11 ========================================================================== */
@@ -78,6 +80,14 @@ $.fn.ready(function() {
78 event.preventDefault(); 80 event.preventDefault();
79 }); 81 });
80 82
83$('#showtaginput').click(function(){
84 $('#tags2add').toggle();
85 $('#plainurl').toggle();
86 $('#showtaginput').toggleClass('icon-tags');
87 $('#showtaginput').toggleClass('icon-check');
88});
89
90
81 /* ========================================================================== 91 /* ==========================================================================
82 Keyboard gestion 92 Keyboard gestion
83 ========================================================================== */ 93 ========================================================================== */
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 @@
4 <a href="javascript: void(null);" id="bagit-form-close" class="close-button--popup close-button">&times;</a> 4 <a href="javascript: void(null);" id="bagit-form-close" class="close-button--popup close-button">&times;</a>
5 <input type="hidden" name="autoclose" value="1" /> 5 <input type="hidden" name="autoclose" value="1" />
6 <input required placeholder="example.com/article" class="addurl" id="plainurl" name="plainurl" type="url" /> 6 <input required placeholder="example.com/article" class="addurl" id="plainurl" name="plainurl" type="url" />
7 <div style="display:inline-block;cursor: pointer;" title="{% trans "Edit tags" %}" id="showtaginput" class="tool icon icon-tags">
8 <span>Add tags</span>
9 </div>
10 <input placeholder="tags, with commas" class="addurl" id="tags2add" name="tags" type="text"/>
7 <span id="add-link-result"></span> 11 <span id="add-link-result"></span>
8 <input type="submit" value="{% trans "save link!" %}" /> 12 <input type="submit" value="{% trans "save link!" %}" />
9 </form> 13 </form>
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 @@
7{% block content %} 7{% block content %}
8 <h2>{% trans "About wallabag" %}</h2> 8 <h2>{% trans "About wallabag" %}</h2>
9 9
10 <p>{% 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." %}</p>
11
10 <dl> 12 <dl>
11 <dt>{% trans "Project website" %}</dt> 13 <dt>{% trans "Project website" %}</dt>
12 <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd> 14 <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd>
@@ -27,8 +29,6 @@
27 <dd>{{ constant('POCHE') }}</dd> 29 <dd>{{ constant('POCHE') }}</dd>
28 </dl> 30 </dl>
29 31
30 <p>{% 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." %}</p>
31
32 <h2>{% trans "Getting help" %}</h2> 32 <h2>{% trans "Getting help" %}</h2>
33 33
34 <dl> 34 <dl>
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 @@
27 </ul> 27 </ul>
28 <h3>{% trans "Bookmarklet" %}</h3> 28 <h3>{% trans "Bookmarklet" %}</h3>
29 <p> 29 <p>
30 {% trans "Drag &amp; drop this link to your bookmarks bar:" %} <a id="bookmarklet" ondragend="this.click();" href="javascript:if(top['bookmarklet-url@wallabag.org']){top['bookmarklet-url@wallabag.org'];}else{(function(){var%20url%20=%20location.href%20||%20url;window.open('{{ poche_url }}?action=add&url='%20+%20btoa(url),'_self');})();void(0);}">{% trans "bag it!" %}</a> 30 {% trans "Drag &amp; drop this link to your bookmarks bar:" %} <a id="bookmarklet" ondragend="this.click();" href="javascript:if(top['bookmarklet-url@wallabag.org']){top['bookmarklet-url@wallabag.org'];}else{(function(){var%20url%20=%20location.href%20||%20url;window.open('{{ poche_url }}?action=add&autoclose=true&url='%20+%20btoa(url),'_blank');})();void(0);}">{% trans "bag it!" %}</a>
31 </p> 31 </p>
32 32
33 <h2>{% trans "Feeds" %}</h2> 33 <h2>{% trans "Feeds" %}</h2>
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 {
736.icon-print:before { 736.icon-print:before {
737 content: "\e80d"; 737 content: "\e80d";
738} 738}
739.icon-random:before {
740 content: "\e915";
741}
742.icon-reload:before {
743 content: "\ea2e";
744}
745.icon-evernote:before {
746 content: "\e603";
747}
748.icon-tags:before {
749 content: "\e936";
750}
739 751
740 752
741/* .icon-image class, for image-based icons 753/* .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
--- a/themes/baggy/fonts/icomoon.eot
+++ b/themes/baggy/fonts/icomoon.eot
Binary files 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 @@
1<?xml version="1.0" standalone="no"?> 1<?xml version="1.0" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > 2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3<svg xmlns="http://www.w3.org/2000/svg"> 3<svg xmlns="http://www.w3.org/2000/svg">
4<metadata> 4<metadata>Generated by IcoMoon</metadata>
5<json>
6{
7 "fontFamily": "icomoon",
8 "majorVersion": 1,
9 "minorVersion": 0,
10 "version": "Version 1.0",
11 "fontId": "icomoon",
12 "psName": "icomoon",
13 "subFamily": "Regular",
14 "fullName": "icomoon",
15 "description": "Generated by IcoMoon"
16}
17</json>
18</metadata>
19<defs> 5<defs>
20<font id="icomoon" horiz-adv-x="512"> 6<font id="icomoon" horiz-adv-x="1024">
21<font-face units-per-em="512" ascent="480" descent="-32" /> 7<font-face units-per-em="1024" ascent="960" descent="-64" />
22<missing-glyph horiz-adv-x="512" /> 8<missing-glyph horiz-adv-x="1024" />
23<glyph unicode="&#x20;" d="" horiz-adv-x="256" /> 9<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
24<glyph unicode="&#xe600;" d="M256 389.333c-94.272 0-170.667-76.416-170.667-170.666s76.394-170.667 170.667-170.667 170.667 76.416 170.667 170.667-76.394 170.666-170.667 170.666zM335.082 169.749c8.341-8.341 8.341-21.824 0-30.166-4.16-4.16-9.622-6.25-15.082-6.25s-10.923 2.091-15.082 6.25l-48.918 48.918-48.917-48.918c-4.16-4.16-9.621-6.25-15.083-6.25s-10.923 2.091-15.083 6.25c-8.341 8.341-8.341 21.824 0 30.166l48.917 48.918-48.917 48.917c-8.341 8.341-8.341 21.824 0 30.166s21.824 8.341 30.166 0l48.917-48.917 48.918 48.917c8.341 8.341 21.824 8.341 30.166 0s8.341-21.824 0-30.166l-48.918-48.917 48.918-48.918z" /> 10<glyph unicode="&#xe600;" d="M512 778.666c-188.544 0-341.334-152.832-341.334-341.332s152.788-341.334 341.334-341.334 341.334 152.832 341.334 341.334-152.788 341.332-341.334 341.332zM670.164 339.498c16.682-16.682 16.682-43.648 0-60.332-8.32-8.32-19.244-12.5-30.164-12.5s-21.846 4.182-30.164 12.5l-97.836 97.836-97.834-97.836c-8.32-8.32-19.242-12.5-30.166-12.5s-21.846 4.182-30.166 12.5c-16.682 16.682-16.682 43.648 0 60.332l97.834 97.836-97.834 97.834c-16.682 16.682-16.682 43.648 0 60.332s43.648 16.682 60.332 0l97.834-97.834 97.836 97.834c16.682 16.682 43.648 16.682 60.332 0s16.682-43.648 0-60.332l-97.836-97.834 97.836-97.836z" />
25<glyph unicode="&#xe601;" d="M245.333 73.109c-37.035 0-71.85 14.421-98.048 40.598-26.176 26.197-40.618 61.014-40.618 98.070s14.442 71.872 40.618 98.070c8.341 8.341 21.824 8.341 30.166 0s8.341-21.824 0-30.166c-18.133-18.154-28.118-42.261-28.118-67.904s9.984-49.771 28.118-67.904c18.133-18.134 42.219-28.096 67.882-28.096s49.749 9.984 67.883 28.096c18.154 18.134 28.118 42.24 28.118 67.904s-9.984 49.771-28.118 67.904c-8.341 8.341-8.341 21.824 0 30.166s21.824 8.341 30.166 0c26.176-26.219 40.618-61.035 40.618-98.070s-14.442-71.872-40.618-98.070c-26.197-26.176-61.014-40.597-98.048-40.597zM245.333 234.667c-11.797 0-21.333 9.558-21.333 21.333v106.667c0 11.776 9.536 21.333 21.334 21.333s21.334-9.558 21.334-21.333v-106.667c0-11.776-9.536-21.333-21.334-21.333z" /> 11<glyph unicode="&#xe601;" d="M490.666 146.218c-74.070 0-143.7 28.842-196.096 81.196-52.352 52.394-81.236 122.028-81.236 196.14s28.884 143.744 81.236 196.14c16.682 16.682 43.648 16.682 60.332 0s16.682-43.648 0-60.332c-36.266-36.308-56.236-84.522-56.236-135.808s19.968-99.542 56.236-135.808c36.266-36.268 84.438-56.192 135.764-56.192s99.498 19.968 135.766 56.192c36.308 36.268 56.236 84.48 56.236 135.808s-19.968 99.542-56.236 135.808c-16.682 16.682-16.682 43.648 0 60.332s43.648 16.682 60.332 0c52.352-52.438 81.236-122.070 81.236-196.14s-28.884-143.744-81.236-196.14c-52.394-52.352-122.028-81.194-196.096-81.194zM490.666 469.334c-23.594 0-42.666 19.116-42.666 42.666v213.334c0 23.552 19.072 42.666 42.668 42.666s42.668-19.116 42.668-42.666v-213.334c0-23.552-19.072-42.666-42.668-42.666z" />
26<glyph unicode="&#xe602;" d="M256 401.664l-136.832-136.832c-16.662-16.661-16.662-43.67 0-60.331s43.669-16.661 60.331 0l33.834 33.835v-154.496c0-23.552 19.094-42.666 42.667-42.666 23.552 0 42.666 19.115 42.666 42.666v154.496l33.834-33.835c8.341-8.341 19.243-12.502 30.166-12.502s21.824 4.16 30.166 12.502c16.661 16.661 16.661 43.67 0 60.331l-136.832 136.832z" /> 12<glyph unicode="&#xe602;" d="M512 803.328l-273.664-273.664c-33.324-33.322-33.324-87.34 0-120.662s87.338-33.322 120.662 0l67.668 67.67v-308.992c0-47.104 38.188-85.332 85.334-85.332 47.104 0 85.332 38.23 85.332 85.332v308.992l67.668-67.67c16.682-16.682 38.486-25.004 60.332-25.004s43.648 8.32 60.332 25.004c33.322 33.322 33.322 87.34 0 120.662l-273.664 273.664z" />
27<glyph unicode="&#xe800;" d="M0 25.856v263.168q0 91.648 43.52 142.336t132.608 50.688h280.576q-2.56-2.56-26.624-27.136t-51.2-51.712-55.808-55.808-48.64-47.616-21.504-18.944q-7.68 0-7.68 8.192v79.872h-24.576q-30.208 0-48.128-3.072t-32.256-13.312-19.968-29.184-6.144-49.152v-134.144zM34.304-34.048q2.56 2.56 27.136 27.136t51.2 51.712 55.808 56.32 48.64 47.616 20.992 18.432q7.68 0 7.68-8.192v-79.872h24.576q59.392 0 82.944 18.432t23.040 76.288v134.144l114.688 114.176v-263.168q0-91.648-43.008-142.336t-133.12-50.688h-280.576z" horiz-adv-x="491" /> 13<glyph unicode="&#xe603;" d="M887.757 752.282c0 58.88-88.678 65.382-88.678 65.382l-208.333 13.107c0 0-4.454 56.678-46.541 76.39-42.086 19.61-88.371 13.619-121.651 13.312-33.28-0.358-41.114-42.752-41.114-82.79 0-39.987 0.717-86.221 0.717-115.2 0-52.122-22.886-74.189-80.179-74.189h-118.118c-33.024 2.099-58.726-3.277-58.726-30.003 0-26.778 38.861-254.618 92.211-307.2 30.976-30.515 220.416-51.917 260.301-51.917s26.573 117.811 37.683 117.811c11.11 0 23.245-66.509 86.118-82.074 62.771-15.718 146.637-12.8 151.091-57.498 5.786-58.982 11.11-135.27-27.699-140.698l-87.859-3.482c-60.211 4.301-44.032 70.093-17.459 70.093s39.885 0.973 39.885 0.973l3.328 71.987c0 0-137.882 16.282-143.718-76.698-5.376-84.992 9.216-125.082 19.917-133.786 10.701-8.806 29.235-25.805 198.093-25.805 237.926 0 150.733 693.402 150.733 752.282zM790.528 444.416c-9.318-10.035-43.11 16.384-75.366 16.384-32.307 0-67.123-17.101-75.315-5.786-8.192 11.213 7.475 101.888 68.301 101.888s91.802-102.605 82.381-112.486zM297.165 759.501c0 11.725 2.97 152.781 2.97 152.781l-179.456-176.128c0 0 124.006 0 148.378 0 24.371 0.051 28.109 11.725 28.109 23.347z" />
28<glyph unicode="&#xe801;" d="M150.528 104.192q7.168 7.168 17.408 7.168t18.432-7.168q16.384-17.408 0-35.84l-21.504-20.48q-28.672-28.672-67.584-28.672-39.936 0-68.608 28.672t-28.672 67.584q0 39.936 28.672 68.608l75.776 75.776q35.84 34.816 73.728 39.424t65.536-22.016q8.192-8.192 8.192-18.432t-8.192-18.432q-18.432-16.384-35.84 0-25.6 24.576-67.584-17.408l-75.776-74.752q-13.312-13.312-13.312-32.768t13.312-31.744q13.312-13.312 32.256-13.312t32.256 13.312zM380.928 398.080q28.672-28.672 28.672-67.584 0-39.936-28.672-68.608l-80.896-80.896q-37.888-36.864-76.8-36.864-31.744 0-57.344 25.6-7.168 7.168-7.168 17.408t7.168 18.432q7.168 7.168 17.92 7.168t17.92-7.168q25.6-24.576 62.464 12.288l80.896 79.872q14.336 14.336 14.336 32.768 0 19.456-14.336 31.744-12.288 13.312-28.672 15.872t-30.72-10.752l-25.6-25.6q-8.192-7.168-18.432-7.168t-17.408 7.168q-17.408 17.408 0 35.84l25.6 25.6q27.648 27.648 65.024 26.112t66.048-31.232z" horiz-adv-x="410" /> 14<glyph unicode="&#xe800;" d="M0 51.712v526.336q0 183.296 87.040 284.672t265.216 101.376h561.152q-5.12-5.12-53.248-54.272t-102.4-103.424-111.616-111.616-97.28-95.232-43.008-37.888q-15.36 0-15.36 16.384v159.744h-49.152q-60.416 0-96.256-6.144t-64.512-26.624-39.936-58.368-12.288-98.304v-268.288zM68.608-68.096q5.12 5.12 54.272 54.272t102.4 103.424 111.616 112.64 97.28 95.232 41.984 36.864q15.36 0 15.36-16.384v-159.744h49.152q118.784 0 165.888 36.864t46.080 152.576v268.288l229.376 228.352v-526.336q0-183.296-86.016-284.672t-266.24-101.376h-561.152z" horiz-adv-x="982" />
29<glyph unicode="&#xe802;" d="M438.784 96v-36.352q0-7.68-5.12-12.8t-13.312-5.632h-401.92q-7.68 0-12.8 5.632t-5.632 12.8v36.352q0 7.68 5.632 12.8t12.8 5.632h401.92q7.68 0 13.312-5.632t5.12-12.8zM438.784 242.432v-36.864q0-7.168-5.12-12.8t-13.312-5.12h-401.92q-7.68 0-12.8 5.12t-5.632 12.8v36.864q0 7.168 5.632 12.8t12.8 5.12h401.92q7.68 0 13.312-5.12t5.12-12.8zM438.784 388.352v-36.352q0-7.68-5.12-12.8t-13.312-5.632h-401.92q-7.68 0-12.8 5.632t-5.632 12.8v36.352q0 7.68 5.632 13.312t12.8 5.12h401.92q7.68 0 13.312-5.12t5.12-13.312z" horiz-adv-x="439" /> 15<glyph unicode="&#xe801;" d="M301.056 208.384q14.336 14.336 34.816 14.336t36.864-14.336q32.768-34.816 0-71.68l-43.008-40.96q-57.344-57.344-135.168-57.344-79.872 0-137.216 57.344t-57.344 135.168q0 79.872 57.344 137.216l151.552 151.552q71.68 69.632 147.456 78.848t131.072-44.032q16.384-16.384 16.384-36.864t-16.384-36.864q-36.864-32.768-71.68 0-51.2 49.152-135.168-34.816l-151.552-149.504q-26.624-26.624-26.624-65.536t26.624-63.488q26.624-26.624 64.512-26.624t64.512 26.624zM761.856 796.16q57.344-57.344 57.344-135.168 0-79.872-57.344-137.216l-161.792-161.792q-75.776-73.728-153.6-73.728-63.488 0-114.688 51.2-14.336 14.336-14.336 34.816t14.336 36.864q14.336 14.336 35.84 14.336t35.84-14.336q51.2-49.152 124.928 24.576l161.792 159.744q28.672 28.672 28.672 65.536 0 38.912-28.672 63.488-24.576 26.624-57.344 31.744t-61.44-21.504l-51.2-51.2q-16.384-14.336-36.864-14.336t-34.816 14.336q-34.816 34.816 0 71.68l51.2 51.2q55.296 55.296 130.048 52.224t132.096-62.464z" horiz-adv-x="820" />
30<glyph unicode="&#xe803;" d="M235.52 459.52q97.28 0 166.4-69.12t69.12-166.4-69.12-166.4-166.4-69.12-166.4 69.12-69.12 166.4 69.12 166.4 166.4 69.12zM235.52 39.68q76.8 0 130.56 54.272t53.76 130.048q0 76.8-53.76 130.56t-130.56 53.76q-75.776 0-130.048-53.76t-54.272-130.56q0-75.776 54.272-130.048t130.048-54.272zM253.952 357.12v-124.928l76.8-76.8-25.6-25.6-87.040 87.040v140.288h35.84z" horiz-adv-x="471" /> 16<glyph unicode="&#xe802;" d="M877.568 192v-72.704q0-15.36-10.24-25.6t-26.624-11.264h-803.84q-15.36 0-25.6 11.264t-11.264 25.6v72.704q0 15.36 11.264 25.6t25.6 11.264h803.84q15.36 0 26.624-11.264t10.24-25.6zM877.568 484.864v-73.728q0-14.336-10.24-25.6t-26.624-10.24h-803.84q-15.36 0-25.6 10.24t-11.264 25.6v73.728q0 14.336 11.264 25.6t25.6 10.24h803.84q15.36 0 26.624-10.24t10.24-25.6zM877.568 776.704v-72.704q0-15.36-10.24-25.6t-26.624-11.264h-803.84q-15.36 0-25.6 11.264t-11.264 25.6v72.704q0 15.36 11.264 26.624t25.6 10.24h803.84q15.36 0 26.624-10.24t10.24-26.624z" horiz-adv-x="878" />
31<glyph unicode="&#xe804;" d="M127.488 44.8q-17.408 0-28.672 14.336l-92.16 120.832q-8.192 12.288-6.144 26.624t13.312 23.552 26.112 7.168 24.064-14.336l60.416-78.848 151.552 242.688q8.192 12.288 22.016 15.36t27.136-4.096q12.288-8.192 15.36-22.016t-4.096-27.136l-179.2-286.72q-10.24-16.384-28.672-16.384z" horiz-adv-x="342" /> 17<glyph unicode="&#xe803;" d="M471.040 919.040q194.56 0 332.8-138.24t138.24-332.8-138.24-332.8-332.8-138.24-332.8 138.24-138.24 332.8 138.24 332.8 332.8 138.24zM471.040 79.36q153.6 0 261.12 108.544t107.52 260.096q0 153.6-107.52 261.12t-261.12 107.52q-151.552 0-260.096-107.52t-108.544-261.12q0-151.552 108.544-260.096t260.096-108.544zM507.904 714.24v-249.856l153.6-153.6-51.2-51.2-174.080 174.080v280.576h71.68z" horiz-adv-x="942" />
32<glyph unicode="&#xe805;" d="M225.28 449.28l61.44-172.032h163.84l-134.144-100.352 48.128-178.176-139.264 106.496-139.264-106.496 48.128 178.176-134.144 100.352h163.84z" horiz-adv-x="451" /> 18<glyph unicode="&#xe804;" d="M254.976 89.6q-34.816 0-57.344 28.672l-184.32 241.664q-16.384 24.576-12.288 53.248t26.624 47.104 52.224 14.336 48.128-28.672l120.832-157.696 303.104 485.376q16.384 24.576 44.032 30.72t54.272-8.192q24.576-16.384 30.72-44.032t-8.192-54.272l-358.4-573.44q-20.48-32.768-57.344-32.768z" horiz-adv-x="684" />
33<glyph unicode="&#xe806;" d="M460.8 49.92q-44.032 77.824-106.496 100.864t-168.96 23.040v-111.616l-185.344 171.008 185.344 164.864v-98.304q46.080 0 86.016-13.824t67.072-35.84 49.152-48.64 35.328-53.248 22.528-48.64 12.288-35.328z" horiz-adv-x="461" /> 19<glyph unicode="&#xe805;" d="M450.56 898.56l122.88-344.064h327.68l-268.288-200.704 96.256-356.352-278.528 212.992-278.528-212.992 96.256 356.352-268.288 200.704h327.68z" horiz-adv-x="902" />
34<glyph unicode="&#xe807;" d="M471.040 370.432q-18.432-27.648-48.128-50.176v-12.288q0-66.56-30.72-128t-95.232-103.936-148.48-42.496q-81.92 0-148.48 43.008 7.168-1.024 23.552-1.024 67.584 0 119.808 40.96-31.744 1.024-56.32 19.456t-33.792 48.128q5.12-2.048 17.408-2.048 13.312 0 25.6 3.072-33.792 7.168-55.296 33.792t-21.504 61.44v1.024q18.432-10.24 43.008-12.288-43.008 29.696-43.008 80.896 0 24.576 13.312 48.128 78.848-96.256 199.68-100.352-3.072 9.216-3.072 21.504 0 39.936 28.16 68.096t69.12 28.16q41.984 0 69.632-29.696 30.72 6.144 61.44 22.528-10.24-33.792-41.984-53.248 28.672 4.096 55.296 15.36z" horiz-adv-x="471" /> 20<glyph unicode="&#xe806;" d="M921.6 99.84q-88.064 155.648-212.992 201.728t-337.92 46.080v-223.232l-370.688 342.016 370.688 329.728v-196.608q92.16 0 172.032-27.648t134.144-71.68 98.304-97.28 70.656-106.496 45.056-97.28 24.576-70.656z" horiz-adv-x="922" />
35<glyph unicode="&#xe808;" d="M109.568 96q0-23.040-15.872-38.912t-38.912-15.872-38.912 15.872-15.872 38.912 15.872 38.912 38.912 15.872 38.912-15.872 15.872-38.912zM256 60.672q0.512-7.68-4.608-13.312-5.632-6.144-13.824-6.144h-38.4q-7.168 0-12.288 4.608t-5.632 11.776q-6.144 65.536-52.736 112.128t-112.128 52.736q-7.168 0.512-11.776 5.632t-4.608 12.288v38.4q0 8.192 6.144 13.312 4.608 5.12 12.288 5.12h1.536q45.568-3.584 87.040-23.040t74.24-51.712q32.256-32.256 51.712-74.24t23.040-87.552zM402.432 60.16q0.512-7.68-5.12-13.312-5.12-5.632-13.312-5.632h-40.96q-7.168 0-12.8 5.12t-5.632 11.776q-3.072 61.44-28.672 116.736t-66.048 96.256-96.256 66.048-116.224 29.184q-7.168 0-12.288 5.632t-5.12 12.288v40.96q0 7.68 5.632 13.312 5.12 5.12 12.8 5.12h0.512q75.264-4.096 143.36-34.304t121.856-83.968q53.248-53.248 83.968-121.856t34.304-143.36z" horiz-adv-x="402" /> 21<glyph unicode="&#xe807;" d="M942.080 740.864q-36.864-55.296-96.256-100.352v-24.576q0-133.12-61.44-256t-190.464-207.872-296.96-84.992q-163.84 0-296.96 86.016 14.336-2.048 47.104-2.048 135.168 0 239.616 81.92-63.488 2.048-112.64 38.912t-67.584 96.256q10.24-4.096 34.816-4.096 26.624 0 51.2 6.144-67.584 14.336-110.592 67.584t-43.008 122.88v2.048q36.864-20.48 86.016-24.576-86.016 59.392-86.016 161.792 0 49.152 26.624 96.256 157.696-192.512 399.36-200.704-6.144 18.432-6.144 43.008 0 79.872 56.32 136.192t138.24 56.32q83.968 0 139.264-59.392 61.44 12.288 122.88 45.056-20.48-67.584-83.968-106.496 57.344 8.192 110.592 30.72z" horiz-adv-x="942" />
36<glyph unicode="&#xe809;" d="M0 314.112l75.776 75.776 180.224-179.712 180.224 179.712 75.776-75.776-256-256-75.776 75.776z" /> 22<glyph unicode="&#xe808;" d="M219.136 192q0-46.080-31.744-77.824t-77.824-31.744-77.824 31.744-31.744 77.824 31.744 77.824 77.824 31.744 77.824-31.744 31.744-77.824zM512 121.344q1.024-15.36-9.216-26.624-11.264-12.288-27.648-12.288h-76.8q-14.336 0-24.576 9.216t-11.264 23.552q-12.288 131.072-105.472 224.256t-224.256 105.472q-14.336 1.024-23.552 11.264t-9.216 24.576v76.8q0 16.384 12.288 26.624 9.216 10.24 24.576 10.24h3.072q91.136-7.168 174.080-46.080t148.48-103.424q64.512-64.512 103.424-148.48t46.080-175.104zM804.864 120.32q1.024-15.36-10.24-26.624-10.24-11.264-26.624-11.264h-81.92q-14.336 0-25.6 10.24t-11.264 23.552q-6.144 122.88-57.344 233.472t-132.096 192.512-192.512 132.096-232.448 58.368q-14.336 0-24.576 11.264t-10.24 24.576v81.92q0 15.36 11.264 26.624 10.24 10.24 25.6 10.24h1.024q150.528-8.192 286.72-68.608t243.712-167.936q106.496-106.496 167.936-243.712t68.608-286.72z" horiz-adv-x="804" />
37<glyph unicode="&#xe80a;" d="M475.648 50.432v219.136q-9.216-10.24-19.968-18.944-76.288-58.368-121.856-96.256-14.336-12.288-23.552-19.456t-24.576-13.824-29.184-6.656h-1.024q-13.312 0-29.184 6.656t-24.576 13.824-23.552 19.456q-45.056 37.888-121.856 96.256-10.752 8.704-19.968 18.944v-219.136q0-4.096 3.072-6.656t6.144-2.56h420.864q3.584 0 6.144 2.56t3.072 6.656zM475.648 350.464v7.168t-0.512 3.584-0.512 3.584-1.536 2.56-2.56 2.048-4.096 1.024h-420.864q-3.584 0-6.144-3.072t-3.072-6.144q0-48.128 41.984-81.408 55.296-43.52 114.688-90.624 2.048-1.024 10.24-8.192t12.8-10.752 12.8-9.216 14.336-7.68 12.288-2.56h1.024q5.632 0 12.288 2.56t14.336 7.68 12.8 9.216 12.8 10.752 10.24 8.192q59.392 47.104 114.688 90.624 15.36 12.288 28.672 33.28t13.312 37.376zM512 361.216v-310.784q0-18.944-13.312-32.256t-32.256-13.824h-420.864q-18.432 0-32.256 13.824t-13.312 32.256v310.784q0 18.944 13.312 32.256t32.256 13.312h420.864q18.944 0 32.256-13.312t13.312-32.256z" /> 23<glyph unicode="&#xe809;" d="M0 628.224l151.552 151.552 360.448-359.424 360.448 359.424 151.552-151.552-512-512-151.552 151.552z" />
38<glyph unicode="&#xe80b;" d="M0 133.888l256 256 256-256-75.776-75.776-180.224 179.712-180.224-179.712z" /> 24<glyph unicode="&#xe80a;" d="M951.296 100.864v438.272q-18.432-20.48-39.936-37.888-152.576-116.736-243.712-192.512-28.672-24.576-47.104-38.912t-49.152-27.648-58.368-13.312h-2.048q-26.624 0-58.368 13.312t-49.152 27.648-47.104 38.912q-90.112 75.776-243.712 192.512-21.504 17.408-39.936 37.888v-438.272q0-8.192 6.144-13.312t12.288-5.12h841.728q7.168 0 12.288 5.12t6.144 13.312zM951.296 700.928v14.336t-1.024 7.168-1.024 7.168-3.072 5.12-5.12 4.096-8.192 2.048h-841.728q-7.168 0-12.288-6.144t-6.144-12.288q0-96.256 83.968-162.816 110.592-87.040 229.376-181.248 4.096-2.048 20.48-16.384t25.6-21.504 25.6-18.432 28.672-15.36 24.576-5.12h2.048q11.264 0 24.576 5.12t28.672 15.36 25.6 18.432 25.6 21.504 20.48 16.384q118.784 94.208 229.376 181.248 30.72 24.576 57.344 66.56t26.624 74.752zM1024 722.432v-621.568q0-37.888-26.624-64.512t-64.512-27.648h-841.728q-36.864 0-64.512 27.648t-26.624 64.512v621.568q0 37.888 26.624 64.512t64.512 26.624h841.728q37.888 0 64.512-26.624t26.624-64.512z" />
39<glyph unicode="&#xe80c;" d="M25.6 279.296q62.464-35.84 168.96-35.84t168.96 35.84l-27.648-248.832q-1.024-7.168-17.92-18.432t-51.2-22.016-72.192-10.752-71.68 10.752-51.2 22.016-18.432 18.432zM275.456 432.896q48.128-9.216 80.896-28.16t32.768-36.352v-5.12q0-29.696-57.344-50.688t-137.216-20.992-137.216 20.992-57.344 50.688v5.12q0 17.408 32.768 36.352t80.896 28.16l21.504 24.576q11.264 13.312 35.84 13.312h47.104q26.624 0 35.84-13.312zM247.808 375.552h43.008q-47.104 56.32-53.248 64.512-7.168 8.192-16.384 8.192h-52.224q-11.264 0-16.384-8.192l-54.272-64.512h43.008l32.768 33.792h41.984z" horiz-adv-x="389" /> 25<glyph unicode="&#xe80b;" d="M0 267.776l512 512 512-512-151.552-151.552-360.448 359.424-360.448-359.424z" />
40<glyph unicode="&#xe80d;" d="M128 448h256v-64h-256zM480 352h-448c-17.6 0-32-14.4-32-32v-160c0-17.6 14.398-32 32-32h96v-128h256v128h96c17.6 0 32 14.4 32 32v160c0 17.6-14.4 32-32 32zM352 32h-192v160h192v-160zM487.2 304c0-12.813-10.387-23.2-23.199-23.2-12.813 0-23.201 10.387-23.201 23.2s10.388 23.2 23.201 23.2c12.813 0 23.199-10.387 23.199-23.2z" /> 26<glyph unicode="&#xe80c;" d="M51.2 558.592q124.928-71.68 337.92-71.68t337.92 71.68l-55.296-497.664q-2.048-14.336-35.84-36.864t-102.4-44.032-144.384-21.504-143.36 21.504-102.4 44.032-36.864 36.864zM550.912 865.792q96.256-18.432 161.792-56.32t65.536-72.704v-10.24q0-59.392-114.688-101.376t-274.432-41.984-274.432 41.984-114.688 101.376v10.24q0 34.816 65.536 72.704t161.792 56.32l43.008 49.152q22.528 26.624 71.68 26.624h94.208q53.248 0 71.68-26.624zM495.616 751.104h86.016q-94.208 112.64-106.496 129.024-14.336 16.384-32.768 16.384h-104.448q-22.528 0-32.768-16.384l-108.544-129.024h86.016l65.536 67.584h83.968z" horiz-adv-x="778" />
27<glyph unicode="&#xe80d;" d="M256 896h512v-128h-512zM960 704h-896c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h192v-256h512v256h192c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM704 64h-384v320h384v-320zM974.4 608c0-25.626-20.774-46.4-46.398-46.4-25.626 0-46.402 20.774-46.402 46.4s20.776 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" />
28<glyph unicode="&#xe904;" d="M896 704v128h-896v-704c0-35.346 28.654-64 64-64h864c53.022 0 96 42.978 96 96v544h-128zM832 128h-768v640h768v-640zM128 640h640v-64h-640zM512 512h256v-64h-256zM512 384h256v-64h-256zM512 256h192v-64h-192zM128 512h320v-320h-320z" />
29<glyph unicode="&#xe90d;" d="M959.884 832c0.040-0.034 0.082-0.076 0.116-0.116v-767.77c-0.034-0.040-0.076-0.082-0.116-0.116h-895.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.772c0.034 0.040 0.076 0.082 0.114 0.114h895.77zM960 896h-896c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v768c0 35.2-28.8 64-64 64v0zM832 672c0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM896 128h-768v128l224 384 256-320h64l224 192z" />
30<glyph unicode="&#xe911;" d="M960 960h64v-736c0-88.366-100.29-160-224-160s-224 71.634-224 160c0 88.368 100.29 160 224 160 62.684 0 119.342-18.4 160-48.040v368.040l-512-113.778v-494.222c0-88.366-100.288-160-224-160s-224 71.634-224 160c0 88.368 100.288 160 224 160 62.684 0 119.342-18.4 160-48.040v624.040l576 128z" />
31<glyph unicode="&#xe913;" d="M0 832v-768h1024v768h-1024zM192 128h-128v128h128v-128zM192 384h-128v128h128v-128zM192 640h-128v128h128v-128zM768 128h-512v640h512v-640zM960 128h-128v128h128v-128zM960 384h-128v128h128v-128zM960 640h-128v128h128v-128zM384 640v-384l256 192z" />
32<glyph unicode="&#xe915;" d="M864 768h-512c-88 0-160-72-160-160v-512c0-88 72-160 160-160h512c88 0 160 72 160 160v512c0 88-72 160-160 160zM416 64c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM416 448c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM608 256c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM800 64c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM800 448c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM828.76 832c-14.93 72.804-79.71 128-156.76 128h-512c-88 0-160-72-160-160v-512c0-77.046 55.196-141.83 128-156.76v636.76c0 35.2 28.8 64 64 64h636.76z" />
33<glyph unicode="&#xe936;" d="M1232 960h-384c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l476.118 476.118c18.666 18.666 33.94 55.54 33.94 81.94v384c0 26.4-21.6 48-48 48zM992 576c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM128 416l544 544h-80c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l30.058 30.058-416 416z" horiz-adv-x="1280" />
34<glyph unicode="&#xe941;" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM320 448c0 106.040 85.96 192 192 192s192-85.96 192-192-85.96-192-192-192-192 85.96-192 192zM925.98 276.524v0l-177.42 73.49c12.518 30.184 19.44 63.276 19.44 97.986s-6.922 67.802-19.44 97.986l177.42 73.49c21.908-52.822 34.020-110.73 34.020-171.476s-12.114-118.654-34.020-171.476v0zM683.478 861.98v0 0l-73.49-177.42c-30.184 12.518-63.276 19.44-97.988 19.44s-67.802-6.922-97.986-19.44l-73.49 177.422c52.822 21.904 110.732 34.018 171.476 34.018 60.746 0 118.654-12.114 171.478-34.020zM98.020 619.476l177.422-73.49c-12.518-30.184-19.442-63.276-19.442-97.986s6.922-67.802 19.44-97.986l-177.42-73.49c-21.906 52.822-34.020 110.73-34.020 171.476s12.114 118.654 34.020 171.476zM340.524 34.020l73.49 177.42c30.184-12.518 63.276-19.44 97.986-19.44s67.802 6.922 97.986 19.44l73.49-177.42c-52.822-21.904-110.73-34.020-171.476-34.020-60.744 0-118.654 12.114-171.476 34.020z" />
35<glyph unicode="&#xe96d;" d="M480 960v0c265.096 0 480-173.914 480-388.448s-214.904-388.448-480-388.448c-25.458 0-50.446 1.62-74.834 4.71-103.106-102.694-222.172-121.108-341.166-123.814v25.134c64.252 31.354 116 88.466 116 153.734 0 9.106-0.712 18.048-2.030 26.794-108.558 71.214-177.97 179.988-177.97 301.89 0 214.534 214.904 388.448 480 388.448zM996 89.314c0-55.942 36.314-104.898 92-131.772v-21.542c-103.126 2.318-197.786 18.102-287.142 106.126-21.14-2.65-42.794-4.040-64.858-4.040-95.47 0-183.408 25.758-253.614 69.040 144.674 0.506 281.26 46.854 384.834 130.672 52.208 42.252 93.394 91.826 122.414 147.348 30.766 58.866 46.366 121.582 46.366 186.406 0 10.448-0.45 20.836-1.258 31.168 72.57-59.934 117.258-141.622 117.258-231.676 0-104.488-60.158-197.722-154.24-258.764-1.142-7.496-1.76-15.16-1.76-22.966z" horiz-adv-x="1152" />
36<glyph unicode="&#xe994;" d="M933.79 349.75c-53.726 93.054-21.416 212.304 72.152 266.488l-100.626 174.292c-28.75-16.854-62.176-26.518-97.846-26.518-107.536 0-194.708 87.746-194.708 195.99h-201.258c0.266-33.41-8.074-67.282-25.958-98.252-53.724-93.056-173.156-124.702-266.862-70.758l-100.624-174.292c28.97-16.472 54.050-40.588 71.886-71.478 53.638-92.908 21.512-211.92-71.708-266.224l100.626-174.292c28.65 16.696 61.916 26.254 97.4 26.254 107.196 0 194.144-87.192 194.7-194.958h201.254c-0.086 33.074 8.272 66.57 25.966 97.218 53.636 92.906 172.776 124.594 266.414 71.012l100.626 174.29c-28.78 16.466-53.692 40.498-71.434 71.228zM512 240.668c-114.508 0-207.336 92.824-207.336 207.334 0 114.508 92.826 207.334 207.336 207.334 114.508 0 207.332-92.826 207.332-207.334-0.002-114.51-92.824-207.334-207.332-207.334z" />
37<glyph unicode="&#xe9ca;" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512-0.002c-62.958 0-122.872 13.012-177.23 36.452l233.148 262.29c5.206 5.858 8.082 13.422 8.082 21.26v96c0 17.674-14.326 32-32 32-112.99 0-232.204 117.462-233.374 118.626-6 6.002-14.14 9.374-22.626 9.374h-128c-17.672 0-32-14.328-32-32v-192c0-12.122 6.848-23.202 17.69-28.622l110.31-55.156v-187.886c-116.052 80.956-192 215.432-192 367.664 0 68.714 15.49 133.806 43.138 192h116.862c8.488 0 16.626 3.372 22.628 9.372l128 128c6 6.002 9.372 14.14 9.372 22.628v77.412c40.562 12.074 83.518 18.588 128 18.588 70.406 0 137.004-16.26 196.282-45.2-4.144-3.502-8.176-7.164-12.046-11.036-36.266-36.264-56.236-84.478-56.236-135.764s19.97-99.5 56.236-135.764c36.434-36.432 85.218-56.264 135.634-56.26 3.166 0 6.342 0.080 9.518 0.236 13.814-51.802 38.752-186.656-8.404-372.334-0.444-1.744-0.696-3.488-0.842-5.224-81.324-83.080-194.7-134.656-320.142-134.656z" />
38<glyph unicode="&#xea2e;" d="M889.68 793.68c-93.608 102.216-228.154 166.32-377.68 166.32-282.77 0-512-229.23-512-512h96c0 229.75 186.25 416 416 416 123.020 0 233.542-53.418 309.696-138.306l-149.696-149.694h352v352l-134.32-134.32zM928 448c0-229.75-186.25-416-416-416-123.020 0-233.542 53.418-309.694 138.306l149.694 149.694h-352v-352l134.32 134.32c93.608-102.216 228.154-166.32 377.68-166.32 282.77 0 512 229.23 512 512h-96z" />
41</font></defs></svg> \ No newline at end of file 39</font></defs></svg> \ No newline at end of file
diff --git a/themes/baggy/fonts/icomoon.ttf b/themes/baggy/fonts/icomoon.ttf
index bb1f21f8..923f56d8 100644
--- a/themes/baggy/fonts/icomoon.ttf
+++ b/themes/baggy/fonts/icomoon.ttf
Binary files differ
diff --git a/themes/baggy/fonts/icomoon.woff b/themes/baggy/fonts/icomoon.woff
index bab13779..a2e86d36 100644
--- a/themes/baggy/fonts/icomoon.woff
+++ b/themes/baggy/fonts/icomoon.woff
Binary files 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 @@
25 {% block pager %} 25 {% block pager %}
26 {% if nb_results > 1 %} 26 {% if nb_results > 1 %}
27 <div class="results"> 27 <div class="results">
28 <div class="nb-results">{{ nb_results }} {% trans "results" %}{% if search_term is defined %} {% trans %}found for « {{ search_term }} »{% endtrans %}{% endif %}</div> 28 <div class="nb-results">{{ nb_results }} {% trans "results" %}{% if search_term is defined %} {% trans %}found for « {{ search_term }} »{% endtrans %}{% endif %} <a href="?action=random" class="icon icon-random"><span> {% trans "random" %}</span></a></div>
29 {{ page_links | raw }} 29 {{ page_links | raw }}
30 </div> 30 </div>
31 {% elseif nb_results == 1 %} 31 {% 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 @@
15 {% if constant('SHARE_TWITTER') == 1 %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="{% trans "Tweet" %}"><span>{% trans "Tweet" %}</span></a></li>{% endif %} 15 {% if constant('SHARE_TWITTER') == 1 %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="{% trans "Tweet" %}"><span>{% trans "Tweet" %}</span></a></li>{% endif %}
16 {% if constant('SHARE_MAIL') == 1 %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{% trans "Email" %}"><span>{% trans "Email" %}</span></a></li>{% endif %} 16 {% if constant('SHARE_MAIL') == 1 %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{% trans "Email" %}"><span>{% trans "Email" %}</span></a></li>{% endif %}
17 {% if constant('SHARE_SHAARLI') == 1 %}<li><a href="{{ constant('SHAARLI_URL') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans "shaarli" %}"><span>{% trans "shaarli" %}</span></a></li>{% endif %} 17 {% if constant('SHARE_SHAARLI') == 1 %}<li><a href="{{ constant('SHAARLI_URL') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans "shaarli" %}"><span>{% trans "shaarli" %}</span></a></li>{% endif %}
18 {% if constant('SHARE_EVERNOTE') == 1 %}<li><a href="https://www.evernote.com/clip.action?url={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool evernote icon icon-evernote" title="{% trans "evernote" %}"><span>{% trans "evernote" %}</span></a></li>{% endif %}
18 {% if constant('SHARE_DIASPORA') == 1 %}<li><a href="{{ constant('DIASPORA_URL') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="{% trans "diaspora" %}"><span>{% trans "diaspora" %}</span></a></li>{% endif %} 19 {% if constant('SHARE_DIASPORA') == 1 %}<li><a href="{{ constant('DIASPORA_URL') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="{% trans "diaspora" %}"><span>{% trans "diaspora" %}</span></a></li>{% endif %}
19 {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}<li><a href="http://flattr.com/submit/auto?url={{ entry.url }}" class="tool flattr icon icon-flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span></a></li>{% elseif flattr.status == constant('FLATTRED') %}<li><a href="{{ flattr.flattrItemURL }}" class="tool flattr icon icon-flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span> ({{ flattr.numFlattrs }})</a></li>{% endif %}{% endif %} 20 {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}<li><a href="http://flattr.com/submit/auto?url={{ entry.url }}" class="tool flattr icon icon-flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span></a></li>{% elseif flattr.status == constant('FLATTRED') %}<li><a href="{{ flattr.flattrItemURL }}" class="tool flattr icon icon-flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span> ({{ flattr.numFlattrs }})</a></li>{% endif %}{% endif %}
20 {% if constant('CARROT') == 1 %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon-image icon-image--carrot" target="_blank" title="{% trans "carrot" %}"><span>Carrot</span></a></li>{% endif %} 21 {% if constant('CARROT') == 1 %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon-image icon-image--carrot" target="_blank" title="{% trans "carrot" %}"><span>Carrot</span></a></li>{% endif %}
21 {% if constant('SHOW_PRINTLINK') == 1 %}<li><a title="{% trans "Print" %}" class="tool icon icon-print" href="javascript: window.print();"><span>{% trans "Print" %}</span></a></li>{% endif %} 22 {% if constant('SHOW_PRINTLINK') == 1 %}<li><a title="{% trans "Print" %}" class="tool icon icon-print" href="javascript: window.print();"><span>{% trans "Print" %}</span></a></li>{% endif %}
23 {% if constant('RELOAD_ARTICLE') == 1 %}<li><a class="tool reload icon icon-reload" href="./?action=reload_article&amp;id={{ entry.id|e }}" title="{% trans "Reload article" %}"><span>{% trans "Reload article" %}</span></a></li>{% endif %}
22 {% if constant('EPUB') == 1 %}<li><a href="./?epub&amp;method=id&amp;value={{ entry.id|e }}" title="Generate ePub file">EPUB</a></li>{% endif %} 24 {% if constant('EPUB') == 1 %}<li><a href="./?epub&amp;method=id&amp;value={{ entry.id|e }}" title="Generate ePub file">EPUB</a></li>{% endif %}
23 {% if constant('MOBI') == 1 %}<li><a href="./?mobi&amp;method=id&amp;value={{ entry.id|e }}" title="Generate Mobi file">MOBI</a></li>{% endif %} 25 {% if constant('MOBI') == 1 %}<li><a href="./?mobi&amp;method=id&amp;value={{ entry.id|e }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
24 {% if constant('PDF') == 1 %}<li><a href="./?pdf&amp;method=id&amp;value={{ entry.id|e }}" title="Generate PDF file">PDF</a></li>{% endif %} 26 {% if constant('PDF') == 1 %}<li><a href="./?pdf&amp;method=id&amp;value={{ entry.id|e }}" title="Generate PDF file">PDF</a></li>{% 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 @@
2 <a href="javascript: void(null);" id="bagit-form-close">&nbsp;</a> 2 <a href="javascript: void(null);" id="bagit-form-close">&nbsp;</a>
3 <form method="get" action="index.php" id="bagit-form-form"> 3 <form method="get" action="index.php" id="bagit-form-form">
4 <input required placeholder="example.com/article" class="addurl" id="plainurl" name="plainurl" type="url" /> 4 <input required placeholder="example.com/article" class="addurl" id="plainurl" name="plainurl" type="url" />
5 <div style="display:inline-block;cursor: pointer;" title="{% trans "Edit tags" %}" id="showtaginput" class="edit-tags">
6 <span id="showtaginput">Add tags</span>
7 </div>
8 <input placeholder="tags, with commas" class="addurl" id="tags2add" name="tags" type="text"/>
5 <input type="submit" value="{% trans "save link!" %}" /> 9 <input type="submit" value="{% trans "save link!" %}" />
6 <div id="add-link-result"></div> 10 <div id="add-link-result"></div>
7 </form> 11 </form>
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 @@
7{% block content %} 7{% block content %}
8 <h2>{% trans "About wallabag" %}</h2> 8 <h2>{% trans "About wallabag" %}</h2>
9 9
10 <p>{% 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." %}</p>
11
10 <dl> 12 <dl>
11 <dt>{% trans "Project website" %}</dt> 13 <dt>{% trans "Project website" %}</dt>
12 <dd><a href="http://www.wallabag.org">http://www.wallabag.org</a></dd> 14 <dd><a href="http://www.wallabag.org">http://www.wallabag.org</a></dd>
@@ -27,8 +29,6 @@
27 <dd>{{ constant('POCHE') }}</dd> 29 <dd>{{ constant('POCHE') }}</dd>
28 </dl> 30 </dl>
29 31
30 <p>{% 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." %}</p>
31
32 <h2>{% trans "Helping wallabag" %}</h2> 32 <h2>{% trans "Helping wallabag" %}</h2>
33 33
34 <p>{% trans "wallabag is free and opensource. You can help us:" %}</p> 34 <p>{% trans "wallabag is free and opensource. You can help us:" %}</p>
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 @@
27 </ul> 27 </ul>
28 <h3>{% trans "Bookmarklet" %}</h3> 28 <h3>{% trans "Bookmarklet" %}</h3>
29 <p> 29 <p>
30 {% trans "Drag &amp; drop this link to your bookmarks bar:" %} <a id="bookmarklet" ondragend="this.click();" href="javascript:if(top['bookmarklet-url@wallabag.org']){top['bookmarklet-url@wallabag.org'];}else{(function(){var%20url%20=%20location.href%20||%20url;window.open('{{ poche_url }}?action=add&url='%20+%20btoa(url),'_self');})();void(0);}">{% trans "bag it!" %}</a> 30 {% trans "Drag &amp; drop this link to your bookmarks bar:" %} <a id="bookmarklet" ondragend="this.click();" href="javascript:if(top['bookmarklet-url@wallabag.org']){top['bookmarklet-url@wallabag.org'];}else{(function(){var%20url%20=%20location.href%20||%20url;window.open('{{ poche_url }}?action=add&autoclose=true&url='%20+%20btoa(url),'_blank');})();void(0);}">{% trans "bag it!" %}</a>
31 </p> 31 </p>
32 32
33 <h2>{% trans "Feeds" %}</h2> 33 <h2>{% trans "Feeds" %}</h2>
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 {
43 background-size: 16px 16px; 43 background-size: 16px 16px;
44} 44}
45 45
46a.evernote span {
47 background-image: url('../../_global/img/icons/evernote-icon--black.svg');
48 background-size: 16px 16px;
49}
50
46a.diaspora span { 51a.diaspora span {
47 background-image: url('../../_global/img/icons/diaspora-icon--black.png'); 52 background-image: url('../../_global/img/icons/diaspora-icon--black.png');
48 background-size: 16px 16px; 53 background-size: 16px 16px;
@@ -67,3 +72,16 @@ a.bad-display span {
67a.print span { 72a.print span {
68 background-image: url('../img/default/print.png'); 73 background-image: url('../img/default/print.png');
69} 74}
75a.reload span {
76 background-image: url('../img/default/reload.png');
77}
78.edit-tags span {
79 background-image: url('../img/default/tags.png');
80 display: inline-block;
81 width: 16px;
82 height: 16px;
83 /* Hide textual content */
84 overflow: hidden;
85 text-align: left;
86 text-indent: -9999px;
87}
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 {
151 text-indent: -9999px; 151 text-indent: -9999px;
152} 152}
153 153
154.random {
155 display: inline-block;
156 width: 16px;
157 height: 16px;
158 overflow: hidden;
159 text-align: left;
160 text-indent: -9999px;
161 background-image: url('../img/default/dice.png');
162}
163
154/*** ***/ 164/*** ***/
155 165
156/*** ARTICLE PAGE ***/ 166/*** 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 @@
31 {% block pager %} 31 {% block pager %}
32 {% if nb_results > 1 %} 32 {% if nb_results > 1 %}
33 <div class="results"> 33 <div class="results">
34 <div class="nb-results">{{ nb_results }} {% trans "results" %}{% if searchterm is defined %}{% trans " found for « " %} {{ searchterm }} »{% endif %}</div> 34 <div class="nb-results">{{ nb_results }} {% trans "results" %}{% if searchterm is defined %}{% trans " found for « " %} {{ searchterm }} »{% endif %}
35 <a class="random" href="?action=random"><span>{% trans "random" %}</span></a></div>
35 {{ page_links | raw }} 36 {{ page_links | raw }}
36 </div> 37 </div>
37 {% elseif nb_results == 1 %} 38 {% 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
--- /dev/null
+++ b/themes/default/img/default/dice.png
Binary files differ
diff --git a/themes/default/img/default/reload.png b/themes/default/img/default/reload.png
new file mode 100644
index 00000000..4c0528e7
--- /dev/null
+++ b/themes/default/img/default/reload.png
Binary files differ
diff --git a/themes/default/img/default/tags.png b/themes/default/img/default/tags.png
new file mode 100644
index 00000000..3714203e
--- /dev/null
+++ b/themes/default/img/default/tags.png
Binary files 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 @@
14 {% if constant('SHARE_TWITTER') == 1 %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter" title="{% trans "Tweet" %}"><span>{% trans "Tweet" %}</span></a></li>{% endif %} 14 {% if constant('SHARE_TWITTER') == 1 %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter" title="{% trans "Tweet" %}"><span>{% trans "Tweet" %}</span></a></li>{% endif %}
15 {% if constant('SHARE_MAIL') == 1 %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email" title="{% trans "Email" %}"><span>{% trans "Email" %}</span></a></li>{% endif %} 15 {% if constant('SHARE_MAIL') == 1 %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email" title="{% trans "Email" %}"><span>{% trans "Email" %}</span></a></li>{% endif %}
16 {% if constant('SHARE_SHAARLI') == 1 %}<li><a href="{{ constant('SHAARLI_URL') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans "shaarli" %}"><span>{% trans "shaarli" %}</span></a></li>{% endif %} 16 {% if constant('SHARE_SHAARLI') == 1 %}<li><a href="{{ constant('SHAARLI_URL') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans "shaarli" %}"><span>{% trans "shaarli" %}</span></a></li>{% endif %}
17 {% if constant('SHARE_EVERNOTE') == 1 %}<li><a href="https://www.evernote.com/clip.action?url={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool evernote" title="{% trans "evernote" %}"><span>{% trans "evernote" %}</span></a></li>{% endif %}
17 {% if constant('SHARE_DIASPORA') == 1 %}<li><a href="{{ constant('DIASPORA_URL') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora" title="{% trans "diaspora" %}"><span>{% trans "diaspora" %}</span></a></li>{% endif %} 18 {% if constant('SHARE_DIASPORA') == 1 %}<li><a href="{{ constant('DIASPORA_URL') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora" title="{% trans "diaspora" %}"><span>{% trans "diaspora" %}</span></a></li>{% endif %}
18 {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}<li><a href="http://flattr.com/submit/auto?url={{ entry.url }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span></a></li>{% elseif flattr.status == constant('FLATTRED') %}<li><a href="{{ flattr.flattrItemURL }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span>{{ flattr.numFlattrs }}</a></li>{% endif %}{% endif %} 19 {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}<li><a href="http://flattr.com/submit/auto?url={{ entry.url }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span></a></li>{% elseif flattr.status == constant('FLATTRED') %}<li><a href="{{ flattr.flattrItemURL }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span>{{ flattr.numFlattrs }}</a></li>{% endif %}{% endif %}
19 {% if constant('CARROT') == 1 %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon" target="_blank" title="{% trans "carrot" %}"><span>{% trans "carrot" %}</span></a></li>{% endif %} 20 {% if constant('CARROT') == 1 %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon" target="_blank" title="{% trans "carrot" %}"><span>{% trans "carrot" %}</span></a></li>{% endif %}
20 {% if constant('SHOW_PRINTLINK') == 1 %}<li><a title="{% trans "Print" %}" class="tool print" href="javascript: window.print();"><span>{% trans "Print" %}</span></a></li>{% endif %} 21 {% if constant('SHOW_PRINTLINK') == 1 %}<li><a title="{% trans "Print" %}" class="tool print" href="javascript: window.print();"><span>{% trans "Print" %}</span></a></li>{% endif %}
22 {% if constant('RELOAD_ARTICLE') == 1 %}<li><a class="tool reload" href="./?action=reload_article&amp;id={{ entry.id|e }}" title="{% trans "Reload article" %}"><span>{% trans "Reload article" %}</span></a></li>{% endif %}}
21 {% if constant('EPUB') == 1 %}<li><a href="./?epub&amp;method=id&amp;value={{ entry.id|e }}" title="Generate ePub file">EPUB</a></li>{% endif %} 23 {% if constant('EPUB') == 1 %}<li><a href="./?epub&amp;method=id&amp;value={{ entry.id|e }}" title="Generate ePub file">EPUB</a></li>{% endif %}
22 {% if constant('MOBI') == 1 %}<li><a href="./?mobi&amp;method=id&amp;value={{ entry.id|e }}" title="Generate Mobi file">MOBI</a></li>{% endif %} 24 {% if constant('MOBI') == 1 %}<li><a href="./?mobi&amp;method=id&amp;value={{ entry.id|e }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
23 {% if constant('PDF') == 1 %}<li><a href="./?pdf&amp;method=id&amp;value={{ entry.id|e }}" title="Generate PDF file">PDF</a></li>{% endif %} 25 {% if constant('PDF') == 1 %}<li><a href="./?pdf&amp;method=id&amp;value={{ entry.id|e }}" title="Generate PDF file">PDF</a></li>{% endif %}