diff options
author | Nicolas Lœuillet <nicolas.loeuillet@gmail.com> | 2013-08-17 11:27:13 -0700 |
---|---|---|
committer | Nicolas Lœuillet <nicolas.loeuillet@gmail.com> | 2013-08-17 11:27:13 -0700 |
commit | 7ba37bd91a43321196e6d867caf9e298e82c6d6c (patch) | |
tree | 280b6c5d270c28457219859f189e3cb6c3895939 | |
parent | 667009727a38890eb651815843c1bc02869a4119 (diff) | |
parent | 9067b484ce8289eec6979cf6c8e3cbfb3bd5b10c (diff) | |
download | wallabag-7ba37bd91a43321196e6d867caf9e298e82c6d6c.tar.gz wallabag-7ba37bd91a43321196e6d867caf9e298e82c6d6c.tar.zst wallabag-7ba37bd91a43321196e6d867caf9e298e82c6d6c.zip |
Merge pull request #141 from inthepoche/dev1.0-beta3
beta3
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | CONTRIBUTING.md | 3 | ||||
-rw-r--r-- | INSTALL.md | 77 | ||||
-rw-r--r-- | README.md | 52 | ||||
-rw-r--r-- | inc/poche/Poche.class.php | 121 | ||||
-rw-r--r-- | inc/poche/Tools.class.php | 26 | ||||
-rw-r--r-- | inc/poche/Url.class.php | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | inc/poche/config.inc.php | 57 | ||||
-rw-r--r-- | inc/poche/define.inc.php | 30 | ||||
-rw-r--r-- | index.php | 3 | ||||
-rw-r--r-- | install/update.php | 79 | ||||
-rw-r--r-- | locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo | bin | 0 -> 2871 bytes | |||
-rw-r--r-- | locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po | 114 | ||||
-rw-r--r-- | locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo | bin | 0 -> 5728 bytes | |||
-rw-r--r-- | locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po | 382 | ||||
-rw-r--r-- | locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo (renamed from locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.mo) | bin | 5699 -> 5699 bytes | |||
-rw-r--r-- | locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po (renamed from locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.po) | 0 | ||||
-rw-r--r-- | robots.txt | 2 | ||||
-rw-r--r-- | tpl/_head.twig | 2 | ||||
-rw-r--r-- | tpl/error.twig | 7 | ||||
-rw-r--r-- | tpl/install.twig | 16 |
21 files changed, 827 insertions, 149 deletions
@@ -2,4 +2,5 @@ vendor | |||
2 | composer.phar | 2 | composer.phar |
3 | db/poche.sqlite | 3 | db/poche.sqlite |
4 | output | 4 | output |
5 | phpdoc* \ No newline at end of file | 5 | phpdoc* |
6 | inc/config/myconfig.inc.php \ No newline at end of file | ||
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..9818ae00 --- /dev/null +++ b/CONTRIBUTING.md | |||
@@ -0,0 +1,3 @@ | |||
1 | # How contributing | ||
2 | |||
3 | When you create an issue on github, don't forget to give us your poche version. You can find it in config screen or in ./inc/poche/config.inc.php. \ No newline at end of file | ||
@@ -1,53 +1,64 @@ | |||
1 | # Installing poche | 1 | # Installing poche |
2 | 2 | ||
3 | Get the [latest version](https://github.com/inthepoche/poche/archive/1.0-beta1.zip) of poche on github. Unzip it and upload it on your server. | 3 | ## requirements |
4 | 4 | ||
5 | your datas can be stored on sqlite, postgres or mysql databases. | 5 | it's highly recommended to have php cURL and tidy_parse_string to fetch articles content. |
6 | 6 | ||
7 | Edit /inc/poche/config.inc.php : | 7 | ## you don't want to install twig (the template engine) by yourself |
8 | 8 | ||
9 | ```php | 9 | Download this file http://static.inthepoche.com/files/poche-1.0-latest-with-twig.zip |
10 | define ('STORAGE','sqlite'); # postgres, mysql, sqlite | 10 | |
11 | define ('STORAGE_SERVER', 'localhost'); # leave blank for sqlite | 11 | Extract this file on your server. |
12 | define ('STORAGE_DB', 'poche'); # only for postgres & mysql | ||
13 | define ('STORAGE_SQLITE', './db/poche.sqlite'); | ||
14 | define ('STORAGE_USER', 'user'); # leave blank for sqlite | ||
15 | define ('STORAGE_PASSWORD', 'pass'); # leave blank for sqlite | ||
16 | ``` | ||
17 | 12 | ||
18 | poche must have write access on assets, cache and db directories. | 13 | ## you want to install twig by yourself |
19 | 14 | ||
20 | [PHP cURL](http://www.php.net/manual/en/book.curl.php) & [tidy_parse_string](http://www.php.net/manual/en/tidy.parsestring.php) are recommended. | 15 | Download the latest version here : http://www.inthepoche.com/?pages/T%C3%A9l%C3%A9charger-poche |
21 | 16 | ||
22 | ## twig | 17 | Extract this file on your server. |
23 | poche now uses twig for templating. You have to install twig. | ||
24 | 18 | ||
25 | Install composer in your project : | 19 | ```php |
26 | ```bash | ||
27 | curl -s http://getcomposer.org/installer | php | 20 | curl -s http://getcomposer.org/installer | php |
28 | ``` | ||
29 | Install via composer : | ||
30 | ```bash | ||
31 | php composer.phar install | 21 | php composer.phar install |
32 | ``` | 22 | ``` |
33 | 23 | ||
34 | If you don't want to install twig by yourself, you can download [this file](http://static.inthepoche.com/files/poche-1.0-latest-with-twig.zip). | 24 | ### using sqlite |
25 | |||
26 | Copy / paste install/poche.sqlite in db folder. | ||
27 | |||
28 | ### using mysql or postgresql | ||
29 | |||
30 | Execute the sql file in /install (mysql.sql or postgres.sql) | ||
31 | |||
32 | Then, go to step 3. | ||
33 | |||
34 | # Upgrading poche | ||
35 | |||
36 | Replace all the files except **db/poche.sqlite**. Also remember to edit the file /inc/poche/config.inc.php. | ||
37 | |||
38 | ## Upgrading from poche <= 0.3 | ||
39 | |||
40 | You have to execute http://yourpoche/install/update_sqlite_from_0_to_1.php | ||
41 | |||
42 | Then, go to step 3. | ||
43 | |||
44 | ## Upgrading from poche >= 1.0 beta1 | ||
45 | |||
46 | Nothing to do here. | ||
47 | |||
48 | Then, go to step 3. | ||
49 | |||
50 | # Here is the step 3 | ||
35 | 51 | ||
36 | ## storage in sqlite | 52 | You must have write access on assets, cache and db directories. These directories may not exist, you'll have to create them. |
37 | You have to install [sqlite for php](http://www.php.net/manual/en/book.sqlite.php) on your server. | ||
38 | 53 | ||
39 | Copy /install/poche.sqlite in /db | 54 | You can use poche ! Enjoy. |
40 | 55 | ||
41 | ## storage in mysql | 56 | # Some problems you may encounter |
42 | Execute /install/mysql.sql file in your database. | ||
43 | 57 | ||
44 | ## storage in postgres | 58 | ## Blank page |
45 | Execute /install/postgres.sql file in your database. | ||
46 | 59 | ||
47 | ## upgrading from poche <= 0.3 | 60 | Be sure to have write access on assets, cache and db directories. |
48 | With poche <= 0.3, all your datas were stored in a sqlite file. The structure of this file changed. | ||
49 | 61 | ||
50 | You have to execute http://yourpoche/install/update_sqlite_from_0_to_1.php before using this new version. | 62 | ## PHP Fatal error: Call to a member function fetchAll() on a non-object in /var/www/poche/inc/poche/Database.class.php on line 42 |
51 | 63 | ||
52 | ## installing poche | 64 | If you want to install poche, delete the db/poche.sqlite file and copy / paste the install/poche.sqlite in /db. Be sure to have write access. \ No newline at end of file |
53 | you can go on your poche http://yourpoche. You have to fill the fields and that's all ! \ No newline at end of file | ||
@@ -1,42 +1,26 @@ | |||
1 | # poche | 1 | # what is poche ? |
2 | Abandon Pocket, Instapaper and other Readability service : adopt poche. It is the same, but it is open source. Moreover, you can migrate from Pocket & Readability. | 2 | Abandon Pocket, Instapaper and other Readability service : adopt poche. It is the same, but it is free (like in freedom) and open source. |
3 | 3 | ||
4 | ![poche](http://inthepoche.com/img/logo.png) | 4 | ## Some features |
5 | 5 | ||
6 | The website of poche is [inthepoche.com](http://inthepoche.com). | 6 | * adding, deleting, archiving and setting as favorite a link |
7 | * import from pocket / readability / instapaper | ||
8 | * share links by email and on twitter | ||
9 | * a design adapted to tablets and smartphones | ||
10 | * extensions for Chrome and Firefox | ||
11 | * Android application | ||
12 | * multi languages (very soon!) | ||
13 | * multi users (very soon!) | ||
14 | * update notification in configuration screen | ||
15 | * many storage modes (sqlite, mysql, postgresql) | ||
16 | * many templates | ||
17 | * ... | ||
7 | 18 | ||
8 | To test poche, a demo website is online : [demo.inthepoche.com](http://demo.inthepoche.com) (login poche, password poche). | 19 | To test poche, a demo website is online : [demo.inthepoche.com](http://demo.inthepoche.com) (login poche, password poche). |
9 | 20 | ||
10 | To get news from poche, [follow us on twitter](http://twitter.com/getpoche) or [read the poche blog](http://inthepoche.com/blog). A Google Group is also available : [poche-users](https://groups.google.com/forum/#!forum/poche-users). | ||
11 | |||
12 | [![flattr](http://api.flattr.com/button/flattr-badge-large.png)](http://flattr.com/thing/1265480/poche-a-read-it-later-open-source-system) | ||
13 | |||
14 | ## Installation | 21 | ## Installation |
15 | 22 | ||
16 | Read the INSTALL.md file. | 23 | Read the [INSTALL.md file](https://github.com/inthepoche/poche/blob/master/INSTALL.md). |
17 | |||
18 | ## Security | ||
19 | You **have** to protect your db/poche.sqlite file. Modify the virtual host of your website to add this condition : | ||
20 | ```apache | ||
21 | <Files ~ "\.sqlite$"> | ||
22 | Order allow,deny | ||
23 | Deny from all | ||
24 | </Files> | ||
25 | ``` | ||
26 | |||
27 | Nginx version: | ||
28 | ```nginx | ||
29 | location ~ /(db) { | ||
30 | deny all; | ||
31 | return 404; | ||
32 | } | ||
33 | ``` | ||
34 | |||
35 | ## Usage | ||
36 | See the documentation on our website : [inthepoche.com](http://inthepoche.com). | ||
37 | |||
38 | ## Travis | ||
39 | [![Build Status](https://api.travis-ci.org/inthepoche/poche.png?branch=dev)](http://travis-ci.org/#!/inthepoche/poche) | ||
40 | 24 | ||
41 | ## License | 25 | ## License |
42 | Copyright © 2010-2013 Nicolas Lœuillet <nicolas.loeuillet@gmail.com> | 26 | Copyright © 2010-2013 Nicolas Lœuillet <nicolas.loeuillet@gmail.com> |
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 2af49acd..e0dc0d20 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php | |||
@@ -18,11 +18,10 @@ class Poche | |||
18 | 18 | ||
19 | function __construct() | 19 | function __construct() |
20 | { | 20 | { |
21 | if (file_exists('./install') && !DEBUG_POCHE) { | 21 | $this->initTpl(); |
22 | Tools::logm('folder /install exists'); | 22 | if (!$this->checkBeforeInstall()) { |
23 | die('To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.'); | 23 | exit; |
24 | } | 24 | } |
25 | |||
26 | $this->store = new Database(); | 25 | $this->store = new Database(); |
27 | $this->init(); | 26 | $this->init(); |
28 | $this->messages = new Messages(); | 27 | $this->messages = new Messages(); |
@@ -34,27 +33,44 @@ class Poche | |||
34 | } | 33 | } |
35 | } | 34 | } |
36 | 35 | ||
37 | private function init() | 36 | /** |
37 | * all checks before installation. | ||
38 | * @return boolean | ||
39 | */ | ||
40 | private function checkBeforeInstall() | ||
38 | { | 41 | { |
39 | Tools::initPhp(); | 42 | $msg = ''; |
40 | Session::init(); | 43 | $allIsGood = TRUE; |
41 | 44 | ||
42 | if (isset($_SESSION['poche_user']) && $_SESSION['poche_user'] != array()) { | 45 | if (!is_writable(CACHE)) { |
43 | $this->user = $_SESSION['poche_user']; | 46 | Tools::logm('you don\'t have write access on cache directory'); |
47 | die('You don\'t have write access on cache directory.'); | ||
44 | } | 48 | } |
45 | else { | 49 | else if (file_exists('./install/update.php') && !DEBUG_POCHE) { |
46 | # fake user, just for install & login screens | 50 | $msg = 'A poche update is needed. Please execute this update <a href="install/update.php">by clicking here</a>. If you have already do the update, please delete /install folder.'; |
47 | $this->user = new User(); | 51 | $allIsGood = FALSE; |
48 | $this->user->setConfig($this->getDefaultConfig()); | 52 | } |
53 | else if (file_exists('./install') && !DEBUG_POCHE) { | ||
54 | $msg = 'If you want to update your poche, you just have to delete /install folder. <br />To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.'; | ||
55 | $allIsGood = FALSE; | ||
56 | } | ||
57 | else if (STORAGE == 'sqlite' && !is_writable(STORAGE_SQLITE)) { | ||
58 | Tools::logm('you don\'t have write access on sqlite file'); | ||
59 | $msg = 'You don\'t have write access on sqlite file.'; | ||
60 | $allIsGood = FALSE; | ||
61 | } | ||
62 | |||
63 | if (!$allIsGood) { | ||
64 | echo $this->tpl->render('error.twig', array( | ||
65 | 'msg' => $msg | ||
66 | )); | ||
49 | } | 67 | } |
50 | 68 | ||
51 | # l10n | 69 | return $allIsGood; |
52 | $language = $this->user->getConfigValue('language'); | 70 | } |
53 | putenv('LC_ALL=' . $language); | ||
54 | setlocale(LC_ALL, $language); | ||
55 | bindtextdomain($language, LOCALE); | ||
56 | textdomain($language); | ||
57 | 71 | ||
72 | private function initTpl() | ||
73 | { | ||
58 | # template engine | 74 | # template engine |
59 | $loader = new Twig_Loader_Filesystem(TPL); | 75 | $loader = new Twig_Loader_Filesystem(TPL); |
60 | if (DEBUG_POCHE) { | 76 | if (DEBUG_POCHE) { |
@@ -72,6 +88,28 @@ class Poche | |||
72 | # filter for reading time | 88 | # filter for reading time |
73 | $filter = new Twig_SimpleFilter('getReadingTime', 'Tools::getReadingTime'); | 89 | $filter = new Twig_SimpleFilter('getReadingTime', 'Tools::getReadingTime'); |
74 | $this->tpl->addFilter($filter); | 90 | $this->tpl->addFilter($filter); |
91 | } | ||
92 | |||
93 | private function init() | ||
94 | { | ||
95 | Tools::initPhp(); | ||
96 | Session::init(); | ||
97 | |||
98 | if (isset($_SESSION['poche_user']) && $_SESSION['poche_user'] != array()) { | ||
99 | $this->user = $_SESSION['poche_user']; | ||
100 | } | ||
101 | else { | ||
102 | # fake user, just for install & login screens | ||
103 | $this->user = new User(); | ||
104 | $this->user->setConfig($this->getDefaultConfig()); | ||
105 | } | ||
106 | |||
107 | # l10n | ||
108 | $language = $this->user->getConfigValue('language'); | ||
109 | putenv('LC_ALL=' . $language); | ||
110 | setlocale(LC_ALL, $language); | ||
111 | bindtextdomain($language, LOCALE); | ||
112 | textdomain($language); | ||
75 | 113 | ||
76 | # Pagination | 114 | # Pagination |
77 | $this->pagination = new Paginator($this->user->getConfigValue('pager'), 'p'); | 115 | $this->pagination = new Paginator($this->user->getConfigValue('pager'), 'p'); |
@@ -87,10 +125,12 @@ class Poche | |||
87 | if (($_POST['password'] == $_POST['password_repeat']) | 125 | if (($_POST['password'] == $_POST['password_repeat']) |
88 | && $_POST['password'] != "" && $_POST['login'] != "") { | 126 | && $_POST['password'] != "" && $_POST['login'] != "") { |
89 | # let's rock, install poche baby ! | 127 | # let's rock, install poche baby ! |
90 | $this->store->install($_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login'])); | 128 | if ($this->store->install($_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login']))) |
91 | Session::logout(); | 129 | { |
92 | Tools::logm('poche is now installed'); | 130 | Session::logout(); |
93 | Tools::redirect(); | 131 | Tools::logm('poche is now installed'); |
132 | Tools::redirect(); | ||
133 | } | ||
94 | } | 134 | } |
95 | else { | 135 | else { |
96 | Tools::logm('error during installation'); | 136 | Tools::logm('error during installation'); |
@@ -180,6 +220,7 @@ class Poche | |||
180 | } | 220 | } |
181 | break; | 221 | break; |
182 | default: | 222 | default: |
223 | Tools::logm('action ' . $action . 'doesn\'t exist'); | ||
183 | break; | 224 | break; |
184 | } | 225 | } |
185 | } | 226 | } |
@@ -409,9 +450,11 @@ class Poche | |||
409 | $str_data = file_get_contents("./readability"); | 450 | $str_data = file_get_contents("./readability"); |
410 | $data = json_decode($str_data,true); | 451 | $data = json_decode($str_data,true); |
411 | Tools::logm('starting import from Readability'); | 452 | Tools::logm('starting import from Readability'); |
412 | 453 | $count = 0; | |
413 | foreach ($data as $key => $value) { | 454 | foreach ($data as $key => $value) { |
414 | $url = ''; | 455 | $url = NULL; |
456 | $favorite = FALSE; | ||
457 | $archive = FALSE; | ||
415 | foreach ($value as $attr => $attr_value) { | 458 | foreach ($value as $attr => $attr_value) { |
416 | if ($attr == 'article__url') { | 459 | if ($attr == 'article__url') { |
417 | $url = new Url(base64_encode($attr_value)); | 460 | $url = new Url(base64_encode($attr_value)); |
@@ -420,20 +463,30 @@ class Poche | |||
420 | if (STORAGE == 'postgres') { | 463 | if (STORAGE == 'postgres') { |
421 | $sequence = 'entries_id_seq'; | 464 | $sequence = 'entries_id_seq'; |
422 | } | 465 | } |
423 | // if ($attr_value == 'favorite' && $attr_value == 'true') { | 466 | if ($attr_value == 'true') { |
424 | // $last_id = $this->store->getLastId($sequence); | 467 | if ($attr == 'favorite') { |
425 | // $this->store->favoriteById($last_id); | 468 | $favorite = TRUE; |
426 | // $this->action('toogle_fav', $url, $last_id, TRUE); | 469 | } |
427 | // } | 470 | if ($attr == 'archive') { |
428 | if ($attr_value == 'archive' && $attr_value == 'true') { | 471 | $archive = TRUE; |
472 | } | ||
473 | } | ||
474 | } | ||
475 | # we can add the url | ||
476 | if (!is_null($url) && $url->isCorrect()) { | ||
477 | $this->action('add', $url, 0, TRUE); | ||
478 | $count++; | ||
479 | if ($favorite) { | ||
480 | $last_id = $this->store->getLastId($sequence); | ||
481 | $this->action('toggle_fav', $url, $last_id, TRUE); | ||
482 | } | ||
483 | if ($archive) { | ||
429 | $last_id = $this->store->getLastId($sequence); | 484 | $last_id = $this->store->getLastId($sequence); |
430 | $this->action('toggle_archive', $url, $last_id, TRUE); | 485 | $this->action('toggle_archive', $url, $last_id, TRUE); |
431 | } | 486 | } |
432 | } | 487 | } |
433 | if ($url->isCorrect()) | ||
434 | $this->action('add', $url, 0, TRUE); | ||
435 | } | 488 | } |
436 | $this->messages->add('s', _('import from Readability completed')); | 489 | $this->messages->add('s', _('import from Readability completed. ' . $count . ' new links.')); |
437 | Tools::logm('import from Readability completed'); | 490 | Tools::logm('import from Readability completed'); |
438 | Tools::redirect(); | 491 | Tools::redirect(); |
439 | } | 492 | } |
diff --git a/inc/poche/Tools.class.php b/inc/poche/Tools.class.php index 0eb0d9ea..1baf745d 100644 --- a/inc/poche/Tools.class.php +++ b/inc/poche/Tools.class.php | |||
@@ -233,4 +233,30 @@ class Tools | |||
233 | 233 | ||
234 | return $minutes; | 234 | return $minutes; |
235 | } | 235 | } |
236 | |||
237 | |||
238 | public static function createMyConfig() | ||
239 | { | ||
240 | $myconfig_file = './inc/poche/myconfig.inc.php'; | ||
241 | |||
242 | if (version_compare(POCHE_VERSION, '1.0-beta3') == 1) { | ||
243 | # $myconfig_file is only created with poche > 1.0-beta3 | ||
244 | # in 1.0-beta3, the update script creates $myconfig_file | ||
245 | |||
246 | if (!is_writable('./inc/poche/')) { | ||
247 | self::logm('you don\'t have write access to create ./inc/poche/myconfig.inc.php'); | ||
248 | die('You don\'t have write access to create ./inc/poche/myconfig.inc.php.'); | ||
249 | } | ||
250 | |||
251 | if (!file_exists($myconfig_file)) | ||
252 | { | ||
253 | $fp = fopen($myconfig_file, 'w'); | ||
254 | fwrite($fp, '<?php'."\r\n"); | ||
255 | fwrite($fp, "define ('POCHE_VERSION', '1.0-beta3');" . "\r\n"); | ||
256 | fwrite($fp, "define ('SALT', '" . md5(time() . $_SERVER['SCRIPT_FILENAME'] . rand()) . "');" . "\r\n"); | ||
257 | fwrite($fp, "define ('LANG', 'en_EN.utf8');" . "\r\n"); | ||
258 | fclose($fp); | ||
259 | } | ||
260 | } | ||
261 | } | ||
236 | } \ No newline at end of file | 262 | } \ No newline at end of file |
diff --git a/inc/poche/Url.class.php b/inc/poche/Url.class.php index f4a8f99e..00b0b257 100644 --- a/inc/poche/Url.class.php +++ b/inc/poche/Url.class.php | |||
@@ -27,7 +27,7 @@ class Url | |||
27 | 27 | ||
28 | public function isCorrect() | 28 | public function isCorrect() |
29 | { | 29 | { |
30 | $pattern = '|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i'; | 30 | $pattern = '|^(.*:)//([a-z\-.]+)(:[0-9]+)?(.*)$|i'; |
31 | 31 | ||
32 | return preg_match($pattern, $this->url); | 32 | return preg_match($pattern, $this->url); |
33 | } | 33 | } |
diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php index 321784d7..4122ff10 100644..100755 --- a/inc/poche/config.inc.php +++ b/inc/poche/config.inc.php | |||
@@ -8,47 +8,30 @@ | |||
8 | * @license http://www.wtfpl.net/ see COPYING file | 8 | * @license http://www.wtfpl.net/ see COPYING file |
9 | */ | 9 | */ |
10 | 10 | ||
11 | # storage | 11 | require_once __DIR__ . '/../../inc/poche/define.inc.php'; |
12 | define ('STORAGE','sqlite'); # postgres, mysql, sqlite | ||
13 | define ('STORAGE_SERVER', 'localhost'); # leave blank for sqlite | ||
14 | define ('STORAGE_DB', 'poche'); # only for postgres & mysql | ||
15 | define ('STORAGE_SQLITE', './db/poche.sqlite'); | ||
16 | define ('STORAGE_USER', 'postgres'); # leave blank for sqlite | ||
17 | define ('STORAGE_PASSWORD', 'postgres'); # leave blank for sqlite | ||
18 | |||
19 | define ('POCHE_VERSION', '1.0-beta1'); | ||
20 | define ('MODE_DEMO', FALSE); | ||
21 | define ('DEBUG_POCHE', FALSE); | ||
22 | define ('CONVERT_LINKS_FOOTNOTES', FALSE); | ||
23 | define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE); | ||
24 | define ('DOWNLOAD_PICTURES', FALSE); | ||
25 | define ('SHARE_TWITTER', TRUE); | ||
26 | define ('SHARE_MAIL', TRUE); | ||
27 | define ('SALT', '464v54gLLw928uz4zUBqkRJeiPY68zCX'); | ||
28 | define ('ABS_PATH', 'assets/'); | ||
29 | define ('TPL', './tpl'); | ||
30 | define ('LOCALE', './locale'); | ||
31 | define ('CACHE', './cache'); | ||
32 | define ('LANG', 'en_EN.UTF8'); | ||
33 | define ('PAGINATION', '10'); | ||
34 | define ('THEME', 'light'); | ||
35 | 12 | ||
36 | # /!\ Be careful if you change the lines below /!\ | 13 | # /!\ Be careful if you change the lines below /!\ |
37 | require_once './inc/poche/User.class.php'; | 14 | if (!file_exists(__DIR__ . '/../../vendor/autoload.php')) { |
38 | require_once './inc/poche/Tools.class.php'; | 15 | die('Twig does not seem installed. Have a look at <a href="http://inthepoche.com/?pages/Documentation">the documentation.</a>'); |
39 | require_once './inc/poche/Url.class.php'; | 16 | } |
40 | require_once './inc/3rdparty/class.messages.php'; | 17 | |
41 | require_once './inc/poche/Poche.class.php'; | 18 | if (file_exists(__DIR__ . '/../../inc/poche/myconfig.inc.php')) { |
42 | require_once './inc/3rdparty/Readability.php'; | 19 | require_once __DIR__ . '/../../inc/poche/myconfig.inc.php'; |
43 | require_once './inc/3rdparty/Encoding.php'; | 20 | } |
44 | require_once './inc/poche/Database.class.php'; | 21 | require_once __DIR__ . '/../../inc/poche/User.class.php'; |
45 | require_once './vendor/autoload.php'; | 22 | require_once __DIR__ . '/../../inc/poche/Url.class.php'; |
46 | require_once './inc/3rdparty/simple_html_dom.php'; | 23 | require_once __DIR__ . '/../../inc/3rdparty/class.messages.php'; |
47 | require_once './inc/3rdparty/paginator.php'; | 24 | require_once __DIR__ . '/../../inc/poche/Poche.class.php'; |
48 | require_once './inc/3rdparty/Session.class.php'; | 25 | require_once __DIR__ . '/../../inc/3rdparty/Readability.php'; |
26 | require_once __DIR__ . '/../../inc/3rdparty/Encoding.php'; | ||
27 | require_once __DIR__ . '/../../inc/poche/Database.class.php'; | ||
28 | require_once __DIR__ . '/../../vendor/autoload.php'; | ||
29 | require_once __DIR__ . '/../../inc/3rdparty/simple_html_dom.php'; | ||
30 | require_once __DIR__ . '/../../inc/3rdparty/paginator.php'; | ||
31 | require_once __DIR__ . '/../../inc/3rdparty/Session.class.php'; | ||
49 | 32 | ||
50 | if (DOWNLOAD_PICTURES) { | 33 | if (DOWNLOAD_PICTURES) { |
51 | require_once './inc/poche/pochePictures.php'; | 34 | require_once __DIR__ . '/../../inc/poche/pochePictures.php'; |
52 | } | 35 | } |
53 | 36 | ||
54 | $poche = new Poche(); | 37 | $poche = new Poche(); |
diff --git a/inc/poche/define.inc.php b/inc/poche/define.inc.php new file mode 100644 index 00000000..c32ca098 --- /dev/null +++ b/inc/poche/define.inc.php | |||
@@ -0,0 +1,30 @@ | |||
1 | <?php | ||
2 | /** | ||
3 | * poche, a read it later open source system | ||
4 | * | ||
5 | * @category poche | ||
6 | * @author Nicolas Lœuillet <nicolas@loeuillet.org> | ||
7 | * @copyright 2013 | ||
8 | * @license http://www.wtfpl.net/ see COPYING file | ||
9 | */ | ||
10 | |||
11 | define ('STORAGE','sqlite'); # postgres, mysql, sqlite | ||
12 | define ('STORAGE_SERVER', 'localhost'); # leave blank for sqlite | ||
13 | define ('STORAGE_DB', 'poche'); # only for postgres & mysql | ||
14 | define ('STORAGE_SQLITE', __DIR__ . '/../../db/poche.sqlite'); | ||
15 | define ('STORAGE_USER', 'postgres'); # leave blank for sqlite | ||
16 | define ('STORAGE_PASSWORD', 'postgres'); # leave blank for sqlite | ||
17 | |||
18 | define ('MODE_DEMO', FALSE); | ||
19 | define ('DEBUG_POCHE', FALSE); | ||
20 | define ('CONVERT_LINKS_FOOTNOTES', FALSE); | ||
21 | define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE); | ||
22 | define ('DOWNLOAD_PICTURES', FALSE); | ||
23 | define ('SHARE_TWITTER', TRUE); | ||
24 | define ('SHARE_MAIL', TRUE); | ||
25 | define ('ABS_PATH', 'assets/'); | ||
26 | define ('TPL', __DIR__ . '/../../tpl'); | ||
27 | define ('LOCALE', __DIR__ . '/../../locale'); | ||
28 | define ('CACHE', __DIR__ . '/../../cache'); | ||
29 | define ('PAGINATION', '10'); | ||
30 | define ('THEME', 'light'); \ No newline at end of file | ||
@@ -8,6 +8,9 @@ | |||
8 | * @license http://www.wtfpl.net/ see COPYING file | 8 | * @license http://www.wtfpl.net/ see COPYING file |
9 | */ | 9 | */ |
10 | 10 | ||
11 | require_once './inc/poche/Tools.class.php'; | ||
12 | Tools::createMyConfig(); | ||
13 | |||
11 | include dirname(__FILE__).'/inc/poche/config.inc.php'; | 14 | include dirname(__FILE__).'/inc/poche/config.inc.php'; |
12 | 15 | ||
13 | # Parse GET & REFERER vars | 16 | # Parse GET & REFERER vars |
diff --git a/install/update.php b/install/update.php new file mode 100644 index 00000000..8c93af6d --- /dev/null +++ b/install/update.php | |||
@@ -0,0 +1,79 @@ | |||
1 | <?php | ||
2 | require_once dirname(__FILE__).'/../inc/poche/Tools.class.php'; | ||
3 | include dirname(__FILE__).'/../inc/poche/define.inc.php'; | ||
4 | require_once __DIR__ . '/../inc/poche/Database.class.php'; | ||
5 | $store = new Database(); | ||
6 | $old_salt = '464v54gLLw928uz4zUBqkRJeiPY68zCX'; | ||
7 | ?> | ||
8 | <!DOCTYPE html> | ||
9 | <!--[if lte IE 6]> <html class="no-js ie6 ie67 ie678" lang="en"> <![endif]--> | ||
10 | <!--[if lte IE 7]> <html class="no-js ie7 ie67 ie678" lang="en"> <![endif]--> | ||
11 | <!--[if IE 8]> <html class="no-js ie8 ie678" lang="en"> <![endif]--> | ||
12 | <!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> | ||
13 | <html> | ||
14 | <head> | ||
15 | <meta charset="utf-8"> | ||
16 | <title>updating poche</title> | ||
17 | </head> | ||
18 | <body> | ||
19 | <h1>update poche to 1.0-beta3</h1> | ||
20 | |||
21 | <h2>Changelog</h2> | ||
22 | <p> | ||
23 | <ul> | ||
24 | <li>this awesome updating step</li> | ||
25 | <li>error message when install folder exists</li> | ||
26 | <li>more tests before installation (write access, etc.)</li> | ||
27 | <li>updated README to make installation easier</li> | ||
28 | <li>german language thanks to HLFH</li> | ||
29 | <li>spanish language thanks to Nitche</li> | ||
30 | <li>new file ./inc/poche/myconfig.inc.php created to store language and salt</li> | ||
31 | <li><a href="https://github.com/inthepoche/poche/issues/119">#119</a>: salt is now created when installing poche</li> | ||
32 | <li><a href="https://github.com/inthepoche/poche/issues/130">#130</a>: robots.txt added</li> | ||
33 | <li><a href="https://github.com/inthepoche/poche/issues/136">#136</a>: error during readability import</li> | ||
34 | <li><a href="https://github.com/inthepoche/poche/issues/137">#137</a>: mixed content alert in https</li> | ||
35 | <li><a href="https://github.com/inthepoche/poche/issues/138">#138</a>: change pattern to parse url with #</li> | ||
36 | </ul> | ||
37 | </p> | ||
38 | <p>To update your poche, please fill the following fields.</p> | ||
39 | <p> | ||
40 | <form name="update" method="post"> | ||
41 | <div><label for="login">login:</label> <input type="text" name="login" id="login" /></div> | ||
42 | <div><label for="password">password:</label> <input type="password" name="password" id="password" /></div> | ||
43 | <div><input type="hidden" name="go" value="ok" /><input type="submit" value="update" /></div> | ||
44 | </form> | ||
45 | </p> | ||
46 | <?php | ||
47 | if (isset($_POST['go'])) { | ||
48 | if (!empty($_POST['login']) && !empty($_POST['password'])) { | ||
49 | $user = $store->login($_POST['login'], sha1($_POST['password'] . $_POST['login'] . $old_salt)); | ||
50 | if ($user != array()) { | ||
51 | $new_salt = md5(time() . $_SERVER['SCRIPT_FILENAME'] . rand()); | ||
52 | $myconfig_file = '../inc/poche/myconfig.inc.php'; | ||
53 | if (!is_writable('../inc/poche/')) { | ||
54 | die('You don\'t have write access to create ./inc/poche/myconfig.inc.php.'); | ||
55 | } | ||
56 | |||
57 | if (!file_exists($myconfig_file)) | ||
58 | { | ||
59 | $fp = fopen($myconfig_file, 'w'); | ||
60 | |||
61 | fwrite($fp, '<?php'."\r\n"); | ||
62 | fwrite($fp, "define ('POCHE_VERSION', '1.0-beta3');" . "\r\n"); | ||
63 | fwrite($fp, "define ('SALT', '" . $new_salt . "');" . "\r\n"); | ||
64 | fwrite($fp, "define ('LANG', 'en_EN.utf8');" . "\r\n"); | ||
65 | fclose($fp); | ||
66 | } | ||
67 | # faire une mise à jour de la table users en prenant en compte le nouveau SALT généré | ||
68 | $store->updatePassword($user['id'], sha1($_POST['password'] . $_POST['login'] . $new_salt)); | ||
69 | ?> | ||
70 | <p><span style="color: green;">your poche is up to date!</span></p> | ||
71 | <p><span style="color: red;">don't forget to delete ./install/ folder after the update.</span></p> | ||
72 | <p><a href="../">go back to your poche</a></p> | ||
73 | <?php | ||
74 | } | ||
75 | } | ||
76 | } | ||
77 | ?> | ||
78 | </body> | ||
79 | </html> \ No newline at end of file | ||
diff --git a/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo new file mode 100644 index 00000000..b900f146 --- /dev/null +++ b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo | |||
Binary files differ | |||
diff --git a/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po new file mode 100644 index 00000000..4448bad1 --- /dev/null +++ b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po | |||
@@ -0,0 +1,114 @@ | |||
1 | # | ||
2 | # Translators: | ||
3 | # HLFH <gaspard.dhautefeuille@gmail.com>, 2013 | ||
4 | msgid "" | ||
5 | msgstr "" | ||
6 | "Project-Id-Version: poche\n" | ||
7 | "POT-Creation-Date: 2013-08-02 10:26+0100\n" | ||
8 | "PO-Revision-Date: 2013-08-06 11:48+0100\n" | ||
9 | "Last-Translator: Nicolas Lœuillet <nicolas.loeuillet@gmail.com>\n" | ||
10 | "Language-Team: German (http://www.transifex.com/projects/p/poche/language/" | ||
11 | "de/)\n" | ||
12 | "MIME-Version: 1.0\n" | ||
13 | "Content-Type: text/plain; charset=UTF-8\n" | ||
14 | "Content-Transfer-Encoding: 8bit\n" | ||
15 | "Language: de\n" | ||
16 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||
17 | "X-Generator: Poedit 1.5.4\n" | ||
18 | "X-Poedit-Basepath: /\n" | ||
19 | "X-Poedit-KeywordsList: _;gettext;gettext_noop\n" | ||
20 | "X-Poedit-SourceCharset: UTF-8\n" | ||
21 | "X-Poedit-SearchPath-0: /var/www/poche-i18n\n" | ||
22 | |||
23 | #: /var/www/poche-i18n/import.php:17 | ||
24 | msgid "Please execute the import script locally, it can take a very long time." | ||
25 | msgstr "" | ||
26 | "Wir danken Ihnen, den Import in lokal zu ausführen, kann es einige Zeit " | ||
27 | "dauern." | ||
28 | |||
29 | #: /var/www/poche-i18n/import.php:17 | ||
30 | msgid "Please choose between Pocket & Readabilty :" | ||
31 | msgstr "Wir danken Ihnen, zwischen Pocket und Readability zu wählen:" | ||
32 | |||
33 | #: /var/www/poche-i18n/import.php:17 | ||
34 | msgid "Bye bye Pocket, let's go !" | ||
35 | msgstr "Auf wiedersehen Pocket, auf geht's!" | ||
36 | |||
37 | #: /var/www/poche-i18n/import.php:17 | ||
38 | msgid "Bye bye Readability, let's go !" | ||
39 | msgstr "Auf wiedersehen Readability, auf geht's!" | ||
40 | |||
41 | #: /var/www/poche-i18n/import.php:48 | ||
42 | msgid "Import from Pocket completed." | ||
43 | msgstr "Der Import aus Poche ist abgeschlossen." | ||
44 | |||
45 | #: /var/www/poche-i18n/import.php:48 /var/www/poche-i18n/import.php:66 | ||
46 | msgid "Welcome to poche !" | ||
47 | msgstr "Willkommen in Poche!" | ||
48 | |||
49 | #: /var/www/poche-i18n/import.php:66 | ||
50 | msgid "Import from Readability completed." | ||
51 | msgstr "Der Import aus Readability ist abgeschlossen." | ||
52 | |||
53 | #: /var/www/poche-i18n/import.php:70 | ||
54 | msgid "Error with the import." | ||
55 | msgstr "Fehler beim Import." | ||
56 | |||
57 | #: /var/www/poche-i18n/import.php:70 | ||
58 | msgid "Back to poche" | ||
59 | msgstr "Rückkehr zu Poche" | ||
60 | |||
61 | #: /var/www/poche-i18n/index.php:18 | ||
62 | msgid "Wrong token." | ||
63 | msgstr "Ungültiges Token." | ||
64 | |||
65 | #: /var/www/poche-i18n/index.php:43 | ||
66 | msgid "Login failed !" | ||
67 | msgstr "Fehler bei der Anmeldung." | ||
68 | |||
69 | #: /var/www/poche-i18n/index.php:59 | ||
70 | msgid "your password has been updated" | ||
71 | msgstr "Ihr Passwort wurde aktualisiert." | ||
72 | |||
73 | #: /var/www/poche-i18n/index.php:62 | ||
74 | msgid "in demo mode, you can't update password" | ||
75 | msgstr "Im Demo-Modus kann das Passwort nicht geändert werden." | ||
76 | |||
77 | #: /var/www/poche-i18n/index.php:66 | ||
78 | msgid "" | ||
79 | "your password can't be empty and you have to repeat it in the second field" | ||
80 | msgstr "" | ||
81 | "Ihr Passwort darf nicht leer sein, und Sie müssen es in das zweite Feld zu " | ||
82 | "wiederholen." | ||
83 | |||
84 | #: /var/www/poche-i18n/index.php:83 | ||
85 | msgid "poche, a read it later open source system" | ||
86 | msgstr "Poche, eine Opensourceanwendung, um später zu lesen" | ||
87 | |||
88 | #: /var/www/poche-i18n/inc/MyTool.class.php:18 | ||
89 | msgid "Oops, it seems you don't have PHP 5." | ||
90 | msgstr "Hoppla, scheint es, dass PHP 5 nicht installiert ist." | ||
91 | |||
92 | #: /var/www/poche-i18n/inc/functions.php:352 | ||
93 | msgid "the link has been added successfully" | ||
94 | msgstr "der Link wurde erfolgreich hinzugefügt" | ||
95 | |||
96 | #: /var/www/poche-i18n/inc/functions.php:355 | ||
97 | msgid "error during insertion : the link wasn't added" | ||
98 | msgstr "Fehler beim Einfügen: der Link wurde nicht hinzugefügt" | ||
99 | |||
100 | #: /var/www/poche-i18n/inc/functions.php:359 | ||
101 | msgid "error during url preparation : the link wasn't added" | ||
102 | msgstr "Fehler beim Einfügen: der Link wurde nicht hinzugefügt" | ||
103 | |||
104 | #: /var/www/poche-i18n/inc/functions.php:364 | ||
105 | msgid "error during url preparation : the link is not valid" | ||
106 | msgstr "Fehler bei der Herstellung der URL: der Link ist nicht gültig" | ||
107 | |||
108 | #: /var/www/poche-i18n/inc/functions.php:373 | ||
109 | msgid "the link has been deleted successfully" | ||
110 | msgstr "der Link wurde erfolgreich hinzugefügt" | ||
111 | |||
112 | #: /var/www/poche-i18n/inc/functions.php:377 | ||
113 | msgid "the link wasn't deleted" | ||
114 | msgstr "der Link wurde nicht entfernt." | ||
diff --git a/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo b/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo new file mode 100644 index 00000000..aa3d4182 --- /dev/null +++ b/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo | |||
Binary files differ | |||
diff --git a/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po b/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po new file mode 100644 index 00000000..236297d7 --- /dev/null +++ b/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po | |||
@@ -0,0 +1,382 @@ | |||
1 | # | ||
2 | # Translators: | ||
3 | # Nitche <nicolas.canseco@gmail.com>, 2013 | ||
4 | msgid "" | ||
5 | msgstr "" | ||
6 | "Project-Id-Version: poche\n" | ||
7 | "POT-Creation-Date: 2013-08-06 08:35+0100\n" | ||
8 | "PO-Revision-Date: 2013-08-16 19:09+0100\n" | ||
9 | "Last-Translator: Nicolas Lœuillet <nicolas.loeuillet@gmail.com>\n" | ||
10 | "Language-Team: Spanish (http://www.transifex.com/projects/p/poche/language/" | ||
11 | "es/)\n" | ||
12 | "MIME-Version: 1.0\n" | ||
13 | "Content-Type: text/plain; charset=UTF-8\n" | ||
14 | "Content-Transfer-Encoding: 8bit\n" | ||
15 | "Language: es\n" | ||
16 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||
17 | "X-Generator: Poedit 1.5.4\n" | ||
18 | "X-Poedit-Basepath: /\n" | ||
19 | "X-Poedit-KeywordsList: _;gettext;gettext_noop\n" | ||
20 | "X-Poedit-SourceCharset: UTF-8\n" | ||
21 | "X-Poedit-SearchPath-0: /var/www/poche-i18n\n" | ||
22 | |||
23 | #: /var/www/poche-i18n/index.php:43 | ||
24 | msgid "poche, a read it later open source system" | ||
25 | msgstr "poche, a read it later open source system" | ||
26 | |||
27 | #: /var/www/poche-i18n/inc/poche/Poche.class.php:101 | ||
28 | msgid "the link has been added successfully" | ||
29 | msgstr "el enlace a sido agregado con éxito" | ||
30 | |||
31 | #: /var/www/poche-i18n/inc/poche/Poche.class.php:104 | ||
32 | msgid "error during insertion : the link wasn't added" | ||
33 | msgstr "error en la inserción : el enlace no ha sido agregado" | ||
34 | |||
35 | #: /var/www/poche-i18n/inc/poche/Poche.class.php:109 | ||
36 | msgid "error during fetching content : the link wasn't added" | ||
37 | msgstr "" | ||
38 | "error durante la recuperación del contenido : el enlace no a sido agregado" | ||
39 | |||
40 | #: /var/www/poche-i18n/inc/poche/Poche.class.php:119 | ||
41 | msgid "the link has been deleted successfully" | ||
42 | msgstr "el enlace a sido suprimido con éxito" | ||
43 | |||
44 | #: /var/www/poche-i18n/inc/poche/Poche.class.php:123 | ||
45 | msgid "the link wasn't deleted" | ||
46 | msgstr "el enlace no ha sido suprimido" | ||
47 | |||
48 | #: /var/www/poche-i18n/inc/poche/Tools.class.php:18 | ||
49 | msgid "Oops, it seems you don't have PHP 5." | ||
50 | msgstr "Parece que PHP 5 no está instalado" | ||
51 | |||
52 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:32 | ||
53 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:70 | ||
54 | #: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:50 | ||
55 | msgid "config" | ||
56 | msgstr "configuración" | ||
57 | |||
58 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:46 | ||
59 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:31 | ||
60 | #: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:26 | ||
61 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:34 | ||
62 | msgid "home" | ||
63 | msgstr "inicio" | ||
64 | |||
65 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:54 | ||
66 | #: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:34 | ||
67 | msgid "favorites" | ||
68 | msgstr "favoritos" | ||
69 | |||
70 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:62 | ||
71 | #: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:42 | ||
72 | msgid "archive" | ||
73 | msgstr "archivos" | ||
74 | |||
75 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:74 | ||
76 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:76 | ||
77 | #: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:54 | ||
78 | #: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:56 | ||
79 | msgid "logout" | ||
80 | msgstr "desconexión " | ||
81 | |||
82 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:87 | ||
83 | msgid "Bookmarklet" | ||
84 | msgstr "Bookmarklet" | ||
85 | |||
86 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:91 | ||
87 | msgid "" | ||
88 | "Thanks to the bookmarklet, you will be able to easily add a link to your " | ||
89 | "poche." | ||
90 | msgstr "" | ||
91 | "Gracias a tu bookmarklet, puedes agregar fácilmente un enlace en tu bolsillo" | ||
92 | |||
93 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:93 | ||
94 | msgid "Have a look to this documentation:" | ||
95 | msgstr "échale un ojo a la documentación :" | ||
96 | |||
97 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:97 | ||
98 | msgid "Drag & drop this link to your bookmarks bar and have fun with poche." | ||
99 | msgstr "" | ||
100 | "Arrastra y suelta ese enlace en tu barra de favoritos en tu navegador y " | ||
101 | "disfruta de tu poche." | ||
102 | |||
103 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:103 | ||
104 | msgid "poche it!" | ||
105 | msgstr "pochéalo!" | ||
106 | |||
107 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:108 | ||
108 | msgid "Updating poche" | ||
109 | msgstr "Actualizar" | ||
110 | |||
111 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:113 | ||
112 | msgid "your version" | ||
113 | msgstr "su versión" | ||
114 | |||
115 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:119 | ||
116 | msgid "latest stable version" | ||
117 | msgstr "ultima versión estable" | ||
118 | |||
119 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:125 | ||
120 | msgid "a more recent stable version is available." | ||
121 | msgstr "una versión estable más reciente está disponible" | ||
122 | |||
123 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:128 | ||
124 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:142 | ||
125 | msgid "you are up to date." | ||
126 | msgstr "estás al día" | ||
127 | |||
128 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:133 | ||
129 | msgid "latest dev version" | ||
130 | msgstr "ultima versión de desarollo" | ||
131 | |||
132 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:139 | ||
133 | msgid "a more recent development version is available." | ||
134 | msgstr "una versión de desarollo más reciente está disponible" | ||
135 | |||
136 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:150 | ||
137 | msgid "Change your password" | ||
138 | msgstr "Modificar tu contraseña" | ||
139 | |||
140 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:157 | ||
141 | msgid "New password:" | ||
142 | msgstr "Nueva contraseña :" | ||
143 | |||
144 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:161 | ||
145 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:171 | ||
146 | #: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:60 | ||
147 | #: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:68 | ||
148 | msgid "Password" | ||
149 | msgstr "Contraseña" | ||
150 | |||
151 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:167 | ||
152 | msgid "Repeat your new password:" | ||
153 | msgstr "Repetir la nueva contraseña :" | ||
154 | |||
155 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:177 | ||
156 | msgid "Update" | ||
157 | msgstr "Poner al día" | ||
158 | |||
159 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:193 | ||
160 | msgid "Import" | ||
161 | msgstr "Importar" | ||
162 | |||
163 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:197 | ||
164 | msgid "Please execute the import script locally, it can take a very long time." | ||
165 | msgstr "" | ||
166 | "Gracias por ejecutar la importación en local, esto puede demorar un tiempo" | ||
167 | |||
168 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:201 | ||
169 | msgid "More infos in the official doc:" | ||
170 | msgstr "Más información en la documentación oficial :" | ||
171 | |||
172 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:206 | ||
173 | msgid "import from Pocket" | ||
174 | msgstr "la importación desde Pocket está terminada" | ||
175 | |||
176 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:210 | ||
177 | msgid "import from Readability" | ||
178 | msgstr "la importación desde Readability está terminada" | ||
179 | |||
180 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:214 | ||
181 | msgid "import from Instapaper" | ||
182 | msgstr "Importar desde Instapaper" | ||
183 | |||
184 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:220 | ||
185 | msgid "Export your poche datas" | ||
186 | msgstr "Exportar sus datos de poche" | ||
187 | |||
188 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:224 | ||
189 | msgid "Click here" | ||
190 | msgstr "Haga clic aquí" | ||
191 | |||
192 | #: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:226 | ||
193 | msgid "to export your poche datas." | ||
194 | msgstr "Para exportar sus datos de poche" | ||
195 | |||
196 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:46 | ||
197 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:139 | ||
198 | #: /var/www/poche-i18n/cache/30/97/b548692380c89d047a16cec7af79.php:22 | ||
199 | msgid "back to home" | ||
200 | msgstr "volver a la pagina de inicio" | ||
201 | |||
202 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:50 | ||
203 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:147 | ||
204 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:119 | ||
205 | msgid "toggle mark as read" | ||
206 | msgstr "marcar como leído" | ||
207 | |||
208 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:60 | ||
209 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:157 | ||
210 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:129 | ||
211 | msgid "toggle favorite" | ||
212 | msgstr "favorito" | ||
213 | |||
214 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:70 | ||
215 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:167 | ||
216 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:139 | ||
217 | msgid "delete" | ||
218 | msgstr "suprimir" | ||
219 | |||
220 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:82 | ||
221 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:179 | ||
222 | msgid "tweet" | ||
223 | msgstr "tweetear" | ||
224 | |||
225 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:93 | ||
226 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:190 | ||
227 | msgid "email" | ||
228 | msgstr "enviar por mail" | ||
229 | |||
230 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:109 | ||
231 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:125 | ||
232 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:153 | ||
233 | msgid "original" | ||
234 | msgstr "original" | ||
235 | |||
236 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:143 | ||
237 | msgid "back to top" | ||
238 | msgstr "volver arriba" | ||
239 | |||
240 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:198 | ||
241 | msgid "this article appears wrong?" | ||
242 | msgstr "este articulo no se ve bien ?" | ||
243 | |||
244 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:200 | ||
245 | msgid "create an issue" | ||
246 | msgstr "crear un ticket" | ||
247 | |||
248 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:202 | ||
249 | msgid "or" | ||
250 | msgstr "o" | ||
251 | |||
252 | #: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:206 | ||
253 | msgid "contact us by mail" | ||
254 | msgstr "contactarnos por mail" | ||
255 | |||
256 | #: /var/www/poche-i18n/cache/88/8a/ee3b7080c13204391c14947a0c2c.php:22 | ||
257 | msgid "powered by" | ||
258 | msgstr "propulsado por" | ||
259 | |||
260 | #: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:31 | ||
261 | msgid "installation" | ||
262 | msgstr "instalacion" | ||
263 | |||
264 | #: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:42 | ||
265 | msgid "install your poche" | ||
266 | msgstr "instala tu poche" | ||
267 | |||
268 | #: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:47 | ||
269 | msgid "" | ||
270 | "poche is still not installed. Please fill the below form to install it. " | ||
271 | "Don't hesitate to <a href='http://inthepoche.com/?pages/Documentation'>read " | ||
272 | "the documentation on poche website</a>." | ||
273 | msgstr "" | ||
274 | "poche todavia no està instalado. Gracias de llenar los campos siguientes " | ||
275 | "para instalarlo. No dudes de <a href='http://inthepoche.com/?pages/" | ||
276 | "Documentation'>leer la documentacion en el sitio de poche</a>." | ||
277 | |||
278 | #: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:53 | ||
279 | #: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:55 | ||
280 | msgid "Login" | ||
281 | msgstr "Nombre de usuario" | ||
282 | |||
283 | #: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:67 | ||
284 | msgid "Repeat your password" | ||
285 | msgstr "repita su contraseña" | ||
286 | |||
287 | #: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:74 | ||
288 | msgid "Install" | ||
289 | msgstr "Instalar" | ||
290 | |||
291 | #: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:31 | ||
292 | #: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:42 | ||
293 | msgid "login to your poche" | ||
294 | msgstr "conectarse a tu poche" | ||
295 | |||
296 | #: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:48 | ||
297 | msgid "you are in demo mode, some features may be disabled." | ||
298 | msgstr "" | ||
299 | "este es el modo de demostración, algunas funcionalidades pueden estar " | ||
300 | "desactivadas." | ||
301 | |||
302 | #: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:80 | ||
303 | msgid "Stay signed in" | ||
304 | msgstr "seguir conectado" | ||
305 | |||
306 | #: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:86 | ||
307 | msgid "(Do not check on public computers)" | ||
308 | msgstr "(no marcar en un ordenador publico)" | ||
309 | |||
310 | #: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:93 | ||
311 | msgid "Sign in" | ||
312 | msgstr "conectarse" | ||
313 | |||
314 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:55 | ||
315 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:57 | ||
316 | msgid "by date asc" | ||
317 | msgstr "por fecha ascendiente" | ||
318 | |||
319 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:59 | ||
320 | msgid "by date" | ||
321 | msgstr "por fecha" | ||
322 | |||
323 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:65 | ||
324 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:67 | ||
325 | msgid "by date desc" | ||
326 | msgstr "por fecha descendiente" | ||
327 | |||
328 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:75 | ||
329 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:77 | ||
330 | msgid "by title asc" | ||
331 | msgstr "por titulo ascendiente" | ||
332 | |||
333 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:79 | ||
334 | msgid "by title" | ||
335 | msgstr "por titulo" | ||
336 | |||
337 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:85 | ||
338 | #: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:87 | ||
339 | msgid "by title desc" | ||
340 | msgstr "por titulo descendiente" | ||
341 | |||
342 | #~ msgid "Please choose between Pocket & Readabilty :" | ||
343 | #~ msgstr "Merci de choisir entre Pocket & Readability :" | ||
344 | |||
345 | #~ msgid "Bye bye Pocket, let's go !" | ||
346 | #~ msgstr "Bye bye Pocket, en route !" | ||
347 | |||
348 | #~ msgid "Bye bye Readability, let's go !" | ||
349 | #~ msgstr "Bye bye Readability, en route !" | ||
350 | |||
351 | #~ msgid "Welcome to poche !" | ||
352 | #~ msgstr "Bienvenue dans poche !" | ||
353 | |||
354 | #~ msgid "Error with the import." | ||
355 | #~ msgstr "Erreur durant l'import." | ||
356 | |||
357 | #~ msgid "Wrong token." | ||
358 | #~ msgstr "Mauvais jeton." | ||
359 | |||
360 | #~ msgid "Login failed !" | ||
361 | #~ msgstr "Connexion échouée." | ||
362 | |||
363 | #~ msgid "your password has been updated" | ||
364 | #~ msgstr "Votre mot de passe a été mis à jour. " | ||
365 | |||
366 | #~ msgid "in demo mode, you can't update password" | ||
367 | #~ msgstr "En mode démo, le mot de passe ne peut être modifié." | ||
368 | |||
369 | #~ msgid "" | ||
370 | #~ "your password can't be empty and you have to repeat it in the second field" | ||
371 | #~ msgstr "" | ||
372 | #~ "Votre mot de passe ne peut être vide et vous devez le répéter dans le " | ||
373 | #~ "second champ." | ||
374 | |||
375 | #~ msgid "error during url preparation : the link wasn't added" | ||
376 | #~ msgstr "erreur durant l'insertion : le lien n'a pas été ajouté" | ||
377 | |||
378 | #~ msgid "error during url preparation : the link is not valid" | ||
379 | #~ msgstr "erreur durant la préparation de l'URL : le lien n'est pas valide" | ||
380 | |||
381 | #~ msgid "TEST" | ||
382 | #~ msgstr "NICOLAS" | ||
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 c0d4a9d6..c0d4a9d6 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 7f8cf784..7f8cf784 100644 --- a/locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.po +++ b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po | |||
diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000..77470cb3 --- /dev/null +++ b/robots.txt | |||
@@ -0,0 +1,2 @@ | |||
1 | User-agent: * | ||
2 | Disallow: / \ No newline at end of file | ||
diff --git a/tpl/_head.twig b/tpl/_head.twig index 145d668f..60ef8883 100644 --- a/tpl/_head.twig +++ b/tpl/_head.twig | |||
@@ -6,6 +6,6 @@ | |||
6 | <link rel="stylesheet" href="./tpl/css/style.css" media="all"> | 6 | <link rel="stylesheet" href="./tpl/css/style.css" media="all"> |
7 | <link rel="stylesheet" href="./tpl/css/style-{{ constant('THEME') }}.css" media="all" title="{{ constant('THEME') }} theme"> | 7 | <link rel="stylesheet" href="./tpl/css/style-{{ constant('THEME') }}.css" media="all" title="{{ constant('THEME') }} theme"> |
8 | <link rel="stylesheet" href="./tpl/css/messages.css" media="all"> | 8 | <link rel="stylesheet" href="./tpl/css/messages.css" media="all"> |
9 | <link href='http://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'> | 9 | <link href='//fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'> |
10 | <script src="./tpl/js/jquery-2.0.3.min.js"></script> | 10 | <script src="./tpl/js/jquery-2.0.3.min.js"></script> |
11 | <script type="text/javascript">$(document).ready(function(){$("body").prepend('<a href="#top" class="top_link" title="{% trans "back to top" %}"><img src="./tpl/img/{{ constant("THEME") }}/backtotop.png" alt={% trans "back to top" %}"/></a>');$(".top_link").css({position:"fixed",right:"15px",bottom:"15px",display:"none",padding:"20px",background:"#ccc","-moz-border-radius":"40px","-webkit-border-radius":"40px","border-radius":"40px",opacity:"0.9","z-index":"2000"});$(window).scroll(function(){posScroll=$(document).scrollTop();if(posScroll>=400)$(".top_link").fadeIn(600);else $(".top_link").fadeOut(600)})})</script> \ No newline at end of file | 11 | <script type="text/javascript">$(document).ready(function(){$("body").prepend('<a href="#top" class="top_link" title="{% trans "back to top" %}"><img src="./tpl/img/{{ constant("THEME") }}/backtotop.png" alt={% trans "back to top" %}"/></a>');$(".top_link").css({position:"fixed",right:"15px",bottom:"15px",display:"none",padding:"20px",background:"#ccc","-moz-border-radius":"40px","-webkit-border-radius":"40px","border-radius":"40px",opacity:"0.9","z-index":"2000"});$(window).scroll(function(){posScroll=$(document).scrollTop();if(posScroll>=400)$(".top_link").fadeIn(600);else $(".top_link").fadeOut(600)})})</script> \ No newline at end of file |
diff --git a/tpl/error.twig b/tpl/error.twig new file mode 100644 index 00000000..84c3bc1c --- /dev/null +++ b/tpl/error.twig | |||
@@ -0,0 +1,7 @@ | |||
1 | {% extends "layout.twig" %} | ||
2 | {% block title %}{% trans "error" %}{% endblock %} | ||
3 | {% block content %} | ||
4 | <h1>error</h1> | ||
5 | <p>{{ msg|raw }}</p> | ||
6 | <p>Don't forget <a href="http://inthepoche.com/?pages/Documentation">the documentation</a>.</p> | ||
7 | {% endblock %} \ No newline at end of file | ||
diff --git a/tpl/install.twig b/tpl/install.twig index 8bcede0d..afb5b0f6 100644 --- a/tpl/install.twig +++ b/tpl/install.twig | |||
@@ -7,21 +7,21 @@ | |||
7 | <p> | 7 | <p> |
8 | {% trans "poche is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://inthepoche.com/?pages/Documentation'>read the documentation on poche website</a>." %} | 8 | {% trans "poche is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://inthepoche.com/?pages/Documentation'>read the documentation on poche website</a>." %} |
9 | </p> | 9 | </p> |
10 | <div class="row"> | 10 | <p class="row"> |
11 | <label class="col w150p" for="login">{% trans "Login" %}</label> | 11 | <label class="col w150p" for="login">{% trans "Login" %}</label> |
12 | <input class="col" type="text" id="login" name="login" placeholder="Login" tabindex="1" autofocus /> | 12 | <input class="col" type="text" id="login" name="login" placeholder="Login" tabindex="1" autofocus /> |
13 | </div> | 13 | </p> |
14 | <div class="row"> | 14 | <p class="row"> |
15 | <label class="col w150p" for="password">{% trans "Password" %}</label> | 15 | <label class="col w150p" for="password">{% trans "Password" %}</label> |
16 | <input class="col" type="password" id="password" name="password" placeholder="Password" tabindex="2"> | 16 | <input class="col" type="password" id="password" name="password" placeholder="Password" tabindex="2"> |
17 | </div> | 17 | </p> |
18 | <div class="row"> | 18 | <p class="row"> |
19 | <label class="col w150p" for="password_repeat">{% trans "Repeat your password" %}</label> | 19 | <label class="col w150p" for="password_repeat">{% trans "Repeat your password" %}</label> |
20 | <input class="col" type="password" id="password_repeat" name="password_repeat" placeholder="Password" tabindex="3"> | 20 | <input class="col" type="password" id="password_repeat" name="password_repeat" placeholder="Password" tabindex="3"> |
21 | </div> | 21 | </p> |
22 | <div class="row mts txtcenter"> | 22 | <p class="row mts txtcenter"> |
23 | <button class="bouton" type="submit" tabindex="4">{% trans "Install" %}</button> | 23 | <button class="bouton" type="submit" tabindex="4">{% trans "Install" %}</button> |
24 | </div> | 24 | </p> |
25 | </fieldset> | 25 | </fieldset> |
26 | <input type="hidden" name="token" value="{{ token }}"> | 26 | <input type="hidden" name="token" value="{{ token }}"> |
27 | </form> | 27 | </form> |