diff options
24 files changed, 291 insertions, 120 deletions
diff --git a/TRANSLATION.md b/TRANSLATION.md index 2e38d5cc..a033662c 100755 --- a/TRANSLATION.md +++ b/TRANSLATION.md | |||
@@ -1,10 +1,10 @@ | |||
1 | # How to manage translations of wallabag | 1 | # How to manage translations for wallabag |
2 | 2 | ||
3 | This guide will describe procedure of translation management of wallabag web application. | 3 | This guide will describe the procedure of translation management of the wallabag web application. |
4 | 4 | ||
5 | All translation are made using [gettext](http://en.wikipedia.org/wiki/Gettext) system and tools. | 5 | All translations are made using [gettext](http://en.wikipedia.org/wiki/Gettext) system and tools. |
6 | 6 | ||
7 | You will need [Poedit](http://www.poedit.net/download.php) editor to update, edit and create your translation files comfortably. In general, you can handle translations also without it: all can be done using gettext tools and your favorite plain text editor only. This guide, however, describes editing with Poedit. If you want to use gettext only, pls refer to xgettext manual page to update po files from sources (see also how it is used by Poedit below) and use msgunfmt tool to compile .mo files manually. | 7 | You will need the [Poedit](http://www.poedit.net/download.php) editor to update, edit and create your translation files easily. However, you can also handle translations also without it: all can be done using gettext tools and your favorite plain text editor only. This guide, however, describes editing with Poedit. If you want to use gettext only, please refer to the xgettext manual page to update po files from sources (see also how it is used by Poedit below) and use msgunfmt tool to compile .mo files manually. |
8 | 8 | ||
9 | You need to know, that translation phrases are stored in **".po"** files (for example: `locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po`), which are then complied in **".mo"** files using **msgfmt** gettext tool or by Poedit, which will run msgfmt for you in background. | 9 | You need to know, that translation phrases are stored in **".po"** files (for example: `locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po`), which are then complied in **".mo"** files using **msgfmt** gettext tool or by Poedit, which will run msgfmt for you in background. |
10 | 10 | ||
@@ -22,7 +22,7 @@ go to root of your installation of wallabag project and run next command: | |||
22 | 22 | ||
23 | `rm -rf ./cache/*` | 23 | `rm -rf ./cache/*` |
24 | 24 | ||
25 | (this may require root privileges if you run, for example Apatche web server with mod_php) | 25 | (this may require root privileges if you run, for example Apache web server with mod_php) |
26 | 26 | ||
27 | ### 2. Generate php files from all twig templates | 27 | ### 2. Generate php files from all twig templates |
28 | Do this using next command: | 28 | Do this using next command: |
@@ -31,37 +31,37 @@ Do this using next command: | |||
31 | 31 | ||
32 | OR | 32 | OR |
33 | 33 | ||
34 | from your browser: **http://your-wallabag-host.com/locale/tools/fillCache.php** (this may require removal of .htacces file in locale/ directory). | 34 | from your browser: **http://your-wallabag-host.com/locale/tools/fillCache.php** (this may require removal of .htaccess file in locale/ directory). |
35 | 35 | ||
36 | ### 3. Configure your Poedit | 36 | ### 3. Configure your Poedit |
37 | Open Poedit editor, open Edit->Preferences. Go to "Parsers" tab, click on PHP and press "Edit" button. Make sure your "Parser command:" looks like | 37 | Open Poedit editor, open Edit->Preferences. Go to "Parsers" tab, click on PHP and press "Edit" button. Make sure your "Parser command:" looks like |
38 | 38 | ||
39 | `xgettext --no-location --force-po -o %o %C %K %F` | 39 | `xgettext --no-location --force-po -o %o %C %K %F` |
40 | 40 | ||
41 | Usualy it is required to add "--no-location" to default value. | 41 | Usually it is required to add "--no-location" to default value. |
42 | 42 | ||
43 | ### 4. Open .po file you want to edit in Poedit and change it's settings | 43 | ### 4. Open .po file you want to edit in Poedit and change its settings |
44 | Open, for example `locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po` file in your Poedit. | 44 | Open, for example `locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po` file in your Poedit. |
45 | 45 | ||
46 | Go to "Catalog"->"Settings..." menu. Go to "Path" tab and add path to wallabag installaion in your local file system. This step can't be ommited as you will not be able to update phrases otherwise. | 46 | Go to "Catalog"->"Settings..." menu. Then go to "Path" tab and add path to wallabag installation in your local file system. This step can't be omitted as you will not be able to update phrases otherwise. |
47 | 47 | ||
48 | You can also check "project into" tab to be sure, that "Language" is set correctly (this will allow you to spell check your translation). | 48 | You can also check "project into" tab to be sure, that "Language" is set correctly (this will allow you to spell check your translation). |
49 | 49 | ||
50 | ### 5. Update opened .po file from sources | 50 | ### 5. Update opened .po file from sources |
51 | Once you have set your path correctly, you are able to update phrases from sources. Press "Update catalog - synchronize it with sources" button or go to "Catalog"->"Update from sources" menu. | 51 | Once you have set your path correctly, you are able to update phrases from sources. Press "Update catalog - synchronize it with sources" button or go to "Catalog"->"Update from sources" menu. |
52 | 52 | ||
53 | As a result you will see confirmation popup with two tabs: "New strings" and "Obsolete strings". Pls review and accept changes (or press "Undo" if you see too many obsolete strings, as Poedit will remove them all - in this case please make sure all previous steps are performed w/o errors). | 53 | As a result you will see confirmation popup with two tabs: "New strings" and "Obsolete strings". Please review and accept changes (or press "Undo" if you see too many obsolete strings, as Poedit will remove them all - in this case please make sure all previous steps are performed w/o errors). |
54 | 54 | ||
55 | ### 6. Translate and save your .po file | 55 | ### 6. Translate and save your .po file |
56 | If you have any dificulties on this step, please consult with Poedit manual. | 56 | If you have any difficulties on this step, please consult with Poedit manual. |
57 | Every time you save your .po file, Poedit will also comple appropriate .mo file by default (of course, if not disabled in preferences). | 57 | Every time you save your .po file, Poedit will also compile appropriate .mo file by default (of course, if not disabled in preferences). |
58 | 58 | ||
59 | So, you are almost done. | 59 | You are now almost done. |
60 | 60 | ||
61 | ### 7. Clear cache again | 61 | ### 7. Clear cache again |
62 | This step may be required if your web server runs php scripts in name of, say, www user (i.e. Apache with mod_php, not cgi). | 62 | This step may be required if your web server runs php scripts in name of, say, www user (i.e. Apache with mod_php, not cgi). |
63 | 63 | ||
64 | 64 | ||
65 | ##To create new translation | 65 | ##To create new translation |
66 | Please simple create appropriate directories in locale folder and perform all steps, described above. Instead of opening an existing file just create new one. | 66 | You just have to copy the folder corresponding to the language you want to translate from, change language in the project settings and for the folder and files names. Then start replacing all existing translations with your own. |
67 | 67 | ||
diff --git a/inc/3rdparty/site_config/standard/adme.ru.txt b/inc/3rdparty/site_config/standard/adme.ru.txt new file mode 100644 index 00000000..b929685d --- /dev/null +++ b/inc/3rdparty/site_config/standard/adme.ru.txt | |||
@@ -0,0 +1,6 @@ | |||
1 | # Generated by FiveFilters.org's web-based selection tool | ||
2 | # Place this file inside your site_config/custom/ folder | ||
3 | # Source: http://siteconfig.fivefilters.org/grab.php?url=http%3A%2F%2Fwww.adme.ru%2Ftvorchestvo-hudozhniki%2Fprostoj-kak-5-kopeek-hudozhnik-557405%2F | ||
4 | |||
5 | body: //article[contains(concat(' ',normalize-space(@class),' '),' article ')] | ||
6 | test_url: http://www.adme.ru/tvorchestvo-hudozhniki/prostoj-kak-5-kopeek-hudozhnik-557405/ | ||
diff --git a/inc/3rdparty/site_config/standard/heise.de.txt b/inc/3rdparty/site_config/standard/heise.de.txt index c51af561..37a4aaf0 100755 --- a/inc/3rdparty/site_config/standard/heise.de.txt +++ b/inc/3rdparty/site_config/standard/heise.de.txt | |||
@@ -1,7 +1,9 @@ | |||
1 | single_page_link: //p[@class='news_option']/a | 1 | #second part of single_page_link for telepolis-articles (desktop-version of site) |
2 | single_page_link: //p[@class='news_option']/a | //a[@id='tp-druckversion'] | ||
2 | 3 | ||
3 | date: //p[@class='news_datum'] | 4 | date: //p[@class='news_datum'] |
4 | title: //h1 | 5 | title: //h1 |
5 | body: //div[@class='meldung_wrapper'] | 6 | body: //div[@class='meldung_wrapper'] |
6 | 7 | ||
7 | test_url: http://www.heise.de/newsticker/meldung/Europa-soll-Grundrechteschutz-im-Netz-staerken-1392664.html \ No newline at end of file | 8 | test_url: http://www.heise.de/newsticker/meldung/Europa-soll-Grundrechteschutz-im-Netz-staerken-1392664.html |
9 | test_url: http://www.heise.de/tp/artikel/42/42579/1.html | ||
diff --git a/inc/3rdparty/site_config/standard/m00natic.github.io.txt b/inc/3rdparty/site_config/standard/m00natic.github.io.txt new file mode 100644 index 00000000..911fcbd0 --- /dev/null +++ b/inc/3rdparty/site_config/standard/m00natic.github.io.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | # Generated by FiveFilters.org's web-based selection tool | ||
2 | # Place this file inside your site_config/custom/ folder | ||
3 | # Source: http://siteconfig.fivefilters.org/grab.php?url=https%3A%2F%2Fm00natic.github.io%2Femacs%2Femacs-wiki.html | ||
4 | |||
5 | body: //div[@id='content'] | ||
6 | strip_id_or_class: table-of-contents | ||
7 | test_url: https://m00natic.github.io/emacs/emacs-wiki.html \ No newline at end of file | ||
diff --git a/inc/3rdparty/site_config/standard/tuhdo.github.io.txt b/inc/3rdparty/site_config/standard/tuhdo.github.io.txt new file mode 100644 index 00000000..beb551fd --- /dev/null +++ b/inc/3rdparty/site_config/standard/tuhdo.github.io.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | # Generated by FiveFilters.org's web-based selection tool | ||
2 | # Place this file inside your site_config/custom/ folder | ||
3 | # Source: http://siteconfig.fivefilters.org/grab.php?url=https%3A%2F%2Ftuhdo.github.io%2Femacs-tutor.html | ||
4 | |||
5 | body: //div[@id='content'] | ||
6 | strip_id_or_class: table-of-contents | ||
7 | test_url: https://tuhdo.github.io/emacs-tutor.html | ||
diff --git a/inc/3rdparty/site_config/standard/wordyard.com.txt b/inc/3rdparty/site_config/standard/wordyard.com.txt new file mode 100644 index 00000000..d8c753da --- /dev/null +++ b/inc/3rdparty/site_config/standard/wordyard.com.txt | |||
@@ -0,0 +1,8 @@ | |||
1 | # Generated by FiveFilters.org's web-based selection tool | ||
2 | # Place this file inside your site_config/custom/ folder | ||
3 | # Source: http://siteconfig.fivefilters.org/grab.php?url=http%3A%2F%2Fwww.wordyard.com%2F2014%2F09%2F26%2Fremove-blindfold-before-embarking-to-utopia%2F | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' entry-content ')] | ||
6 | strip_id_or_class: robots-nocontent | ||
7 | strip_id_or_class: post-revisions | ||
8 | test_url: http://www.wordyard.com/2014/09/26/remove-blindfold-before-embarking-to-utopia/ \ No newline at end of file | ||
diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php index dfd7ae34..f6ba4708 100755 --- a/inc/poche/Database.class.php +++ b/inc/poche/Database.class.php | |||
@@ -24,15 +24,17 @@ class Database { | |||
24 | switch (STORAGE) { | 24 | switch (STORAGE) { |
25 | case 'sqlite': | 25 | case 'sqlite': |
26 | // Check if /db is writeable | 26 | // Check if /db is writeable |
27 | if ( !is_writable(STORAGE_SQLITE) || !is_writable(dirname(STORAGE_SQLITE))) { | 27 | if ( !is_writable(STORAGE_SQLITE) || !is_writable(dirname(STORAGE_SQLITE))) { |
28 | die('An error occured: "db" directory must be writeable for your web server user!'); | 28 | die('An error occured: "db" directory must be writeable for your web server user!'); |
29 | } | 29 | } |
30 | $db_path = 'sqlite:' . STORAGE_SQLITE; | 30 | $db_path = 'sqlite:' . STORAGE_SQLITE; |
31 | $this->handle = new PDO($db_path); | 31 | $this->handle = new PDO($db_path); |
32 | break; | 32 | break; |
33 | case 'mysql': | 33 | case 'mysql': |
34 | $db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB; | 34 | $db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB . ';charset=utf8mb4'; |
35 | $this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD); | 35 | $this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD, array( |
36 | PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4', | ||
37 | )); | ||
36 | break; | 38 | break; |
37 | case 'postgres': | 39 | case 'postgres': |
38 | $db_path = 'pgsql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB; | 40 | $db_path = 'pgsql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB; |
@@ -117,10 +119,10 @@ class Database { | |||
117 | $query = $this->executeQuery($sql, array()); | 119 | $query = $this->executeQuery($sql, array()); |
118 | } | 120 | } |
119 | 121 | ||
120 | public function install($login, $password) | 122 | public function install($login, $password, $email = '') |
121 | { | 123 | { |
122 | $sql = 'INSERT INTO users ( username, password, name, email) VALUES (?, ?, ?, ?)'; | 124 | $sql = 'INSERT INTO users ( username, password, name, email) VALUES (?, ?, ?, ?)'; |
123 | $params = array($login, $password, $login, ' '); | 125 | $params = array($login, $password, $login, $email); |
124 | $query = $this->executeQuery($sql, $params); | 126 | $query = $this->executeQuery($sql, $params); |
125 | 127 | ||
126 | $sequence = ''; | 128 | $sequence = ''; |
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index c80e5d2a..8cebafa3 100755 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php | |||
@@ -74,12 +74,13 @@ class Poche | |||
74 | /** | 74 | /** |
75 | * Creates a new user | 75 | * Creates a new user |
76 | */ | 76 | */ |
77 | public function createNewUser($username, $password) | 77 | public function createNewUser($username, $password, $email = "") |
78 | { | 78 | { |
79 | if (!empty($username) && !empty($password)){ | 79 | if (!empty($username) && !empty($password)){ |
80 | $newUsername = filter_var($username, FILTER_SANITIZE_STRING); | 80 | $newUsername = filter_var($username, FILTER_SANITIZE_STRING); |
81 | $email = filter_var($email, FILTER_SANITIZE_STRING); | ||
81 | if (!$this->store->userExists($newUsername)){ | 82 | if (!$this->store->userExists($newUsername)){ |
82 | if ($this->store->install($newUsername, Tools::encodeString($password . $newUsername))) { | 83 | if ($this->store->install($newUsername, Tools::encodeString($password . $newUsername), $email)) { |
83 | Tools::logm('The new user ' . $newUsername . ' has been installed'); | 84 | Tools::logm('The new user ' . $newUsername . ' has been installed'); |
84 | $this->messages->add('s', sprintf(_('The new user %s has been installed. Do you want to <a href="?logout">logout ?</a>'), $newUsername)); | 85 | $this->messages->add('s', sprintf(_('The new user %s has been installed. Do you want to <a href="?logout">logout ?</a>'), $newUsername)); |
85 | Tools::redirect(); | 86 | Tools::redirect(); |
diff --git a/inc/poche/WallabagEpub.class.php b/inc/poche/WallabagEpub.class.php index b81d9bfd..9c4d3566 100644 --- a/inc/poche/WallabagEpub.class.php +++ b/inc/poche/WallabagEpub.class.php | |||
@@ -12,14 +12,12 @@ class WallabagEpub | |||
12 | { | 12 | { |
13 | protected $wallabag; | 13 | protected $wallabag; |
14 | protected $method; | 14 | protected $method; |
15 | protected $id; | ||
16 | protected $value; | 15 | protected $value; |
17 | 16 | ||
18 | public function __construct(Poche $wallabag, $method, $id, $value) | 17 | public function __construct(Poche $wallabag, $method, $value) |
19 | { | 18 | { |
20 | $this->wallabag = $wallabag; | 19 | $this->wallabag = $wallabag; |
21 | $this->method = $method; | 20 | $this->method = $method; |
22 | $this->id = $id; | ||
23 | $this->value = $value; | 21 | $this->value = $value; |
24 | } | 22 | } |
25 | 23 | ||
@@ -30,7 +28,7 @@ class WallabagEpub | |||
30 | { | 28 | { |
31 | switch ($this->method) { | 29 | switch ($this->method) { |
32 | case 'id': | 30 | case 'id': |
33 | $entryID = filter_var($this->id, FILTER_SANITIZE_NUMBER_INT); | 31 | $entryID = filter_var($this->value, FILTER_SANITIZE_NUMBER_INT); |
34 | $entry = $this->wallabag->store->retrieveOneById($entryID, $this->wallabag->user->getId()); | 32 | $entry = $this->wallabag->store->retrieveOneById($entryID, $this->wallabag->user->getId()); |
35 | $entries = array($entry); | 33 | $entries = array($entry); |
36 | $bookTitle = $entry['title']; | 34 | $bookTitle = $entry['title']; |
@@ -87,7 +85,7 @@ class WallabagEpub | |||
87 | $log->logLine("getCurrentServerURL: " . $book->getCurrentServerURL()); | 85 | $log->logLine("getCurrentServerURL: " . $book->getCurrentServerURL()); |
88 | $log->logLine("getCurrentPageURL..: " . $book->getCurrentPageURL()); | 86 | $log->logLine("getCurrentPageURL..: " . $book->getCurrentPageURL()); |
89 | 87 | ||
90 | $book->setTitle(_('wallabag\'s articles')); | 88 | $book->setTitle($bookTitle); |
91 | $book->setIdentifier("http://$_SERVER[HTTP_HOST]", EPub::IDENTIFIER_URI); // Could also be the ISBN number, prefered for published books, or a UUID. | 89 | $book->setIdentifier("http://$_SERVER[HTTP_HOST]", EPub::IDENTIFIER_URI); // Could also be the ISBN number, prefered for published books, or a UUID. |
92 | //$book->setLanguage("en"); // Not needed, but included for the example, Language is mandatory, but EPub defaults to "en". Use RFC3066 Language codes, such as "en", "da", "fr" etc. | 90 | //$book->setLanguage("en"); // Not needed, but included for the example, Language is mandatory, but EPub defaults to "en". Use RFC3066 Language codes, such as "en", "da", "fr" etc. |
93 | $book->setDescription(_("Some articles saved on my wallabag")); | 91 | $book->setDescription(_("Some articles saved on my wallabag")); |
diff --git a/install/index.php b/install/index.php index 1ae782a2..b27200a8 100755 --- a/install/index.php +++ b/install/index.php | |||
@@ -86,6 +86,7 @@ else if (isset($_POST['install'])) { | |||
86 | $salted_password = sha1($password . $username . $salt); | 86 | $salted_password = sha1($password . $username . $salt); |
87 | 87 | ||
88 | // Database informations | 88 | // Database informations |
89 | $moreQueries = array(); | ||
89 | if ($_POST['db_engine'] == 'sqlite') { | 90 | if ($_POST['db_engine'] == 'sqlite') { |
90 | if (!copy('install/poche.sqlite', 'db/poche.sqlite')) { | 91 | if (!copy('install/poche.sqlite', 'db/poche.sqlite')) { |
91 | $errors[] = 'Impossible to create inc/poche/config.inc.php file.'; | 92 | $errors[] = 'Impossible to create inc/poche/config.inc.php file.'; |
@@ -101,12 +102,21 @@ else if (isset($_POST['install'])) { | |||
101 | $content = file_get_contents('inc/poche/config.inc.php'); | 102 | $content = file_get_contents('inc/poche/config.inc.php'); |
102 | 103 | ||
103 | if ($_POST['db_engine'] == 'mysql') { | 104 | if ($_POST['db_engine'] == 'mysql') { |
104 | $db_path = 'mysql:host=' . $_POST['mysql_server'] . ';dbname=' . $_POST['mysql_database']; | 105 | $db_path = 'mysql:host=' . $_POST['mysql_server'] . ';dbname=' . $_POST['mysql_database'] . ';charset=utf8mb4'; |
105 | $content = str_replace("define ('STORAGE_SERVER', 'localhost');", "define ('STORAGE_SERVER', '".$_POST['mysql_server']."');", $content); | 106 | $content = str_replace("define ('STORAGE_SERVER', 'localhost');", "define ('STORAGE_SERVER', '".$_POST['mysql_server']."');", $content); |
106 | $content = str_replace("define ('STORAGE_DB', 'poche');", "define ('STORAGE_DB', '".$_POST['mysql_database']."');", $content); | 107 | $content = str_replace("define ('STORAGE_DB', 'poche');", "define ('STORAGE_DB', '".$_POST['mysql_database']."');", $content); |
107 | $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['mysql_user']."');", $content); | 108 | $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['mysql_user']."');", $content); |
108 | $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['mysql_password']."');", $content); | 109 | $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['mysql_password']."');", $content); |
109 | $handle = new PDO($db_path, $_POST['mysql_user'], $_POST['mysql_password']); | 110 | $handle = new PDO($db_path, $_POST['mysql_user'], $_POST['mysql_password'], array( |
111 | PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4', | ||
112 | )); | ||
113 | |||
114 | $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), | ||
116 | (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);"; | ||
118 | $moreQueries[] = "INSERT INTO `tags` (`id`, `value`) VALUES (1, 'opensource');"; | ||
119 | $moreQueries[] = "INSERT INTO `tags_entries` (`id`, `entry_id`, `tag_id`) VALUES (1, 2, 1);"; | ||
110 | 120 | ||
111 | $sql_structure = file_get_contents('install/mysql.sql'); | 121 | $sql_structure = file_get_contents('install/mysql.sql'); |
112 | } | 122 | } |
@@ -117,6 +127,13 @@ else if (isset($_POST['install'])) { | |||
117 | $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['pg_user']."');", $content); | 127 | $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['pg_user']."');", $content); |
118 | $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['pg_password']."');", $content); | 128 | $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['pg_password']."');", $content); |
119 | $handle = new PDO($db_path, $_POST['pg_user'], $_POST['pg_password']); | 129 | $handle = new PDO($db_path, $_POST['pg_user'], $_POST['pg_password']); |
130 | |||
131 | $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), | ||
133 | ('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)"; | ||
135 | $moreQueries[] = "INSERT INTO tags (value) VALUES ('opensource')"; | ||
136 | $moreQueries[] = "INSERT INTO tags_entries (entry_id, tag_id) VALUES (2, 1)"; | ||
120 | 137 | ||
121 | $sql_structure = file_get_contents('install/postgres.sql'); | 138 | $sql_structure = file_get_contents('install/postgres.sql'); |
122 | } | 139 | } |
@@ -140,17 +157,19 @@ else if (isset($_POST['install'])) { | |||
140 | } | 157 | } |
141 | } | 158 | } |
142 | 159 | ||
143 | // create database structure | 160 | if ($_POST['db_engine'] != "sqlite") { |
144 | $query = executeQuery($handle, $sql_structure, array()); | 161 | // create database structure |
162 | $query = $handle->exec($sql_structure); | ||
163 | } | ||
145 | 164 | ||
146 | // Create user | 165 | // Create user |
147 | $handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); | 166 | $handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); |
148 | 167 | ||
149 | $sql = 'INSERT INTO users (username, password, name) VALUES (?, ?, ?)'; | 168 | $sql = "INSERT INTO users (username, password, name, email) VALUES (?, ?, ?, '')"; |
150 | $params = array($username, $salted_password, $username); | 169 | $params = array($username, $salted_password, $username); |
151 | $query = executeQuery($handle, $sql, $params); | 170 | $query = executeQuery($handle, $sql, $params); |
152 | 171 | ||
153 | $id_user = $handle->lastInsertId(); | 172 | $id_user = (int)$handle->lastInsertId('users_id_seq'); |
154 | 173 | ||
155 | $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; | 174 | $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; |
156 | $params = array($id_user, 'pager', '10'); | 175 | $params = array($id_user, 'pager', '10'); |
@@ -160,6 +179,10 @@ else if (isset($_POST['install'])) { | |||
160 | $params = array($id_user, 'language', 'en_EN.UTF8'); | 179 | $params = array($id_user, 'language', 'en_EN.UTF8'); |
161 | $query = executeQuery($handle, $sql, $params); | 180 | $query = executeQuery($handle, $sql, $params); |
162 | 181 | ||
182 | foreach ($moreQueries as $query) { | ||
183 | executeQuery($handle, $query, array()); | ||
184 | } | ||
185 | |||
163 | $successes[] = 'wallabag is now installed. You can now <a href="index.php?clean=0">access it !</a>'; | 186 | $successes[] = 'wallabag is now installed. You can now <a href="index.php?clean=0">access it !</a>'; |
164 | } | 187 | } |
165 | } | 188 | } |
@@ -235,7 +258,7 @@ else if (isset($_POST['install'])) { | |||
235 | <?php endif; ?> | 258 | <?php endif; ?> |
236 | <?php endif; ?> | 259 | <?php endif; ?> |
237 | <p>To install wallabag, you just have to fill the following fields. That's all.</p> | 260 | <p>To install wallabag, you just have to fill the following fields. That's all.</p> |
238 | <p>Don't forget to check your server compatibility <a href="wallabag_compatibility_test.php?from=install">here</a>.</p> | 261 | <p>Don't forget to check your server compatibility <a href="install/wallabag_compatibility_test.php?from=install">here</a>.</p> |
239 | <form method="post"> | 262 | <form method="post"> |
240 | <fieldset> | 263 | <fieldset> |
241 | <legend><strong>Technical settings</strong></legend> | 264 | <legend><strong>Technical settings</strong></legend> |
@@ -292,9 +315,11 @@ php composer.phar install</code></pre></li> | |||
292 | <p> | 315 | <p> |
293 | <label for="password">Password</label> | 316 | <label for="password">Password</label> |
294 | <input type="password" required id="password" name="password" value="wallabag" /> | 317 | <input type="password" required id="password" name="password" value="wallabag" /> |
318 | <label for="show">Show password:</label> <input style="margin-left:-80px;" name="show" id="show" type="checkbox" onchange="document.getElementById('password').type = this.checked ? 'text' : 'password'"> | ||
295 | </p> | 319 | </p> |
296 | <p> | 320 | <p> |
297 | <label for="show">Show password:</label> <input name="show" id="show" type="checkbox" onchange="document.getElementById('password').type = this.checked ? 'text' : 'password'"> | 321 | <label for="email">Email (not required)</label> |
322 | <input type="email" id="email" name="email" /> | ||
298 | </p> | 323 | </p> |
299 | </fieldset> | 324 | </fieldset> |
300 | 325 | ||
diff --git a/install/mysql.sql b/install/mysql.sql index de5640e4..1b65cd35 100644 --- a/install/mysql.sql +++ b/install/mysql.sql | |||
@@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS `config` ( | |||
3 | `name` varchar(255) NOT NULL, | 3 | `name` varchar(255) NOT NULL, |
4 | `value` varchar(255) NOT NULL, | 4 | `value` varchar(255) NOT NULL, |
5 | PRIMARY KEY (`id`) | 5 | PRIMARY KEY (`id`) |
6 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | 6 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
7 | 7 | ||
8 | CREATE TABLE IF NOT EXISTS `entries` ( | 8 | CREATE TABLE IF NOT EXISTS `entries` ( |
9 | `id` int(11) NOT NULL AUTO_INCREMENT, | 9 | `id` int(11) NOT NULL AUTO_INCREMENT, |
@@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS `entries` ( | |||
14 | `content` blob NOT NULL, | 14 | `content` blob NOT NULL, |
15 | `user_id` int(11) NOT NULL, | 15 | `user_id` int(11) NOT NULL, |
16 | PRIMARY KEY (`id`) | 16 | PRIMARY KEY (`id`) |
17 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | 17 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
18 | 18 | ||
19 | CREATE TABLE IF NOT EXISTS `users` ( | 19 | CREATE TABLE IF NOT EXISTS `users` ( |
20 | `id` int(11) NOT NULL AUTO_INCREMENT, | 20 | `id` int(11) NOT NULL AUTO_INCREMENT, |
@@ -23,7 +23,7 @@ CREATE TABLE IF NOT EXISTS `users` ( | |||
23 | `name` varchar(255) NOT NULL, | 23 | `name` varchar(255) NOT NULL, |
24 | `email` varchar(255) NOT NULL, | 24 | `email` varchar(255) NOT NULL, |
25 | PRIMARY KEY (`id`) | 25 | PRIMARY KEY (`id`) |
26 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | 26 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
27 | 27 | ||
28 | CREATE TABLE IF NOT EXISTS `users_config` ( | 28 | CREATE TABLE IF NOT EXISTS `users_config` ( |
29 | `id` int(11) NOT NULL AUTO_INCREMENT, | 29 | `id` int(11) NOT NULL AUTO_INCREMENT, |
@@ -31,13 +31,13 @@ CREATE TABLE IF NOT EXISTS `users_config` ( | |||
31 | `name` varchar(255) NOT NULL, | 31 | `name` varchar(255) NOT NULL, |
32 | `value` varchar(255) NOT NULL, | 32 | `value` varchar(255) NOT NULL, |
33 | PRIMARY KEY (`id`) | 33 | PRIMARY KEY (`id`) |
34 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | 34 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
35 | 35 | ||
36 | CREATE TABLE IF NOT EXISTS `tags` ( | 36 | CREATE TABLE IF NOT EXISTS `tags` ( |
37 | `id` int(11) NOT NULL AUTO_INCREMENT, | 37 | `id` int(11) NOT NULL AUTO_INCREMENT, |
38 | `value` varchar(255) NOT NULL, | 38 | `value` varchar(255) NOT NULL, |
39 | PRIMARY KEY (`id`) | 39 | PRIMARY KEY (`id`) |
40 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | 40 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
41 | 41 | ||
42 | CREATE TABLE IF NOT EXISTS `tags_entries` ( | 42 | CREATE TABLE IF NOT EXISTS `tags_entries` ( |
43 | `id` int(11) NOT NULL AUTO_INCREMENT, | 43 | `id` int(11) NOT NULL AUTO_INCREMENT, |
@@ -46,4 +46,4 @@ CREATE TABLE IF NOT EXISTS `tags_entries` ( | |||
46 | FOREIGN KEY(entry_id) REFERENCES entries(id) ON DELETE CASCADE, | 46 | FOREIGN KEY(entry_id) REFERENCES entries(id) ON DELETE CASCADE, |
47 | FOREIGN KEY(tag_id) REFERENCES tags(id) ON DELETE CASCADE, | 47 | FOREIGN KEY(tag_id) REFERENCES tags(id) ON DELETE CASCADE, |
48 | PRIMARY KEY (`id`) | 48 | PRIMARY KEY (`id`) |
49 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | 49 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
diff --git a/wallabag_compatibility_test.php b/install/wallabag_compatibility_test.php index da078623..2e78b675 100644 --- a/wallabag_compatibility_test.php +++ b/install/wallabag_compatibility_test.php | |||
@@ -14,6 +14,7 @@ $php_ok = (function_exists('version_compare') && version_compare(phpversion(), ' | |||
14 | $pcre_ok = extension_loaded('pcre'); | 14 | $pcre_ok = extension_loaded('pcre'); |
15 | $zlib_ok = extension_loaded('zlib'); | 15 | $zlib_ok = extension_loaded('zlib'); |
16 | $mbstring_ok = extension_loaded('mbstring'); | 16 | $mbstring_ok = extension_loaded('mbstring'); |
17 | $dom_ok = extension_loaded('DOM'); | ||
17 | $iconv_ok = extension_loaded('iconv'); | 18 | $iconv_ok = extension_loaded('iconv'); |
18 | $tidy_ok = function_exists('tidy_parse_string'); | 19 | $tidy_ok = function_exists('tidy_parse_string'); |
19 | $curl_ok = function_exists('curl_exec'); | 20 | $curl_ok = function_exists('curl_exec'); |
@@ -22,6 +23,8 @@ $parallel_ok = ((extension_loaded('http') && class_exists('HttpRequestPool')) || | |||
22 | $allow_url_fopen_ok = (bool)ini_get('allow_url_fopen'); | 23 | $allow_url_fopen_ok = (bool)ini_get('allow_url_fopen'); |
23 | $filter_ok = extension_loaded('filter'); | 24 | $filter_ok = extension_loaded('filter'); |
24 | $gettext_ok = function_exists("gettext"); | 25 | $gettext_ok = function_exists("gettext"); |
26 | $gd_ok = extension_loaded('gd'); | ||
27 | |||
25 | 28 | ||
26 | if (extension_loaded('xmlreader')) { | 29 | if (extension_loaded('xmlreader')) { |
27 | $xml_ok = true; | 30 | $xml_ok = true; |
@@ -232,10 +235,20 @@ if (isset($_GET['from'])){ | |||
232 | <td>Enabled</td> | 235 | <td>Enabled</td> |
233 | <?php echo ($iconv_ok) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td> | 236 | <?php echo ($iconv_ok) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td> |
234 | </tr> --> | 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> | ||
235 | <tr class="<?php echo ($filter_ok) ? 'enabled' : 'disabled'; ?>"> | 243 | <tr class="<?php echo ($filter_ok) ? 'enabled' : 'disabled'; ?>"> |
236 | <td><a href="http://uk.php.net/manual/en/book.filter.php">Data filtering</a></td> | 244 | <td><a href="http://uk.php.net/manual/en/book.filter.php">Data filtering</a></td> |
237 | <td>Enabled</td> | 245 | <td>Enabled</td> |
238 | <?php echo ($filter_ok) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></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> | ||
239 | </tr> | 252 | </tr> |
240 | <tr class="<?php echo ($tidy_ok) ? 'enabled' : 'disabled'; ?>"> | 253 | <tr class="<?php echo ($tidy_ok) ? 'enabled' : 'disabled'; ?>"> |
241 | <td><a href="http://php.net/tidy">Tidy</a></td> | 254 | <td><a href="http://php.net/tidy">Tidy</a></td> |
@@ -275,7 +288,7 @@ if (isset($_GET['from'])){ | |||
275 | <h3>What does this mean?</h3> | 288 | <h3>What does this mean?</h3> |
276 | <ol> | 289 | <ol> |
277 | <?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): ?> | 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): ?> |
278 | <?php if ($php_ok && $xml_ok && $pcre_ok && $filter_ok && $tidy_ok && $curl_ok && $parallel_ok && $allow_url_fopen_ok && $gettext_ok && $parse_ini_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): ?> |
279 | <li><em>You have everything you need to run <?php echo $app_name; ?> properly! Congratulations!</em></li> | 292 | <li><em>You have everything you need to run <?php echo $app_name; ?> properly! Congratulations!</em></li> |
280 | <?php else: ?> | 293 | <?php else: ?> |
281 | <?php if ($php_ok): ?> | 294 | <?php if ($php_ok): ?> |
@@ -292,48 +305,62 @@ if (isset($_GET['from'])){ | |||
292 | <li><strong>Gettext:</strong> You have <code>gettext</code> enabled. <em>No problems here.</em></li> | 305 | <li><strong>Gettext:</strong> You have <code>gettext</code> enabled. <em>No problems here.</em></li> |
293 | 306 | ||
294 | <?php if ($parse_ini_ok): ?> | 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> | ||
295 | 312 | ||
296 | <?php if ($filter_ok): ?> | 313 | <?php if ($filter_ok): ?> |
297 | <li><strong>Data filtering:</strong> You have the PHP filter extension enabled. <em>No problems here.</em></li> | 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> |
298 | 315 | ||
299 | <?php if ($zlib_ok): ?> | 316 | <?php if ($zlib_ok): ?> |
300 | <li><strong>Zlib:</strong> You have <code>Zlib</code> enabled. This allows SimplePie to support GZIP-encoded feeds. <em>No problems here.</em></li> | 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> |
301 | <?php else: ?> | 318 | <?php else: ?> |
302 | <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> | 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> |
303 | <?php endif; ?> | 320 | <?php endif; ?> |
304 | 321 | ||
305 | <?php if ($mbstring_ok && $iconv_ok): ?> | 322 | <?php if ($mbstring_ok && $iconv_ok): ?> |
306 | <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> | 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> |
307 | <?php elseif ($mbstring_ok): ?> | 324 | <?php elseif ($mbstring_ok): ?> |
308 | <li><strong>mbstring:</strong> <code>mbstring</code> is installed, but <code>iconv</code> is not.</li> | 325 | <li><strong>mbstring:</strong> <code>mbstring</code> is installed, but <code>iconv</code> is not.</li> |
309 | <?php elseif ($iconv_ok): ?> | 326 | <?php elseif ($iconv_ok): ?> |
310 | <li><strong>iconv:</strong> <code>iconv</code> is installed, but <code>mbstring</code> is not.</li> | 327 | <li><strong>iconv:</strong> <code>iconv</code> is installed, but <code>mbstring</code> is not.</li> |
311 | <?php else: ?> | 328 | <?php else: ?> |
312 | <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> | 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> |
313 | <?php endif; ?> | 330 | <?php endif; ?> |
314 | 331 | ||
315 | <?php if ($tidy_ok): ?> | 332 | <?php if ($gd_ok): ?> |
316 | <li><strong>Tidy:</strong> You have <code>Tidy</code> support installed. <em>No problems here.</em></li> | 333 | <li><strong>GD:</strong> You have <code>GD</code> support installed. <em>No problems here.</em></li> |
317 | <?php else: ?> | 334 | <?php else: ?> |
318 | <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.</li> | 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> |
319 | <?php endif; ?> | 336 | <?php endif; ?> |
320 | 337 | ||
321 | <?php if ($curl_ok): ?> | 338 | <?php if ($tidy_ok): ?> |
322 | <li><strong>cURL:</strong> You have <code>cURL</code> support installed. <em>No problems here.</em></li> | 339 | <li><strong>Tidy:</strong> You have <code>Tidy</code> support installed. <em>No problems here.</em></li> |
323 | <?php else: ?> | 340 | <?php else: ?> |
324 | <li><strong>cURL:</strong> The <code>cURL</code> extension is not available. SimplePie will use <code>fsockopen()</code> instead.</li> | 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.</li> |
325 | <?php endif; ?> | 342 | <?php endif; ?> |
326 | 343 | ||
327 | <?php if ($parallel_ok): ?> | 344 | <?php if ($curl_ok): ?> |
328 | <li><strong>Parallel URL fetching:</strong> You have <code>HttpRequestPool</code> or <code>curl_multi</code> support installed. <em>No problems here.</em></li> | 345 | <li><strong>cURL:</strong> You have <code>cURL</code> support installed. <em>No problems here.</em></li> |
329 | <?php else: ?> | 346 | <?php else: ?> |
330 | <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> | 347 | <li><strong>cURL:</strong> The <code>cURL</code> extension is not available. SimplePie will use <code>fsockopen()</code> instead.</li> |
331 | <?php endif; ?> | 348 | <?php endif; ?> |
332 | 349 | ||
333 | <?php else: ?> | 350 | <?php if ($parallel_ok): ?> |
334 | <li><strong>Data filtering:</strong> Your PHP configuration has the filter extension disabled. <strong><?php echo $app_name; ?> will not work here.</strong></li> | 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> |
335 | <?php endif; ?> | 352 | <?php else: ?> |
336 | 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 | |||
337 | <?php else : ?> | 364 | <?php else : ?> |
338 | <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> | 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> |
339 | <?php endif; ?> | 366 | <?php endif; ?> |
@@ -368,7 +395,7 @@ if (isset($_GET['from'])){ | |||
368 | <p>You can download the latest version of <?php echo $app_name; ?> from <a href="http://wallabag.org/download">wallabag.org</a>.</p> | 395 | <p>You can download the latest version of <?php echo $app_name; ?> from <a href="http://wallabag.org/download">wallabag.org</a>.</p> |
369 | <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> | 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> |
370 | <?php } else { ?> | 397 | <?php } else { ?> |
371 | <p>You can now <a href="index.php">return to the installation section</a>.</p> | 398 | <p>You can now <a href="../index.php">return to the installation section</a>.</p> |
372 | <?php } ?> | 399 | <?php } ?> |
373 | <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> | 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> |
374 | <?php //} else if ($php_ok && $xml_ok && $pcre_ok && $mbstring_ok && $allow_url_fopen_ok && $filter_ok) { ?> | 401 | <?php //} else if ($php_ok && $xml_ok && $pcre_ok && $mbstring_ok && $allow_url_fopen_ok && $filter_ok) { ?> |
@@ -379,7 +406,7 @@ if (isset($_GET['from'])){ | |||
379 | <p>You can download the latest version of <?php echo $app_name; ?> from <a href="http://wallabag.org/download">wallabag.org</a>.</p> | 406 | <p>You can download the latest version of <?php echo $app_name; ?> from <a href="http://wallabag.org/download">wallabag.org</a>.</p> |
380 | <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> | 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> |
381 | <?php } else { ?> | 408 | <?php } else { ?> |
382 | <p>You can now <a href="index.php">return to the installation section</a>.</p> | 409 | <p>You can now <a href="../index.php">return to the installation section</a>.</p> |
383 | <?php } ?> | 410 | <?php } ?> |
384 | <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> | 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> |
385 | <?php } else { ?> | 412 | <?php } else { ?> |
diff --git a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo index bf5f69e7..a3c98497 100644 --- a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo +++ b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo | |||
Binary files differ | |||
diff --git a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po index 119fb060..c589866c 100644 --- a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po +++ b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po | |||
@@ -1,19 +1,17 @@ | |||
1 | msgid "" | 1 | msgid "" |
2 | msgstr "" | 2 | msgstr "" |
3 | "Project-Id-Version: \n" | 3 | "Project-Id-Version: wallabag\n" |
4 | "Report-Msgid-Bugs-To: \n" | 4 | "Report-Msgid-Bugs-To: \n" |
5 | "POT-Creation-Date: 2014-02-25 15:17+0300\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: Maryana <mariroz@mr.lviv.ua>\n" | 7 | "Last-Translator: tcit <tcit@tcit.fr>\n" |
8 | "Language-Team: \n" | 8 | "Language-Team: \n" |
9 | "Language: \n" | 9 | "Language: en\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.5.4\n" | 13 | "X-Generator: Poedit 1.6.9\n" |
14 | "X-Poedit-Language: English\n" | ||
15 | "X-Poedit-Basepath: .\n" | 14 | "X-Poedit-Basepath: .\n" |
16 | "X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-testing\n" | ||
17 | 15 | ||
18 | msgid "wallabag, a read it later open source system" | 16 | msgid "wallabag, a read it later open source system" |
19 | msgstr "wallabag, a read it later open source system" | 17 | msgstr "wallabag, a read it later open source system" |
@@ -84,8 +82,12 @@ msgstr "A more recent development version is available." | |||
84 | msgid "Feeds" | 82 | msgid "Feeds" |
85 | msgstr "Feeds" | 83 | msgstr "Feeds" |
86 | 84 | ||
87 | 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>." | 85 | msgid "" |
88 | msgstr "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>." | 86 | "Your feed token is currently empty and must first be generated to enable " |
87 | "feeds. Click <a href='?feed&action=generate'>here to generate it</a>." | ||
88 | msgstr "" | ||
89 | "Your feed token is currently empty and must first be generated to enable " | ||
90 | "feeds. Click <a href='?feed&action=generate'>here to generate it</a>." | ||
89 | 91 | ||
90 | msgid "Unread feed" | 92 | msgid "Unread feed" |
91 | msgstr "Unread feed" | 93 | msgstr "Unread feed" |
@@ -102,8 +104,12 @@ msgstr "Your token:" | |||
102 | msgid "Your user id:" | 104 | msgid "Your user id:" |
103 | msgstr "Your user id:" | 105 | msgstr "Your user id:" |
104 | 106 | ||
105 | msgid "You can regenerate your token: <a href='?feed&action=generate'>generate!</a>." | 107 | msgid "" |
106 | msgstr "You can regenerate your token: <a href='?feed&action=generate'>generate!</a>." | 108 | "You can regenerate your token: <a href='?feed&action=generate'>generate!" |
109 | "</a>." | ||
110 | msgstr "" | ||
111 | "You can regenerate your token: <a href='?feed&action=generate'>generate!" | ||
112 | "</a>." | ||
107 | 113 | ||
108 | msgid "Change your theme" | 114 | msgid "Change your theme" |
109 | msgstr "Change your theme" | 115 | msgstr "Change your theme" |
@@ -135,8 +141,10 @@ msgstr "Repeat your new password:" | |||
135 | msgid "Import" | 141 | msgid "Import" |
136 | msgstr "Import" | 142 | msgstr "Import" |
137 | 143 | ||
138 | msgid "Please execute the import script locally as it can take a very long time." | 144 | msgid "" |
139 | msgstr "Please execute the import script locally as it can take a very long time." | 145 | "Please execute the import script locally as it can take a very long time." |
146 | msgstr "" | ||
147 | "Please execute the import script locally as it can take a very long time." | ||
140 | 148 | ||
141 | msgid "More info in the official documentation:" | 149 | msgid "More info in the official documentation:" |
142 | msgstr "More info in the official documentation:" | 150 | msgstr "More info in the official documentation:" |
@@ -184,8 +192,12 @@ msgstr "return to article" | |||
184 | msgid "plop" | 192 | msgid "plop" |
185 | msgstr "plop" | 193 | msgstr "plop" |
186 | 194 | ||
187 | msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>." | 195 | msgid "" |
188 | msgstr "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>." | 196 | "You can <a href='wallabag_compatibility_test.php'>check your configuration " |
197 | "here</a>." | ||
198 | msgstr "" | ||
199 | "You can <a href='wallabag_compatibility_test.php'>check your configuration " | ||
200 | "here</a>." | ||
189 | 201 | ||
190 | msgid "favoris" | 202 | msgid "favoris" |
191 | msgstr "favoris" | 203 | msgstr "favoris" |
@@ -247,8 +259,14 @@ msgstr "installation" | |||
247 | msgid "install your wallabag" | 259 | msgid "install your wallabag" |
248 | msgstr "install your wallabag" | 260 | msgstr "install your wallabag" |
249 | 261 | ||
250 | 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>." | 262 | msgid "" |
251 | msgstr "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>." | 263 | "wallabag is still not installed. Please fill the below form to install it. " |
264 | "Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation " | ||
265 | "on wallabag website</a>." | ||
266 | msgstr "" | ||
267 | "wallabag is still not installed. Please fill the below form to install it. " | ||
268 | "Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation " | ||
269 | "on wallabag website</a>." | ||
252 | 270 | ||
253 | msgid "Login" | 271 | msgid "Login" |
254 | msgstr "Login" | 272 | msgstr "Login" |
@@ -401,7 +419,8 @@ msgid "a more recent development version is available." | |||
401 | msgstr "a more recent development version is available." | 419 | msgstr "a more recent development version is available." |
402 | 420 | ||
403 | msgid "Please execute the import script locally, it can take a very long time." | 421 | msgid "Please execute the import script locally, it can take a very long time." |
404 | msgstr "Please execute the import script locally, it can take a very long time." | 422 | msgstr "" |
423 | "Please execute the import script locally, it can take a very long time." | ||
405 | 424 | ||
406 | msgid "More infos in the official doc:" | 425 | msgid "More infos in the official doc:" |
407 | msgstr "More infos in the official doc:" | 426 | msgstr "More infos in the official doc:" |
@@ -448,8 +467,12 @@ msgstr "in demo mode, you can't update your password" | |||
448 | msgid "your password has been updated" | 467 | msgid "your password has been updated" |
449 | msgstr "your password has been updated" | 468 | msgstr "your password has been updated" |
450 | 469 | ||
451 | msgid "the two fields have to be filled & the password must be the same in the two fields" | 470 | msgid "" |
452 | msgstr "the two fields have to be filled & the password must be the same in the two fields" | 471 | "the two fields have to be filled & the password must be the same in the two " |
472 | "fields" | ||
473 | msgstr "" | ||
474 | "the two fields have to be filled & the password must be the same in the two " | ||
475 | "fields" | ||
453 | 476 | ||
454 | msgid "still using the \"" | 477 | msgid "still using the \"" |
455 | msgstr "still using the \"" | 478 | msgstr "still using the \"" |
@@ -505,6 +528,49 @@ msgstr "Cache deleted." | |||
505 | msgid "Oops, it seems you don't have PHP 5." | 528 | msgid "Oops, it seems you don't have PHP 5." |
506 | msgstr "Oops, it seems you don't have PHP 5." | 529 | msgstr "Oops, it seems you don't have PHP 5." |
507 | 530 | ||
531 | msgid "Add user" | ||
532 | msgstr "Add user" | ||
533 | |||
534 | msgid "Add a new user :" | ||
535 | msgstr "Add a new user :" | ||
536 | |||
537 | msgid "Login for new user" | ||
538 | msgstr "Login for new user" | ||
539 | |||
540 | msgid "Password for new user" | ||
541 | msgstr "Password for new user" | ||
542 | |||
543 | msgid "Email for new user (not required)" | ||
544 | msgstr "Email for new user (not required)" | ||
545 | |||
546 | msgid "Send" | ||
547 | msgstr "Send" | ||
548 | |||
549 | msgid "Delete account" | ||
550 | msgstr "Delete account" | ||
551 | |||
552 | msgid "You can delete your account by entering your password and validating." | ||
553 | msgstr "You can delete your account by entering your password and validating." | ||
554 | |||
555 | msgid "Be careful, data will be erased forever (that is a very long time)." | ||
556 | msgstr "Be careful, data will be erased forever (that is a very long time)." | ||
557 | |||
558 | msgid "Type here your password" | ||
559 | msgstr "Type here your password" | ||
560 | |||
561 | msgid "You are the only user, you cannot delete your own account." | ||
562 | msgstr "You are the only user, you cannot delete your own account." | ||
563 | |||
564 | msgid "" | ||
565 | "To completely remove wallabag, delete the wallabag folder on your web server " | ||
566 | "(and eventual databases)." | ||
567 | msgstr "" | ||
568 | "To completely remove wallabag, delete the wallabag folder on your web server " | ||
569 | "(and eventual databases)." | ||
570 | |||
571 | msgid "Enter your search here" | ||
572 | msgstr "Enter your search here" | ||
573 | |||
508 | #~ msgid "poche it!" | 574 | #~ msgid "poche it!" |
509 | #~ msgstr "poche it!" | 575 | #~ msgstr "poche it!" |
510 | 576 | ||
diff --git a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo index b625e346..f4a28e72 100644 --- a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo +++ b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo | |||
Binary files differ | |||
diff --git a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po index 0343bfec..0912b872 100644 --- a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po +++ b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po | |||
@@ -4,7 +4,7 @@ msgstr "" | |||
4 | "Report-Msgid-Bugs-To: \n" | 4 | "Report-Msgid-Bugs-To: \n" |
5 | "POT-Creation-Date: 2014-05-10 20:09+0100\n" | 5 | "POT-Creation-Date: 2014-05-10 20:09+0100\n" |
6 | "PO-Revision-Date: \n" | 6 | "PO-Revision-Date: \n" |
7 | "Last-Translator: Gilles Wittezaële <gilles.wittezaele@laposte.net>\n" | 7 | "Last-Translator: tcit <tcit@tcit.fr>\n" |
8 | "Language-Team: \n" | 8 | "Language-Team: \n" |
9 | "Language: fr_FR\n" | 9 | "Language: fr_FR\n" |
10 | "MIME-Version: 1.0\n" | 10 | "MIME-Version: 1.0\n" |
@@ -12,7 +12,7 @@ msgstr "" | |||
12 | "Content-Transfer-Encoding: 8bit\n" | 12 | "Content-Transfer-Encoding: 8bit\n" |
13 | "X-Poedit-KeywordsList: _;gettext;gettext_noop\n" | 13 | "X-Poedit-KeywordsList: _;gettext;gettext_noop\n" |
14 | "X-Poedit-SourceCharset: UTF-8\n" | 14 | "X-Poedit-SourceCharset: UTF-8\n" |
15 | "X-Generator: Poedit 1.5.4\n" | 15 | "X-Generator: Poedit 1.6.9\n" |
16 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | 16 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" |
17 | 17 | ||
18 | msgid "wallabag, a read it later open source system" | 18 | msgid "wallabag, a read it later open source system" |
@@ -298,6 +298,9 @@ msgstr "Nom d'utilisateur" | |||
298 | msgid "Password for new user" | 298 | msgid "Password for new user" |
299 | msgstr "Mot de passe du nouvel utilisateur" | 299 | msgstr "Mot de passe du nouvel utilisateur" |
300 | 300 | ||
301 | msgid "Email for new user (not required)" | ||
302 | msgstr "E-mail pour le nouvel utilisateur (facultatif)" | ||
303 | |||
301 | msgid "Send" | 304 | msgid "Send" |
302 | msgstr "Envoyer" | 305 | msgstr "Envoyer" |
303 | 306 | ||
@@ -320,10 +323,12 @@ msgstr "" | |||
320 | "Vous êtes l'unique utilisateur, vous ne pouvez pas supprimer votre compte." | 323 | "Vous êtes l'unique utilisateur, vous ne pouvez pas supprimer votre compte." |
321 | 324 | ||
322 | msgid "" | 325 | msgid "" |
323 | "To completely remove wallabag, delete the wallabag folder on your web server." | 326 | "To completely remove wallabag, delete the wallabag folder on your web server " |
327 | "(and eventual databases)." | ||
324 | msgstr "" | 328 | msgstr "" |
325 | "Pour désinstaller complètement wallabag, supprimez le répertoire " | 329 | "Pour désinstaller complètement wallabag, supprimez le répertoire " |
326 | "<code>wallabag</code> de votre serveur Web." | 330 | "<code>wallabag</code> de votre serveur Web (ainsi que les bases de données " |
331 | "éventuelles)." | ||
327 | 332 | ||
328 | msgid "Save a link" | 333 | msgid "Save a link" |
329 | msgstr "Ajouter un lien" | 334 | msgstr "Ajouter un lien" |
diff --git a/themes/baggy/_search-form.twig b/themes/baggy/_search-form.twig index b8ac3bfa..7b2c7082 100644 --- a/themes/baggy/_search-form.twig +++ b/themes/baggy/_search-form.twig | |||
@@ -1,7 +1,7 @@ | |||
1 | <div id="search-form" class="messages info"> | 1 | <div id="search-form" class="messages info"> |
2 | <form method="get" action="index.php"> | 2 | <form method="get" action="index.php"> |
3 | <input type="hidden" name="view" value="search"></input> | 3 | <input type="hidden" name="view" value="search"></input> |
4 | <label><a href="javascript: void(null);" id="search-form-close">X</a>{% trans "Search" %}</label> : <input type="text" name="search" /> | 4 | <label><a href="javascript: void(null);" id="search-form-close">X</a>{% trans "Search" %}</label> : <input required placeholder="{% trans "Enter your search here" %}" type="text" name="search" id="searchfield" /> |
5 | <input id="submit-search" type="submit" value="{% trans "Search" %} !"></input> | 5 | <input id="submit-search" type="submit" value="{% trans "Search" %} !"></input> |
6 | </form> | 6 | </form> |
7 | </div> \ No newline at end of file | 7 | </div> \ No newline at end of file |
diff --git a/themes/baggy/config.twig b/themes/baggy/config.twig index 7bd229cb..3523cd08 100755 --- a/themes/baggy/config.twig +++ b/themes/baggy/config.twig | |||
@@ -136,11 +136,15 @@ | |||
136 | <fieldset class="w500p"> | 136 | <fieldset class="w500p"> |
137 | <div class="row"> | 137 | <div class="row"> |
138 | <label class="col w150p" for="newusername">{% trans 'Login for new user' %}</label> | 138 | <label class="col w150p" for="newusername">{% trans 'Login for new user' %}</label> |
139 | <input class="col" type="text" id="newusername" name="newusername" placeholder="{% trans 'Login' %}"> | 139 | <input class="col" type="text" id="newusername" name="newusername" placeholder="{% trans 'Login' %}" required> |
140 | </div> | 140 | </div> |
141 | <div class="row"> | 141 | <div class="row"> |
142 | <label class="col w150p" for="password4newuser">{% trans "Password for new user" %}</label> | 142 | <label class="col w150p" for="password4newuser">{% trans "Password for new user" %}</label> |
143 | <input class="col" type="password" id="password4newuser" name="password4newuser" placeholder="{% trans "Password" %}"> | 143 | <input class="col" type="password" id="password4newuser" name="password4newuser" placeholder="{% trans 'Password' %}" required> |
144 | </div> | ||
145 | <div class="row"> | ||
146 | <label class="col w150p" for="newuseremail">{% trans 'Email for new user (not required)' %}</label> | ||
147 | <input class="col" type="email" id="newuseremail" name="newuseremail" placeholder="{% trans 'Email' %}"> | ||
144 | </div> | 148 | </div> |
145 | <div class="row mts txtcenter"> | 149 | <div class="row mts txtcenter"> |
146 | <button type="submit">{% trans "Send" %}</button> | 150 | <button type="submit">{% trans "Send" %}</button> |
@@ -161,5 +165,5 @@ | |||
161 | </div> | 165 | </div> |
162 | </form> | 166 | </form> |
163 | {% else %}<p>{% trans "You are the only user, you cannot delete your own account." %}<br /> | 167 | {% else %}<p>{% trans "You are the only user, you cannot delete your own account." %}<br /> |
164 | {% trans "To completely remove wallabag, delete the wallabag folder on your web server." %}</p>{% endif %} | 168 | {% trans "To completely remove wallabag, delete the wallabag folder on your web server (and eventual databases)." %}</p>{% endif %} |
165 | {% endblock %} | 169 | {% endblock %} |
diff --git a/themes/baggy/css/main.css b/themes/baggy/css/main.css index 9c50786b..52ba50f2 100755 --- a/themes/baggy/css/main.css +++ b/themes/baggy/css/main.css | |||
@@ -89,7 +89,7 @@ form fieldset { | |||
89 | margin: 0; | 89 | margin: 0; |
90 | } | 90 | } |
91 | 91 | ||
92 | form input[type="text"], select, form input[type="password"], form input[type="url"] { | 92 | form input[type="text"], select, form input[type="password"], form input[type="url"], form input[type="email"] { |
93 | border: 1px solid #999; | 93 | border: 1px solid #999; |
94 | padding: 0.5em 1em; | 94 | padding: 0.5em 1em; |
95 | min-width: 12em; | 95 | min-width: 12em; |
@@ -180,7 +180,7 @@ h2:after { | |||
180 | padding-top: 9.5em; | 180 | padding-top: 9.5em; |
181 | height: 100%; | 181 | height: 100%; |
182 | box-shadow:inset -4px 0 20px rgba(0,0,0,0.6); | 182 | box-shadow:inset -4px 0 20px rgba(0,0,0,0.6); |
183 | z-index: 10; | 183 | z-index: 15; |
184 | } | 184 | } |
185 | 185 | ||
186 | #main { | 186 | #main { |
diff --git a/themes/courgette/config.twig b/themes/courgette/config.twig index 9ab58461..c4933794 100755 --- a/themes/courgette/config.twig +++ b/themes/courgette/config.twig | |||
@@ -97,6 +97,10 @@ | |||
97 | <label class="col w150p" for="password4newuser">{% trans "Password for new user" %}</label> | 97 | <label class="col w150p" for="password4newuser">{% trans "Password for new user" %}</label> |
98 | <input class="col" type="password" id="password4newuser" name="password4newuser" placeholder="{% trans "Password" %}"> | 98 | <input class="col" type="password" id="password4newuser" name="password4newuser" placeholder="{% trans "Password" %}"> |
99 | </div> | 99 | </div> |
100 | <div class="row"> | ||
101 | <label class="col w150p" for="newuseremail">{% trans 'Email for new user (not required)' %}</label> | ||
102 | <input class="col" type="email" id="newuseremail" name="newuseremail" placeholder="{% trans 'Email' %}"> | ||
103 | </div> | ||
100 | <div class="row mts txtcenter"> | 104 | <div class="row mts txtcenter"> |
101 | <button type="submit">{% trans "Send" %}</button> | 105 | <button type="submit">{% trans "Send" %}</button> |
102 | </div> | 106 | </div> |
@@ -116,6 +120,6 @@ | |||
116 | </div> | 120 | </div> |
117 | </form> | 121 | </form> |
118 | {% else %}<p>{% trans "You are the only user, you cannot delete your own account." %}<br /> | 122 | {% else %}<p>{% trans "You are the only user, you cannot delete your own account." %}<br /> |
119 | {% trans "To completely remove wallabag, delete the wallabag folder on your web server." %}</p>{% endif %} | 123 | {% trans "To completely remove wallabag, delete the wallabag folder on your web server (and eventual databases)." %}</p>{% endif %} |
120 | </div> | 124 | </div> |
121 | {% endblock %} | 125 | {% endblock %} |
diff --git a/themes/default/_search-form.twig b/themes/default/_search-form.twig index 33bea20d..0cf6097a 100755 --- a/themes/default/_search-form.twig +++ b/themes/default/_search-form.twig | |||
@@ -2,7 +2,7 @@ | |||
2 | <form method="get" action="index.php"> | 2 | <form method="get" action="index.php"> |
3 | <p> | 3 | <p> |
4 | <input type="hidden" name="view" value="search"></input> | 4 | <input type="hidden" name="view" value="search"></input> |
5 | <label>{% trans "Search" %}</label> : <input type="text" placeholder="{% trans "Enter your search here" %}" name="search" /> | 5 | <label>{% trans "Search" %}</label> : <input type="text" required placeholder="{% trans "Enter your search here" %}" name="search" id="searchfield" /> |
6 | <input type="submit" value="{% trans "Search" %} !"></input> | 6 | <input type="submit" value="{% trans "Search" %} !"></input> |
7 | </p> | 7 | </p> |
8 | </form> | 8 | </form> |
diff --git a/themes/default/config.twig b/themes/default/config.twig index 5656fadd..36b66e88 100755 --- a/themes/default/config.twig +++ b/themes/default/config.twig | |||
@@ -120,7 +120,6 @@ | |||
120 | <p><a href="?import">{% trans "You can click here to fetch content for articles with no content." %}</a></p> | 120 | <p><a href="?import">{% trans "You can click here to fetch content for articles with no content." %}</a></p> |
121 | 121 | ||
122 | <h2>{% trans "Export your wallabag data" %}</h2> | 122 | <h2>{% trans "Export your wallabag data" %}</h2> |
123 | {% if constant('STORAGE') == 'sqlite' %} | ||
124 | <p><a href="?export" target="_blank">{% trans "Click here" %}</a> {% trans "to export your wallabag data." %}</p> | 123 | <p><a href="?export" target="_blank">{% trans "Click here" %}</a> {% trans "to export your wallabag data." %}</p> |
125 | 124 | ||
126 | <h2>{% trans "Cache" %}</h2> | 125 | <h2>{% trans "Cache" %}</h2> |
@@ -142,6 +141,10 @@ | |||
142 | <label class="col w150p" for="password4newuser">{% trans "Password for new user" %}</label> | 141 | <label class="col w150p" for="password4newuser">{% trans "Password for new user" %}</label> |
143 | <input class="col" type="password" id="password4newuser" name="password4newuser" placeholder="{% trans "Password" %}"> | 142 | <input class="col" type="password" id="password4newuser" name="password4newuser" placeholder="{% trans "Password" %}"> |
144 | </div> | 143 | </div> |
144 | <div class="row"> | ||
145 | <label class="col w150p" for="newuseremail">{% trans 'Email for new user (not required)' %}</label> | ||
146 | <input class="col" type="email" id="newuseremail" name="newuseremail" placeholder="{% trans 'Email' %}"> | ||
147 | </div> | ||
145 | <div class="row mts txtcenter"> | 148 | <div class="row mts txtcenter"> |
146 | <button type="submit">{% trans "Send" %}</button> | 149 | <button type="submit">{% trans "Send" %}</button> |
147 | </div> | 150 | </div> |
@@ -161,5 +164,5 @@ | |||
161 | </div> | 164 | </div> |
162 | </form> | 165 | </form> |
163 | {% else %}<p>{% trans "You are the only user, you cannot delete your own account." %}<br /> | 166 | {% else %}<p>{% trans "You are the only user, you cannot delete your own account." %}<br /> |
164 | {% trans "To completely remove wallabag, delete the wallabag folder on your web server." %}</p>{% endif %} | 167 | {% trans "To completely remove wallabag, delete the wallabag folder on your web server (and eventual databases)." %}</p>{% endif %} |
165 | {% endblock %} | 168 | {% endblock %} |
diff --git a/themes/default/css/messages.css b/themes/default/css/messages.css index 46b54795..3ad4e34e 100644 --- a/themes/default/css/messages.css +++ b/themes/default/css/messages.css | |||
@@ -8,6 +8,11 @@ | |||
8 | border-radius: 4px; | 8 | border-radius: 4px; |
9 | } | 9 | } |
10 | 10 | ||
11 | /* Search form message needs a little more width, depending on translations */ | ||
12 | #search-form { | ||
13 | width: 420px; | ||
14 | } | ||
15 | |||
11 | .messages a.closeMessage { | 16 | .messages a.closeMessage { |
12 | display: none; | 17 | display: none; |
13 | float: right; | 18 | float: right; |
diff --git a/themes/default/js/popupForm.js b/themes/default/js/popupForm.js index 06be3f0c..a32e6e70 100644 --- a/themes/default/js/popupForm.js +++ b/themes/default/js/popupForm.js | |||
@@ -10,6 +10,7 @@ $(document).ready(function() { | |||
10 | 10 | ||
11 | $("#search").click(function(){ | 11 | $("#search").click(function(){ |
12 | closeSearch(); | 12 | closeSearch(); |
13 | $('#searchfield').focus(); | ||
13 | }); | 14 | }); |
14 | 15 | ||
15 | $("#search-form-close").click(function(){ | 16 | $("#search-form-close").click(function(){ |