diff options
29 files changed, 1823 insertions, 1004 deletions
diff --git a/composer.json b/composer.json index 6c69e48d..a63f2893 100644 --- a/composer.json +++ b/composer.json | |||
@@ -1,4 +1,27 @@ | |||
1 | { | 1 | { |
2 | "name": "wallabag/wallabag", | ||
3 | "type": "project", | ||
4 | "description": "open source self hostable read-it-later web application", | ||
5 | "keywords": ["read-it-later","read it later"], | ||
6 | "homepage": "https://github.com/wallabag/wallabag", | ||
7 | "license": "MIT", | ||
8 | "authors": [ | ||
9 | { | ||
10 | "name": "Nicolas LÅ“uillet", | ||
11 | "email": "nicolas@loeuillet.org", | ||
12 | "homepage": "http://www.cdetc.fr", | ||
13 | "role": "Developer" | ||
14 | }, | ||
15 | { | ||
16 | "name": "Thomas Citharel", | ||
17 | "homepage": "http://tcit.fr", | ||
18 | "role": "Developer" | ||
19 | } | ||
20 | ], | ||
21 | "support": { | ||
22 | "email": "hello@wallabag.org", | ||
23 | "issues": "https://github.com/wallabag/wallabag/issues" | ||
24 | }, | ||
2 | "require": { | 25 | "require": { |
3 | "twig/twig": "1.*", | 26 | "twig/twig": "1.*", |
4 | "twig/extensions": "1.0.*", | 27 | "twig/extensions": "1.0.*", |
diff --git a/inc/3rdparty/libraries/tcpdf/tcpdf.php b/inc/3rdparty/libraries/tcpdf/tcpdf.php index 78694a0e..70c1747a 100644 --- a/inc/3rdparty/libraries/tcpdf/tcpdf.php +++ b/inc/3rdparty/libraries/tcpdf/tcpdf.php | |||
@@ -2927,11 +2927,17 @@ class TCPDF { | |||
2927 | public function Error($msg) { | 2927 | public function Error($msg) { |
2928 | // unset all class variables | 2928 | // unset all class variables |
2929 | $this->_destroy(true); | 2929 | $this->_destroy(true); |
2930 | throw new Exception('TCPDF ERROR: '.$msg); | ||
2931 | /* | ||
2932 | |||
2933 | I had problems with the constants for some reason, so here we force | ||
2934 | |||
2935 | $this->_destroy(true); | ||
2930 | if (defined('K_TCPDF_THROW_EXCEPTION_ERROR') AND !K_TCPDF_THROW_EXCEPTION_ERROR) { | 2936 | if (defined('K_TCPDF_THROW_EXCEPTION_ERROR') AND !K_TCPDF_THROW_EXCEPTION_ERROR) { |
2931 | die('<strong>TCPDF ERROR: </strong>'.$msg); | 2937 | die('<strong>TCPDF ERROR: </strong>'.$msg); |
2932 | } else { | 2938 | } else { |
2933 | throw new Exception('TCPDF ERROR: '.$msg); | 2939 | throw new Exception('TCPDF ERROR: '.$msg); |
2934 | } | 2940 | }*/ |
2935 | } | 2941 | } |
2936 | 2942 | ||
2937 | /** | 2943 | /** |
@@ -6915,7 +6921,7 @@ class TCPDF { | |||
6915 | $ph = $this->getHTMLUnitToUnits($h, 0, $this->pdfunit, true) * $this->imgscale * $this->k; | 6921 | $ph = $this->getHTMLUnitToUnits($h, 0, $this->pdfunit, true) * $this->imgscale * $this->k; |
6916 | $imsize = array($pw, $ph); | 6922 | $imsize = array($pw, $ph); |
6917 | } else { | 6923 | } else { |
6918 | $this->Error('[Image] Unable to get the size of the image: '.$file); | 6924 | $this->Error('[Image] Unable to fetch image: '.$file); |
6919 | } | 6925 | } |
6920 | } | 6926 | } |
6921 | // file hash | 6927 | // file hash |
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 6a742019..a601f0a8 100755 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php | |||
@@ -195,10 +195,11 @@ class Poche | |||
195 | } | 195 | } |
196 | 196 | ||
197 | if ($autoclose == TRUE) { | 197 | if ($autoclose == TRUE) { |
198 | Tools::redirect('?view=home'); | 198 | Tools::redirect('?view=home&closewin=true'); |
199 | } else { | 199 | } else { |
200 | Tools::redirect('?view=home&closewin=true'); | 200 | Tools::redirect('?view=home'); |
201 | } | 201 | } |
202 | return $last_id; | ||
202 | break; | 203 | break; |
203 | case 'delete': | 204 | case 'delete': |
204 | if (isset($_GET['search'])) { | 205 | if (isset($_GET['search'])) { |
@@ -336,6 +337,27 @@ class Poche | |||
336 | $this->messages->add('s', _('The tag has been successfully deleted')); | 337 | $this->messages->add('s', _('The tag has been successfully deleted')); |
337 | Tools::redirect(); | 338 | Tools::redirect(); |
338 | break; | 339 | break; |
340 | |||
341 | case 'reload_article' : | ||
342 | Tools::logm('reload article'); | ||
343 | $id = $_GET['id']; | ||
344 | $entry = $this->store->retrieveOneById($id, $this->user->getId()); | ||
345 | Tools::logm('reload url ' . $entry['url']); | ||
346 | $url = new Url(base64_encode($entry['url'])); | ||
347 | $this->action('add', $url); | ||
348 | break; | ||
349 | |||
350 | /* 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 */ | ||
351 | case 'random': | ||
352 | $id = 0; | ||
353 | while ($this->store->retrieveOneById($id,$this->user->getId()) == null) { | ||
354 | $count = $this->store->getEntriesByViewCount($view, $this->user->getId()); | ||
355 | $id = rand(1,$count); | ||
356 | } | ||
357 | Tools::logm('get a random article'); | ||
358 | Tools::redirect('?view=view&id=' . $id); | ||
359 | //$this->displayView('view', $id); | ||
360 | break; | ||
339 | default: | 361 | default: |
340 | break; | 362 | break; |
341 | } | 363 | } |
@@ -576,6 +598,8 @@ class Poche | |||
576 | Tools::redirect($referer); | 598 | Tools::redirect($referer); |
577 | } | 599 | } |
578 | $this->messages->add('e', _('login failed: bad login or password')); | 600 | $this->messages->add('e', _('login failed: bad login or password')); |
601 | // log login failure in web server log to allow fail2ban usage | ||
602 | error_log('user '.$login.' authentication failure'); | ||
579 | Tools::logm('login failed'); | 603 | Tools::logm('login failed'); |
580 | Tools::redirect(); | 604 | Tools::redirect(); |
581 | } | 605 | } |
@@ -661,7 +685,18 @@ class Poche | |||
661 | $urlsInserted[] = $url; //add | 685 | $urlsInserted[] = $url; //add |
662 | if (isset($record['tags']) && trim($record['tags'])) { | 686 | if (isset($record['tags']) && trim($record['tags'])) { |
663 | 687 | ||
664 | // @TODO: set tags | 688 | $tags = explode(',', $record['tags']); |
689 | foreach($tags as $tag) { | ||
690 | $entry_id = $id; | ||
691 | $tag_id = $this->store->retrieveTagByValue($tag); | ||
692 | if ($tag_id) { | ||
693 | $this->store->setTagToEntry($tag_id['id'], $entry_id); | ||
694 | } else { | ||
695 | $this->store->createTag($tag); | ||
696 | $tag_id = $this->store->retrieveTagByValue($tag); | ||
697 | $this->store->setTagToEntry($tag_id['id'], $entry_id); | ||
698 | } | ||
699 | } | ||
665 | 700 | ||
666 | } | 701 | } |
667 | } | 702 | } |
diff --git a/inc/poche/Routing.class.php b/inc/poche/Routing.class.php index be06a433..709831d5 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(isset($_SERVER['PHP_AUTH_USER'])) { | 71 | } elseif(isset($_SERVER['PHP_AUTH_USER'])) { |
@@ -116,7 +117,7 @@ class Routing | |||
116 | // update password | 117 | // update password |
117 | $this->wallabag->updatePassword($_POST['password'], $_POST['password_repeat']); | 118 | $this->wallabag->updatePassword($_POST['password'], $_POST['password_repeat']); |
118 | } elseif (isset($_GET['newuser'])) { | 119 | } elseif (isset($_GET['newuser'])) { |
119 | $this->wallabag->createNewUser($_POST['newusername'], $_POST['password4newuser']); | 120 | $this->wallabag->createNewUser($_POST['newusername'], $_POST['password4newuser'], $_POST['newuseremail']); |
120 | } elseif (isset($_GET['deluser'])) { | 121 | } elseif (isset($_GET['deluser'])) { |
121 | $this->wallabag->deleteUser($_POST['password4deletinguser']); | 122 | $this->wallabag->deleteUser($_POST['password4deletinguser']); |
122 | } elseif (isset($_GET['epub'])) { | 123 | } elseif (isset($_GET['epub'])) { |
diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index bc40990b..55831571 100644 --- a/inc/poche/WallabagEBooks.class.php +++ b/inc/poche/WallabagEBooks.class.php | |||
@@ -33,7 +33,7 @@ class WallabagEBooks | |||
33 | $entry = $this->wallabag->store->retrieveOneById($entryID, $this->wallabag->user->getId()); | 33 | $entry = $this->wallabag->store->retrieveOneById($entryID, $this->wallabag->user->getId()); |
34 | $this->entries = array($entry); | 34 | $this->entries = array($entry); |
35 | $this->bookTitle = $entry['title']; | 35 | $this->bookTitle = $entry['title']; |
36 | $this->bookFileName = substr($this->bookTitle, 0, 200); | 36 | $this->bookFileName = str_replace('/', '_', substr($this->bookTitle, 0, 200)); |
37 | $this->author = preg_replace('#^w{3}.#', '', Tools::getdomain($entry["url"])); # if only one article, set author to domain name (we strip the eventual www part) | 37 | $this->author = preg_replace('#^w{3}.#', '', Tools::getdomain($entry["url"])); # if only one article, set author to domain name (we strip the eventual www part) |
38 | Tools::logm('Producing ebook from article ' . $this->bookTitle); | 38 | Tools::logm('Producing ebook from article ' . $this->bookTitle); |
39 | break; | 39 | break; |
@@ -81,6 +81,9 @@ class WallabagEpub extends WallabagEBooks | |||
81 | public function produceEpub() | 81 | public function produceEpub() |
82 | { | 82 | { |
83 | Tools::logm('Starting to produce ePub 3 file'); | 83 | Tools::logm('Starting to produce ePub 3 file'); |
84 | |||
85 | try { | ||
86 | |||
84 | $content_start = | 87 | $content_start = |
85 | "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" | 88 | "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" |
86 | . "<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:epub=\"http://www.idpf.org/2007/ops\">\n" | 89 | . "<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:epub=\"http://www.idpf.org/2007/ops\">\n" |
@@ -155,6 +158,11 @@ class WallabagEpub extends WallabagEBooks | |||
155 | $book->finalize(); | 158 | $book->finalize(); |
156 | $zipData = $book->sendBook($this->bookFileName); | 159 | $zipData = $book->sendBook($this->bookFileName); |
157 | Tools::logm('Ebook produced'); | 160 | Tools::logm('Ebook produced'); |
161 | } | ||
162 | catch (Exception $e) { | ||
163 | Tools::logm('PHPePub has encountered an error : '.$e->getMessage()); | ||
164 | $this->wallabag->messages->add('e', $e->getMessage()); | ||
165 | } | ||
158 | } | 166 | } |
159 | } | 167 | } |
160 | 168 | ||
@@ -167,7 +175,7 @@ class WallabagMobi extends WallabagEBooks | |||
167 | 175 | ||
168 | public function produceMobi() | 176 | public function produceMobi() |
169 | { | 177 | { |
170 | 178 | try { | |
171 | Tools::logm('Starting to produce Mobi file'); | 179 | Tools::logm('Starting to produce Mobi file'); |
172 | $mobi = new MOBI(); | 180 | $mobi = new MOBI(); |
173 | $content = new MOBIFile(); | 181 | $content = new MOBIFile(); |
@@ -194,9 +202,17 @@ class WallabagMobi extends WallabagEBooks | |||
194 | } | 202 | } |
195 | $mobi->setContentProvider($content); | 203 | $mobi->setContentProvider($content); |
196 | 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 | |||
197 | // we offer file to download | 208 | // we offer file to download |
198 | $mobi->download($this->bookFileName.'.mobi'); | 209 | $mobi->download($this->bookFileName.'.mobi'); |
199 | Tools::logm('Mobi file produced'); | 210 | Tools::logm('Mobi file produced'); |
211 | } | ||
212 | catch (Exception $e) { | ||
213 | Tools::logm('PHPMobi has encountered an error : '.$e->getMessage()); | ||
214 | $this->wallabag->messages->add('e', $e->getMessage()); | ||
215 | } | ||
200 | } | 216 | } |
201 | } | 217 | } |
202 | 218 | ||
@@ -206,15 +222,16 @@ class WallabagPDF extends WallabagEbooks | |||
206 | { | 222 | { |
207 | 223 | ||
208 | Tools::logm('Starting to produce PDF file'); | 224 | Tools::logm('Starting to produce PDF file'); |
209 | 225 | @define ('K_TCPDF_THROW_EXCEPTION_ERROR', TRUE); | |
226 | try { | ||
210 | $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); | 227 | $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); |
211 | 228 | ||
212 | Tools::logm('Filling metadata for PDF...'); | 229 | Tools::logm('Filling metadata for PDF...'); |
213 | $pdf->SetCreator(PDF_CREATOR); | 230 | $pdf->SetCreator(PDF_CREATOR); |
214 | $pdf->SetAuthor(''); | 231 | $pdf->SetAuthor('wallabag'); |
215 | $pdf->SetTitle($this->bookTitle); | 232 | $pdf->SetTitle($this->bookTitle); |
216 | $pdf->SetSubject('TCPDF Tutorial'); | 233 | $pdf->SetSubject('Articles via wallabag'); |
217 | $pdf->SetKeywords('TCPDF, PDF, example, test, guide'); | 234 | $pdf->SetKeywords('wallabag'); |
218 | 235 | ||
219 | Tools::logm('Adding introduction...'); | 236 | Tools::logm('Adding introduction...'); |
220 | $pdf->AddPage(); | 237 | $pdf->AddPage(); |
@@ -229,18 +246,26 @@ class WallabagPDF extends WallabagEbooks | |||
229 | $i = 1; | 246 | $i = 1; |
230 | Tools::logm('Adding actual content...'); | 247 | Tools::logm('Adding actual content...'); |
231 | foreach ($this->entries as $item) { | 248 | foreach ($this->entries as $item) { |
249 | $tags = $this->wallabag->store->retrieveTagsByEntry($entry['id']); | ||
250 | foreach ($tags as $tag) { | ||
251 | $pdf->SetKeywords($tag['value']); | ||
252 | } | ||
232 | $pdf->AddPage(); | 253 | $pdf->AddPage(); |
233 | $html = '<h1>' . $item['title'] . '</h1>'; | 254 | $html = '<h1>' . $item['title'] . '</h1>'; |
234 | $html .= $item['content']; | 255 | $html .= $item['content']; |
235 | $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true); | 256 | $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true); |
236 | $i = $i+1; | ||
237 | } | 257 | } |
238 | 258 | ||
239 | // set image scale factor | 259 | // set image scale factor |
240 | $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); | 260 | $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); |
241 | 261 | ||
242 | 262 | ||
243 | $pdf->Output($this->bookFileName . '.pdf', 'FD'); | 263 | $pdf->Output($this->bookFileName . '.pdf', 'FD'); |
264 | } | ||
265 | catch (Exception $e) { | ||
266 | Tools::logm('TCPDF has encountered an error : '.$e->getMessage()); | ||
267 | $this->wallabag->messages->add('e', $e->getMessage()); | ||
268 | } | ||
244 | 269 | ||
245 | } | 270 | } |
246 | } | 271 | } |
diff --git a/inc/poche/config.inc.default.php b/inc/poche/config.inc.default.php index a159e713..91b50c24 100755 --- a/inc/poche/config.inc.default.php +++ b/inc/poche/config.inc.default.php | |||
@@ -44,6 +44,7 @@ | |||
44 | @define ('SHARE_MAIL', TRUE); | 44 | @define ('SHARE_MAIL', TRUE); |
45 | @define ('SHARE_SHAARLI', FALSE); | 45 | @define ('SHARE_SHAARLI', FALSE); |
46 | @define ('SHAARLI_URL', 'http://myshaarliurl.com'); | 46 | @define ('SHAARLI_URL', 'http://myshaarliurl.com'); |
47 | @define ('SHARE_EVERNOTE', FALSE); | ||
47 | @define ('SHARE_DIASPORA', FALSE); | 48 | @define ('SHARE_DIASPORA', FALSE); |
48 | @define ('DIASPORA_URL', 'http://diasporapod.com'); # Don't add a / at the end | 49 | @define ('DIASPORA_URL', 'http://diasporapod.com'); # Don't add a / at the end |
49 | @define ('FLATTR', TRUE); | 50 | @define ('FLATTR', TRUE); |
@@ -62,6 +63,7 @@ | |||
62 | @define ('SHOW_PRINTLINK', '1'); | 63 | @define ('SHOW_PRINTLINK', '1'); |
63 | // display or not percent of read in article view. Affects only default theme. | 64 | // display or not percent of read in article view. Affects only default theme. |
64 | @define ('SHOW_READPERCENT', '1'); | 65 | @define ('SHOW_READPERCENT', '1'); |
66 | @define ('RELOAD_ARTICLE', TRUE); | ||
65 | @define ('ABS_PATH', 'assets/'); | 67 | @define ('ABS_PATH', 'assets/'); |
66 | 68 | ||
67 | @define ('DEFAULT_THEME', 'baggy'); | 69 | @define ('DEFAULT_THEME', 'baggy'); |
diff --git a/install/index.php b/install/index.php index ec504160..30bc2f6b 100755 --- a/install/index.php +++ b/install/index.php | |||
@@ -11,18 +11,7 @@ | |||
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 | require_once('install_functions.php'); |
15 | * Idea : nbari at dalmp dot com | ||
16 | * Rights unknown | ||
17 | * Here in case of .gitignore files | ||
18 | */ | ||
19 | function 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 | 15 | ||
27 | if (isset($_GET['clean'])) { | 16 | if (isset($_GET['clean'])) { |
28 | if (is_dir('install')){ | 17 | if (is_dir('install')){ |
@@ -58,136 +47,115 @@ if (isset($_POST['download'])) { | |||
58 | else if (isset($_POST['install'])) { | 47 | else if (isset($_POST['install'])) { |
59 | if (!is_dir('vendor')) { | 48 | if (!is_dir('vendor')) { |
60 | $errors[] = 'You must install twig before.'; | 49 | $errors[] = 'You must install twig before.'; |
61 | } | 50 | } else { |
62 | else { | ||
63 | $continue = true; | 51 | $continue = true; |
64 | // Create config.inc.php | 52 | $salt = generate_salt(); |
65 | if (!copy('inc/poche/config.inc.default.php', 'inc/poche/config.inc.php')) { | 53 | $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 | 54 | ||
81 | if ($continue) { | 55 | // User informations |
56 | $username = trim($_POST['username']); | ||
57 | $password = trim($_POST['password']); | ||
58 | $salted_password = sha1($password . $username . $salt); | ||
82 | 59 | ||
83 | // User informations | 60 | // Database informations |
84 | $username = trim($_POST['username']); | 61 | $moreQueries = array(); |
85 | $password = trim($_POST['password']); | ||
86 | $salted_password = sha1($password . $username . $salt); | ||
87 | 62 | ||
88 | // Database informations | 63 | if ($_POST['db_engine'] == 'sqlite') { |
89 | $moreQueries = array(); | 64 | if (!copy('install/poche.sqlite', 'db/poche.sqlite')) { |
90 | if ($_POST['db_engine'] == 'sqlite') { | 65 | $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 | } | 66 | } |
101 | else { | 67 | else { |
102 | $content = file_get_contents('inc/poche/config.inc.php'); | 68 | $db_path = 'sqlite:' . realpath('') . '/db/poche.sqlite'; |
69 | $handle = new PDO($db_path); | ||
70 | $handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); | ||
71 | $sql_structure = ""; | ||
72 | } | ||
73 | } else { | ||
74 | // MySQL and Postgre | ||
75 | try { | ||
103 | 76 | ||
104 | if ($_POST['db_engine'] == 'mysql') { | 77 | if ($_POST['db_engine'] == 'mysql') { |
78 | if (isset($_POST['mysql_utf8_mb4'])) { | ||
79 | //with UTF8-MB4 | ||
105 | $db_path = 'mysql:host=' . $_POST['mysql_server'] . ';dbname=' . $_POST['mysql_database'] . ';charset=utf8mb4'; | 80 | $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( | 81 | $handle = new PDO($db_path, $_POST['mysql_user'], $_POST['mysql_password'], array( |
111 | PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4', | 82 | PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4', |
112 | )); | 83 | )); |
84 | } else { // regular UTF8 | ||
85 | $db_path = 'mysql:host=' . $_POST['mysql_server'] . ';dbname=' . $_POST['mysql_database']; | ||
86 | $handle = new PDO($db_path, $_POST['mysql_user'], $_POST['mysql_password']); | ||
87 | } | ||
88 | $content = str_replace("define ('STORAGE_SERVER', 'localhost');", "define ('STORAGE_SERVER', '".$_POST['mysql_server']."');", $content); | ||
89 | $content = str_replace("define ('STORAGE_DB', 'poche');", "define ('STORAGE_DB', '".$_POST['mysql_database']."');", $content); | ||
90 | $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['mysql_user']."');", $content); | ||
91 | $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['mysql_password']."');", $content); | ||
113 | 92 | ||
114 | $moreQueries[] = "INSERT INTO `entries` (`id`, `title`, `url`, `is_read`, `is_fav`, `content`, `user_id`) VALUES | 93 | $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), | 94 | (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), | 95 | (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);"; | 96 | (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');"; | 97 | $moreQueries[] = "INSERT INTO `tags` (`id`, `value`) VALUES (1, 'opensource');"; |
119 | $moreQueries[] = "INSERT INTO `tags_entries` (`id`, `entry_id`, `tag_id`) VALUES (1, 2, 1);"; | 98 | $moreQueries[] = "INSERT INTO `tags_entries` (`id`, `entry_id`, `tag_id`) VALUES (1, 2, 1);"; |
120 | 99 | ||
121 | $sql_structure = file_get_contents('install/mysql.sql'); | 100 | $sql_structure = file_get_contents('install/mysql.sql'); |
122 | } | 101 | } |
123 | else if ($_POST['db_engine'] == 'postgres') { | 102 | else if ($_POST['db_engine'] == 'postgres') { |
124 | $db_path = 'pgsql:host=' . $_POST['pg_server'] . ';dbname=' . $_POST['pg_database']; | 103 | $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); | 104 | $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); | 105 | $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); | 106 | $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); | 107 | $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']); | 108 | $handle = new PDO($db_path, $_POST['pg_user'], $_POST['pg_password']); |
130 | 109 | ||
131 | $moreQueries[] = "INSERT INTO entries (title, url, is_read, is_fav, content, user_id) VALUES | 110 | $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), | 111 | ('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), | 112 | ('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)"; | 113 | ('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')"; | 114 | $moreQueries[] = "INSERT INTO tags (value) VALUES ('opensource')"; |
136 | $moreQueries[] = "INSERT INTO tags_entries (entry_id, tag_id) VALUES (2, 1)"; | 115 | $moreQueries[] = "INSERT INTO tags_entries (entry_id, tag_id) VALUES (2, 1)"; |
137 | |||
138 | $sql_structure = file_get_contents('install/postgres.sql'); | ||
139 | } | ||
140 | 116 | ||
141 | $content = str_replace("define ('STORAGE', 'sqlite');", "define ('STORAGE', '".$_POST['db_engine']."');", $content); | 117 | $sql_structure = file_get_contents('install/postgres.sql'); |
142 | file_put_contents('inc/poche/config.inc.php', $content); | ||
143 | } | 118 | } |
119 | // create database structure | ||
120 | $query = $handle->exec($sql_structure); | ||
121 | } catch (PDOException $e) { | ||
122 | $errors[] = $e->getMessage(); | ||
123 | $continue = false; | ||
124 | } | ||
125 | } | ||
126 | } | ||
127 | if ($continue) { | ||
128 | $sql = "INSERT INTO users (username, password, name, email) VALUES (?, ?, ?, '')"; | ||
129 | $params = array($username, $salted_password, $username); | ||
130 | $query = executeQuery($handle, $sql, $params); | ||
144 | 131 | ||
145 | if ($continue) { | 132 | $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 | 133 | ||
174 | $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; | 134 | $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; |
175 | $params = array($id_user, 'pager', '10'); | 135 | $params = array($id_user, 'pager', '10'); |
176 | $query = executeQuery($handle, $sql, $params); | 136 | $query = executeQuery($handle, $sql, $params); |
177 | 137 | ||
178 | $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; | 138 | $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; |
179 | $params = array($id_user, 'language', 'en_EN.UTF8'); | 139 | $params = array($id_user, 'language', 'en_EN.UTF8'); |
180 | $query = executeQuery($handle, $sql, $params); | 140 | $query = executeQuery($handle, $sql, $params); |
181 | 141 | ||
182 | foreach ($moreQueries as $query) { | 142 | foreach ($moreQueries as $query) { |
183 | executeQuery($handle, $query, array()); | 143 | executeQuery($handle, $query, array()); |
184 | } | 144 | } |
145 | $successes[] = 'wallabag is now installed. You can now <a href="index.php?clean=0">access it !</a>'; | ||
185 | 146 | ||
186 | $successes[] = 'wallabag is now installed. You can now <a href="index.php?clean=0">access it !</a>'; | 147 | if (!copy('inc/poche/config.inc.default.php', 'inc/poche/config.inc.php')) { |
187 | } | 148 | $errors[] = 'Installation aborted, impossible to create inc/poche/config.inc.php file. Maybe you don\'t have write access to create it.'; |
149 | } else { | ||
150 | if ($_POST['db_engine'] != 'sqlite') { | ||
151 | $content = str_replace("define ('STORAGE', 'sqlite');", "define ('STORAGE', '".$_POST['db_engine']."');", $content); | ||
152 | file_put_contents('inc/poche/config.inc.php', $content); | ||
188 | } | 153 | } |
154 | $content = str_replace("define ('SALT', '');", "define ('SALT', '".$salt."');", $content); | ||
155 | file_put_contents('inc/poche/config.inc.php', $content); | ||
189 | } | 156 | } |
190 | } | 157 | } |
158 | } | ||
191 | ?> | 159 | ?> |
192 | <!DOCTYPE html> | 160 | <!DOCTYPE html> |
193 | <html> | 161 | <html> |
@@ -210,6 +178,160 @@ else if (isset($_POST['install'])) { | |||
210 | <link rel="stylesheet" href="themes/baggy/css/print.css" media="print"> | 178 | <link rel="stylesheet" href="themes/baggy/css/print.css" media="print"> |
211 | <script src="themes/_global/js/jquery-2.0.3.min.js"></script> | 179 | <script src="themes/_global/js/jquery-2.0.3.min.js"></script> |
212 | <script src="themes/baggy/js/init.js"></script> | 180 | <script src="themes/baggy/js/init.js"></script> |
181 | |||
182 | |||
183 | <style type="text/css"> | ||
184 | a { | ||
185 | color:#000; | ||
186 | text-decoration:underline; | ||
187 | padding:0 1px; | ||
188 | } | ||
189 | a:hover { | ||
190 | color:#fff; | ||
191 | background-color:#333; | ||
192 | text-decoration:none; | ||
193 | padding:0 1px; | ||
194 | } | ||
195 | p { | ||
196 | margin:0; | ||
197 | padding:5px 0; | ||
198 | } | ||
199 | em { | ||
200 | font-style:normal; | ||
201 | background-color:#ffc; | ||
202 | padding: 0.1em 0; | ||
203 | } | ||
204 | ul, ol { | ||
205 | margin:10px 0 10px 20px; | ||
206 | padding:0 0 0 15px; | ||
207 | } | ||
208 | ul li, ol li { | ||
209 | margin:0 0 7px 0; | ||
210 | padding:0 0 0 3px; | ||
211 | } | ||
212 | h2 { | ||
213 | font-size:18px; | ||
214 | padding:0; | ||
215 | } | ||
216 | h3 { | ||
217 | font-size:16px; | ||
218 | padding:0; | ||
219 | margin:20px 0 5px 0; | ||
220 | } | ||
221 | h4 { | ||
222 | font-size:14px; | ||
223 | padding:0; | ||
224 | margin:15px 0 5px 0; | ||
225 | } | ||
226 | code { | ||
227 | font-size:1.1em; | ||
228 | background-color:#f3f3ff; | ||
229 | color:#000; | ||
230 | } | ||
231 | em strong { | ||
232 | text-transform: uppercase; | ||
233 | } | ||
234 | table#chart { | ||
235 | border-collapse:collapse; | ||
236 | } | ||
237 | table#chart th { | ||
238 | background-color:#eee; | ||
239 | padding:2px 3px; | ||
240 | border:1px solid #fff; | ||
241 | } | ||
242 | table#chart td { | ||
243 | text-align:center; | ||
244 | padding:2px 3px; | ||
245 | border:1px solid #eee; | ||
246 | } | ||
247 | table#chart tr.enabled td { | ||
248 | /* Leave this alone */ | ||
249 | } | ||
250 | table#chart tr.disabled td, | ||
251 | table#chart tr.disabled td a { | ||
252 | } | ||
253 | table#chart tr.disabled td a { | ||
254 | text-decoration:underline; | ||
255 | } | ||
256 | div.chunk { | ||
257 | margin:20px 0 0 0; | ||
258 | padding:0 0 10px 0; | ||
259 | border-bottom:1px solid #ccc; | ||
260 | } | ||
261 | .footnote, | ||
262 | .footnote a { | ||
263 | font:10px/12px verdana, sans-serif; | ||
264 | color:#aaa; | ||
265 | } | ||
266 | .footnote em { | ||
267 | background-color:transparent; | ||
268 | font-style:italic; | ||
269 | } | ||
270 | .good{ | ||
271 | background-color:#52CC5B; | ||
272 | } | ||
273 | .bad{ | ||
274 | background-color:#F74343; | ||
275 | font-style:italic; | ||
276 | font-weight: bold; | ||
277 | } | ||
278 | .pass{ | ||
279 | background-color:#FF9500; | ||
280 | } | ||
281 | .detail { | ||
282 | cursor: pointer; | ||
283 | } | ||
284 | .descriptions { | ||
285 | margin-left: 10%; | ||
286 | position: relative; | ||
287 | top: 50%; | ||
288 | } | ||
289 | .database_inputs { | ||
290 | float: left; | ||
291 | width: 50% | ||
292 | } | ||
293 | .database_info { | ||
294 | width: 100%; | ||
295 | overflow: auto; | ||
296 | } | ||
297 | .compatibity_result { | ||
298 | margin: auto; | ||
299 | max-width: 300px; | ||
300 | min-height: 50px; | ||
301 | line-height: 50px; | ||
302 | text-align: center; | ||
303 | margin-bottom: 30px; | ||
304 | border-radius: 3px; | ||
305 | } | ||
306 | |||
307 | h2, legend { | ||
308 | font-size: 30px; | ||
309 | text-transform: uppercase; | ||
310 | font-family: "PT Sans",sans-serif; | ||
311 | } | ||
312 | |||
313 | legend:after { | ||
314 | content: ""; | ||
315 | height: 4px; | ||
316 | width: 70px; | ||
317 | background-color: #000; | ||
318 | display: block; | ||
319 | } | ||
320 | #reloadpage { | ||
321 | cursor: pointer; | ||
322 | background-color: #000; | ||
323 | color: #FFF; | ||
324 | padding: 0.5em 1em; | ||
325 | display: inline-block; | ||
326 | border: 1px solid #000; | ||
327 | } | ||
328 | #reloadpage:hover { | ||
329 | background-color: #FFF; | ||
330 | color: #000; | ||
331 | } | ||
332 | |||
333 | </style> | ||
334 | |||
213 | </head> | 335 | </head> |
214 | <body> | 336 | <body> |
215 | <header class="w600p center mbm"> | 337 | <header class="w600p center mbm"> |
@@ -220,10 +342,10 @@ else if (isset($_POST['install'])) { | |||
220 | <div id="main"> | 342 | <div id="main"> |
221 | <button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button> | 343 | <button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button> |
222 | <ul id="links" class="links"> | 344 | <ul id="links" class="links"> |
223 | <li><a href="http://www.wallabag.org/frequently-asked-questions/">FAQ</a></li> | 345 | <li><a href="docs/" target="_blank">Offline Doc</a></li> |
224 | <li><a href="http://doc.wallabag.org/">doc</a></li> | 346 | <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> | 347 | <li><a href="http://support.wallabag.org/" target="_blank">help</a></li> |
226 | <li><a href="http://www.wallabag.org/">wallabag.org</a></li> | 348 | <li><a href="http://www.wallabag.org/" target="_blank">wallabag.org</a></li> |
227 | </ul> | 349 | </ul> |
228 | <?php if (!empty($errors)) : ?> | 350 | <?php if (!empty($errors)) : ?> |
229 | <div class='messages error install'> | 351 | <div class='messages error install'> |
@@ -258,25 +380,192 @@ else if (isset($_POST['install'])) { | |||
258 | <?php endif; ?> | 380 | <?php endif; ?> |
259 | <?php endif; ?> | 381 | <?php endif; ?> |
260 | <p>To install wallabag, you just have to fill the following fields. That's all.</p> | 382 | <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> | 383 | |
262 | <p>Don't forget to check your server compatibility <a href="install/wallabag_compatibility_test.php?from=install">here</a>.</p> | 384 | <div> |
263 | <form method="post"> | 385 | <h2>Server compatibility test</h2> |
264 | <fieldset> | 386 | <?php if (isOkay()) { ?> |
265 | <legend><strong>Technical settings</strong></legend> | 387 | <div class="compatibity_result detail good">All good</div> |
266 | <?php if (!is_dir('vendor')) : ?> | 388 | <?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 /> | 389 | <div class="compatibity_result detail pass">Some problems, but it's OK !</div> |
268 | <ul> | 390 | <?php } else { ?> |
269 | <li>automatically download and extract vendor.zip into your wallabag folder. | 391 | <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> | 392 | <?php } $status = status(); ?> |
271 | <?php if (!extension_loaded('zip')) : ?> | 393 | </div> |
272 | <b>Be careful, zip extension is not enabled in your PHP configuration. You'll have to unzip vendor.zip manually.</b> | 394 | |
273 | <?php endif; ?> | 395 | <div class="details"> |
274 | <em>This method is mainly recommended if you don't have a dedicated server.</em></li> | 396 | <div> |
275 | <li>use <a href="http://getcomposer.org/">Composer</a> :<pre><code>curl -s http://getcomposer.org/installer | php | 397 | <hr> |
276 | php composer.phar install</code></pre></li> | 398 | <h2 style="text-align:center;"><?php echo $status['app_name']; ?>: Compatibility Test</h2> |
277 | </ul> | 399 | <table cellpadding="0" cellspacing="0" border="0" width="100%" id="chart"> |
278 | </div> | 400 | <thead> |
279 | <?php endif; ?> | 401 | <tr> |
402 | <th>Test</th> | ||
403 | <th>Should Be</th> | ||
404 | <th>What You Have</th> | ||
405 | <th>What it means</th> | ||
406 | </tr> | ||
407 | </thead> | ||
408 | <tbody> | ||
409 | <tr class="<?php echo ($status['php']) ? 'enabled' : 'disabled'; ?>"> | ||
410 | <td>PHP</td> | ||
411 | <td>5.3.3 or higher</td> | ||
412 | <td class="<?php echo ($status['php']) ? 'good' : 'disabled'; ?>"><?php echo phpversion(); ?></td> | ||
413 | <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> | ||
414 | </tr> | ||
415 | <tr class="<?php echo ($status['pdo']) ? 'enabled' : 'disabled'; ?>"> | ||
416 | <td><a href="http://php.net/manual/en/book.pdo.php">PDO</a></td> | ||
417 | <td>Enabled</td> | ||
418 | <?php echo ($status['pdo']) ? '<td class="good">Enabled</span>' : '<td class="bad">Disabled'; ?></td> | ||
419 | <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> | ||
420 | </tr> | ||
421 | <tr class="<?php echo ($status['pdo_drivers_passing']) ? 'enabled' : 'disabled'; ?>"> | ||
422 | <td>PDO Drivers</td> | ||
423 | <td>One of the PDO drivers must be installed</td> | ||
424 | <?php echo ($status['pdo_drivers_passing']) ? '<td class="good">At least one driver is enabled</span>' : '<td class="bad">No driver available'; ?></td> | ||
425 | <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> | ||
426 | </tr> | ||
427 | <tr class="<?php echo ($status['xml']) ? 'enabled' : 'disabled'; ?>"> | ||
428 | <td><a href="http://php.net/xml">XML</a></td> | ||
429 | <td>Enabled</td> | ||
430 | <?php echo ($status['xml']) ? '<td class="good">Enabled, and sane</span>' : '<td class="bad">Disabled, or broken'; ?></td> | ||
431 | <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> | ||
432 | </tr> | ||
433 | <tr class="<?php echo ($status['pcre']) ? 'enabled' : 'disabled'; ?>"> | ||
434 | <td><a href="http://php.net/pcre">PCRE</a></td> | ||
435 | <td>Enabled</td> | ||
436 | <?php echo ($status['pcre']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td> | ||
437 | <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> | ||
438 | </tr> | ||
439 | <tr class="<?php echo ($status['zlib']) ? 'enabled' : 'disabled'; ?>"> | ||
440 | <td><a href="http://php.net/zlib">Zlib</a></td> | ||
441 | <td>Enabled</td> | ||
442 | <?php echo ($status['zlib']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td> | ||
443 | <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> | ||
444 | </tr> | ||
445 | <tr class="<?php echo ($status['mbstring']) ? 'enabled' : 'disabled'; ?>"> | ||
446 | <td><a href="http://php.net/mbstring">mbstring</a></td> | ||
447 | <td>Enabled</td> | ||
448 | <?php echo ($status['mbstring']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td> | ||
449 | <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. | ||
450 | <?php } elseif ($status['mbstring']) { ?><strong>mbstring:</strong> <code>mbstring</code> is installed, but <code>iconv</code> is not. | ||
451 | <?php } elseif ($status['iconv']) { ?><strong>iconv:</strong> <code>iconv</code> is installed, but <code>mbstring</code> is not. | ||
452 | <?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. | ||
453 | <?php } ?> | ||
454 | </td> | ||
455 | </tr> | ||
456 | <tr class="<?php echo ($status['iconv']) ? 'enabled' : 'disabled'; ?>"> | ||
457 | <td><a href="http://php.net/iconv">iconv</a></td> | ||
458 | <td>Enabled</td> | ||
459 | <?php echo ($status['iconv']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td> | ||
460 | </tr> | ||
461 | <tr class="<?php echo ($status['dom']) ? 'enabled' : 'disabled'; ?>"> | ||
462 | <td><a href="http://php.net/manual/en/book.dom.php">DOM / XML extension</a></td> | ||
463 | <td>Enabled</td> | ||
464 | <?php echo ($status['dom']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td> | ||
465 | <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> | ||
466 | </tr> | ||
467 | <tr class="<?php echo ($status['filter']) ? 'enabled' : 'disabled'; ?>"> | ||
468 | <td><a href="http://uk.php.net/manual/en/book.filter.php">Data filtering</a></td> | ||
469 | <td>Enabled</td> | ||
470 | <?php echo ($status['filter']) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td> | ||
471 | <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> | ||
472 | </tr> | ||
473 | <tr class="<?php echo ($status['gd']) ? 'enabled' : 'disabled'; ?>"> | ||
474 | <td><a href="http://php.net/manual/en/book.image.php">GD</a></td> | ||
475 | <td>Enabled</td> | ||
476 | <?php echo ($status['gd']) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td> | ||
477 | <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> | ||
478 | </tr> | ||
479 | <tr class="<?php echo ($status['tidy']) ? 'enabled' : 'disabled'; ?>"> | ||
480 | <td><a href="http://php.net/tidy">Tidy</a></td> | ||
481 | <td>Enabled</td> | ||
482 | <?php echo ($status['tidy']) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td> | ||
483 | <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> | ||
484 | </tr> | ||
485 | <tr class="<?php echo ($status['curl']) ? 'enabled' : 'disabled'; ?>"> | ||
486 | <td><a href="http://php.net/curl">cURL</a></td> | ||
487 | <td>Enabled</td> | ||
488 | <?php echo (extension_loaded('curl')) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td> | ||
489 | <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> | ||
490 | </tr> | ||
491 | <tr class="<?php echo ($status['parse_ini']) ? 'enabled' : 'disabled'; ?>"> | ||
492 | <td><a href="http://uk.php.net/manual/en/function.parse-ini-file.php">Parse ini file</td> | ||
493 | <td>Enabled</td> | ||
494 | <?php echo ($status['parse_ini']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td> | ||
495 | <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> | ||
496 | </tr> | ||
497 | <tr class="<?php echo ($status['parallel']) ? 'enabled' : 'disabled'; ?>"> | ||
498 | <td>Parallel URL fetching</td> | ||
499 | <td>Enabled</td> | ||
500 | <?php echo ($status['parallel']) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td> | ||
501 | <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> | ||
502 | </tr> | ||
503 | <tr class="<?php echo ($status['allow_url_fopen']) ? 'enabled' : 'disabled'; ?>"> | ||
504 | <td><a href="http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen">allow_url_fopen</a></td> | ||
505 | <td>Enabled</td> | ||
506 | <?php echo ($status['allow_url_fopen']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td> | ||
507 | <td><?php echo ($status['allow_url_fopen']) ? '<strong>allow_url_fopen:</strong> You have allow_url_fopen enabled.' : '<strong>allow_url_fopen:</strong> Your PHP configuration has allow_url_fopen disabled. <strong>' . $status['app_name'] . ' will not work here.</strong>' ?></td> | ||
508 | </tr> | ||
509 | <tr class="<?php echo ($status['gettext']) ? 'enabled' : 'disabled'; ?>"> | ||
510 | <td><a href="http://php.net/manual/en/book.gettext.php">gettext</a></td> | ||
511 | <td>Enabled</td> | ||
512 | <?php echo ($status['gettext']) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td> | ||
513 | <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> | ||
514 | </tr> | ||
515 | </tbody> | ||
516 | </table> | ||
517 | <hr> | ||
518 | </div> | ||
519 | <div class="details"> | ||
520 | <?php //if ($status['php'] && $status['xml'] && $status['pcre'] && $status['mbstring'] && $status['iconv'] && $status['filter'] && $status['allow_url_fopen']) { ?> | ||
521 | <?php if (isOkay()) { ?> | ||
522 | <h3>Bottom Line: Yes, you can run <?php echo $status['app_name']; ?> !</h3> | ||
523 | <p><em>Your webhost has its act together!</em></p> | ||
524 | <p><strong>Note</strong>: Passing this test does not guarantee that <?php echo $status['app_name']; ?> will run on your webhost — it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.</p> | ||
525 | <?php //} else if ($status['php'] && $status['xml'] && $status['pcre'] && $status['mbstring'] && $status['allow_url_fopen'] && $status['filter']) { ?> | ||
526 | <?php } else if (!isOkay() && isPassing()) { ?> | ||
527 | <h3>Bottom Line: Yes, you can run <?php echo $status['app_name']; ?> !</h3> | ||
528 | <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> | ||
529 | <p><strong>Note</strong>: Passing this test does not guarantee that <?php echo $status['app_name']; ?> will run on your webhost — it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.</p> | ||
530 | <?php } else { ?> | ||
531 | <h3>Bottom Line: We're sorry…</h3> | ||
532 | <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> | ||
533 | <p>If this is your own server and you think you have all the requirements installed, please get in touch with us.</p> | ||
534 | <?php } ?> | ||
535 | </div> | ||
536 | |||
537 | <div class="chunk"> | ||
538 | <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> | ||
539 | </div> | ||
540 | </div> | ||
541 | <form method="post" class="technical"> | ||
542 | <hr> | ||
543 | <div class='twig'> | ||
544 | <h2>Twig installation</h2> | ||
545 | <?php if (!is_dir('vendor')) : ?> | ||
546 | |||
547 | <p>wallabag needs twig, a template engine (<a href="http://twig.sensiolabs.org/">?</a>). Two ways to install it:</p> | ||
548 | <ul> | ||
549 | <li>automatically download and extract vendor.zip into your wallabag folder. | ||
550 | <p><input type="submit" name="download" value="Download vendor.zip" /></p> | ||
551 | <?php if (!extension_loaded('zip')) : ?> | ||
552 | <b>Be careful, zip extension is not enabled in your PHP configuration. You'll have to unzip vendor.zip manually.</b> | ||
553 | <?php endif; ?> | ||
554 | <em>This method is mainly recommended if you don't have a dedicated server.</em></li> | ||
555 | <li>use <a href="http://getcomposer.org/">Composer</a> in your wallabag folder :<pre><code>curl -s http://getcomposer.org/installer | php | ||
556 | php composer.phar install</code></pre> | ||
557 | <span id="reloadpage">Reload to check</span> | ||
558 | </li> | ||
559 | </ul> | ||
560 | |||
561 | <?php else : ?> | ||
562 | Twig is properly installed. | ||
563 | <?php endif; ?> | ||
564 | </div> | ||
565 | <div class="database_info"> | ||
566 | <hr> | ||
567 | <fieldset class="database_inputs"> | ||
568 | <legend><strong>Database settings</strong></legend> | ||
280 | <p> | 569 | <p> |
281 | Database engine: | 570 | Database engine: |
282 | <ul> | 571 | <ul> |
@@ -287,15 +576,24 @@ php composer.phar install</code></pre></li> | |||
287 | </li> | 576 | </li> |
288 | <li> | 577 | <li> |
289 | <label for="mysql">MySQL</label> <input name="db_engine" type="radio" id="mysql" value="mysql" /> | 578 | <label for="mysql">MySQL</label> <input name="db_engine" type="radio" id="mysql" value="mysql" /> |
579 | <div id="pdo_mysql" class='messages notice install'> | ||
580 | <p>All fields have to be filled.</p> | ||
581 | </div> | ||
290 | <ul id="mysql_infos"> | 582 | <ul id="mysql_infos"> |
291 | <li><label for="mysql_server">Server</label> <input type="text" placeholder="localhost" id="mysql_server" name="mysql_server" /></li> | 583 | <li><label for="mysql_server">Server</label> <input type="text" placeholder="localhost" id="mysql_server" name="mysql_server" /></li> |
292 | <li><label for="mysql_database">Database</label> <input type="text" placeholder="wallabag" id="mysql_database" name="mysql_database" /></li> | 584 | <li><label for="mysql_database">Database</label> <input type="text" placeholder="wallabag" id="mysql_database" name="mysql_database" /></li> |
293 | <li><label for="mysql_user">User</label> <input type="text" placeholder="user" id="mysql_user" name="mysql_user" /></li> | 585 | <li><label for="mysql_user">User</label> <input type="text" placeholder="user" id="mysql_user" name="mysql_user" /></li> |
294 | <li><label for="mysql_password">Password</label> <input type="password" placeholder="p4ssw0rd" id="mysql_password" name="mysql_password" /></li> | 586 | <li><label for="mysql_password">Password</label> <input type="password" placeholder="p4ssw0rd" id="mysql_password" name="mysql_password" /></li> |
587 | <li><label for="mysql_utf8_mb4">Use UTF-8 MB4</label> <input id="mysql_utf8_mb4" type="checkbox" name="mysql_utf8_mb4"> | ||
588 | <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. | ||
589 | Install will failed if you check this while using an older MySQL server.</div></li> | ||
295 | </ul> | 590 | </ul> |
296 | </li> | 591 | </li> |
297 | <li> | 592 | <li> |
298 | <label for="postgres">PostgreSQL</label> <input name="db_engine" type="radio" id="postgres" value="postgres" /> | 593 | <label for="postgres">PostgreSQL</label> <input name="db_engine" type="radio" id="postgres" value="postgres" /> |
594 | <div id="pdo_postgres" class='messages notice install'> | ||
595 | <p>All fields have to be filled.</p> | ||
596 | </div> | ||
299 | <ul id="pg_infos"> | 597 | <ul id="pg_infos"> |
300 | <li><label for="pg_server">Server</label> <input type="text" placeholder="localhost" id="pg_server" name="pg_server" /></li> | 598 | <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> | 599 | <li><label for="pg_database">Database</label> <input type="text" placeholder="wallabag" id="pg_database" name="pg_database" /></li> |
@@ -306,8 +604,21 @@ php composer.phar install</code></pre></li> | |||
306 | </ul> | 604 | </ul> |
307 | </p> | 605 | </p> |
308 | </fieldset> | 606 | </fieldset> |
309 | 607 | <div class="descriptions"> | |
310 | <fieldset> | 608 | <div id="sqlite_description"> |
609 | 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. | ||
610 | </div> | ||
611 | <div id="mysql_description"> | ||
612 | MySQL (also called MariaDB) is one of the most popular database systems. It comes with most shared hosting plans. | ||
613 | </div> | ||
614 | <div id="postgres_description"> | ||
615 | PostgreSQL. Because some people prefer it to MySQL. With reasons. | ||
616 | </div> | ||
617 | </div> | ||
618 | </div> | ||
619 | <hr> | ||
620 | <div class="usersettings"> | ||
621 | <fieldset style="clear: both"> | ||
311 | <legend><strong>User settings</strong></legend> | 622 | <legend><strong>User settings</strong></legend> |
312 | <p> | 623 | <p> |
313 | <label for="username">Username</label> | 624 | <label for="username">Username</label> |
@@ -323,13 +634,43 @@ php composer.phar install</code></pre></li> | |||
323 | <input type="email" id="email" name="email" /> | 634 | <input type="email" id="email" name="email" /> |
324 | </p> | 635 | </p> |
325 | </fieldset> | 636 | </fieldset> |
326 | |||
327 | <input type="submit" id="install_button" value="Install wallabag" name="install" /> | 637 | <input type="submit" id="install_button" value="Install wallabag" name="install" /> |
638 | </div> | ||
328 | </form> | 639 | </form> |
329 | </div> | 640 | </div> |
330 | <script> | 641 | <script> |
642 | <?php if (!is_dir('vendor')) : ?> | ||
643 | $(".database_info").hide(); | ||
644 | $(".usersettings").hide(); | ||
645 | <?php endif ?> | ||
646 | /* | ||
647 | * Database showing/hiding | ||
648 | */ | ||
331 | $("#mysql_infos").hide(); | 649 | $("#mysql_infos").hide(); |
650 | $("#mysql_description").hide(); | ||
332 | $("#pg_infos").hide(); | 651 | $("#pg_infos").hide(); |
652 | $("#postgres_description").hide(); | ||
653 | $("#sqlite_description").show(); | ||
654 | $("#pdo_postgres").hide(); | ||
655 | $("#pdo_mysql").hide(); | ||
656 | |||
657 | /* | ||
658 | * Details hiding | ||
659 | */ | ||
660 | |||
661 | $(".details").hide(); | ||
662 | $("#utf8_mb4_infos").hide(); | ||
663 | |||
664 | <?php | ||
665 | if (!isPassing()) : ?> | ||
666 | $('.technical').hide(); | ||
667 | <?php | ||
668 | else : | ||
669 | ?> | ||
670 | $('.technical').show(); | ||
671 | <?php | ||
672 | endif; | ||
673 | ?> | ||
333 | 674 | ||
334 | <?php | 675 | <?php |
335 | if (!extension_loaded('pdo_sqlite')) : ?> | 676 | if (!extension_loaded('pdo_sqlite')) : ?> |
@@ -342,24 +683,43 @@ php composer.phar install</code></pre></li> | |||
342 | endif; | 683 | endif; |
343 | ?> | 684 | ?> |
344 | 685 | ||
686 | $("#mysql_utf8_mb4").click(function() { | ||
687 | $("#utf8_mb4_infos").toggle(); | ||
688 | }); | ||
689 | |||
345 | $("input[name=db_engine]").click(function() | 690 | $("input[name=db_engine]").click(function() |
346 | { | 691 | { |
347 | if ( $("#mysql").prop('checked')) { | 692 | if ( $("#mysql").prop('checked')) { |
348 | $("#mysql_infos").show(); | 693 | $("#mysql_infos").show(); |
694 | $("#pdo_mysql").show(); | ||
349 | $("#pg_infos").hide(); | 695 | $("#pg_infos").hide(); |
696 | $("#pdo_postgres").hide(); | ||
350 | $("#pdo_sqlite").hide(); | 697 | $("#pdo_sqlite").hide(); |
351 | $("#install_button").show(); | 698 | $("#sqlite_description").hide(); |
699 | $("#postgres_description").hide(); | ||
700 | $("#mysql_description").show(); | ||
701 | $("#install_button").show(); | ||
352 | } | 702 | } |
353 | else { | 703 | else { |
354 | if ( $("#postgres").prop('checked')) { | 704 | if ( $("#postgres").prop('checked')) { |
355 | $("#mysql_infos").hide(); | 705 | $("#mysql_infos").hide(); |
706 | $("#pdo_mysql").hide(); | ||
356 | $("#pg_infos").show(); | 707 | $("#pg_infos").show(); |
708 | $("#pdo_postgres").show(); | ||
357 | $("#pdo_sqlite").hide(); | 709 | $("#pdo_sqlite").hide(); |
710 | $("#sqlite_description").hide(); | ||
711 | $("#mysql_description").hide(); | ||
712 | $("#postgres_description").show(); | ||
358 | $("#install_button").show(); | 713 | $("#install_button").show(); |
359 | } | 714 | } |
360 | else { | 715 | else { |
361 | $("#mysql_infos").hide(); | 716 | $("#mysql_infos").hide(); |
362 | $("#pg_infos").hide(); | 717 | $("#pg_infos").hide(); |
718 | $("#pdo_postgres").hide(); | ||
719 | $("#pdo_mysql").hide(); | ||
720 | $("#sqlite_description").show(); | ||
721 | $("#mysql_description").hide(); | ||
722 | $("#postgres_description").hide(); | ||
363 | <?php | 723 | <?php |
364 | if (!extension_loaded('pdo_sqlite')) : ?> | 724 | if (!extension_loaded('pdo_sqlite')) : ?> |
365 | $("#pdo_sqlite").show(); | 725 | $("#pdo_sqlite").show(); |
@@ -370,6 +730,16 @@ php composer.phar install</code></pre></li> | |||
370 | } | 730 | } |
371 | } | 731 | } |
372 | }); | 732 | }); |
733 | |||
734 | $(".detail").click(function() | ||
735 | { | ||
736 | $('.details').toggle(); | ||
737 | }); | ||
738 | $("#reloadpage").click(function() | ||
739 | { | ||
740 | location.reload(); | ||
741 | }); | ||
742 | |||
373 | </script> | 743 | </script> |
374 | </body> | 744 | </body> |
375 | </html> | 745 | </html> |
diff --git a/install/install_functions.php b/install/install_functions.php new file mode 100644 index 00000000..3b465851 --- /dev/null +++ b/install/install_functions.php | |||
@@ -0,0 +1,88 @@ | |||
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 | function 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_passing = extension_loaded('pdo_sqlite') || extension_loaded('pdo_mysql') || extension_loaded('pdo_pgsql'); | ||
30 | |||
31 | if (extension_loaded('xmlreader')) { | ||
32 | $xml_ok = true; | ||
33 | } elseif (extension_loaded('xml')) { | ||
34 | $parser_check = xml_parser_create(); | ||
35 | xml_parse_into_struct($parser_check, '<foo>&</foo>', $values); | ||
36 | xml_parser_free($parser_check); | ||
37 | $xml_ok = isset($values[0]['value']); | ||
38 | } else { | ||
39 | $xml_ok = false; | ||
40 | } | ||
41 | |||
42 | $status = array('app_name' => $app_name, 'php' => $php_ok, 'pdo' => $pdo_ok, 'pdo_drivers_passing' => $pdo_drivers_passing, 'xml' => $xml_ok, 'pcre' => $pcre_ok, 'zlib' => $zlib_ok, 'mbstring' => $mbstring_ok, 'dom' => $dom_ok, 'iconv' => $iconv_ok, 'tidy' => $tidy_ok, 'curl' => $curl_ok, 'parse_ini' => $parse_ini_ok, 'parallel' => $parallel_ok, 'allow_url_fopen' => $allow_url_fopen_ok, 'filter' => $filter_ok, 'gettext' => $gettext_ok, 'gd' => $gd_ok); | ||
43 | |||
44 | return $status; | ||
45 | } | ||
46 | function isOkay() { | ||
47 | return !in_array(false, status()); | ||
48 | } | ||
49 | |||
50 | function isPassing() { | ||
51 | $status = status(); | ||
52 | unset($status['curl'], $status['parallel'], $status['tidy'], $status['gd'], $status['filter']); | ||
53 | return !in_array(false, $status); | ||
54 | } | ||
55 | |||
56 | /* Function taken from at http://php.net/manual/en/function.rmdir.php#110489 | ||
57 | * Idea : nbari at dalmp dot com | ||
58 | * Rights unknown | ||
59 | * Here in case of .gitignore files | ||
60 | */ | ||
61 | |||
62 | function delTree($dir) { | ||
63 | $files = array_diff(scandir($dir), array('.','..')); | ||
64 | foreach ($files as $file) { | ||
65 | (is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file"); | ||
66 | } | ||
67 | return rmdir($dir); | ||
68 | } | ||
69 | |||
70 | function generate_salt() { | ||
71 | mt_srand(microtime(true)*100000 + memory_get_usage(true)); | ||
72 | return md5(uniqid(mt_rand(), true)); | ||
73 | } | ||
74 | |||
75 | function executeQuery($handle, $sql, $params) { | ||
76 | try | ||
77 | { | ||
78 | $query = $handle->prepare($sql); | ||
79 | $query->execute($params); | ||
80 | return $query->fetchAll(); | ||
81 | } | ||
82 | catch (Exception $e) | ||
83 | { | ||
84 | return FALSE; | ||
85 | } | ||
86 | } | ||
87 | |||
88 | ?> \ 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 | |||
29 | if (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>&</foo>', $values); | ||
34 | xml_parser_free($parser_check); | ||
35 | $xml_ok = isset($values[0]['value']); | ||
36 | } else { | ||
37 | $xml_ok = false; | ||
38 | } | ||
39 | |||
40 | header('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"> | ||
49 | body { | ||
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 | |||
58 | div#site { | ||
59 | width:550px; | ||
60 | margin:20px auto 0 auto; | ||
61 | } | ||
62 | |||
63 | a { | ||
64 | color:#000; | ||
65 | text-decoration:underline; | ||
66 | padding:0 1px; | ||
67 | } | ||
68 | |||
69 | a:hover { | ||
70 | color:#fff; | ||
71 | background-color:#333; | ||
72 | text-decoration:none; | ||
73 | padding:0 1px; | ||
74 | } | ||
75 | |||
76 | p { | ||
77 | margin:0; | ||
78 | padding:5px 0; | ||
79 | } | ||
80 | |||
81 | em { | ||
82 | font-style:normal; | ||
83 | background-color:#ffc; | ||
84 | padding: 0.1em 0; | ||
85 | } | ||
86 | |||
87 | ul, ol { | ||
88 | margin:10px 0 10px 20px; | ||
89 | padding:0 0 0 15px; | ||
90 | } | ||
91 | |||
92 | ul li, ol li { | ||
93 | margin:0 0 7px 0; | ||
94 | padding:0 0 0 3px; | ||
95 | } | ||
96 | |||
97 | h2 { | ||
98 | font-size:18px; | ||
99 | padding:0; | ||
100 | margin:30px 0 20px 0; | ||
101 | } | ||
102 | |||
103 | h3 { | ||
104 | font-size:16px; | ||
105 | padding:0; | ||
106 | margin:20px 0 5px 0; | ||
107 | } | ||
108 | |||
109 | h4 { | ||
110 | font-size:14px; | ||
111 | padding:0; | ||
112 | margin:15px 0 5px 0; | ||
113 | } | ||
114 | |||
115 | code { | ||
116 | font-size:1.1em; | ||
117 | background-color:#f3f3ff; | ||
118 | color:#000; | ||
119 | } | ||
120 | |||
121 | em strong { | ||
122 | text-transform: uppercase; | ||
123 | } | ||
124 | |||
125 | table#chart { | ||
126 | border-collapse:collapse; | ||
127 | } | ||
128 | |||
129 | table#chart th { | ||
130 | background-color:#eee; | ||
131 | padding:2px 3px; | ||
132 | border:1px solid #fff; | ||
133 | } | ||
134 | |||
135 | table#chart td { | ||
136 | text-align:center; | ||
137 | padding:2px 3px; | ||
138 | border:1px solid #eee; | ||
139 | } | ||
140 | |||
141 | table#chart tr.enabled td { | ||
142 | /* Leave this alone */ | ||
143 | } | ||
144 | |||
145 | table#chart tr.disabled td, | ||
146 | table#chart tr.disabled td a { | ||
147 | } | ||
148 | |||
149 | table#chart tr.disabled td a { | ||
150 | text-decoration:underline; | ||
151 | } | ||
152 | |||
153 | div.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{ | ||
171 | background-color:#52CC5B; | ||
172 | } | ||
173 | .bad{ | ||
174 | background-color:#F74343; | ||
175 | font-style:italic; | ||
176 | font-weight: bold; | ||
177 | } | ||
178 | .pass{ | ||
179 | background-color:#FF9500; | ||
180 | } | ||
181 | |||
182 | </style> | ||
183 | |||
184 | </head> | ||
185 | |||
186 | <body> | ||
187 | <?php | ||
188 | $frominstall = false; | ||
189 | if (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 — 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 — 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 @@ | |||
1 | msgid "" | 1 | msgid "" |
2 | msgstr "" | 2 | msgstr "" |
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 | |
16 | msgid "wallabag, a read it later open source system" | ||
17 | msgstr "wallabag, ein \"Read-it-later\"-Open-Source-System" | ||
18 | |||
19 | msgid "login failed: user doesn't exist" | ||
20 | msgstr "Anmeldung fehlgeschlagen: Benutzer existiert nicht" | ||
21 | |||
22 | msgid "return home" | ||
23 | msgstr "Auf Startseite zurückkehren" | ||
16 | 24 | ||
17 | msgid "config" | 25 | msgid "config" |
18 | msgstr "Konfiguration" | 26 | msgstr "Konfiguration" |
@@ -21,13 +29,19 @@ msgid "Saving articles" | |||
21 | msgstr "Artikel speichern" | 29 | msgstr "Artikel speichern" |
22 | 30 | ||
23 | msgid "There are several ways to save an article:" | 31 | msgid "There are several ways to save an article:" |
24 | msgstr "Es gibt viele Methoden um Artikel zu speichern:" | 32 | msgstr "Es gibt mehrere Wege, um einen Artikel zu speichern:" |
25 | 33 | ||
26 | msgid "read the documentation" | 34 | msgid "read the documentation" |
27 | msgstr "Die Dokumentation lesen" | 35 | msgstr "Dokumentation lesen" |
28 | 36 | ||
29 | msgid "download the extension" | 37 | msgid "download the extension" |
30 | msgstr "installiere die Erweiterung" | 38 | msgstr "Erweiterung herunterladen" |
39 | |||
40 | msgid "Firefox Add-On" | ||
41 | msgstr "Firefox-Addon" | ||
42 | |||
43 | msgid "Chrome Extension" | ||
44 | msgstr "Chrome-Erweiterung" | ||
31 | 45 | ||
32 | msgid "via F-Droid" | 46 | msgid "via F-Droid" |
33 | msgstr "via F-Droid" | 47 | msgstr "via F-Droid" |
@@ -39,16 +53,16 @@ msgid "via Google Play" | |||
39 | msgstr "via Google Play" | 53 | msgstr "via Google Play" |
40 | 54 | ||
41 | msgid "download the application" | 55 | msgid "download the application" |
42 | msgstr "lade die App" | 56 | msgstr "App herunterladen" |
43 | 57 | ||
44 | msgid "By filling this field" | 58 | msgid "By filling this field" |
45 | msgstr "Durch Ausfüllen dieses Feldes" | 59 | msgstr "Durch das Ausfüllen dieses Feldes" |
46 | 60 | ||
47 | msgid "bag it!" | 61 | msgid "bag it!" |
48 | msgstr "bag it!" | 62 | msgstr "bag it!" |
49 | 63 | ||
50 | msgid "Bookmarklet: drag & drop this link to your bookmarks bar" | 64 | msgid "Bookmarklet: drag & drop this link to your bookmarks bar" |
51 | msgstr "Bookmarklet: Ziehe diesen Link in deine Lesezeichen-Leiste" | 65 | msgstr "Bookmarklet: Ziehe diesen Link in deine Lesezeichen" |
52 | 66 | ||
53 | msgid "Upgrading wallabag" | 67 | msgid "Upgrading wallabag" |
54 | msgstr "wallabag aktualisieren" | 68 | msgstr "wallabag aktualisieren" |
@@ -57,58 +71,46 @@ msgid "Installed version" | |||
57 | msgstr "Installierte Version" | 71 | msgstr "Installierte Version" |
58 | 72 | ||
59 | msgid "Latest stable version" | 73 | msgid "Latest stable version" |
60 | msgstr "Neuste stabile Version" | 74 | msgstr "Letzte stabile Version" |
61 | 75 | ||
62 | msgid "A more recent stable version is available." | 76 | msgid "A more recent stable version is available." |
63 | msgstr "Eine neuere stabile Version ist verfügbar." | 77 | msgstr "Eine neuere Version ist verfügbar." |
64 | 78 | ||
65 | msgid "You are up to date." | 79 | msgid "You are up to date." |
66 | msgstr "Du bist auf den neuesten Stand." | 80 | msgstr "Du bist auf dem aktuellsten Stand." |
67 | |||
68 | msgid "Last check:" | ||
69 | msgstr "Zuletzt geprüft:" | ||
70 | 81 | ||
71 | msgid "Latest dev version" | 82 | msgid "Latest dev version" |
72 | msgstr "Neuste Entwicklungsversion" | 83 | msgstr "Letzte Entwickler-Version" |
73 | 84 | ||
74 | msgid "A more recent development version is available." | 85 | msgid "A more recent development version is available." |
75 | msgstr "Eine neuere Entwicklungsversion ist verfügbar." | 86 | msgstr "Eine neuere Entwickler-Version ist verfügbar." |
76 | 87 | ||
77 | msgid "You can clear cache to check the latest release." | 88 | msgid "You can clear cache to check the latest release." |
78 | msgstr "Leere den Cache um die neueste Version zu prüfen." | 89 | msgstr "Du kannst den <a href=\"#cache\">Cache leeren</a>, um nach neueren Versionen zu suchen." |
79 | 90 | ||
80 | msgid "Feeds" | 91 | msgid "Feeds" |
81 | msgstr "Feeds" | 92 | msgstr "Feeds" |
82 | 93 | ||
83 | msgid "" | 94 | msgid "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?feed&action=generate'>here to generate it</a>." |
84 | "Your feed token is currently empty and must first be generated to enable " | 95 | msgstr "Dein Feed-Token ist momentan leer und muss generiert werden, um die Feeds zu aktivieren. Klicke <a href='?feed&action=generate'>hier, um ihn zu erstellen</a>." |
85 | "feeds. Click <a href='?feed&action=generate'>here to generate it</a>." | ||
86 | msgstr "" | ||
87 | "Dein Feed Token ist noch nicht vorhanden und muss zunächst generiert werden, " | ||
88 | "um deine Feeds zu aktivieren. Klicke <a href='?feed&" | ||
89 | "action=generate'>hier um ihn zu generieren</a>." | ||
90 | 96 | ||
91 | msgid "Unread feed" | 97 | msgid "Unread feed" |
92 | msgstr "Ungelesen Feed" | 98 | msgstr "Feed für Ungelesenes" |
93 | 99 | ||
94 | msgid "Favorites feed" | 100 | msgid "Favorites feed" |
95 | msgstr "Favoriten Feed" | 101 | msgstr "Feed für Favoriten" |
96 | 102 | ||
97 | msgid "Archive feed" | 103 | msgid "Archive feed" |
98 | msgstr "Archiv Feed" | 104 | msgstr "Archiv-Feed" |
99 | 105 | ||
100 | msgid "Your token:" | 106 | msgid "Your token:" |
101 | msgstr "Dein Token:" | 107 | msgstr "Dein Token:" |
102 | 108 | ||
103 | msgid "Your user id:" | 109 | msgid "Your user id:" |
104 | msgstr "Deine User ID:" | 110 | msgstr "Deine Benutzer-ID:" |
105 | 111 | ||
106 | msgid "" | 112 | msgid "You can regenerate your token: <a href='?feed&action=generate'>generate!</a>." |
107 | "You can regenerate your token: <a href='?feed&action=generate'>generate!" | 113 | msgstr "Du kannst deinen Token regenerieren: <a href='?feed&action=generate'>generieren!</a>." |
108 | "</a>." | ||
109 | msgstr "" | ||
110 | "Hier kannst du dein Token erzeugen: <a href='?feed&" | ||
111 | "action=generate'>Generieren!</a>." | ||
112 | 114 | ||
113 | msgid "Change your theme" | 115 | msgid "Change your theme" |
114 | msgstr "Theme ändern" | 116 | msgstr "Theme ändern" |
@@ -138,76 +140,58 @@ msgid "Repeat your new password:" | |||
138 | msgstr "Neues Passwort wiederholen:" | 140 | msgstr "Neues Passwort wiederholen:" |
139 | 141 | ||
140 | msgid "Import" | 142 | msgid "Import" |
141 | msgstr "Import" | 143 | msgstr "Importieren" |
142 | 144 | ||
143 | msgid "" | 145 | msgid "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 " | 146 | msgstr "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." | 148 | msgid "Please execute the import script locally as it can take a very long time." |
147 | msgstr "" | 149 | msgstr "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 | ||
152 | msgid "First, select the export file on your computer and upload it." | 151 | msgid "Please select export file on your computer and press \"Import\" button below. Wallabag will parse your file, insert all URLs and start fetching of articles if required." |
153 | msgstr "Wähle eine Datei von deinem Computer aus und lade sie hoch." | 152 | msgstr "" |
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 | ||
155 | msgid "File:" | 156 | msgid "You can click here to fetch content for articles with no content." |
156 | msgstr "Datei:" | 157 | msgstr "Du kannst hier klicken, um den Inhalt für Artikel ohne Inhalt herunterzuladen." |
157 | 158 | ||
158 | msgid "Upload" | 159 | msgid "More info in the official documentation:" |
159 | msgstr "Hochladen" | 160 | msgstr "Mehr Infos in der offiziellen Dokumentation:" |
160 | 161 | ||
161 | msgid "Then, click on the right link below." | 162 | msgid "(<a href=\"http://doc.wallabag.org/en/User_documentation/Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)" |
162 | msgstr "Klicke dann unten auf den entsprechenden Link." | 163 | msgstr "(<a href=\"http://doc.wallabag.org/de/Anwender/Den_ersten_Artikel_speichern\" target=\"_blank\" title=\"Dokumentation\">?</a>)" |
163 | 164 | ||
164 | msgid "Import from Pocket" | 165 | msgid "Import from Pocket" |
165 | msgstr "Import aus Pocket" | 166 | msgstr "Aus Pocket importieren" |
166 | 167 | ||
167 | #, php-format | 168 | #, php-format |
168 | msgid "(after uploaded %s file)" | 169 | msgid "(you must have a %s file on your server)" |
169 | msgstr "(nach Upload der Datei %s)" | 170 | msgstr "(du solltest eine %s Datei auf deinem Server haben)" |
170 | 171 | ||
171 | msgid "Import from Readability" | 172 | msgid "Import from Readability" |
172 | msgstr "Import aus Readability" | 173 | msgstr "Aus Readability importieren" |
173 | 174 | ||
174 | msgid "Import from Instapaper" | 175 | msgid "Import from Instapaper" |
175 | msgstr "Import aus Instapaper" | 176 | msgstr "Aus Instapaper importieren" |
176 | 177 | ||
177 | msgid "Import from wallabag" | 178 | msgid "Import from wallabag" |
178 | msgstr "Import aus Readability" | 179 | msgstr "Aus wallabag importieren" |
179 | 180 | ||
180 | msgid "" | 181 | msgid "Export your wallabag data" |
181 | "3. Your feed token is currently empty and must first be generated to fetch " | 182 | msgstr "Deine wallabag-Daten exportieren" |
182 | "content. Click <a href='?feed&action=generate'>here to generate it</a>." | ||
183 | msgstr "" | ||
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&" | ||
186 | "action=generate'>hier um ihn zu generieren</a>." | ||
187 | |||
188 | msgid "Finally, you have to fetch content for imported items." | ||
189 | msgstr "Jetzt musst du den Inhalt der importierten Artikel abrufen." | ||
190 | 183 | ||
191 | msgid "Click here" | 184 | msgid "Click here" |
192 | msgstr "Klicke hier" | 185 | msgstr "Hier klicken, " |
193 | |||
194 | msgid "to fetch content for 10 articles" | ||
195 | msgstr "um den Inhalt von 10 Artikeln abzurufen" | ||
196 | |||
197 | msgid "" | ||
198 | "If you have console access to your server, you can also create a cron task:" | ||
199 | msgstr "" | ||
200 | "Wenn du Konsolenzugang zu deinem Server hast kannst du auch einen cron " | ||
201 | "erstellen:" | ||
202 | |||
203 | msgid "Export your wallabag data" | ||
204 | msgstr "Exportieren deine wallabag Daten" | ||
205 | 186 | ||
206 | msgid "to download your database." | 187 | msgid "to download your database." |
207 | msgstr "um deine Datenbank herunterzuladen" | 188 | msgstr "um die Datenbank herunterzuladen." |
208 | 189 | ||
209 | msgid "to export your wallabag data." | 190 | msgid "to export your wallabag data." |
210 | msgstr "um deine Daten aus wallabag zu exportieren." | 191 | msgstr "um die wallabag-Daten zu exportieren." |
192 | |||
193 | msgid "Export JSON" | ||
194 | msgstr "JSON exportieren" | ||
211 | 195 | ||
212 | msgid "Cache" | 196 | msgid "Cache" |
213 | msgstr "Cache" | 197 | msgstr "Cache" |
@@ -215,444 +199,437 @@ msgstr "Cache" | |||
215 | msgid "to delete cache." | 199 | msgid "to delete cache." |
216 | msgstr "um den Cache zu löschen." | 200 | msgstr "um den Cache zu löschen." |
217 | 201 | ||
218 | msgid "Tags" | 202 | msgid "Delete Cache" |
219 | msgstr "Tags" | 203 | msgstr "Cache löschen, " |
204 | |||
205 | msgid "You can enter multiple tags, separated by commas." | ||
206 | msgstr "Du kannst mehrere Schlagworte, getrennt von einem Komma, hinzufügen." | ||
207 | |||
208 | msgid "Add tags:" | ||
209 | msgstr "Schlagworte hinzufügen:" | ||
210 | |||
211 | msgid "no tags" | ||
212 | msgstr "keine schlagworte" | ||
213 | |||
214 | msgid "The tag has been applied successfully" | ||
215 | msgstr "Das Schlagwort wurde erfolgreich übernommen." | ||
216 | |||
217 | msgid "interview" | ||
218 | msgstr "interview" | ||
219 | |||
220 | msgid "editorial" | ||
221 | msgstr "editorial" | ||
222 | |||
223 | msgid "video" | ||
224 | msgstr "video" | ||
225 | |||
226 | msgid "return to article" | ||
227 | msgstr "zum artikel zurückkehren" | ||
228 | |||
229 | msgid "plop" | ||
230 | msgstr "plop" | ||
231 | |||
232 | msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>." | ||
233 | msgstr "Du kannst deine <a href='wallabag_compatibility_test.php'>Konfiguration hier überprüfen</a>." | ||
234 | |||
235 | msgid "favoris" | ||
236 | msgstr "Favoriten" | ||
237 | |||
238 | msgid "archive" | ||
239 | msgstr "archiv" | ||
240 | |||
241 | msgid "unread" | ||
242 | msgstr "ungelesen" | ||
220 | 243 | ||
221 | msgid "by date asc" | 244 | msgid "by date asc" |
222 | msgstr "nach Datum aufsteigend" | 245 | msgstr "nach Datum, aufsteigend" |
223 | 246 | ||
224 | msgid "by date" | 247 | msgid "by date" |
225 | msgstr "nach Datum" | 248 | msgstr "nach Datum" |
226 | 249 | ||
227 | msgid "by date desc" | 250 | msgid "by date desc" |
228 | msgstr "nach Datum absteigend" | 251 | msgstr "nach Datum, absteigend" |
229 | 252 | ||
230 | msgid "by title asc" | 253 | msgid "by title asc" |
231 | msgstr "nach Titel aufsteigend" | 254 | msgstr "nach Titel, aufsteigend" |
232 | 255 | ||
233 | msgid "by title" | 256 | msgid "by title" |
234 | msgstr "nach Titel" | 257 | msgstr "nach Titel" |
235 | 258 | ||
236 | msgid "by title desc" | 259 | msgid "by title desc" |
237 | msgstr "nach Titel absteigend" | 260 | msgstr "nach Titel, absteigend" |
238 | |||
239 | #, fuzzy | ||
240 | msgid "toggle view mode" | ||
241 | msgstr "Favorit" | ||
242 | 261 | ||
243 | msgid "home" | 262 | msgid "Tag" |
244 | msgstr "Start" | 263 | msgstr "Schlagwort" |
245 | 264 | ||
246 | msgid "favorites" | 265 | msgid "No articles found." |
247 | msgstr "Favoriten" | 266 | msgstr "Keine Artikel gefunden." |
248 | 267 | ||
249 | msgid "archive" | 268 | msgid "Toggle mark as read" |
250 | msgstr "Archiv" | 269 | msgstr "Als gelesen/ungelesen markieren" |
251 | 270 | ||
252 | msgid "tags" | 271 | msgid "toggle favorite" |
253 | msgstr "Tags" | 272 | msgstr "favorisieren" |
254 | 273 | ||
255 | msgid "save a link" | 274 | msgid "delete" |
256 | msgstr "Speichere einen Link" | 275 | msgstr "löschen" |
257 | 276 | ||
258 | msgid "search" | 277 | msgid "original" |
259 | msgstr "Suche" | 278 | msgstr "original" |
260 | 279 | ||
261 | msgid "logout" | 280 | msgid "estimated reading time:" |
262 | msgstr "Logout" | 281 | msgstr "Geschätzte Lesezeit:" |
263 | 282 | ||
264 | msgid "return home" | 283 | msgid "mark all the entries as read" |
265 | msgstr "Zurück zum Start" | 284 | msgstr "Alle Einträge als gelesen markieren" |
266 | 285 | ||
267 | #, fuzzy | 286 | msgid "results" |
268 | msgid "Search" | 287 | msgstr "Ergebnisse" |
269 | msgstr "Archiv" | ||
270 | 288 | ||
271 | msgid "powered by" | 289 | msgid "installation" |
272 | msgstr "bereitgestellt von" | 290 | msgstr "installation" |
273 | 291 | ||
274 | msgid "debug mode is on so cache is off." | 292 | msgid "install your wallabag" |
275 | msgstr "Debug Modus ist aktiviert, das Caching ist somit deaktiviert" | 293 | msgstr "deine wallabag installieren" |
276 | 294 | ||
277 | msgid "your wallabag version:" | 295 | msgid "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>." |
278 | msgstr "Deine wallabag Version" | 296 | msgstr "" |
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 | ||
280 | msgid "storage:" | 300 | msgid "Login" |
281 | msgstr "Speicher:" | 301 | msgstr "Anmelden" |
282 | 302 | ||
283 | msgid "Save a link" | 303 | msgid "Repeat your password" |
284 | msgstr "Speichere einen Link" | 304 | msgstr "Passwort wiederholen" |
285 | 305 | ||
286 | msgid "save link!" | 306 | msgid "Install" |
287 | msgstr "Link speichern!" | 307 | msgstr "Installieren" |
288 | 308 | ||
289 | msgid "unread" | 309 | msgid "login to your wallabag" |
290 | msgstr "ungelesen" | 310 | msgstr "Melde dich in deiner wallabag an" |
291 | 311 | ||
292 | msgid "Tag" | 312 | msgid "Login to wallabag" |
293 | msgstr "Tag" | 313 | msgstr "In wallabag anmelden" |
294 | 314 | ||
295 | msgid "No articles found." | 315 | msgid "you are in demo mode, some features may be disabled." |
296 | msgstr "Keine Artikel gefunden." | 316 | msgstr "Du bist im Demo-Modus, einige Features sind möglicherweise deaktiviert." |
297 | 317 | ||
298 | msgid "estimated reading time:" | 318 | msgid "Username" |
299 | msgstr "geschätzte Lesezeit:" | 319 | msgstr "Benutzername" |
300 | 320 | ||
301 | msgid "estimated reading time :" | 321 | msgid "Stay signed in" |
302 | msgstr "geschätzte Lesezeit:" | 322 | msgstr "Angemeldet bleiben" |
303 | 323 | ||
304 | msgid "Toggle mark as read" | 324 | msgid "(Do not check on public computers)" |
305 | msgstr "Als gelesen markieren" | 325 | msgstr "(nicht auf öffentlichen Computern ankreuzen)" |
306 | 326 | ||
307 | msgid "toggle favorite" | 327 | msgid "Sign in" |
308 | msgstr "Favorit" | 328 | msgstr "Anmelden" |
309 | 329 | ||
310 | msgid "delete" | 330 | msgid "favorites" |
311 | msgstr "Löschen" | 331 | msgstr "favoriten" |
312 | 332 | ||
313 | msgid "original" | 333 | msgid "estimated reading time :" |
314 | msgstr "Original" | 334 | msgstr "Geschätzte Lesezeit:" |
315 | 335 | ||
316 | msgid "Mark all the entries as read" | 336 | msgid "Mark all the entries as read" |
317 | msgstr "Markiere alle als gelesen" | 337 | msgstr "Alle Einträge als gelesen markieren" |
318 | 338 | ||
319 | msgid "results" | 339 | msgid "Return home" |
320 | msgstr "Ergebnisse" | 340 | msgstr "Zur Startseite zurückkehren" |
321 | 341 | ||
322 | msgid "Uh, there is a problem with the cron." | 342 | msgid "Back to top" |
323 | msgstr "Oh, es gab ein Problem mit dem cron." | 343 | msgstr "Nach oben scrollen" |
324 | 344 | ||
325 | msgid "Untitled" | 345 | msgid "Mark as read" |
326 | msgstr "Ohne Titel" | 346 | msgstr "Als gelesen markieren" |
327 | |||
328 | msgid "the link has been added successfully" | ||
329 | msgstr "Speichern des Links erfolgreich" | ||
330 | |||
331 | msgid "error during insertion : the link wasn't added" | ||
332 | msgstr "Fehler beim Einfügen: Der Link wurde nicht hinzugefügt" | ||
333 | |||
334 | msgid "the link has been deleted successfully" | ||
335 | msgstr "Löschen des Links erfolgreich" | ||
336 | |||
337 | msgid "the link wasn't deleted" | ||
338 | msgstr "Der Link wurde nicht entfernt" | ||
339 | 347 | ||
340 | msgid "Article not found!" | 348 | msgid "Favorite" |
341 | msgstr "Artikel nicht gefunden!" | 349 | msgstr "Favorisieren" |
342 | 350 | ||
343 | msgid "previous" | 351 | msgid "Toggle favorite" |
344 | msgstr "vorherige" | 352 | msgstr "favorisieren" |
345 | 353 | ||
346 | msgid "next" | 354 | msgid "Delete" |
347 | msgstr "nächste" | 355 | msgstr "Löschen" |
348 | 356 | ||
349 | msgid "in demo mode, you can't update your password" | 357 | msgid "Tweet" |
350 | msgstr "im Demo-Modus kann das Passwort nicht geändert werden" | 358 | msgstr "Twittern" |
351 | 359 | ||
352 | msgid "your password has been updated" | 360 | msgid "Email" |
353 | msgstr "Dein Passwort wurde geändert" | 361 | msgstr "Email" |
354 | 362 | ||
355 | msgid "" | 363 | msgid "shaarli" |
356 | "the two fields have to be filled & the password must be the same in the two " | 364 | msgstr "shaarli" |
357 | "fields" | ||
358 | msgstr "Beide Felder müssen mit selbem Inhalt ausgefüllt sein" | ||
359 | 365 | ||
360 | msgid "still using the \"" | 366 | msgid "flattr" |
361 | msgstr "nutze immernoch die \"" | 367 | msgstr "flattr" |
362 | 368 | ||
363 | msgid "that theme does not seem to be installed" | 369 | msgid "Does this article appear wrong?" |
364 | msgstr "dieses Theme scheint nicht installiert zu sein" | 370 | msgstr "Erscheint dieser Artikel nicht richtig?" |
365 | 371 | ||
366 | msgid "you have changed your theme preferences" | 372 | msgid "tags:" |
367 | msgstr "Du hast deine Theme Einstellungen geändert" | 373 | msgstr "schlagworte:" |
368 | 374 | ||
369 | msgid "that language does not seem to be installed" | 375 | msgid "Edit tags" |
370 | msgstr "Diese Sprache scheint nicht installiert zu sein" | 376 | msgstr "Schlagworte bearbeiten" |
371 | 377 | ||
372 | msgid "you have changed your language preferences" | 378 | msgid "save link!" |
373 | msgstr "Du hast deine Spracheinstellungen geändert" | 379 | msgstr "link speichern!" |
374 | 380 | ||
375 | msgid "login failed: you have to fill all fields" | 381 | msgid "home" |
376 | msgstr "Anmeldung fehlgeschlagen: Alle Felder müssen ausgefüllt werden" | 382 | msgstr "start" |
377 | 383 | ||
378 | msgid "welcome to your wallabag" | 384 | msgid "tags" |
379 | msgstr "Willkommen bei deiner wallabag" | 385 | msgstr "schlagworte" |
380 | 386 | ||
381 | msgid "login failed: bad login or password" | 387 | msgid "logout" |
382 | msgstr "Anmeldung fehlgeschlagen: Falscher Benutzername oder Passwort" | 388 | msgstr "abmelden" |
383 | 389 | ||
384 | msgid "" | 390 | msgid "powered by" |
385 | "import from instapaper completed. You have to execute the cron to fetch " | 391 | msgstr "Angetrieben von" |
386 | "content." | ||
387 | msgstr "" | ||
388 | "Import aus Instapaper vollständig. Führe den cronjob aus um den Inhalt " | ||
389 | "abzurufen." | ||
390 | 392 | ||
391 | msgid "" | 393 | msgid "debug mode is on so cache is off." |
392 | "import from pocket completed. You have to execute the cron to fetch content." | 394 | msgstr "Der Debug-Modus ist aktiviert, also ist der Cache deaktiviert." |
393 | msgstr "" | ||
394 | "Import aus Pocket vollständig. Führe den cronjob aus um den Inhalt abzurufen." | ||
395 | 395 | ||
396 | msgid "" | 396 | msgid "your wallabag version:" |
397 | "import from Readability completed. You have to execute the cron to fetch " | 397 | msgstr "Deine wallabag-Version:" |
398 | "content." | ||
399 | msgstr "" | ||
400 | "Import aus Readability vollständig. Führe den cronjob aus um den Inhalt " | ||
401 | "abzurufen." | ||
402 | 398 | ||
403 | msgid "" | 399 | msgid "storage:" |
404 | "import from Poche completed. You have to execute the cron to fetch content." | 400 | msgstr "speicher:" |
405 | msgstr "" | ||
406 | "Import aus Poche vollständig. Führe den cronjob aus um den Inhalt abzurufen." | ||
407 | 401 | ||
408 | msgid "Unknown import provider." | 402 | msgid "save a link" |
409 | msgstr "Unbekannter Import Anbieter." | 403 | msgstr "einen link speichern" |
410 | 404 | ||
411 | msgid "Could not find required \"" | 405 | msgid "back to home" |
412 | msgstr "Nicht gefunden: \"" | 406 | msgstr "zurück zur startseite" |
413 | 407 | ||
414 | msgid "File uploaded. You can now execute import." | 408 | msgid "toggle mark as read" |
415 | msgstr "Datei hochgeladen. Du kannst nun importieren." | 409 | msgstr "als gelesen/ungelesen markieren" |
416 | 410 | ||
417 | msgid "Error while importing file. Do you have access to upload it?" | 411 | msgid "tweet" |
418 | msgstr "Fehler beim Importieren. Hast du das Recht zum Hochladen?" | 412 | msgstr "tweet" |
419 | 413 | ||
420 | msgid "User with this id (" | 414 | msgid "email" |
421 | msgstr "Nutzer mit dieser id (" | 415 | msgstr "email" |
422 | 416 | ||
423 | msgid "Uh, there is a problem while generating feeds." | 417 | msgid "this article appears wrong?" |
424 | msgstr "Oh, es gab ein Problem beim Erstellen des Feeds." | 418 | msgstr "dieser artikel erscheint falsch?" |
425 | 419 | ||
426 | msgid "Cache deleted." | 420 | msgid "No link available here!" |
427 | msgstr "Cache gelöscht" | 421 | msgstr "Kein Link verfügbar!" |
428 | 422 | ||
429 | msgid "Oops, it seems you don't have PHP 5." | 423 | msgid "Poching a link" |
430 | msgstr "Oops, es scheint als würde PHP 5 fehlen." | 424 | msgstr "Link speichern" |
431 | 425 | ||
432 | msgid "wallabag, a read it later open source system" | 426 | msgid "by filling this field" |
433 | msgstr "wallabag, ein Später-Lesen Open Source System" | 427 | msgstr "mit dem Ausfüllen dieses Feldes" |
434 | 428 | ||
435 | msgid "login failed: user doesn't exist" | 429 | msgid "bookmarklet: drag & drop this link to your bookmarks bar" |
436 | msgstr "Anmeldung fehlgeschlagen: Benutzer existiert nicht" | 430 | msgstr "Bookmarklet: Drag & drop diesen Link in deine Lesezeichen" |
437 | 431 | ||
438 | #~ msgid "You can enter multiple tags, separated by commas." | 432 | msgid "Drag & drop this link to your bookmarks bar:" |
439 | #~ msgstr "Du kannst mehrere Tags, durch Kommata getrennt, eingeben." | 433 | msgstr "Drag & drop diesen Link in deine Lesezeichen:" |
440 | 434 | ||
441 | #~ msgid "return to article" | 435 | msgid "your version" |
442 | #~ msgstr "zurück zum Artikel" | 436 | msgstr "deine Version" |
443 | 437 | ||
444 | #, fuzzy | 438 | msgid "latest stable version" |
445 | #~ msgid "favoris" | 439 | msgstr "letzte stabile Version" |
446 | #~ msgstr "Favoriten" | ||
447 | 440 | ||
448 | #~ msgid "mark all the entries as read" | 441 | msgid "a more recent stable version is available." |
449 | #~ msgstr "Markiere alle als gelesen" | 442 | msgstr "Eine aktuellere Version ist verfügbar." |
450 | 443 | ||
451 | #~ msgid "Back to top" | 444 | msgid "you are up to date." |
452 | #~ msgstr "Nach Oben" | 445 | msgstr "Du bist auf dem aktuellsten Stand." |
453 | 446 | ||
454 | #~ msgid "Mark as read" | 447 | msgid "latest dev version" |
455 | #~ msgstr "Als gelesen markieren" | 448 | msgstr "Letzte Entwickler-Version" |
456 | 449 | ||
457 | #~ msgid "Favorite" | 450 | msgid "a more recent development version is available." |
458 | #~ msgstr "Favoriten" | 451 | msgstr "Eine neuere Entwickler-Version ist verfügbar." |
459 | 452 | ||
460 | #~ msgid "Toggle favorite" | 453 | msgid "Please execute the import script locally, it can take a very long time." |
461 | #~ msgstr "Favorit" | 454 | msgstr "Führe das Import-Skript lokal aus, da der Import sehr lange dauern kann." |
462 | 455 | ||
463 | #~ msgid "Delete" | 456 | msgid "More infos in the official doc:" |
464 | #~ msgstr "Löschen" | 457 | msgstr "Mehr Informationen in der offiziellen Dokumentation:" |
465 | 458 | ||
466 | #~ msgid "Tweet" | 459 | msgid "import from Pocket" |
467 | #~ msgstr "Twittern" | 460 | msgstr "Aus Pocket importieren" |
468 | 461 | ||
469 | #~ msgid "Email" | 462 | msgid "import from Readability" |
470 | #~ msgstr "per E-Mail senden" | 463 | msgstr "Aus Readability importieren" |
471 | 464 | ||
472 | #~ msgid "shaarli" | 465 | msgid "import from Instapaper" |
473 | #~ msgstr "Shaarli" | 466 | msgstr "Aus Instapaper importieren" |
474 | 467 | ||
475 | #~ msgid "flattr" | 468 | msgid "Tags" |
476 | #~ msgstr "flattr" | 469 | msgstr "Schlagworte" |
477 | 470 | ||
478 | #~ msgid "Does this article appear wrong?" | 471 | msgid "Untitled" |
479 | #~ msgstr "Erscheint dieser Artikel falsch?" | 472 | msgstr "Untitled" |
480 | 473 | ||
481 | #~ msgid "Edit tags" | 474 | msgid "the link has been added successfully" |
482 | #~ msgstr "Tags bearbeiten" | 475 | msgstr "Der Link wurde erfolgreich hinzugefügt" |
483 | 476 | ||
484 | #~ msgid "Start typing for auto complete." | 477 | msgid "error during insertion : the link wasn't added" |
485 | #~ msgstr "Beginne zu tippen für die Autovervollständigung." | 478 | msgstr "Fehler während des Imports: Der Link wurde nicht hinzugefügt." |
486 | 479 | ||
487 | #~ msgid "Return home" | 480 | msgid "the link has been deleted successfully" |
488 | #~ msgstr "Zurück zum Start" | 481 | msgstr "Der Link wurde erfolgreich gelöscht" |
489 | 482 | ||
490 | #~ msgid "tags:" | 483 | msgid "the link wasn't deleted" |
491 | #~ msgstr "Tags:" | 484 | msgstr "Der Link wurde nicht gelöscht." |
492 | 485 | ||
493 | #~ msgid "login to your wallabag" | 486 | msgid "Article not found!" |
494 | #~ msgstr "Bei wallabag anmelden" | 487 | msgstr "Artikel nicht gefunden!" |
495 | 488 | ||
496 | #~ msgid "you are in demo mode, some features may be disabled." | 489 | msgid "previous" |
497 | #~ msgstr "" | 490 | msgstr "vorherige" |
498 | #~ "Du befindest dich im Demomodus, einige Funktionen könnten deaktiviert " | ||
499 | #~ "sein." | ||
500 | 491 | ||
501 | #~ msgid "Login" | 492 | msgid "next" |
502 | #~ msgstr "Benutzername" | 493 | msgstr "nächste" |
503 | 494 | ||
504 | #~ msgid "Stay signed in" | 495 | msgid "in demo mode, you can't update your password" |
505 | #~ msgstr "Angemeldet bleiben" | 496 | msgstr "Im Demo-Modus kannst du as Kennwort nicht aktualisieren." |
506 | 497 | ||
507 | #~ msgid "(Do not check on public computers)" | 498 | msgid "your password has been updated" |
508 | #~ msgstr "(nicht auf einem öffentlichen Computer anhaken)" | 499 | msgstr "Dein Passwort wurde aktualisiert" |
509 | 500 | ||
510 | #~ msgid "plop" | 501 | msgid "the two fields have to be filled & the password must be the same in the two fields" |
511 | #~ msgstr "plop" | 502 | msgstr "Beide Felder müssen ausgefüllt sein und das gleiche Passwort beinhalten" |
512 | 503 | ||
513 | #~ msgid "Login to wallabag" | 504 | msgid "still using the \"" |
514 | #~ msgstr "Bei wallabag anmelden" | 505 | msgstr "nutze immernoch die \"" |
515 | 506 | ||
516 | #~ msgid "Username" | 507 | msgid "that theme does not seem to be installed" |
517 | #~ msgstr "Benutzername" | 508 | msgstr "Dieses Theme scheint nicht installiert zu sein." |
518 | 509 | ||
519 | #~ msgid "Sign in" | 510 | msgid "you have changed your theme preferences" |
520 | #~ msgstr "Einloggen" | 511 | msgstr "Du hast deine Theme-Einstellungen geändert" |
521 | 512 | ||
522 | #~ msgid "Enter your search here" | 513 | msgid "that language does not seem to be installed" |
523 | #~ msgstr "Gib hier deine Suchanfrage ein" | 514 | msgstr "Diese Sprache scheint nicht installiert zu sein" |
524 | 515 | ||
525 | #~ msgid "installation" | 516 | msgid "you have changed your language preferences" |
526 | #~ msgstr "Installieren" | 517 | msgstr "Du hast deine Spracheinstellungen geändert" |
527 | 518 | ||
528 | #~ msgid "install your wallabag" | 519 | msgid "login failed: you have to fill all fields" |
529 | #~ msgstr "Installiere deine wallabag" | 520 | msgstr "Anmeldung fehlgeschlagen: Du musst alle Felder ausfüllen" |
530 | 521 | ||
531 | #~ msgid "" | 522 | msgid "welcome to your wallabag" |
532 | #~ "wallabag is still not installed. Please fill the below form to install " | 523 | msgstr "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" | 525 | msgid "login failed: bad login or password" |
542 | #~ msgstr "Wiederhole dein Passwort" | 526 | msgstr "Anmeldung fehlgeschlagen: Falscher Benutzername oder falsches Passwort" |
543 | 527 | ||
544 | #~ msgid "Install" | 528 | msgid "import from instapaper completed" |
545 | #~ msgstr "Installieren" | 529 | msgstr "Import aus Instapaper abgeschlossen" |
546 | 530 | ||
547 | #~ msgid "No link available here!" | 531 | msgid "import from pocket completed" |
548 | #~ msgstr "Kein Link verfügbar!" | 532 | msgstr "Import aus Pocket abgeschlossen" |
549 | 533 | ||
550 | #~ msgid "toggle mark as read" | 534 | msgid "import from Readability completed. " |
551 | #~ msgstr "Als gelesen markieren" | 535 | msgstr "Import aus Readability abgeschlossen." |
552 | 536 | ||
553 | #~ msgid "" | 537 | msgid "import from Poche completed. " |
554 | #~ "You can <a href='wallabag_compatibility_test.php'>check your " | 538 | msgstr "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" | 540 | msgid "Unknown import provider." |
561 | #~ msgstr "züruck zur Hauptseite" | 541 | msgstr "Unbekannter Import-Provider." |
562 | 542 | ||
563 | #~ msgid "tweet" | 543 | msgid "Incomplete inc/poche/define.inc.php file, please define \"" |
564 | #~ msgstr "Twittern" | 544 | msgstr "Die Datei /inc/poche/define.inc.php ist unvollständig, bitte definiere \"" |
565 | 545 | ||
566 | #~ msgid "email" | 546 | msgid "Could not find required \"" |
567 | #~ msgstr "senden per E-Mail" | 547 | msgstr "Nicht gefunden: \"" |
568 | 548 | ||
569 | #~ msgid "this article appears wrong?" | 549 | msgid "Uh, there is a problem while generating feeds." |
570 | #~ msgstr "dieser Artikel erscheint falsch?" | 550 | msgstr "Oh, es gibt ein Problem bei dem Generieren der Feeds." |
571 | 551 | ||
572 | #~ msgid "Poching a link" | 552 | msgid "Cache deleted." |
573 | #~ msgstr "Poche einen Link" | 553 | msgstr "Cache geleert." |
574 | 554 | ||
575 | #~ msgid "by filling this field" | 555 | msgid "Oops, it seems you don't have PHP 5." |
576 | #~ msgstr "durch das ausfüllen dieses Feldes:" | 556 | msgstr "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" | 558 | msgid "Add user" |
579 | #~ msgstr "Bookmarklet: Ziehe diesen Link in deine Lesezeichen-Leiste" | 559 | msgstr "Benutzer hinzufügen" |
580 | 560 | ||
581 | #~ msgid "your version" | 561 | msgid "Add a new user :" |
582 | #~ msgstr "Deine Version" | 562 | msgstr "Neuen Benutzer hinzufügen:" |
583 | 563 | ||
584 | #~ msgid "latest stable version" | 564 | msgid "Login for new user" |
585 | #~ msgstr "Neuste stabile Version" | 565 | msgstr "Benutzername des neuen Benutzers" |
586 | 566 | ||
587 | #~ msgid "a more recent stable version is available." | 567 | msgid "Password for new user" |
588 | #~ msgstr "Eine neuere stabile Version ist verfügbar." | 568 | msgstr "Passwort des neuen Benutzers" |
589 | 569 | ||
590 | #~ msgid "you are up to date." | 570 | msgid "Email for new user (not required)" |
591 | #~ msgstr "Du bist auf den neuesten Stand." | 571 | msgstr "E-Mail-Adresse des neuen Benutzers (nicht erforderlich)" |
592 | 572 | ||
593 | #~ msgid "latest dev version" | 573 | msgid "Send" |
594 | #~ msgstr "Neuste Entwicklungsversion" | 574 | msgstr "Senden" |
595 | 575 | ||
596 | #~ msgid "a more recent development version is available." | 576 | msgid "Delete account" |
597 | #~ msgstr "Eine neuere Entwicklungsversion ist verfügbar." | 577 | msgstr "Account löschen" |
598 | 578 | ||
599 | #~ msgid "" | 579 | msgid "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." | 580 | msgstr "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:" | 582 | msgid "Be careful, data will be erased forever (that is a very long time)." |
605 | #~ msgstr "Mehr Informationen in der offiziellen Dokumentation:" | 583 | msgstr "Pass auf, die Daten werden für immer gelöscht werden (eine sehr lange Zeit)." |
606 | 584 | ||
607 | #~ msgid "import from Pocket" | 585 | msgid "Type here your password" |
608 | #~ msgstr "Import aus Pocket" | 586 | msgstr "Kennwort hier eintippen" |
609 | 587 | ||
610 | #~ msgid "(you must have a %s file on your server)" | 588 | msgid "You are the only user, you cannot delete your own account." |
611 | #~ msgstr "(du brauchst eine %s Datei auf deinem Server)" | 589 | msgstr "Du kannst deinen Account nicht löschen, weil du der einzige Benutzer bist." |
612 | 590 | ||
613 | #~ msgid "import from Readability" | 591 | msgid "To completely remove wallabag, delete the wallabag folder on your web server (and eventual databases)." |
614 | #~ msgstr "Import aus Readability" | 592 | msgstr "Um wallabag komplett zu entfernen, lösche den wallabag-Ordner und die Datenbank(en) von deinem Webserver." |
615 | 593 | ||
616 | #~ msgid "import from Instapaper" | 594 | msgid "Enter your search here" |
617 | #~ msgstr "Import aus Instapaper" | 595 | msgstr "Suchbegriff hier eintippen" |
618 | 596 | ||
619 | #~ msgid "You can also create a cron task:" | 597 | msgid "Tag these results as" |
620 | #~ msgstr "Du kannst auch einen cronjob anlegen:" | 598 | msgstr "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." | 601 | msgid "Fancy an E-Book ?" |
624 | #~ msgstr "" | 602 | msgstr "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:" | 604 | msgid "Click on <a href=\"./?epub&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:" | 605 | msgstr "Klicke auf <a href=\"./?epub&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" | 607 | msgid "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" | 608 | msgstr "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" | 610 | msgid "Download the articles from this tag in an epub" |
634 | #~ msgstr "Import aus Pocket erfolgreich" | 611 | msgstr "Die Artikel von diesem Schlagwort als EPUB herunterladen" |
635 | 612 | ||
636 | #~ msgid "import from Poche completed. " | 613 | msgid "Download the articles from this search in an epub" |
637 | #~ msgstr "Import aus Poche erfolgreich" | 614 | msgstr "Alle Artikel aus dieser Suche als EPUB herunterladen" |
638 | 615 | ||
639 | #~ msgid "Incomplete inc/poche/define.inc.php file, please define \"" | 616 | msgid "Download the articles from this category in an epub" |
640 | #~ msgstr "Unvollständige inc/poche/define.inc.php Datei, bitte setze \"" | 617 | msgstr "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 @@ | |||
1 | msgid "" | ||
2 | msgstr "" | ||
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 | |||
16 | msgid "wallabag, a read it later open source system" | ||
17 | msgstr "wallabag, an open source \"Read It Later\" service" | ||
18 | |||
19 | msgid "login failed: user doesn't exist" | ||
20 | msgstr "Login failed: user doesn't exist" | ||
21 | |||
22 | msgid "return home" | ||
23 | msgstr "Return Home" | ||
24 | |||
25 | msgid "config" | ||
26 | msgstr "Config" | ||
27 | |||
28 | msgid "Saving articles" | ||
29 | msgstr "Saving articles" | ||
30 | |||
31 | msgid "There are several ways to save an article:" | ||
32 | msgstr "There are several ways to save an article:" | ||
33 | |||
34 | msgid "read the documentation" | ||
35 | msgstr "Read the documentation" | ||
36 | |||
37 | msgid "download the extension" | ||
38 | msgstr "Download the extension" | ||
39 | |||
40 | msgid "Firefox Add-On" | ||
41 | msgstr "Firefox Add-On" | ||
42 | |||
43 | msgid "Chrome Extension" | ||
44 | msgstr "Chrome Extension" | ||
45 | |||
46 | msgid "via F-Droid" | ||
47 | msgstr "via F-Droid" | ||
48 | |||
49 | msgid " or " | ||
50 | msgstr " or " | ||
51 | |||
52 | msgid "via Google Play" | ||
53 | msgstr "via Google Play" | ||
54 | |||
55 | msgid "download the application" | ||
56 | msgstr "Download the application" | ||
57 | |||
58 | msgid "By filling this field" | ||
59 | msgstr "By filling in this field" | ||
60 | |||
61 | msgid "bag it!" | ||
62 | msgstr "bag it!" | ||
63 | |||
64 | msgid "Bookmarklet: drag & drop this link to your bookmarks bar" | ||
65 | msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar" | ||
66 | |||
67 | msgid "Upgrading wallabag" | ||
68 | msgstr "Upgrading wallabag" | ||
69 | |||
70 | msgid "Installed version" | ||
71 | msgstr "Installed version" | ||
72 | |||
73 | msgid "Latest stable version" | ||
74 | msgstr "Latest stable version" | ||
75 | |||
76 | msgid "A more recent stable version is available." | ||
77 | msgstr "A more recent stable version is available." | ||
78 | |||
79 | msgid "You are up to date." | ||
80 | msgstr "You are up to date." | ||
81 | |||
82 | msgid "Latest dev version" | ||
83 | msgstr "Latest dev version" | ||
84 | |||
85 | msgid "A more recent development version is available." | ||
86 | msgstr "A more recent development version is available." | ||
87 | |||
88 | msgid "Feeds" | ||
89 | msgstr "Feeds" | ||
90 | |||
91 | msgid "" | ||
92 | "Your feed token is currently empty and must first be generated to enable " | ||
93 | "feeds. Click <a href='?feed&action=generate'>here to generate it</a>." | ||
94 | msgstr "" | ||
95 | "Your feed token is currently empty. You must generated it to enable feeds. " | ||
96 | "<a href='?feed&action=generate'>Generate Feed Token</a>." | ||
97 | |||
98 | msgid "Unread feed" | ||
99 | msgstr "Unread feed" | ||
100 | |||
101 | msgid "Favorites feed" | ||
102 | msgstr "Favourites feed" | ||
103 | |||
104 | msgid "Archive feed" | ||
105 | msgstr "Archive feed" | ||
106 | |||
107 | msgid "Your token:" | ||
108 | msgstr "Your token:" | ||
109 | |||
110 | msgid "Your user id:" | ||
111 | msgstr "Your user ID:" | ||
112 | |||
113 | msgid "" | ||
114 | "You can regenerate your token: <a href='?feed&action=generate'>generate!" | ||
115 | "</a>." | ||
116 | msgstr "<a href='?feed&action=generate'>Regenerate Token</a>" | ||
117 | |||
118 | msgid "Change your theme" | ||
119 | msgstr "Change Your Theme" | ||
120 | |||
121 | msgid "Theme:" | ||
122 | msgstr "Theme:" | ||
123 | |||
124 | msgid "Update" | ||
125 | msgstr "Update" | ||
126 | |||
127 | msgid "Change your language" | ||
128 | msgstr "Change Your Language" | ||
129 | |||
130 | msgid "Language:" | ||
131 | msgstr "Language:" | ||
132 | |||
133 | msgid "Change your password" | ||
134 | msgstr "Change Your Password" | ||
135 | |||
136 | msgid "New password:" | ||
137 | msgstr "New password:" | ||
138 | |||
139 | msgid "Password" | ||
140 | msgstr "Password" | ||
141 | |||
142 | msgid "Repeat your new password:" | ||
143 | msgstr "Repeat your new password:" | ||
144 | |||
145 | msgid "Import" | ||
146 | msgstr "Import" | ||
147 | |||
148 | msgid "" | ||
149 | "You can import your Pocket, Readability, Instapaper, Wallabag or any data in " | ||
150 | "appropriate json or html format." | ||
151 | msgstr "" | ||
152 | "You can import your Pocket, Readability, Instapaper, wallabag or any other " | ||
153 | "data in JSON or HTML format." | ||
154 | |||
155 | msgid "" | ||
156 | "Please execute the import script locally as it can take a very long time." | ||
157 | msgstr "Please run the import script locally as it can take a very long time." | ||
158 | |||
159 | msgid "" | ||
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." | ||
163 | msgstr "" | ||
164 | "Please select export file on your computer and press the “" | ||
165 | "Import” 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 | |||
169 | msgid "You can click here to fetch content for articles with no content." | ||
170 | msgstr "Fetch content for articles with no content" | ||
171 | |||
172 | msgid "More info in the official documentation:" | ||
173 | msgstr "More info in the official documentation:" | ||
174 | |||
175 | msgid "" | ||
176 | "(<a href=\"http://doc.wallabag.org/en/User_documentation/" | ||
177 | "Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)" | ||
178 | msgstr "" | ||
179 | "(<a href=\"http://doc.wallabag.org/en/User_documentation/" | ||
180 | "Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)" | ||
181 | |||
182 | msgid "Import from Pocket" | ||
183 | msgstr "Import from Pocket" | ||
184 | |||
185 | #, php-format | ||
186 | msgid "(you must have a %s file on your server)" | ||
187 | msgstr "(you must have a %s file on your server)" | ||
188 | |||
189 | msgid "Import from Readability" | ||
190 | msgstr "Import from Readability" | ||
191 | |||
192 | msgid "Import from Instapaper" | ||
193 | msgstr "Import from Instapaper" | ||
194 | |||
195 | msgid "Import from wallabag" | ||
196 | msgstr "Import from wallabag" | ||
197 | |||
198 | msgid "Export your wallabag data" | ||
199 | msgstr "Export your wallabag data" | ||
200 | |||
201 | msgid "Click here" | ||
202 | msgstr "Click here" | ||
203 | |||
204 | msgid "to download your database." | ||
205 | msgstr "to download your database." | ||
206 | |||
207 | msgid "to export your wallabag data." | ||
208 | msgstr "to export your wallabag data." | ||
209 | |||
210 | msgid "Export JSON" | ||
211 | msgstr "Export JSON" | ||
212 | |||
213 | msgid "Cache" | ||
214 | msgstr "Cache" | ||
215 | |||
216 | msgid "to delete cache." | ||
217 | msgstr "to delete cache." | ||
218 | |||
219 | msgid "Delete Cache" | ||
220 | msgstr "Delete Cache" | ||
221 | |||
222 | msgid "You can enter multiple tags, separated by commas." | ||
223 | msgstr "You can enter multiple tags, separated by commas." | ||
224 | |||
225 | msgid "Add tags:" | ||
226 | msgstr "Add tags:" | ||
227 | |||
228 | msgid "no tags" | ||
229 | msgstr "no tags" | ||
230 | |||
231 | msgid "The tag has been applied successfully" | ||
232 | msgstr "The tag has been applied successfully" | ||
233 | |||
234 | msgid "interview" | ||
235 | msgstr "interview" | ||
236 | |||
237 | msgid "editorial" | ||
238 | msgstr "editorial" | ||
239 | |||
240 | msgid "video" | ||
241 | msgstr "video" | ||
242 | |||
243 | msgid "return to article" | ||
244 | msgstr "Return to article" | ||
245 | |||
246 | msgid "plop" | ||
247 | msgstr "plop" | ||
248 | |||
249 | msgid "" | ||
250 | "You can <a href='wallabag_compatibility_test.php'>check your configuration " | ||
251 | "here</a>." | ||
252 | msgstr "" | ||
253 | "You can <a href='wallabag_compatibility_test.php'>check your configuration " | ||
254 | "here</a>." | ||
255 | |||
256 | msgid "favoris" | ||
257 | msgstr "Favourites" | ||
258 | |||
259 | msgid "archive" | ||
260 | msgstr "Archive" | ||
261 | |||
262 | msgid "unread" | ||
263 | msgstr "Unread" | ||
264 | |||
265 | msgid "by date asc" | ||
266 | msgstr "by date ascending" | ||
267 | |||
268 | msgid "by date" | ||
269 | msgstr "by date" | ||
270 | |||
271 | msgid "by date desc" | ||
272 | msgstr "by date descending" | ||
273 | |||
274 | msgid "by title asc" | ||
275 | msgstr "by title ascending" | ||
276 | |||
277 | msgid "by title" | ||
278 | msgstr "by title" | ||
279 | |||
280 | msgid "by title desc" | ||
281 | msgstr "by title descending" | ||
282 | |||
283 | msgid "Tag" | ||
284 | msgstr "Tag" | ||
285 | |||
286 | msgid "No articles found." | ||
287 | msgstr "No articles found." | ||
288 | |||
289 | msgid "Toggle mark as read" | ||
290 | msgstr "Toggle mark as read" | ||
291 | |||
292 | msgid "toggle favorite" | ||
293 | msgstr "Toggle favourite" | ||
294 | |||
295 | msgid "delete" | ||
296 | msgstr "Delete" | ||
297 | |||
298 | msgid "original" | ||
299 | msgstr "Original" | ||
300 | |||
301 | msgid "estimated reading time:" | ||
302 | msgstr "Estimated reading time:" | ||
303 | |||
304 | msgid "mark all the entries as read" | ||
305 | msgstr "Mark all the entries as read" | ||
306 | |||
307 | msgid "results" | ||
308 | msgstr "Results" | ||
309 | |||
310 | msgid "installation" | ||
311 | msgstr "Installation" | ||
312 | |||
313 | msgid "install your wallabag" | ||
314 | msgstr "Install your wallabag" | ||
315 | |||
316 | msgid "" | ||
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>." | ||
320 | msgstr "" | ||
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 | |||
325 | msgid "Login" | ||
326 | msgstr "Login" | ||
327 | |||
328 | msgid "Repeat your password" | ||
329 | msgstr "Repeat your password" | ||
330 | |||
331 | msgid "Install" | ||
332 | msgstr "Install" | ||
333 | |||
334 | msgid "login to your wallabag" | ||
335 | msgstr "Login to your wallabag" | ||
336 | |||
337 | msgid "Login to wallabag" | ||
338 | msgstr "Login to wallabag" | ||
339 | |||
340 | msgid "you are in demo mode, some features may be disabled." | ||
341 | msgstr "You are in demo mode; some features may be disabled." | ||
342 | |||
343 | msgid "Username" | ||
344 | msgstr "Username" | ||
345 | |||
346 | msgid "Stay signed in" | ||
347 | msgstr "Stay signed in" | ||
348 | |||
349 | msgid "(Do not check on public computers)" | ||
350 | msgstr "(Do not check on public computers)" | ||
351 | |||
352 | msgid "Sign in" | ||
353 | msgstr "Sign in" | ||
354 | |||
355 | msgid "favorites" | ||
356 | msgstr "Favourites" | ||
357 | |||
358 | msgid "estimated reading time :" | ||
359 | msgstr "Estimated reading time:" | ||
360 | |||
361 | msgid "Mark all the entries as read" | ||
362 | msgstr "Mark all the entries as read" | ||
363 | |||
364 | msgid "Return home" | ||
365 | msgstr "Return home" | ||
366 | |||
367 | msgid "Back to top" | ||
368 | msgstr "Back to top" | ||
369 | |||
370 | msgid "Mark as read" | ||
371 | msgstr "Mark as read" | ||
372 | |||
373 | msgid "Favorite" | ||
374 | msgstr "Favourite" | ||
375 | |||
376 | msgid "Toggle favorite" | ||
377 | msgstr "Toggle favourite" | ||
378 | |||
379 | msgid "Delete" | ||
380 | msgstr "Delete" | ||
381 | |||
382 | msgid "Tweet" | ||
383 | msgstr "Tweet" | ||
384 | |||
385 | msgid "Email" | ||
386 | msgstr "Email" | ||
387 | |||
388 | msgid "shaarli" | ||
389 | msgstr "shaarli" | ||
390 | |||
391 | msgid "flattr" | ||
392 | msgstr "flattr" | ||
393 | |||
394 | msgid "Does this article appear wrong?" | ||
395 | msgstr "Does this article display incorrectly?" | ||
396 | |||
397 | msgid "tags:" | ||
398 | msgstr "tags:" | ||
399 | |||
400 | msgid "Edit tags" | ||
401 | msgstr "Edit Tags" | ||
402 | |||
403 | msgid "save link!" | ||
404 | msgstr "Save Link" | ||
405 | |||
406 | msgid "home" | ||
407 | msgstr "Home" | ||
408 | |||
409 | msgid "tags" | ||
410 | msgstr "Tags" | ||
411 | |||
412 | msgid "logout" | ||
413 | msgstr "Logout" | ||
414 | |||
415 | msgid "powered by" | ||
416 | msgstr "Powered by" | ||
417 | |||
418 | msgid "debug mode is on so cache is off." | ||
419 | msgstr "Debug mode is on, so the cache is off." | ||
420 | |||
421 | msgid "your wallabag version:" | ||
422 | msgstr "Your wallabag version:" | ||
423 | |||
424 | msgid "storage:" | ||
425 | msgstr "Storage:" | ||
426 | |||
427 | msgid "save a link" | ||
428 | msgstr "Save a Link" | ||
429 | |||
430 | msgid "back to home" | ||
431 | msgstr "Back to Home" | ||
432 | |||
433 | msgid "toggle mark as read" | ||
434 | msgstr "Toggle mark as read" | ||
435 | |||
436 | msgid "tweet" | ||
437 | msgstr "Tweet" | ||
438 | |||
439 | msgid "email" | ||
440 | msgstr "Email" | ||
441 | |||
442 | msgid "this article appears wrong?" | ||
443 | msgstr "This article displays incorrectly?" | ||
444 | |||
445 | msgid "No link available here!" | ||
446 | msgstr "No link available here" | ||
447 | |||
448 | msgid "Poching a link" | ||
449 | msgstr "bagging a link" | ||
450 | |||
451 | msgid "by filling this field" | ||
452 | msgstr "by filling in this field" | ||
453 | |||
454 | msgid "bookmarklet: drag & drop this link to your bookmarks bar" | ||
455 | msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar" | ||
456 | |||
457 | msgid "Drag & drop this link to your bookmarks bar:" | ||
458 | msgstr "Drag & drop this link to your bookmarks bar:" | ||
459 | |||
460 | msgid "your version" | ||
461 | msgstr "your version" | ||
462 | |||
463 | msgid "latest stable version" | ||
464 | msgstr "latest stable version" | ||
465 | |||
466 | msgid "a more recent stable version is available." | ||
467 | msgstr "A more recent stable version is available." | ||
468 | |||
469 | msgid "you are up to date." | ||
470 | msgstr "You are up to date." | ||
471 | |||
472 | msgid "latest dev version" | ||
473 | msgstr "latest development version" | ||
474 | |||
475 | msgid "a more recent development version is available." | ||
476 | msgstr "A more recent development version is available." | ||
477 | |||
478 | msgid "You can clear cache to check the latest release." | ||
479 | msgstr "" | ||
480 | "You can <a href=\"#cache\">clear the cache</a> to check for the latest " | ||
481 | "release." | ||
482 | |||
483 | msgid "Please execute the import script locally, it can take a very long time." | ||
484 | msgstr "Please run the import script locally as it can take a very long time." | ||
485 | |||
486 | msgid "More infos in the official doc:" | ||
487 | msgstr "More information in the official doc:" | ||
488 | |||
489 | msgid "import from Pocket" | ||
490 | msgstr "Import from Pocket" | ||
491 | |||
492 | msgid "import from Readability" | ||
493 | msgstr "Import from Readability" | ||
494 | |||
495 | msgid "import from Instapaper" | ||
496 | msgstr "Import from Instapaper" | ||
497 | |||
498 | msgid "Tags" | ||
499 | msgstr "Tags" | ||
500 | |||
501 | msgid "Untitled" | ||
502 | msgstr "Untitled" | ||
503 | |||
504 | msgid "the link has been added successfully" | ||
505 | msgstr "The link has been added successfully." | ||
506 | |||
507 | msgid "error during insertion : the link wasn't added" | ||
508 | msgstr "Error during insertion: the link wasn't added." | ||
509 | |||
510 | msgid "the link has been deleted successfully" | ||
511 | msgstr "The link has been deleted successfully." | ||
512 | |||
513 | msgid "the link wasn't deleted" | ||
514 | msgstr "The link wasn't deleted." | ||
515 | |||
516 | msgid "Article not found!" | ||
517 | msgstr "Article not found." | ||
518 | |||
519 | msgid "previous" | ||
520 | msgstr "Previous" | ||
521 | |||
522 | msgid "next" | ||
523 | msgstr "Next" | ||
524 | |||
525 | msgid "in demo mode, you can't update your password" | ||
526 | msgstr "In demo mode, you can't update your password." | ||
527 | |||
528 | msgid "your password has been updated" | ||
529 | msgstr "Your password has been updated." | ||
530 | |||
531 | msgid "" | ||
532 | "the two fields have to be filled & the password must be the same in the two " | ||
533 | "fields" | ||
534 | msgstr "" | ||
535 | "The two fields must be filled in, and the password must be the same in both " | ||
536 | "fields" | ||
537 | |||
538 | msgid "still using the \"" | ||
539 | msgstr "Still using the \"" | ||
540 | |||
541 | msgid "that theme does not seem to be installed" | ||
542 | msgstr "That theme is not installed." | ||
543 | |||
544 | msgid "you have changed your theme preferences" | ||
545 | msgstr "You have changed your theme preferences." | ||
546 | |||
547 | msgid "that language does not seem to be installed" | ||
548 | msgstr "That language is not installed." | ||
549 | |||
550 | msgid "you have changed your language preferences" | ||
551 | msgstr "You have changed your language preferences." | ||
552 | |||
553 | msgid "login failed: you have to fill all fields" | ||
554 | msgstr "Login failed: you have to fill in all the fields." | ||
555 | |||
556 | msgid "welcome to your wallabag" | ||
557 | msgstr "Welcome to your wallabag." | ||
558 | |||
559 | msgid "login failed: bad login or password" | ||
560 | msgstr "Login failed: bad login or password." | ||
561 | |||
562 | msgid "import from instapaper completed" | ||
563 | msgstr "Import from Instapaper completed." | ||
564 | |||
565 | msgid "import from pocket completed" | ||
566 | msgstr "Import from Pocket completed." | ||
567 | |||
568 | msgid "import from Readability completed. " | ||
569 | msgstr "Import from Readability completed." | ||
570 | |||
571 | msgid "import from Poche completed. " | ||
572 | msgstr "Import from Poche completed. " | ||
573 | |||
574 | msgid "Unknown import provider." | ||
575 | msgstr "Unknown import provider." | ||
576 | |||
577 | msgid "Incomplete inc/poche/define.inc.php file, please define \"" | ||
578 | msgstr "Incomplete inc/poche/define.inc.php file, please define \"" | ||
579 | |||
580 | msgid "Could not find required \"" | ||
581 | msgstr "Could not find required \"" | ||
582 | |||
583 | msgid "Uh, there is a problem while generating feeds." | ||
584 | msgstr "There is a problem generating feeds." | ||
585 | |||
586 | msgid "Cache deleted." | ||
587 | msgstr "Cache deleted." | ||
588 | |||
589 | msgid "Oops, it seems you don't have PHP 5." | ||
590 | msgstr "Oops, it seems you don't have PHP 5." | ||
591 | |||
592 | msgid "Add user" | ||
593 | msgstr "Add User" | ||
594 | |||
595 | msgid "Add a new user :" | ||
596 | msgstr "Add a new user:" | ||
597 | |||
598 | msgid "Login for new user" | ||
599 | msgstr "Login for new user:" | ||
600 | |||
601 | msgid "Password for new user" | ||
602 | msgstr "Password for new user:" | ||
603 | |||
604 | msgid "Email for new user (not required)" | ||
605 | msgstr "Email for new user (not required):" | ||
606 | |||
607 | msgid "Send" | ||
608 | msgstr "Send" | ||
609 | |||
610 | msgid "Delete account" | ||
611 | msgstr "Delete Account" | ||
612 | |||
613 | msgid "You can delete your account by entering your password and validating." | ||
614 | msgstr "You can delete your account by entering your password and confirming." | ||
615 | |||
616 | msgid "Be careful, data will be erased forever (that is a very long time)." | ||
617 | msgstr "Be careful, data will be erased forever (that is a very long time)." | ||
618 | |||
619 | msgid "Type here your password" | ||
620 | msgstr "Enter your password" | ||
621 | |||
622 | msgid "You are the only user, you cannot delete your own account." | ||
623 | msgstr "You are the only user; you cannot delete your own account." | ||
624 | |||
625 | msgid "" | ||
626 | "To completely remove wallabag, delete the wallabag folder on your web server " | ||
627 | "(and eventual databases)." | ||
628 | msgstr "" | ||
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 | |||
632 | msgid "Enter your search here" | ||
633 | msgstr "Enter your search here" | ||
634 | |||
635 | msgid "Tag these results as" | ||
636 | msgstr "Tag these results as" | ||
637 | |||
638 | # ebook | ||
639 | msgid "Fancy an E-Book ?" | ||
640 | msgstr "Fancy an E-Book?" | ||
641 | |||
642 | msgid "" | ||
643 | "Click on <a href=\"./?epub&method=all\" title=\"Generate ePub\">this " | ||
644 | "link</a> to get all your articles in one ebook (ePub 3 format)." | ||
645 | msgstr "" | ||
646 | "You can <a href=\"./?epub&method=all\" title=\"Generate EPUB\">Generate " | ||
647 | "an EPUB</a> to get all your articles in one ebook (EPUB 3 format)." | ||
648 | |||
649 | msgid "" | ||
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." | ||
652 | msgstr "" | ||
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 | |||
656 | msgid "Download the articles from this tag in an epub" | ||
657 | msgstr "Download the articles from this tag as an EPUB" | ||
658 | |||
659 | msgid "Download the articles from this search in an epub" | ||
660 | msgstr "Download the articles from this search as an EPUB" | ||
661 | |||
662 | msgid "Download the articles from this category in an epub" | ||
663 | msgstr "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/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/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 & 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 & 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..54622cfc 100755 --- a/themes/baggy/css/main.css +++ b/themes/baggy/css/main.css | |||
@@ -736,6 +736,15 @@ 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 | } | ||
739 | 748 | ||
740 | 749 | ||
741 | /* .icon-image class, for image-based icons | 750 | /* .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=" " d="" horiz-adv-x="256" /> | 9 | <glyph unicode=" " d="" horiz-adv-x="512" /> |
24 | <glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" d="M0 133.888l256 256 256-256-75.776-75.776-180.224 179.712-180.224-179.712z" /> | 24 | <glyph unicode="" 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="" 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="" d="M0 267.776l512 512 512-512-151.552-151.552-360.448 359.424-360.448-359.424z" /> |
40 | <glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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 }}&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 }}&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 }}&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 }}&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 }}&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 }}¬es=&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 }}¬es=&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&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&method=id&value={{ entry.id|e }}" title="Generate ePub file">EPUB</a></li>{% endif %} | 24 | {% if constant('EPUB') == 1 %}<li><a href="./?epub&method=id&value={{ entry.id|e }}" title="Generate ePub file">EPUB</a></li>{% endif %} |
23 | {% if constant('MOBI') == 1 %}<li><a href="./?mobi&method=id&value={{ entry.id|e }}" title="Generate Mobi file">MOBI</a></li>{% endif %} | 25 | {% if constant('MOBI') == 1 %}<li><a href="./?mobi&method=id&value={{ entry.id|e }}" title="Generate Mobi file">MOBI</a></li>{% endif %} |
24 | {% if constant('PDF') == 1 %}<li><a href="./?pdf&method=id&value={{ entry.id|e }}" title="Generate PDF file">PDF</a></li>{% endif %} | 26 | {% if constant('PDF') == 1 %}<li><a href="./?pdf&method=id&value={{ entry.id|e }}" title="Generate PDF file">PDF</a></li>{% endif %} |
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 & 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 & 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..39a4df90 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 | ||
46 | a.evernote span { | ||
47 | background-image: url('../../_global/img/icons/evernote-icon--black.svg'); | ||
48 | background-size: 16px 16px; | ||
49 | } | ||
50 | |||
46 | a.diaspora span { | 51 | a.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,6 @@ a.bad-display span { | |||
67 | a.print span { | 72 | a.print span { |
68 | background-image: url('../img/default/print.png'); | 73 | background-image: url('../img/default/print.png'); |
69 | } | 74 | } |
75 | a.reload span { | ||
76 | background-image: url('../img/default/reload.png'); | ||
77 | } | ||
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/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 }}&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 }}&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 }}&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 }}&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 }}&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 }}¬es=&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 }}¬es=&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&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&method=id&value={{ entry.id|e }}" title="Generate ePub file">EPUB</a></li>{% endif %} | 23 | {% if constant('EPUB') == 1 %}<li><a href="./?epub&method=id&value={{ entry.id|e }}" title="Generate ePub file">EPUB</a></li>{% endif %} |
22 | {% if constant('MOBI') == 1 %}<li><a href="./?mobi&method=id&value={{ entry.id|e }}" title="Generate Mobi file">MOBI</a></li>{% endif %} | 24 | {% if constant('MOBI') == 1 %}<li><a href="./?mobi&method=id&value={{ entry.id|e }}" title="Generate Mobi file">MOBI</a></li>{% endif %} |
23 | {% if constant('PDF') == 1 %}<li><a href="./?pdf&method=id&value={{ entry.id|e }}" title="Generate PDF file">PDF</a></li>{% endif %} | 25 | {% if constant('PDF') == 1 %}<li><a href="./?pdf&method=id&value={{ entry.id|e }}" title="Generate PDF file">PDF</a></li>{% endif %} |