forked from wallabag/wallabag
Compare commits
47 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7ba37bd91a | |||
| 9067b484ce | |||
| c3df0ebdc2 | |||
| abed0f2122 | |||
| 12c4098773 | |||
| bb5a7d9ede | |||
| 1c9cd3463b | |||
| 6bc2da5191 | |||
| 042b590606 | |||
| 0b05568c9f | |||
| 2021fc614e | |||
| c0d321c1bf | |||
| 20ced8a806 | |||
| b448a9214c | |||
| 4a2912880f | |||
| ca1b0a1a6f | |||
| 86848edc84 | |||
| f93aaa65c4 | |||
| cd03b575df | |||
| 667009727a | |||
| 6a9e4bfc90 | |||
| 15493df62d | |||
| 82051a6a6a | |||
| 5bf30b0060 | |||
| baea9b6de5 | |||
| fa0483b361 | |||
| b58e261db9 | |||
| d8d1542e52 | |||
| 56ab22d02c | |||
| 6c15854448 | |||
| d91787589b | |||
| 3d8bded89e | |||
| 5f9bff0f71 | |||
| 301e4c5acb | |||
| 82757801b9 | |||
| 9a8b4ff4ed | |||
| 572e758bf2 | |||
| 64f8970215 | |||
| a3436d4cba | |||
| 07ee09f49a | |||
| 25b5caeed1 | |||
| 313f4ca785 | |||
| ed06f04077 | |||
| 7aa8ccc47d | |||
| 85ebc80c7e | |||
| 6588517b2d | |||
| 9c902708da |
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,3 +1,6 @@
|
||||
vendor
|
||||
composer.phar
|
||||
db/poche.sqlite
|
||||
db/poche.sqlite
|
||||
output
|
||||
phpdoc*
|
||||
inc/config/myconfig.inc.php
|
||||
15
.travis.yml
Normal file
15
.travis.yml
Normal file
@ -0,0 +1,15 @@
|
||||
language: php
|
||||
|
||||
php:
|
||||
- 5.4
|
||||
|
||||
branches:
|
||||
only:
|
||||
- dev
|
||||
|
||||
before_script:
|
||||
- composer install
|
||||
|
||||
notifications:
|
||||
email:
|
||||
- nicolas.loeuillet@gmail.com
|
||||
3
CONTRIBUTING.md
Normal file
3
CONTRIBUTING.md
Normal file
@ -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.
|
||||
2
CREDITS
2
CREDITS
@ -1,5 +1,5 @@
|
||||
poche is based on :
|
||||
* PHP Readability http://www.keyvan.net/2010/08/php-readability/
|
||||
* PHP Readability https://bitbucket.org/fivefilters/php-readability
|
||||
* Encoding https://github.com/neitanod/forceutf8
|
||||
* logo by Brightmix http://www.iconfinder.com/icondetails/43256/128/jeans_monotone_pocket_icon
|
||||
* icons http://icomoon.io
|
||||
|
||||
83
INSTALL.md
83
INSTALL.md
@ -1,53 +1,64 @@
|
||||
# Installing poche
|
||||
|
||||
Get the [latest dev version](https://github.com/inthepoche/poche/archive/dev.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 !
|
||||
## 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.
|
||||
43
README.md
43
README.md
@ -1,35 +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.
|
||||
|
||||

|
||||
## 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).
|
||||
## Installation
|
||||
|
||||
[](http://flattr.com/thing/1265480/poche-a-read-it-later-open-source-system)
|
||||
|
||||
## Security
|
||||
You **have** to protect your db/poche.sqlite file. Modify the virtual host of your website to add this condition :
|
||||
```apache
|
||||
<Files ~ "\.sqlite$">
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</Files>
|
||||
```
|
||||
|
||||
Nginx version:
|
||||
```nginx
|
||||
location ~ /(db) {
|
||||
deny all;
|
||||
return 404;
|
||||
}
|
||||
```
|
||||
|
||||
## Usage
|
||||
See the documentation on our website : [inthepoche.com](http://inthepoche.com).
|
||||
Read the [INSTALL.md file](https://github.com/inthepoche/poche/blob/master/INSTALL.md).
|
||||
|
||||
## License
|
||||
Copyright © 2010-2013 Nicolas Lœuillet <nicolas.loeuillet@gmail.com>
|
||||
|
||||
11
TODO.md
Normal file
11
TODO.md
Normal file
@ -0,0 +1,11 @@
|
||||
# TODO
|
||||
|
||||
pouvoir annuler la suppression
|
||||
conventions codage ? phing ? vérifier error_log qui trainent
|
||||
phpDocumentor
|
||||
minifier css
|
||||
revoir tous les css
|
||||
barre fixe d'admin sur la page d'un billet ?
|
||||
revoir export (export vers pocket &cie ? )
|
||||
raccourcis clavier
|
||||
date d'ajout d'un lien
|
||||
3
inc/3rdparty/Readability.php
vendored
3
inc/3rdparty/Readability.php
vendored
@ -810,7 +810,8 @@ class Readability
|
||||
return $this->grabArticle($this->body);
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
# this line was commented by Nicolas Lœuillet 8/8/13 due to some urls not parsed
|
||||
// return false;
|
||||
}
|
||||
}
|
||||
return $articleContent;
|
||||
|
||||
@ -184,6 +184,13 @@ class Database {
|
||||
return $entries;
|
||||
}
|
||||
|
||||
public function updateContent($id, $content, $user_id) {
|
||||
$sql_action = 'UPDATE entries SET content = ? WHERE id=? AND user_id=?';
|
||||
$params_action = array($content, $id, $user_id);
|
||||
$query = $this->executeQuery($sql_action, $params_action);
|
||||
return $query;
|
||||
}
|
||||
|
||||
public function add($url, $title, $content, $user_id) {
|
||||
$sql_action = 'INSERT INTO entries ( url, title, content, user_id ) VALUES (?, ?, ?, ?)';
|
||||
$params_action = array($url, $title, $content, $user_id);
|
||||
|
||||
@ -18,6 +18,10 @@ class Poche
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->initTpl();
|
||||
if (!$this->checkBeforeInstall()) {
|
||||
exit;
|
||||
}
|
||||
$this->store = new Database();
|
||||
$this->init();
|
||||
$this->messages = new Messages();
|
||||
@ -29,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 <a href="install/update.php">by clicking here</a>. 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. <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.';
|
||||
$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();
|
||||
@ -50,20 +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);
|
||||
|
||||
# Pagination
|
||||
$this->pagination = new Paginator($this->user->getConfigValue('pager'), 'p');
|
||||
}
|
||||
@ -78,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');
|
||||
@ -117,6 +166,8 @@ class Poche
|
||||
$last_id = $this->store->getLastId($sequence);
|
||||
if (DOWNLOAD_PICTURES) {
|
||||
$content = filtre_picture($parametres_url['content'], $url->getUrl(), $last_id);
|
||||
Tools::logm('updating content article');
|
||||
$this->store->updateContent($last_id, $content, $this->user->getId());
|
||||
}
|
||||
if (!$import) {
|
||||
$this->messages->add('s', _('the link has been added successfully'));
|
||||
@ -169,6 +220,7 @@ class Poche
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Tools::logm('action ' . $action . 'doesn\'t exist');
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -208,7 +260,7 @@ class Poche
|
||||
);
|
||||
}
|
||||
else {
|
||||
Tools::logm('error in view call : entry is NULL');
|
||||
Tools::logm('error in view call : entry is null');
|
||||
}
|
||||
break;
|
||||
default: # home view
|
||||
@ -227,6 +279,13 @@ class Poche
|
||||
return $tpl_vars;
|
||||
}
|
||||
|
||||
/**
|
||||
* update the password of the current user.
|
||||
* if MODE_DEMO is TRUE, the password can't be updated.
|
||||
* @todo add the return value
|
||||
* @todo set the new password in function header like this updatePassword($newPassword)
|
||||
* @return boolean
|
||||
*/
|
||||
public function updatePassword()
|
||||
{
|
||||
if (MODE_DEMO) {
|
||||
@ -251,6 +310,13 @@ class Poche
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* checks if login & password are correct and save the user in session.
|
||||
* it redirects the user to the $referer link
|
||||
* @param string $referer the url to redirect after login
|
||||
* @todo add the return value
|
||||
* @return boolean
|
||||
*/
|
||||
public function login($referer)
|
||||
{
|
||||
if (!empty($_POST['login']) && !empty($_POST['password'])) {
|
||||
@ -281,6 +347,11 @@ class Poche
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* log out the poche user. It cleans the session.
|
||||
* @todo add the return value
|
||||
* @return boolean
|
||||
*/
|
||||
public function logout()
|
||||
{
|
||||
$this->user = array();
|
||||
@ -290,6 +361,11 @@ class Poche
|
||||
Tools::redirect();
|
||||
}
|
||||
|
||||
/**
|
||||
* import from Instapaper. poche needs a ./instapaper-export.html file
|
||||
* @todo add the return value
|
||||
* @return boolean
|
||||
*/
|
||||
private function importFromInstapaper()
|
||||
{
|
||||
# TODO gestion des articles favs
|
||||
@ -324,6 +400,11 @@ class Poche
|
||||
Tools::redirect();
|
||||
}
|
||||
|
||||
/**
|
||||
* import from Pocket. poche needs a ./ril_export.html file
|
||||
* @todo add the return value
|
||||
* @return boolean
|
||||
*/
|
||||
private function importFromPocket()
|
||||
{
|
||||
# TODO gestion des articles favs
|
||||
@ -358,15 +439,22 @@ class Poche
|
||||
Tools::redirect();
|
||||
}
|
||||
|
||||
/**
|
||||
* import from Readability. poche needs a ./readability file
|
||||
* @todo add the return value
|
||||
* @return boolean
|
||||
*/
|
||||
private function importFromReadability()
|
||||
{
|
||||
# TODO gestion des articles lus / favs
|
||||
$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));
|
||||
@ -375,37 +463,57 @@ 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();
|
||||
}
|
||||
|
||||
/**
|
||||
* import datas into your poche
|
||||
* @param string $from name of the service to import : pocket, instapaper or readability
|
||||
* @todo add the return value
|
||||
* @return boolean
|
||||
*/
|
||||
public function import($from)
|
||||
{
|
||||
if ($from == 'pocket') {
|
||||
$this->importFromPocket();
|
||||
return $this->importFromPocket();
|
||||
}
|
||||
else if ($from == 'readability') {
|
||||
$this->importFromReadability();
|
||||
return $this->importFromReadability();
|
||||
}
|
||||
else if ($from == 'instapaper') {
|
||||
$this->importFromInstapaper();
|
||||
return $this->importFromInstapaper();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* export poche entries in json
|
||||
* @return json all poche entries
|
||||
*/
|
||||
public function export()
|
||||
{
|
||||
$entries = $this->store->retrieveAll($this->user->getId());
|
||||
@ -415,9 +523,16 @@ class Poche
|
||||
Tools::logm('export view');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks online the latest version of poche and cache it
|
||||
* @param string $which 'prod' or 'dev'
|
||||
* @return string latest $which version
|
||||
*/
|
||||
private function getPocheVersion($which = 'prod')
|
||||
{
|
||||
$cache_file = CACHE . '/' . $which;
|
||||
|
||||
# checks if the cached version file exists
|
||||
if (file_exists($cache_file) && (filemtime($cache_file) > (time() - 86400 ))) {
|
||||
$version = file_get_contents($cache_file);
|
||||
} else {
|
||||
|
||||
@ -170,6 +170,7 @@ class Tools
|
||||
preg_match('#charset="?(.*)"#si', $meta[0], $encoding);
|
||||
# if charset is found set it otherwise, set it to utf-8
|
||||
$html_charset = (!empty($encoding[1])) ? strtolower($encoding[1]) : 'utf-8';
|
||||
if (empty($encoding[1])) $encoding[1] = 'utf-8';
|
||||
} else {
|
||||
$html_charset = 'utf-8';
|
||||
$encoding[1] = '';
|
||||
@ -223,4 +224,39 @@ class Tools
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
public static function getReadingTime($text) {
|
||||
$word = str_word_count(strip_tags($text));
|
||||
$minutes = floor($word / 200);
|
||||
$seconds = floor($word % 200 / (200 / 60));
|
||||
$time = array('minutes' => $minutes, 'seconds' => $seconds);
|
||||
|
||||
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, '<?php'."\r\n");
|
||||
fwrite($fp, "define ('POCHE_VERSION', '1.0-beta3');" . "\r\n");
|
||||
fwrite($fp, "define ('SALT', '" . md5(time() . $_SERVER['SCRIPT_FILENAME'] . rand()) . "');" . "\r\n");
|
||||
fwrite($fp, "define ('LANG', 'en_EN.utf8');" . "\r\n");
|
||||
fclose($fp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -27,7 +27,7 @@ class Url
|
||||
|
||||
public function isCorrect()
|
||||
{
|
||||
$pattern = '|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i';
|
||||
$pattern = '|^(.*:)//([a-z\-.]+)(:[0-9]+)?(.*)$|i';
|
||||
|
||||
return preg_match($pattern, $this->url);
|
||||
}
|
||||
|
||||
57
inc/poche/config.inc.php
Normal file → Executable file
57
inc/poche/config.inc.php
Normal file → Executable file
@ -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 <a href="http://inthepoche.com/?pages/Documentation">the documentation.</a>');
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
30
inc/poche/define.inc.php
Normal file
30
inc/poche/define.inc.php
Normal file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* poche, a read it later open source system
|
||||
*
|
||||
* @category poche
|
||||
* @author Nicolas Lœuillet <nicolas@loeuillet.org>
|
||||
* @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');
|
||||
10
index.php
10
index.php
@ -8,8 +8,12 @@
|
||||
* @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
|
||||
$referer = empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER'];
|
||||
$view = Tools::checkVar('view', 'home');
|
||||
$action = Tools::checkVar('action');
|
||||
@ -17,6 +21,7 @@ $id = Tools::checkVar('id');
|
||||
$_SESSION['sort'] = Tools::checkVar('sort', 'id');
|
||||
$url = new Url((isset ($_GET['url'])) ? $_GET['url'] : '');
|
||||
|
||||
# poche actions
|
||||
if (isset($_GET['login'])) {
|
||||
# hello you
|
||||
$poche->login($referer);
|
||||
@ -30,12 +35,13 @@ elseif (isset($_GET['config'])) {
|
||||
$poche->updatePassword();
|
||||
}
|
||||
elseif (isset($_GET['import'])) {
|
||||
$poche->import($_GET['from']);
|
||||
$import = $poche->import($_GET['from']);
|
||||
}
|
||||
elseif (isset($_GET['export'])) {
|
||||
$poche->export();
|
||||
}
|
||||
|
||||
# vars to send to templates
|
||||
$tpl_vars = array(
|
||||
'referer' => $referer,
|
||||
'view' => $view,
|
||||
@ -57,5 +63,5 @@ else {
|
||||
$messages = $poche->messages->display('all', FALSE);
|
||||
$tpl_vars = array_merge($tpl_vars, array('messages' => $messages));
|
||||
|
||||
# Aaaaaaand action !
|
||||
# display poche
|
||||
echo $poche->tpl->render($tpl_file, $tpl_vars);
|
||||
79
install/update.php
Normal file
79
install/update.php
Normal file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
require_once dirname(__FILE__).'/../inc/poche/Tools.class.php';
|
||||
include dirname(__FILE__).'/../inc/poche/define.inc.php';
|
||||
require_once __DIR__ . '/../inc/poche/Database.class.php';
|
||||
$store = new Database();
|
||||
$old_salt = '464v54gLLw928uz4zUBqkRJeiPY68zCX';
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<!--[if lte IE 6]> <html class="no-js ie6 ie67 ie678" lang="en"> <![endif]-->
|
||||
<!--[if lte IE 7]> <html class="no-js ie7 ie67 ie678" lang="en"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js ie8 ie678" lang="en"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>updating poche</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>update poche to 1.0-beta3</h1>
|
||||
|
||||
<h2>Changelog</h2>
|
||||
<p>
|
||||
<ul>
|
||||
<li>this awesome updating step</li>
|
||||
<li>error message when install folder exists</li>
|
||||
<li>more tests before installation (write access, etc.)</li>
|
||||
<li>updated README to make installation easier</li>
|
||||
<li>german language thanks to HLFH</li>
|
||||
<li>spanish language thanks to Nitche</li>
|
||||
<li>new file ./inc/poche/myconfig.inc.php created to store language and salt</li>
|
||||
<li><a href="https://github.com/inthepoche/poche/issues/119">#119</a>: salt is now created when installing poche</li>
|
||||
<li><a href="https://github.com/inthepoche/poche/issues/130">#130</a>: robots.txt added</li>
|
||||
<li><a href="https://github.com/inthepoche/poche/issues/136">#136</a>: error during readability import</li>
|
||||
<li><a href="https://github.com/inthepoche/poche/issues/137">#137</a>: mixed content alert in https</li>
|
||||
<li><a href="https://github.com/inthepoche/poche/issues/138">#138</a>: change pattern to parse url with #</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>To update your poche, please fill the following fields.</p>
|
||||
<p>
|
||||
<form name="update" method="post">
|
||||
<div><label for="login">login:</label> <input type="text" name="login" id="login" /></div>
|
||||
<div><label for="password">password:</label> <input type="password" name="password" id="password" /></div>
|
||||
<div><input type="hidden" name="go" value="ok" /><input type="submit" value="update" /></div>
|
||||
</form>
|
||||
</p>
|
||||
<?php
|
||||
if (isset($_POST['go'])) {
|
||||
if (!empty($_POST['login']) && !empty($_POST['password'])) {
|
||||
$user = $store->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, '<?php'."\r\n");
|
||||
fwrite($fp, "define ('POCHE_VERSION', '1.0-beta3');" . "\r\n");
|
||||
fwrite($fp, "define ('SALT', '" . $new_salt . "');" . "\r\n");
|
||||
fwrite($fp, "define ('LANG', 'en_EN.utf8');" . "\r\n");
|
||||
fclose($fp);
|
||||
}
|
||||
# faire une mise à jour de la table users en prenant en compte le nouveau SALT généré
|
||||
$store->updatePassword($user['id'], sha1($_POST['password'] . $_POST['login'] . $new_salt));
|
||||
?>
|
||||
<p><span style="color: green;">your poche is up to date!</span></p>
|
||||
<p><span style="color: red;">don't forget to delete ./install/ folder after the update.</span></p>
|
||||
<p><a href="../">go back to your poche</a></p>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
|
||||
# import script to upgrade from poche 0.3
|
||||
$db_path = 'sqlite:../db/poche.sqlite';
|
||||
$handle = new PDO($db_path);
|
||||
$handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
|
||||
BIN
locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo
Normal file
BIN
locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo
Normal file
Binary file not shown.
114
locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po
Normal file
114
locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po
Normal file
@ -0,0 +1,114 @@
|
||||
#
|
||||
# Translators:
|
||||
# HLFH <gaspard.dhautefeuille@gmail.com>, 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 <nicolas.loeuillet@gmail.com>\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."
|
||||
BIN
locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo
Normal file
BIN
locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo
Normal file
Binary file not shown.
382
locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po
Normal file
382
locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po
Normal file
@ -0,0 +1,382 @@
|
||||
#
|
||||
# Translators:
|
||||
# Nitche <nicolas.canseco@gmail.com>, 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 <nicolas.loeuillet@gmail.com>\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 <a href='http://inthepoche.com/?pages/Documentation'>read "
|
||||
"the documentation on poche website</a>."
|
||||
msgstr ""
|
||||
"poche todavia no està instalado. Gracias de llenar los campos siguientes "
|
||||
"para instalarlo. No dudes de <a href='http://inthepoche.com/?pages/"
|
||||
"Documentation'>leer la documentacion en el sitio de poche</a>."
|
||||
|
||||
#: /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"
|
||||
0
phpunit.xml.dist
Normal file
0
phpunit.xml.dist
Normal file
2
robots.txt
Normal file
2
robots.txt
Normal file
@ -0,0 +1,2 @@
|
||||
User-agent: *
|
||||
Disallow: /
|
||||
@ -6,4 +6,6 @@
|
||||
<link rel="stylesheet" href="./tpl/css/style.css" media="all">
|
||||
<link rel="stylesheet" href="./tpl/css/style-{{ constant('THEME') }}.css" media="all" title="{{ constant('THEME') }} theme">
|
||||
<link rel="stylesheet" href="./tpl/css/messages.css" media="all">
|
||||
<link href='http://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
|
||||
<link href='//fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
|
||||
<script src="./tpl/js/jquery-2.0.3.min.js"></script>
|
||||
<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>
|
||||
@ -20,7 +20,7 @@
|
||||
<p><ul>
|
||||
<li>{% trans "your version" %} : <strong>{{ constant('POCHE_VERSION') }}</strong></li>
|
||||
<li>{% trans "latest stable version" %} : {{ prod }}. {% if compare_prod == -1 %}<strong><a href="http://inthepoche.com/?pages/T%C3%A9l%C3%A9charger-poche">{% trans "a more recent stable version is available." %}</a></strong>{% else %}{% trans "you are up to date." %}{% endif %}</li>
|
||||
<li>{% trans "latest dev version" %} : {{ dev }}. {% if compare_dev == -1 %}<strong><a href="http://inthepoche.com/?pages/T%C3%A9l%C3%A9charger-poche">{% trans "a more recent development version is available." %}</a></strong>{% else %}{% trans "you are up to date." %}{% endif %}</li>
|
||||
{% if constant('DEBUG_POCHE') == 1 %}<li>{% trans "latest dev version" %} : {{ dev }}. {% if compare_dev == -1 %}<strong><a href="http://inthepoche.com/?pages/T%C3%A9l%C3%A9charger-poche">{% trans "a more recent development version is available." %}</a></strong>{% else %}{% trans "you are up to date." %}{% endif %}</li>{% endif %}
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
|
||||
@ -120,11 +120,6 @@ header h1 {
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
#main .entrie .url {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
|
||||
/*** ***/
|
||||
/*** ARTICLE PAGE ***/
|
||||
|
||||
@ -241,4 +236,8 @@ a, a:hover, a:visited {
|
||||
|
||||
footer {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.reading-time {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
7
tpl/error.twig
Normal file
7
tpl/error.twig
Normal file
@ -0,0 +1,7 @@
|
||||
{% extends "layout.twig" %}
|
||||
{% block title %}{% trans "error" %}{% endblock %}
|
||||
{% block content %}
|
||||
<h1>error</h1>
|
||||
<p>{{ msg|raw }}</p>
|
||||
<p>Don't forget <a href="http://inthepoche.com/?pages/Documentation">the documentation</a>.</p>
|
||||
{% endblock %}
|
||||
@ -19,6 +19,7 @@
|
||||
<a title="{% trans "toggle mark as read" %}" class="tool archive {% if entry.is_read == 0 %}archive-off{% endif %}" href="./?action=toggle_archive&id={{ entry.id|e }}"><span></span></a></li>
|
||||
<li><a title="{% trans "toggle favorite" %}" class="tool fav {% if entry.is_fav == 0 %}fav-off{% endif %}" href="./?action=toggle_fav&id={{ entry.id|e }}"><span></span></a></li>
|
||||
<li><a title="{% trans "delete" %}" class="tool delete" href="./?action=delete&id={{ entry.id|e }}"><span></span></a></li>
|
||||
<li class="reading-time">{{ entry.content| getReadingTime }} min</li>
|
||||
</li>
|
||||
</ul>
|
||||
<p>{{ entry.content|striptags|slice(0, 300) }}...</p>
|
||||
|
||||
BIN
tpl/img/light/backtotop.png
Executable file
BIN
tpl/img/light/backtotop.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 326 B |
BIN
tpl/img/logo.png
BIN
tpl/img/logo.png
Binary file not shown.
|
Before Width: | Height: | Size: 454 B After Width: | Height: | Size: 1.3 KiB |
@ -7,21 +7,21 @@
|
||||
<p>
|
||||
{% 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>." %}
|
||||
</p>
|
||||
<div class="row">
|
||||
<p class="row">
|
||||
<label class="col w150p" for="login">{% trans "Login" %}</label>
|
||||
<input class="col" type="text" id="login" name="login" placeholder="Login" tabindex="1" autofocus />
|
||||
</div>
|
||||
<div class="row">
|
||||
</p>
|
||||
<p class="row">
|
||||
<label class="col w150p" for="password">{% trans "Password" %}</label>
|
||||
<input class="col" type="password" id="password" name="password" placeholder="Password" tabindex="2">
|
||||
</div>
|
||||
<div class="row">
|
||||
</p>
|
||||
<p class="row">
|
||||
<label class="col w150p" for="password_repeat">{% trans "Repeat your password" %}</label>
|
||||
<input class="col" type="password" id="password_repeat" name="password_repeat" placeholder="Password" tabindex="3">
|
||||
</div>
|
||||
<div class="row mts txtcenter">
|
||||
</p>
|
||||
<p class="row mts txtcenter">
|
||||
<button class="bouton" type="submit" tabindex="4">{% trans "Install" %}</button>
|
||||
</div>
|
||||
</p>
|
||||
</fieldset>
|
||||
<input type="hidden" name="token" value="{{ token }}">
|
||||
</form>
|
||||
|
||||
6
tpl/js/jquery-2.0.3.min.js
vendored
Normal file
6
tpl/js/jquery-2.0.3.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -5,12 +5,12 @@
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
|
||||
<meta name="viewport" content="initial-scale=1.0">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=10">
|
||||
<title>{% block title %}{% endblock %} - poche</title>
|
||||
{% include '_head.twig' %}
|
||||
{% include '_bookmarklet.twig' %}
|
||||
{% include '_head.twig' %}
|
||||
{% include '_bookmarklet.twig' %}
|
||||
</head>
|
||||
<body>
|
||||
{% include '_top.twig' %}
|
||||
@ -24,6 +24,6 @@
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
{% include '_footer.twig' %}
|
||||
{% include '_footer.twig' %}
|
||||
</body>
|
||||
</html>
|
||||
@ -5,7 +5,7 @@
|
||||
<div class="tools">
|
||||
<ul class="tools">
|
||||
<li>
|
||||
<li><a href="{{ referer }}" title="{% trans "back to home" %}" class="tool back"><span></span></a></li>
|
||||
<li><a href="./" title="{% trans "back to home" %}" class="tool back"><span></span></a></li>
|
||||
<a title="{% trans "toggle mark as read" %}" class="tool archive {% if entry.is_read == 0 %}archive-off{% endif %}" href="./?action=toggle_archive&id={{ entry.id|e }}"><span></span></a></li>
|
||||
<li><a title="{% trans "toggle favorite" %}" class="tool fav {% if entry.is_fav == 0 %}fav-off{% endif %}" href="./?action=toggle_fav&id={{ entry.id|e }}"><span></span></a></li>
|
||||
<li><a title="{% trans "delete" %}" class="tool delete" href="./?action=delete&id={{ entry.id|e }}"><span></span></a></li>
|
||||
@ -25,8 +25,8 @@
|
||||
<div class="tools">
|
||||
<ul class="tools">
|
||||
<li>
|
||||
<li><a href="{{ referer }}" title="{% trans "back to home" %}" class="tool back"><span></span></a></li>
|
||||
<li><a href="#" title="{% trans "back to top" %}" class="tool top"><span></span></a></li>
|
||||
<li><a href="./?" title="{% trans "back to home" %}" class="tool back"><span></span></a></li>
|
||||
<li><a href="#top" title="{% trans "back to top" %}" class="tool top"><span></span></a></li>
|
||||
<a title="{% trans "toggle mark as read" %}" class="tool archive {% if entry.is_read == 0 %}archive-off{% endif %}" href="./?action=toggle_archive&id={{ entry.id|e }}"><span></span></a></li>
|
||||
<li><a title="{% trans "toggle favorite" %}" class="tool fav {% if entry.is_fav == 0 %}fav-off{% endif %}" href="./?action=toggle_fav&id={{ entry.id|e }}"><span></span></a></li>
|
||||
<li><a title="{% trans "delete" %}" class="tool delete" href="./?action=delete&id={{ entry.id|e }}"><span></span></a></li>
|
||||
|
||||
Reference in New Issue
Block a user