aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNicolas Lœuillet <nicolas.loeuillet@gmail.com>2013-08-17 11:27:13 -0700
committerNicolas Lœuillet <nicolas.loeuillet@gmail.com>2013-08-17 11:27:13 -0700
commit7ba37bd91a43321196e6d867caf9e298e82c6d6c (patch)
tree280b6c5d270c28457219859f189e3cb6c3895939
parent667009727a38890eb651815843c1bc02869a4119 (diff)
parent9067b484ce8289eec6979cf6c8e3cbfb3bd5b10c (diff)
downloadwallabag-7ba37bd91a43321196e6d867caf9e298e82c6d6c.tar.gz
wallabag-7ba37bd91a43321196e6d867caf9e298e82c6d6c.tar.zst
wallabag-7ba37bd91a43321196e6d867caf9e298e82c6d6c.zip
Merge pull request #141 from inthepoche/dev1.0-beta3
beta3
-rw-r--r--.gitignore3
-rw-r--r--CONTRIBUTING.md3
-rw-r--r--INSTALL.md77
-rw-r--r--README.md52
-rw-r--r--inc/poche/Poche.class.php121
-rw-r--r--inc/poche/Tools.class.php26
-rw-r--r--inc/poche/Url.class.php2
-rwxr-xr-x[-rw-r--r--]inc/poche/config.inc.php57
-rw-r--r--inc/poche/define.inc.php30
-rw-r--r--index.php3
-rw-r--r--install/update.php79
-rw-r--r--locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mobin0 -> 2871 bytes
-rw-r--r--locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po114
-rw-r--r--locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mobin0 -> 5728 bytes
-rw-r--r--locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po382
-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)bin5699 -> 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.txt2
-rw-r--r--tpl/_head.twig2
-rw-r--r--tpl/error.twig7
-rw-r--r--tpl/install.twig16
21 files changed, 827 insertions, 149 deletions
diff --git a/.gitignore b/.gitignore
index 5e992c2e..17af57cf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,5 @@ vendor
2composer.phar 2composer.phar
3db/poche.sqlite 3db/poche.sqlite
4output 4output
5phpdoc* \ No newline at end of file 5phpdoc*
6inc/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
3When 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
diff --git a/INSTALL.md b/INSTALL.md
index f32b9bc3..63000f26 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,53 +1,64 @@
1# Installing poche 1# Installing poche
2 2
3Get 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
5your datas can be stored on sqlite, postgres or mysql databases. 5it's highly recommended to have php cURL and tidy_parse_string to fetch articles content.
6 6
7Edit /inc/poche/config.inc.php : 7## you don't want to install twig (the template engine) by yourself
8 8
9```php 9Download this file http://static.inthepoche.com/files/poche-1.0-latest-with-twig.zip
10define ('STORAGE','sqlite'); # postgres, mysql, sqlite 10
11define ('STORAGE_SERVER', 'localhost'); # leave blank for sqlite 11Extract this file on your server.
12define ('STORAGE_DB', 'poche'); # only for postgres & mysql
13define ('STORAGE_SQLITE', './db/poche.sqlite');
14define ('STORAGE_USER', 'user'); # leave blank for sqlite
15define ('STORAGE_PASSWORD', 'pass'); # leave blank for sqlite
16```
17 12
18poche 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. 15Download the latest version here : http://www.inthepoche.com/?pages/T%C3%A9l%C3%A9charger-poche
21 16
22## twig 17Extract this file on your server.
23poche now uses twig for templating. You have to install twig.
24 18
25Install composer in your project : 19```php
26```bash
27curl -s http://getcomposer.org/installer | php 20curl -s http://getcomposer.org/installer | php
28```
29Install via composer :
30```bash
31php composer.phar install 21php composer.phar install
32``` 22```
33 23
34If 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
26Copy / paste install/poche.sqlite in db folder.
27
28### using mysql or postgresql
29
30Execute the sql file in /install (mysql.sql or postgres.sql)
31
32Then, go to step 3.
33
34# Upgrading poche
35
36Replace 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
40You have to execute http://yourpoche/install/update_sqlite_from_0_to_1.php
41
42Then, go to step 3.
43
44## Upgrading from poche >= 1.0 beta1
45
46Nothing to do here.
47
48Then, go to step 3.
49
50# Here is the step 3
35 51
36## storage in sqlite 52You must have write access on assets, cache and db directories. These directories may not exist, you'll have to create them.
37You have to install [sqlite for php](http://www.php.net/manual/en/book.sqlite.php) on your server.
38 53
39Copy /install/poche.sqlite in /db 54You can use poche ! Enjoy.
40 55
41## storage in mysql 56# Some problems you may encounter
42Execute /install/mysql.sql file in your database.
43 57
44## storage in postgres 58## Blank page
45Execute /install/postgres.sql file in your database.
46 59
47## upgrading from poche <= 0.3 60Be sure to have write access on assets, cache and db directories.
48With poche <= 0.3, all your datas were stored in a sqlite file. The structure of this file changed.
49 61
50You 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 64If 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
53you can go on your poche http://yourpoche. You have to fill the fields and that's all ! \ No newline at end of file
diff --git a/README.md b/README.md
index 689ad63b..27f549d9 100644
--- a/README.md
+++ b/README.md
@@ -1,42 +1,26 @@
1# poche 1# what is poche ?
2Abandon Pocket, Instapaper and other Readability service : adopt poche. It is the same, but it is open source. Moreover, you can migrate from Pocket & Readability. 2Abandon 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
6The 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
8To test poche, a demo website is online : [demo.inthepoche.com](http://demo.inthepoche.com) (login poche, password poche). 19To test poche, a demo website is online : [demo.inthepoche.com](http://demo.inthepoche.com) (login poche, password poche).
9 20
10To 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
16Read the INSTALL.md file. 23Read the [INSTALL.md file](https://github.com/inthepoche/poche/blob/master/INSTALL.md).
17
18## Security
19You **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
27Nginx version:
28```nginx
29location ~ /(db) {
30 deny all;
31 return 404;
32}
33```
34
35## Usage
36See 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
42Copyright © 2010-2013 Nicolas Lœuillet <nicolas.loeuillet@gmail.com> 26Copyright © 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 11require_once __DIR__ . '/../../inc/poche/define.inc.php';
12define ('STORAGE','sqlite'); # postgres, mysql, sqlite
13define ('STORAGE_SERVER', 'localhost'); # leave blank for sqlite
14define ('STORAGE_DB', 'poche'); # only for postgres & mysql
15define ('STORAGE_SQLITE', './db/poche.sqlite');
16define ('STORAGE_USER', 'postgres'); # leave blank for sqlite
17define ('STORAGE_PASSWORD', 'postgres'); # leave blank for sqlite
18
19define ('POCHE_VERSION', '1.0-beta1');
20define ('MODE_DEMO', FALSE);
21define ('DEBUG_POCHE', FALSE);
22define ('CONVERT_LINKS_FOOTNOTES', FALSE);
23define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE);
24define ('DOWNLOAD_PICTURES', FALSE);
25define ('SHARE_TWITTER', TRUE);
26define ('SHARE_MAIL', TRUE);
27define ('SALT', '464v54gLLw928uz4zUBqkRJeiPY68zCX');
28define ('ABS_PATH', 'assets/');
29define ('TPL', './tpl');
30define ('LOCALE', './locale');
31define ('CACHE', './cache');
32define ('LANG', 'en_EN.UTF8');
33define ('PAGINATION', '10');
34define ('THEME', 'light');
35 12
36# /!\ Be careful if you change the lines below /!\ 13# /!\ Be careful if you change the lines below /!\
37require_once './inc/poche/User.class.php'; 14if (!file_exists(__DIR__ . '/../../vendor/autoload.php')) {
38require_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>');
39require_once './inc/poche/Url.class.php'; 16}
40require_once './inc/3rdparty/class.messages.php'; 17
41require_once './inc/poche/Poche.class.php'; 18if (file_exists(__DIR__ . '/../../inc/poche/myconfig.inc.php')) {
42require_once './inc/3rdparty/Readability.php'; 19 require_once __DIR__ . '/../../inc/poche/myconfig.inc.php';
43require_once './inc/3rdparty/Encoding.php'; 20}
44require_once './inc/poche/Database.class.php'; 21require_once __DIR__ . '/../../inc/poche/User.class.php';
45require_once './vendor/autoload.php'; 22require_once __DIR__ . '/../../inc/poche/Url.class.php';
46require_once './inc/3rdparty/simple_html_dom.php'; 23require_once __DIR__ . '/../../inc/3rdparty/class.messages.php';
47require_once './inc/3rdparty/paginator.php'; 24require_once __DIR__ . '/../../inc/poche/Poche.class.php';
48require_once './inc/3rdparty/Session.class.php'; 25require_once __DIR__ . '/../../inc/3rdparty/Readability.php';
26require_once __DIR__ . '/../../inc/3rdparty/Encoding.php';
27require_once __DIR__ . '/../../inc/poche/Database.class.php';
28require_once __DIR__ . '/../../vendor/autoload.php';
29require_once __DIR__ . '/../../inc/3rdparty/simple_html_dom.php';
30require_once __DIR__ . '/../../inc/3rdparty/paginator.php';
31require_once __DIR__ . '/../../inc/3rdparty/Session.class.php';
49 32
50if (DOWNLOAD_PICTURES) { 33if (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
11define ('STORAGE','sqlite'); # postgres, mysql, sqlite
12define ('STORAGE_SERVER', 'localhost'); # leave blank for sqlite
13define ('STORAGE_DB', 'poche'); # only for postgres & mysql
14define ('STORAGE_SQLITE', __DIR__ . '/../../db/poche.sqlite');
15define ('STORAGE_USER', 'postgres'); # leave blank for sqlite
16define ('STORAGE_PASSWORD', 'postgres'); # leave blank for sqlite
17
18define ('MODE_DEMO', FALSE);
19define ('DEBUG_POCHE', FALSE);
20define ('CONVERT_LINKS_FOOTNOTES', FALSE);
21define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE);
22define ('DOWNLOAD_PICTURES', FALSE);
23define ('SHARE_TWITTER', TRUE);
24define ('SHARE_MAIL', TRUE);
25define ('ABS_PATH', 'assets/');
26define ('TPL', __DIR__ . '/../../tpl');
27define ('LOCALE', __DIR__ . '/../../locale');
28define ('CACHE', __DIR__ . '/../../cache');
29define ('PAGINATION', '10');
30define ('THEME', 'light'); \ No newline at end of file
diff --git a/index.php b/index.php
index a60e4e94..51a33d71 100644
--- a/index.php
+++ b/index.php
@@ -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
11require_once './inc/poche/Tools.class.php';
12Tools::createMyConfig();
13
11include dirname(__FILE__).'/inc/poche/config.inc.php'; 14include 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
2require_once dirname(__FILE__).'/../inc/poche/Tools.class.php';
3include dirname(__FILE__).'/../inc/poche/define.inc.php';
4require_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
47if (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
4msgid ""
5msgstr ""
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
24msgid "Please execute the import script locally, it can take a very long time."
25msgstr ""
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
30msgid "Please choose between Pocket & Readabilty :"
31msgstr "Wir danken Ihnen, zwischen Pocket und Readability zu wählen:"
32
33#: /var/www/poche-i18n/import.php:17
34msgid "Bye bye Pocket, let's go !"
35msgstr "Auf wiedersehen Pocket, auf geht's!"
36
37#: /var/www/poche-i18n/import.php:17
38msgid "Bye bye Readability, let's go !"
39msgstr "Auf wiedersehen Readability, auf geht's!"
40
41#: /var/www/poche-i18n/import.php:48
42msgid "Import from Pocket completed."
43msgstr "Der Import aus Poche ist abgeschlossen."
44
45#: /var/www/poche-i18n/import.php:48 /var/www/poche-i18n/import.php:66
46msgid "Welcome to poche !"
47msgstr "Willkommen in Poche!"
48
49#: /var/www/poche-i18n/import.php:66
50msgid "Import from Readability completed."
51msgstr "Der Import aus Readability ist abgeschlossen."
52
53#: /var/www/poche-i18n/import.php:70
54msgid "Error with the import."
55msgstr "Fehler beim Import."
56
57#: /var/www/poche-i18n/import.php:70
58msgid "Back to poche"
59msgstr "Rückkehr zu Poche"
60
61#: /var/www/poche-i18n/index.php:18
62msgid "Wrong token."
63msgstr "Ungültiges Token."
64
65#: /var/www/poche-i18n/index.php:43
66msgid "Login failed !"
67msgstr "Fehler bei der Anmeldung."
68
69#: /var/www/poche-i18n/index.php:59
70msgid "your password has been updated"
71msgstr "Ihr Passwort wurde aktualisiert."
72
73#: /var/www/poche-i18n/index.php:62
74msgid "in demo mode, you can't update password"
75msgstr "Im Demo-Modus kann das Passwort nicht geändert werden."
76
77#: /var/www/poche-i18n/index.php:66
78msgid ""
79"your password can't be empty and you have to repeat it in the second field"
80msgstr ""
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
85msgid "poche, a read it later open source system"
86msgstr "Poche, eine Opensourceanwendung, um später zu lesen"
87
88#: /var/www/poche-i18n/inc/MyTool.class.php:18
89msgid "Oops, it seems you don't have PHP 5."
90msgstr "Hoppla, scheint es, dass PHP 5 nicht installiert ist."
91
92#: /var/www/poche-i18n/inc/functions.php:352
93msgid "the link has been added successfully"
94msgstr "der Link wurde erfolgreich hinzugefügt"
95
96#: /var/www/poche-i18n/inc/functions.php:355
97msgid "error during insertion : the link wasn't added"
98msgstr "Fehler beim Einfügen: der Link wurde nicht hinzugefügt"
99
100#: /var/www/poche-i18n/inc/functions.php:359
101msgid "error during url preparation : the link wasn't added"
102msgstr "Fehler beim Einfügen: der Link wurde nicht hinzugefügt"
103
104#: /var/www/poche-i18n/inc/functions.php:364
105msgid "error during url preparation : the link is not valid"
106msgstr "Fehler bei der Herstellung der URL: der Link ist nicht gültig"
107
108#: /var/www/poche-i18n/inc/functions.php:373
109msgid "the link has been deleted successfully"
110msgstr "der Link wurde erfolgreich hinzugefügt"
111
112#: /var/www/poche-i18n/inc/functions.php:377
113msgid "the link wasn't deleted"
114msgstr "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
4msgid ""
5msgstr ""
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
24msgid "poche, a read it later open source system"
25msgstr "poche, a read it later open source system"
26
27#: /var/www/poche-i18n/inc/poche/Poche.class.php:101
28msgid "the link has been added successfully"
29msgstr "el enlace a sido agregado con éxito"
30
31#: /var/www/poche-i18n/inc/poche/Poche.class.php:104
32msgid "error during insertion : the link wasn't added"
33msgstr "error en la inserción : el enlace no ha sido agregado"
34
35#: /var/www/poche-i18n/inc/poche/Poche.class.php:109
36msgid "error during fetching content : the link wasn't added"
37msgstr ""
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
41msgid "the link has been deleted successfully"
42msgstr "el enlace a sido suprimido con éxito"
43
44#: /var/www/poche-i18n/inc/poche/Poche.class.php:123
45msgid "the link wasn't deleted"
46msgstr "el enlace no ha sido suprimido"
47
48#: /var/www/poche-i18n/inc/poche/Tools.class.php:18
49msgid "Oops, it seems you don't have PHP 5."
50msgstr "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
55msgid "config"
56msgstr "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
62msgid "home"
63msgstr "inicio"
64
65#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:54
66#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:34
67msgid "favorites"
68msgstr "favoritos"
69
70#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:62
71#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:42
72msgid "archive"
73msgstr "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
79msgid "logout"
80msgstr "desconexión "
81
82#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:87
83msgid "Bookmarklet"
84msgstr "Bookmarklet"
85
86#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:91
87msgid ""
88"Thanks to the bookmarklet, you will be able to easily add a link to your "
89"poche."
90msgstr ""
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
94msgid "Have a look to this documentation:"
95msgstr "échale un ojo a la documentación :"
96
97#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:97
98msgid "Drag & drop this link to your bookmarks bar and have fun with poche."
99msgstr ""
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
104msgid "poche it!"
105msgstr "pochéalo!"
106
107#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:108
108msgid "Updating poche"
109msgstr "Actualizar"
110
111#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:113
112msgid "your version"
113msgstr "su versión"
114
115#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:119
116msgid "latest stable version"
117msgstr "ultima versión estable"
118
119#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:125
120msgid "a more recent stable version is available."
121msgstr "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
125msgid "you are up to date."
126msgstr "estás al día"
127
128#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:133
129msgid "latest dev version"
130msgstr "ultima versión de desarollo"
131
132#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:139
133msgid "a more recent development version is available."
134msgstr "una versión de desarollo más reciente está disponible"
135
136#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:150
137msgid "Change your password"
138msgstr "Modificar tu contraseña"
139
140#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:157
141msgid "New password:"
142msgstr "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
148msgid "Password"
149msgstr "Contraseña"
150
151#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:167
152msgid "Repeat your new password:"
153msgstr "Repetir la nueva contraseña :"
154
155#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:177
156msgid "Update"
157msgstr "Poner al día"
158
159#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:193
160msgid "Import"
161msgstr "Importar"
162
163#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:197
164msgid "Please execute the import script locally, it can take a very long time."
165msgstr ""
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
169msgid "More infos in the official doc:"
170msgstr "Más información en la documentación oficial :"
171
172#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:206
173msgid "import from Pocket"
174msgstr "la importación desde Pocket está terminada"
175
176#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:210
177msgid "import from Readability"
178msgstr "la importación desde Readability está terminada"
179
180#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:214
181msgid "import from Instapaper"
182msgstr "Importar desde Instapaper"
183
184#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:220
185msgid "Export your poche datas"
186msgstr "Exportar sus datos de poche"
187
188#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:224
189msgid "Click here"
190msgstr "Haga clic aquí"
191
192#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:226
193msgid "to export your poche datas."
194msgstr "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
199msgid "back to home"
200msgstr "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
205msgid "toggle mark as read"
206msgstr "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
211msgid "toggle favorite"
212msgstr "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
217msgid "delete"
218msgstr "suprimir"
219
220#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:82
221#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:179
222msgid "tweet"
223msgstr "tweetear"
224
225#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:93
226#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:190
227msgid "email"
228msgstr "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
233msgid "original"
234msgstr "original"
235
236#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:143
237msgid "back to top"
238msgstr "volver arriba"
239
240#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:198
241msgid "this article appears wrong?"
242msgstr "este articulo no se ve bien ?"
243
244#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:200
245msgid "create an issue"
246msgstr "crear un ticket"
247
248#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:202
249msgid "or"
250msgstr "o"
251
252#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:206
253msgid "contact us by mail"
254msgstr "contactarnos por mail"
255
256#: /var/www/poche-i18n/cache/88/8a/ee3b7080c13204391c14947a0c2c.php:22
257msgid "powered by"
258msgstr "propulsado por"
259
260#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:31
261msgid "installation"
262msgstr "instalacion"
263
264#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:42
265msgid "install your poche"
266msgstr "instala tu poche"
267
268#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:47
269msgid ""
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>."
273msgstr ""
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
280msgid "Login"
281msgstr "Nombre de usuario"
282
283#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:67
284msgid "Repeat your password"
285msgstr "repita su contraseña"
286
287#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:74
288msgid "Install"
289msgstr "Instalar"
290
291#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:31
292#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:42
293msgid "login to your poche"
294msgstr "conectarse a tu poche"
295
296#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:48
297msgid "you are in demo mode, some features may be disabled."
298msgstr ""
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
303msgid "Stay signed in"
304msgstr "seguir conectado"
305
306#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:86
307msgid "(Do not check on public computers)"
308msgstr "(no marcar en un ordenador publico)"
309
310#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:93
311msgid "Sign in"
312msgstr "conectarse"
313
314#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:55
315#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:57
316msgid "by date asc"
317msgstr "por fecha ascendiente"
318
319#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:59
320msgid "by date"
321msgstr "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
325msgid "by date desc"
326msgstr "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
330msgid "by title asc"
331msgstr "por titulo ascendiente"
332
333#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:79
334msgid "by title"
335msgstr "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
339msgid "by title desc"
340msgstr "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 @@
1User-agent: *
2Disallow: / \ 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>