diff --git a/.gitignore b/.gitignore index 5e992c2..17af57c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ vendor composer.phar db/poche.sqlite output -phpdoc* \ No newline at end of file +phpdoc* +inc/config/myconfig.inc.php \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..9818ae0 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,3 @@ +# How contributing + +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 diff --git a/INSTALL.md b/INSTALL.md index f32b9bc..63000f2 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,53 +1,64 @@ # Installing poche -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. +## requirements -your datas can be stored on sqlite, postgres or mysql databases. +it's highly recommended to have php cURL and tidy_parse_string to fetch articles content. -Edit /inc/poche/config.inc.php : +## you don't want to install twig (the template engine) by yourself + +Download this file http://static.inthepoche.com/files/poche-1.0-latest-with-twig.zip + +Extract this file on your server. + +## you want to install twig by yourself + +Download the latest version here : http://www.inthepoche.com/?pages/T%C3%A9l%C3%A9charger-poche + +Extract this file on your server. ```php -define ('STORAGE','sqlite'); # postgres, mysql, sqlite -define ('STORAGE_SERVER', 'localhost'); # leave blank for sqlite -define ('STORAGE_DB', 'poche'); # only for postgres & mysql -define ('STORAGE_SQLITE', './db/poche.sqlite'); -define ('STORAGE_USER', 'user'); # leave blank for sqlite -define ('STORAGE_PASSWORD', 'pass'); # leave blank for sqlite -``` - -poche must have write access on assets, cache and db directories. - -[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. - -## twig -poche now uses twig for templating. You have to install twig. - -Install composer in your project : -```bash curl -s http://getcomposer.org/installer | php -``` -Install via composer : -```bash php composer.phar install ``` -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). +### using sqlite -## storage in sqlite -You have to install [sqlite for php](http://www.php.net/manual/en/book.sqlite.php) on your server. +Copy / paste install/poche.sqlite in db folder. -Copy /install/poche.sqlite in /db +### using mysql or postgresql -## storage in mysql -Execute /install/mysql.sql file in your database. +Execute the sql file in /install (mysql.sql or postgres.sql) -## storage in postgres -Execute /install/postgres.sql file in your database. +Then, go to step 3. -## upgrading from poche <= 0.3 -With poche <= 0.3, all your datas were stored in a sqlite file. The structure of this file changed. +# Upgrading poche -You have to execute http://yourpoche/install/update_sqlite_from_0_to_1.php before using this new version. +Replace all the files except **db/poche.sqlite**. Also remember to edit the file /inc/poche/config.inc.php. -## installing poche -you can go on your poche http://yourpoche. You have to fill the fields and that's all ! \ No newline at end of file +## Upgrading from poche <= 0.3 + +You have to execute http://yourpoche/install/update_sqlite_from_0_to_1.php + +Then, go to step 3. + +## Upgrading from poche >= 1.0 beta1 + +Nothing to do here. + +Then, go to step 3. + +# Here is the step 3 + +You must have write access on assets, cache and db directories. These directories may not exist, you'll have to create them. + +You can use poche ! Enjoy. + +# Some problems you may encounter + +## Blank page + +Be sure to have write access on assets, cache and db directories. + +## 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 + +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 diff --git a/README.md b/README.md index 689ad63..27f549d 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,26 @@ -# poche -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. +# what is poche ? +Abandon Pocket, Instapaper and other Readability service : adopt poche. It is the same, but it is free (like in freedom) and open source. -![poche](http://inthepoche.com/img/logo.png) +## Some features -The website of poche is [inthepoche.com](http://inthepoche.com). +* adding, deleting, archiving and setting as favorite a link +* import from pocket / readability / instapaper +* share links by email and on twitter +* a design adapted to tablets and smartphones +* extensions for Chrome and Firefox +* Android application +* multi languages (very soon!) +* multi users (very soon!) +* update notification in configuration screen +* many storage modes (sqlite, mysql, postgresql) +* many templates +* ... To test poche, a demo website is online : [demo.inthepoche.com](http://demo.inthepoche.com) (login poche, password poche). -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). - -[![flattr](http://api.flattr.com/button/flattr-badge-large.png)](http://flattr.com/thing/1265480/poche-a-read-it-later-open-source-system) - ## Installation -Read the INSTALL.md file. - -## Security -You **have** to protect your db/poche.sqlite file. Modify the virtual host of your website to add this condition : -```apache - - Order allow,deny - Deny from all - -``` - -Nginx version: -```nginx -location ~ /(db) { - deny all; - return 404; -} -``` - -## Usage -See the documentation on our website : [inthepoche.com](http://inthepoche.com). - -## Travis -[![Build Status](https://api.travis-ci.org/inthepoche/poche.png?branch=dev)](http://travis-ci.org/#!/inthepoche/poche) +Read the [INSTALL.md file](https://github.com/inthepoche/poche/blob/master/INSTALL.md). ## License Copyright © 2010-2013 Nicolas Lœuillet diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 2af49ac..e0dc0d2 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -18,11 +18,10 @@ class Poche function __construct() { - if (file_exists('./install') && !DEBUG_POCHE) { - Tools::logm('folder /install exists'); - 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.'); + $this->initTpl(); + if (!$this->checkBeforeInstall()) { + exit; } - $this->store = new Database(); $this->init(); $this->messages = new Messages(); @@ -34,6 +33,63 @@ class Poche } } + /** + * all checks before installation. + * @return boolean + */ + private function checkBeforeInstall() + { + $msg = ''; + $allIsGood = TRUE; + + if (!is_writable(CACHE)) { + Tools::logm('you don\'t have write access on cache directory'); + die('You don\'t have write access on cache directory.'); + } + else if (file_exists('./install/update.php') && !DEBUG_POCHE) { + $msg = 'A poche update is needed. Please execute this update by clicking here. If you have already do the update, please delete /install folder.'; + $allIsGood = FALSE; + } + else if (file_exists('./install') && !DEBUG_POCHE) { + $msg = 'If you want to update your poche, you just have to delete /install folder.
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.'; + $allIsGood = FALSE; + } + else if (STORAGE == 'sqlite' && !is_writable(STORAGE_SQLITE)) { + Tools::logm('you don\'t have write access on sqlite file'); + $msg = 'You don\'t have write access on sqlite file.'; + $allIsGood = FALSE; + } + + if (!$allIsGood) { + echo $this->tpl->render('error.twig', array( + 'msg' => $msg + )); + } + + return $allIsGood; + } + + private function initTpl() + { + # template engine + $loader = new Twig_Loader_Filesystem(TPL); + if (DEBUG_POCHE) { + $twig_params = array(); + } + else { + $twig_params = array('cache' => CACHE); + } + $this->tpl = new Twig_Environment($loader, $twig_params); + $this->tpl->addExtension(new Twig_Extensions_Extension_I18n()); + # filter to display domain name of an url + $filter = new Twig_SimpleFilter('getDomain', 'Tools::getDomain'); + $this->tpl->addFilter($filter); + + # filter for reading time + $filter = new Twig_SimpleFilter('getReadingTime', 'Tools::getReadingTime'); + $this->tpl->addFilter($filter); + } + private function init() { Tools::initPhp(); @@ -55,24 +111,6 @@ class Poche bindtextdomain($language, LOCALE); textdomain($language); - # template engine - $loader = new Twig_Loader_Filesystem(TPL); - if (DEBUG_POCHE) { - $twig_params = array(); - } - else { - $twig_params = array('cache' => CACHE); - } - $this->tpl = new Twig_Environment($loader, $twig_params); - $this->tpl->addExtension(new Twig_Extensions_Extension_I18n()); - # filter to display domain name of an url - $filter = new Twig_SimpleFilter('getDomain', 'Tools::getDomain'); - $this->tpl->addFilter($filter); - - # filter for reading time - $filter = new Twig_SimpleFilter('getReadingTime', 'Tools::getReadingTime'); - $this->tpl->addFilter($filter); - # Pagination $this->pagination = new Paginator($this->user->getConfigValue('pager'), 'p'); } @@ -87,10 +125,12 @@ class Poche if (($_POST['password'] == $_POST['password_repeat']) && $_POST['password'] != "" && $_POST['login'] != "") { # let's rock, install poche baby ! - $this->store->install($_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login'])); - Session::logout(); - Tools::logm('poche is now installed'); - Tools::redirect(); + if ($this->store->install($_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login']))) + { + Session::logout(); + Tools::logm('poche is now installed'); + Tools::redirect(); + } } else { Tools::logm('error during installation'); @@ -180,6 +220,7 @@ class Poche } break; default: + Tools::logm('action ' . $action . 'doesn\'t exist'); break; } } @@ -409,9 +450,11 @@ class Poche $str_data = file_get_contents("./readability"); $data = json_decode($str_data,true); Tools::logm('starting import from Readability'); - + $count = 0; foreach ($data as $key => $value) { - $url = ''; + $url = NULL; + $favorite = FALSE; + $archive = FALSE; foreach ($value as $attr => $attr_value) { if ($attr == 'article__url') { $url = new Url(base64_encode($attr_value)); @@ -420,20 +463,30 @@ class Poche if (STORAGE == 'postgres') { $sequence = 'entries_id_seq'; } - // if ($attr_value == 'favorite' && $attr_value == 'true') { - // $last_id = $this->store->getLastId($sequence); - // $this->store->favoriteById($last_id); - // $this->action('toogle_fav', $url, $last_id, TRUE); - // } - if ($attr_value == 'archive' && $attr_value == 'true') { + if ($attr_value == 'true') { + if ($attr == 'favorite') { + $favorite = TRUE; + } + if ($attr == 'archive') { + $archive = TRUE; + } + } + } + # we can add the url + if (!is_null($url) && $url->isCorrect()) { + $this->action('add', $url, 0, TRUE); + $count++; + if ($favorite) { + $last_id = $this->store->getLastId($sequence); + $this->action('toggle_fav', $url, $last_id, TRUE); + } + if ($archive) { $last_id = $this->store->getLastId($sequence); $this->action('toggle_archive', $url, $last_id, TRUE); } } - if ($url->isCorrect()) - $this->action('add', $url, 0, TRUE); } - $this->messages->add('s', _('import from Readability completed')); + $this->messages->add('s', _('import from Readability completed. ' . $count . ' new links.')); Tools::logm('import from Readability completed'); Tools::redirect(); } diff --git a/inc/poche/Tools.class.php b/inc/poche/Tools.class.php index 0eb0d9e..1baf745 100644 --- a/inc/poche/Tools.class.php +++ b/inc/poche/Tools.class.php @@ -233,4 +233,30 @@ class Tools return $minutes; } + + + public static function createMyConfig() + { + $myconfig_file = './inc/poche/myconfig.inc.php'; + + if (version_compare(POCHE_VERSION, '1.0-beta3') == 1) { + # $myconfig_file is only created with poche > 1.0-beta3 + # in 1.0-beta3, the update script creates $myconfig_file + + if (!is_writable('./inc/poche/')) { + self::logm('you don\'t have write access to create ./inc/poche/myconfig.inc.php'); + die('You don\'t have write access to create ./inc/poche/myconfig.inc.php.'); + } + + if (!file_exists($myconfig_file)) + { + $fp = fopen($myconfig_file, 'w'); + fwrite($fp, 'url); } diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php old mode 100644 new mode 100755 index 321784d..4122ff1 --- a/inc/poche/config.inc.php +++ b/inc/poche/config.inc.php @@ -8,47 +8,30 @@ * @license http://www.wtfpl.net/ see COPYING file */ -# storage -define ('STORAGE','sqlite'); # postgres, mysql, sqlite -define ('STORAGE_SERVER', 'localhost'); # leave blank for sqlite -define ('STORAGE_DB', 'poche'); # only for postgres & mysql -define ('STORAGE_SQLITE', './db/poche.sqlite'); -define ('STORAGE_USER', 'postgres'); # leave blank for sqlite -define ('STORAGE_PASSWORD', 'postgres'); # leave blank for sqlite - -define ('POCHE_VERSION', '1.0-beta1'); -define ('MODE_DEMO', FALSE); -define ('DEBUG_POCHE', FALSE); -define ('CONVERT_LINKS_FOOTNOTES', FALSE); -define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE); -define ('DOWNLOAD_PICTURES', FALSE); -define ('SHARE_TWITTER', TRUE); -define ('SHARE_MAIL', TRUE); -define ('SALT', '464v54gLLw928uz4zUBqkRJeiPY68zCX'); -define ('ABS_PATH', 'assets/'); -define ('TPL', './tpl'); -define ('LOCALE', './locale'); -define ('CACHE', './cache'); -define ('LANG', 'en_EN.UTF8'); -define ('PAGINATION', '10'); -define ('THEME', 'light'); +require_once __DIR__ . '/../../inc/poche/define.inc.php'; # /!\ Be careful if you change the lines below /!\ -require_once './inc/poche/User.class.php'; -require_once './inc/poche/Tools.class.php'; -require_once './inc/poche/Url.class.php'; -require_once './inc/3rdparty/class.messages.php'; -require_once './inc/poche/Poche.class.php'; -require_once './inc/3rdparty/Readability.php'; -require_once './inc/3rdparty/Encoding.php'; -require_once './inc/poche/Database.class.php'; -require_once './vendor/autoload.php'; -require_once './inc/3rdparty/simple_html_dom.php'; -require_once './inc/3rdparty/paginator.php'; -require_once './inc/3rdparty/Session.class.php'; +if (!file_exists(__DIR__ . '/../../vendor/autoload.php')) { + die('Twig does not seem installed. Have a look at the documentation.'); +} + +if (file_exists(__DIR__ . '/../../inc/poche/myconfig.inc.php')) { + require_once __DIR__ . '/../../inc/poche/myconfig.inc.php'; +} +require_once __DIR__ . '/../../inc/poche/User.class.php'; +require_once __DIR__ . '/../../inc/poche/Url.class.php'; +require_once __DIR__ . '/../../inc/3rdparty/class.messages.php'; +require_once __DIR__ . '/../../inc/poche/Poche.class.php'; +require_once __DIR__ . '/../../inc/3rdparty/Readability.php'; +require_once __DIR__ . '/../../inc/3rdparty/Encoding.php'; +require_once __DIR__ . '/../../inc/poche/Database.class.php'; +require_once __DIR__ . '/../../vendor/autoload.php'; +require_once __DIR__ . '/../../inc/3rdparty/simple_html_dom.php'; +require_once __DIR__ . '/../../inc/3rdparty/paginator.php'; +require_once __DIR__ . '/../../inc/3rdparty/Session.class.php'; if (DOWNLOAD_PICTURES) { - require_once './inc/poche/pochePictures.php'; + require_once __DIR__ . '/../../inc/poche/pochePictures.php'; } $poche = new Poche(); diff --git a/inc/poche/define.inc.php b/inc/poche/define.inc.php new file mode 100644 index 0000000..c32ca09 --- /dev/null +++ b/inc/poche/define.inc.php @@ -0,0 +1,30 @@ + + * @copyright 2013 + * @license http://www.wtfpl.net/ see COPYING file + */ + +define ('STORAGE','sqlite'); # postgres, mysql, sqlite +define ('STORAGE_SERVER', 'localhost'); # leave blank for sqlite +define ('STORAGE_DB', 'poche'); # only for postgres & mysql +define ('STORAGE_SQLITE', __DIR__ . '/../../db/poche.sqlite'); +define ('STORAGE_USER', 'postgres'); # leave blank for sqlite +define ('STORAGE_PASSWORD', 'postgres'); # leave blank for sqlite + +define ('MODE_DEMO', FALSE); +define ('DEBUG_POCHE', FALSE); +define ('CONVERT_LINKS_FOOTNOTES', FALSE); +define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE); +define ('DOWNLOAD_PICTURES', FALSE); +define ('SHARE_TWITTER', TRUE); +define ('SHARE_MAIL', TRUE); +define ('ABS_PATH', 'assets/'); +define ('TPL', __DIR__ . '/../../tpl'); +define ('LOCALE', __DIR__ . '/../../locale'); +define ('CACHE', __DIR__ . '/../../cache'); +define ('PAGINATION', '10'); +define ('THEME', 'light'); \ No newline at end of file diff --git a/index.php b/index.php index a60e4e9..51a33d7 100644 --- a/index.php +++ b/index.php @@ -8,6 +8,9 @@ * @license http://www.wtfpl.net/ see COPYING file */ +require_once './inc/poche/Tools.class.php'; +Tools::createMyConfig(); + include dirname(__FILE__).'/inc/poche/config.inc.php'; # Parse GET & REFERER vars diff --git a/install/update.php b/install/update.php new file mode 100644 index 0000000..8c93af6 --- /dev/null +++ b/install/update.php @@ -0,0 +1,79 @@ + + + + + + + + + + updating poche + + +

update poche to 1.0-beta3

+ +

Changelog

+

+

+

+

To update your poche, please fill the following fields.

+

+

+
+
+
+
+

+login($_POST['login'], sha1($_POST['password'] . $_POST['login'] . $old_salt)); + if ($user != array()) { + $new_salt = md5(time() . $_SERVER['SCRIPT_FILENAME'] . rand()); + $myconfig_file = '../inc/poche/myconfig.inc.php'; + if (!is_writable('../inc/poche/')) { + die('You don\'t have write access to create ./inc/poche/myconfig.inc.php.'); + } + + if (!file_exists($myconfig_file)) + { + $fp = fopen($myconfig_file, 'w'); + + fwrite($fp, 'updatePassword($user['id'], sha1($_POST['password'] . $_POST['login'] . $new_salt)); +?> +

your poche is up to date!

+

don't forget to delete ./install/ folder after the update.

+

go back to your poche

+ + + \ 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 0000000..b900f14 Binary files /dev/null and b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo 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 0000000..4448bad --- /dev/null +++ b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po @@ -0,0 +1,114 @@ +# +# Translators: +# HLFH , 2013 +msgid "" +msgstr "" +"Project-Id-Version: poche\n" +"POT-Creation-Date: 2013-08-02 10:26+0100\n" +"PO-Revision-Date: 2013-08-06 11:48+0100\n" +"Last-Translator: Nicolas Lœuillet \n" +"Language-Team: German (http://www.transifex.com/projects/p/poche/language/" +"de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-Basepath: /\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-SearchPath-0: /var/www/poche-i18n\n" + +#: /var/www/poche-i18n/import.php:17 +msgid "Please execute the import script locally, it can take a very long time." +msgstr "" +"Wir danken Ihnen, den Import in lokal zu ausführen, kann es einige Zeit " +"dauern." + +#: /var/www/poche-i18n/import.php:17 +msgid "Please choose between Pocket & Readabilty :" +msgstr "Wir danken Ihnen, zwischen Pocket und Readability zu wählen:" + +#: /var/www/poche-i18n/import.php:17 +msgid "Bye bye Pocket, let's go !" +msgstr "Auf wiedersehen Pocket, auf geht's!" + +#: /var/www/poche-i18n/import.php:17 +msgid "Bye bye Readability, let's go !" +msgstr "Auf wiedersehen Readability, auf geht's!" + +#: /var/www/poche-i18n/import.php:48 +msgid "Import from Pocket completed." +msgstr "Der Import aus Poche ist abgeschlossen." + +#: /var/www/poche-i18n/import.php:48 /var/www/poche-i18n/import.php:66 +msgid "Welcome to poche !" +msgstr "Willkommen in Poche!" + +#: /var/www/poche-i18n/import.php:66 +msgid "Import from Readability completed." +msgstr "Der Import aus Readability ist abgeschlossen." + +#: /var/www/poche-i18n/import.php:70 +msgid "Error with the import." +msgstr "Fehler beim Import." + +#: /var/www/poche-i18n/import.php:70 +msgid "Back to poche" +msgstr "Rückkehr zu Poche" + +#: /var/www/poche-i18n/index.php:18 +msgid "Wrong token." +msgstr "Ungültiges Token." + +#: /var/www/poche-i18n/index.php:43 +msgid "Login failed !" +msgstr "Fehler bei der Anmeldung." + +#: /var/www/poche-i18n/index.php:59 +msgid "your password has been updated" +msgstr "Ihr Passwort wurde aktualisiert." + +#: /var/www/poche-i18n/index.php:62 +msgid "in demo mode, you can't update password" +msgstr "Im Demo-Modus kann das Passwort nicht geändert werden." + +#: /var/www/poche-i18n/index.php:66 +msgid "" +"your password can't be empty and you have to repeat it in the second field" +msgstr "" +"Ihr Passwort darf nicht leer sein, und Sie müssen es in das zweite Feld zu " +"wiederholen." + +#: /var/www/poche-i18n/index.php:83 +msgid "poche, a read it later open source system" +msgstr "Poche, eine Opensourceanwendung, um später zu lesen" + +#: /var/www/poche-i18n/inc/MyTool.class.php:18 +msgid "Oops, it seems you don't have PHP 5." +msgstr "Hoppla, scheint es, dass PHP 5 nicht installiert ist." + +#: /var/www/poche-i18n/inc/functions.php:352 +msgid "the link has been added successfully" +msgstr "der Link wurde erfolgreich hinzugefügt" + +#: /var/www/poche-i18n/inc/functions.php:355 +msgid "error during insertion : the link wasn't added" +msgstr "Fehler beim Einfügen: der Link wurde nicht hinzugefügt" + +#: /var/www/poche-i18n/inc/functions.php:359 +msgid "error during url preparation : the link wasn't added" +msgstr "Fehler beim Einfügen: der Link wurde nicht hinzugefügt" + +#: /var/www/poche-i18n/inc/functions.php:364 +msgid "error during url preparation : the link is not valid" +msgstr "Fehler bei der Herstellung der URL: der Link ist nicht gültig" + +#: /var/www/poche-i18n/inc/functions.php:373 +msgid "the link has been deleted successfully" +msgstr "der Link wurde erfolgreich hinzugefügt" + +#: /var/www/poche-i18n/inc/functions.php:377 +msgid "the link wasn't deleted" +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 0000000..aa3d418 Binary files /dev/null and b/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo 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 0000000..236297d --- /dev/null +++ b/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po @@ -0,0 +1,382 @@ +# +# Translators: +# Nitche , 2013 +msgid "" +msgstr "" +"Project-Id-Version: poche\n" +"POT-Creation-Date: 2013-08-06 08:35+0100\n" +"PO-Revision-Date: 2013-08-16 19:09+0100\n" +"Last-Translator: Nicolas Lœuillet \n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/poche/language/" +"es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-Basepath: /\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-SearchPath-0: /var/www/poche-i18n\n" + +#: /var/www/poche-i18n/index.php:43 +msgid "poche, a read it later open source system" +msgstr "poche, a read it later open source system" + +#: /var/www/poche-i18n/inc/poche/Poche.class.php:101 +msgid "the link has been added successfully" +msgstr "el enlace a sido agregado con éxito" + +#: /var/www/poche-i18n/inc/poche/Poche.class.php:104 +msgid "error during insertion : the link wasn't added" +msgstr "error en la inserción : el enlace no ha sido agregado" + +#: /var/www/poche-i18n/inc/poche/Poche.class.php:109 +msgid "error during fetching content : the link wasn't added" +msgstr "" +"error durante la recuperación del contenido : el enlace no a sido agregado" + +#: /var/www/poche-i18n/inc/poche/Poche.class.php:119 +msgid "the link has been deleted successfully" +msgstr "el enlace a sido suprimido con éxito" + +#: /var/www/poche-i18n/inc/poche/Poche.class.php:123 +msgid "the link wasn't deleted" +msgstr "el enlace no ha sido suprimido" + +#: /var/www/poche-i18n/inc/poche/Tools.class.php:18 +msgid "Oops, it seems you don't have PHP 5." +msgstr "Parece que PHP 5 no está instalado" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:32 +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:70 +#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:50 +msgid "config" +msgstr "configuración" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:46 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:31 +#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:26 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:34 +msgid "home" +msgstr "inicio" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:54 +#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:34 +msgid "favorites" +msgstr "favoritos" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:62 +#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:42 +msgid "archive" +msgstr "archivos" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:74 +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:76 +#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:54 +#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:56 +msgid "logout" +msgstr "desconexión " + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:87 +msgid "Bookmarklet" +msgstr "Bookmarklet" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:91 +msgid "" +"Thanks to the bookmarklet, you will be able to easily add a link to your " +"poche." +msgstr "" +"Gracias a tu bookmarklet, puedes agregar fácilmente un enlace en tu bolsillo" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:93 +msgid "Have a look to this documentation:" +msgstr "échale un ojo a la documentación :" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:97 +msgid "Drag & drop this link to your bookmarks bar and have fun with poche." +msgstr "" +"Arrastra y suelta ese enlace en tu barra de favoritos en tu navegador y " +"disfruta de tu poche." + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:103 +msgid "poche it!" +msgstr "pochéalo!" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:108 +msgid "Updating poche" +msgstr "Actualizar" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:113 +msgid "your version" +msgstr "su versión" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:119 +msgid "latest stable version" +msgstr "ultima versión estable" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:125 +msgid "a more recent stable version is available." +msgstr "una versión estable más reciente está disponible" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:128 +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:142 +msgid "you are up to date." +msgstr "estás al día" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:133 +msgid "latest dev version" +msgstr "ultima versión de desarollo" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:139 +msgid "a more recent development version is available." +msgstr "una versión de desarollo más reciente está disponible" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:150 +msgid "Change your password" +msgstr "Modificar tu contraseña" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:157 +msgid "New password:" +msgstr "Nueva contraseña :" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:161 +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:171 +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:60 +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:68 +msgid "Password" +msgstr "Contraseña" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:167 +msgid "Repeat your new password:" +msgstr "Repetir la nueva contraseña :" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:177 +msgid "Update" +msgstr "Poner al día" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:193 +msgid "Import" +msgstr "Importar" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:197 +msgid "Please execute the import script locally, it can take a very long time." +msgstr "" +"Gracias por ejecutar la importación en local, esto puede demorar un tiempo" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:201 +msgid "More infos in the official doc:" +msgstr "Más información en la documentación oficial :" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:206 +msgid "import from Pocket" +msgstr "la importación desde Pocket está terminada" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:210 +msgid "import from Readability" +msgstr "la importación desde Readability está terminada" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:214 +msgid "import from Instapaper" +msgstr "Importar desde Instapaper" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:220 +msgid "Export your poche datas" +msgstr "Exportar sus datos de poche" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:224 +msgid "Click here" +msgstr "Haga clic aquí" + +#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:226 +msgid "to export your poche datas." +msgstr "Para exportar sus datos de poche" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:46 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:139 +#: /var/www/poche-i18n/cache/30/97/b548692380c89d047a16cec7af79.php:22 +msgid "back to home" +msgstr "volver a la pagina de inicio" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:50 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:147 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:119 +msgid "toggle mark as read" +msgstr "marcar como leído" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:60 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:157 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:129 +msgid "toggle favorite" +msgstr "favorito" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:70 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:167 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:139 +msgid "delete" +msgstr "suprimir" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:82 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:179 +msgid "tweet" +msgstr "tweetear" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:93 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:190 +msgid "email" +msgstr "enviar por mail" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:109 +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:125 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:153 +msgid "original" +msgstr "original" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:143 +msgid "back to top" +msgstr "volver arriba" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:198 +msgid "this article appears wrong?" +msgstr "este articulo no se ve bien ?" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:200 +msgid "create an issue" +msgstr "crear un ticket" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:202 +msgid "or" +msgstr "o" + +#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:206 +msgid "contact us by mail" +msgstr "contactarnos por mail" + +#: /var/www/poche-i18n/cache/88/8a/ee3b7080c13204391c14947a0c2c.php:22 +msgid "powered by" +msgstr "propulsado por" + +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:31 +msgid "installation" +msgstr "instalacion" + +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:42 +msgid "install your poche" +msgstr "instala tu poche" + +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:47 +msgid "" +"poche is still not installed. Please fill the below form to install it. " +"Don't hesitate to read " +"the documentation on poche website." +msgstr "" +"poche todavia no està instalado. Gracias de llenar los campos siguientes " +"para instalarlo. No dudes de leer la documentacion en el sitio de poche." + +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:53 +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:55 +msgid "Login" +msgstr "Nombre de usuario" + +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:67 +msgid "Repeat your password" +msgstr "repita su contraseña" + +#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:74 +msgid "Install" +msgstr "Instalar" + +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:31 +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:42 +msgid "login to your poche" +msgstr "conectarse a tu poche" + +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:48 +msgid "you are in demo mode, some features may be disabled." +msgstr "" +"este es el modo de demostración, algunas funcionalidades pueden estar " +"desactivadas." + +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:80 +msgid "Stay signed in" +msgstr "seguir conectado" + +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:86 +msgid "(Do not check on public computers)" +msgstr "(no marcar en un ordenador publico)" + +#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:93 +msgid "Sign in" +msgstr "conectarse" + +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:55 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:57 +msgid "by date asc" +msgstr "por fecha ascendiente" + +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:59 +msgid "by date" +msgstr "por fecha" + +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:65 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:67 +msgid "by date desc" +msgstr "por fecha descendiente" + +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:75 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:77 +msgid "by title asc" +msgstr "por titulo ascendiente" + +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:79 +msgid "by title" +msgstr "por titulo" + +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:85 +#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:87 +msgid "by title desc" +msgstr "por titulo descendiente" + +#~ msgid "Please choose between Pocket & Readabilty :" +#~ msgstr "Merci de choisir entre Pocket & Readability :" + +#~ msgid "Bye bye Pocket, let's go !" +#~ msgstr "Bye bye Pocket, en route !" + +#~ msgid "Bye bye Readability, let's go !" +#~ msgstr "Bye bye Readability, en route !" + +#~ msgid "Welcome to poche !" +#~ msgstr "Bienvenue dans poche !" + +#~ msgid "Error with the import." +#~ msgstr "Erreur durant l'import." + +#~ msgid "Wrong token." +#~ msgstr "Mauvais jeton." + +#~ msgid "Login failed !" +#~ msgstr "Connexion échouée." + +#~ msgid "your password has been updated" +#~ msgstr "Votre mot de passe a été mis à jour. " + +#~ msgid "in demo mode, you can't update password" +#~ msgstr "En mode démo, le mot de passe ne peut être modifié." + +#~ msgid "" +#~ "your password can't be empty and you have to repeat it in the second field" +#~ msgstr "" +#~ "Votre mot de passe ne peut être vide et vous devez le répéter dans le " +#~ "second champ." + +#~ msgid "error during url preparation : the link wasn't added" +#~ msgstr "erreur durant l'insertion : le lien n'a pas été ajouté" + +#~ msgid "error during url preparation : the link is not valid" +#~ msgstr "erreur durant la préparation de l'URL : le lien n'est pas valide" + +#~ msgid "TEST" +#~ 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 similarity index 100% rename from locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.mo rename to locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo diff --git a/locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.po b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po similarity index 100% rename from locale/fr_FR.UTF8/LC_MESSAGES/fr_FR.UTF8.po rename to locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..77470cb --- /dev/null +++ b/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: / \ No newline at end of file diff --git a/tpl/_head.twig b/tpl/_head.twig index 145d668..60ef888 100644 --- a/tpl/_head.twig +++ b/tpl/_head.twig @@ -6,6 +6,6 @@ - + \ No newline at end of file diff --git a/tpl/error.twig b/tpl/error.twig new file mode 100644 index 0000000..84c3bc1 --- /dev/null +++ b/tpl/error.twig @@ -0,0 +1,7 @@ +{% extends "layout.twig" %} +{% block title %}{% trans "error" %}{% endblock %} +{% block content %} +

error

+

{{ msg|raw }}

+

Don't forget the documentation.

+{% endblock %} \ No newline at end of file diff --git a/tpl/install.twig b/tpl/install.twig index 8bcede0..afb5b0f 100644 --- a/tpl/install.twig +++ b/tpl/install.twig @@ -7,21 +7,21 @@

{% trans "poche is still not installed. Please fill the below form to install it. Don't hesitate to read the documentation on poche website." %}

-
+

-

-
+

+

-

-
+

+

-

-
+

+

-

+