1
0
mirror of https://github.com/moparisthebest/wallabag synced 2024-08-13 16:54:00 -04:00

merge refactor and dev

This commit is contained in:
tcit 2014-09-27 17:54:13 +02:00
commit 04a7674bdd
32 changed files with 1150 additions and 470 deletions

View File

@ -26,3 +26,5 @@ Note : If you have large portions of text, use [Github's Gist service](https://g
## You want to fix a bug or to add a feature ## You want to fix a bug or to add a feature
Please fork wallabag and work with **the dev branch** only. **Do not work on master branch**. Please fork wallabag and work with **the dev branch** only. **Do not work on master branch**.
[Don't forget to read our guidelines](https://github.com/wallabag/wallabag/blob/dev/GUIDELINES.md).

View File

@ -11,4 +11,6 @@ wallabag is based on :
wallabag is mainly developed by Nicolas Lœuillet under the MIT License wallabag is mainly developed by Nicolas Lœuillet under the MIT License
Thank you so much to @tcitworld and @mariroz.
Contributors : https://github.com/wallabag/wallabag/graphs/contributors Contributors : https://github.com/wallabag/wallabag/graphs/contributors

53
GUIDELINES.md Normal file
View File

@ -0,0 +1,53 @@
# Guidelines for wallabag
If you want to contribute to wallabag, you have some rules to respect. These rules were defined by [PHP Framework Interop Group](http://www.php-fig.org).
## Basic Coding Standard (PSR-1)
This section of the standard comprises what should be considered the standard coding elements that are required to ensure a high level of technical interoperability between shared PHP code.
* Files MUST use only `<?php` and `<?=` tags.
* Files MUST use only UTF-8 without BOM for PHP code.
* Files SHOULD either declare symbols (classes, functions, constants, etc.) or cause side-effects (e.g. generate output, change .ini settings, etc.) but SHOULD NOT do both.
* Namespaces and classes MUST follow [PSR-0](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md).
* Class names MUST be declared in `StudlyCaps`.
* Class constants MUST be declared in all upper case with underscore separators.
* Method names MUST be declared in `camelCase`.
You can read details on [PHP FIG website](http://www.php-fig.org/psr/psr-1/).
## Coding Style Guide (PSR-2)
This guide extends and expands on PSR-1, the basic coding standard.
The intent of this guide is to reduce cognitive friction when scanning code from different authors. It does so by enumerating a shared set of rules and expectations about how to format PHP code.
The style rules herein are derived from commonalities among the various member projects. When various authors collaborate across multiple projects, it helps to have one set of guidelines to be used among all those projects. Thus, the benefit of this guide is not in the rules themselves, but in the sharing of those rules.
* Code MUST follow PSR-1.
* Code MUST use 4 spaces for indenting, not tabs.
* There MUST NOT be a hard limit on line length; the soft limit MUST be 120 characters; lines SHOULD be 80 characters or less.
* There MUST be one blank line after the `namespace` declaration, and there MUST be one blank line after the block of `use` declarations.
* Opening braces for classes MUST go on the next line, and closing braces MUST go on the next line after the body.
* Opening braces for methods MUST go on the next line, and closing braces MUST go on the next line after the body.
* Visibility MUST be declared on all properties and methods; `abstract` and `final` MUST be declared before the visibility; `static` MUST be declared after the visibility.
* Control structure keywords MUST have one space after them; method and function calls MUST NOT.
* Opening braces for control structures MUST go on the same line, and closing braces MUST go on the next line after the body.
* Opening parentheses for control structures MUST NOT have a space after them, and closing parentheses for control structures MUST NOT have a space before.
You can read details on [PHP FIG website](http://www.php-fig.org/psr/psr-2/).

14
check_essentials.php Normal file
View File

@ -0,0 +1,14 @@
<?php
// PHP 5.3 minimum
if (version_compare(PHP_VERSION, '5.3.3', '<')) {
die('This software require PHP 5.3.3 minimum');
}
// Short tags must be enabled for PHP < 5.4
if (version_compare(PHP_VERSION, '5.4.0', '<')) {
if (! ini_get('short_open_tag')) {
die('This software require to have short tags enabled, check your php.ini => "short_open_tag = On"');
}
}

20
check_setup.php Normal file → Executable file
View File

@ -1,22 +1,8 @@
<?php <?php
// PHP 5.3 minimum
if (version_compare(PHP_VERSION, '5.3.3', '<')) {
die('This software require PHP 5.3.3 minimum');
}
// Short tags must be enabled for PHP < 5.4 // Check if /cache is writeable
if (version_compare(PHP_VERSION, '5.4.0', '<')) { if (! is_writable('cache')) {
die('The directory "cache" must be writeable by your web server user');
if (! ini_get('short_open_tag')) {
die('This software require to have short tags enabled, check your php.ini => "short_open_tag = On"');
}
}
$writableFolders = array('cache', 'db');
foreach ($writableFolders as $folder) {
if (! is_writable($folder)) {
die('The directory "' . $folder . '" must be writeable by your web server user');
}
} }
// install folder still present, need to install wallabag // install folder still present, need to install wallabag

17
inc/3rdparty/libraries/readability/Readability.php vendored Normal file → Executable file
View File

@ -679,6 +679,7 @@ class Readability
} else { } else {
$topCandidate->innerHTML = $page->documentElement->innerHTML; $topCandidate->innerHTML = $page->documentElement->innerHTML;
$page->documentElement->innerHTML = ''; $page->documentElement->innerHTML = '';
$this->reinitBody();
$page->documentElement->appendChild($topCandidate); $page->documentElement->appendChild($topCandidate);
} }
} else { } else {
@ -794,8 +795,7 @@ class Readability
{ {
// TODO: find out why element disappears sometimes, e.g. for this URL http://www.businessinsider.com/6-hedge-fund-etfs-for-average-investors-2011-7 // TODO: find out why element disappears sometimes, e.g. for this URL http://www.businessinsider.com/6-hedge-fund-etfs-for-average-investors-2011-7
// in the meantime, we check and create an empty element if it's not there. // in the meantime, we check and create an empty element if it's not there.
if (!isset($this->body->childNodes)) $this->body = $this->dom->createElement('body'); $this->reinitBody();
$this->body->innerHTML = $this->bodyCache;
if ($this->flagIsActive(self::FLAG_STRIP_UNLIKELYS)) { if ($this->flagIsActive(self::FLAG_STRIP_UNLIKELYS)) {
$this->removeFlag(self::FLAG_STRIP_UNLIKELYS); $this->removeFlag(self::FLAG_STRIP_UNLIKELYS);
@ -1134,5 +1134,18 @@ class Readability
public function removeFlag($flag) { public function removeFlag($flag) {
$this->flags = $this->flags & ~$flag; $this->flags = $this->flags & ~$flag;
} }
/**
* Will recreate previously deleted body property
*
* @return void
*/
protected function reinitBody() {
if (!isset($this->body->childNodes)) {
$this->body = $this->dom->createElement('body');
$this->body->innerHTML = $this->bodyCache;
}
}
} }
?> ?>

View File

@ -0,0 +1,45 @@
# Author: zinnober
tidy: no
prune: no
# Set author
author: //a[@rel='author']
# Set date
date: //span[@class='Datum']
# Content is here
body: //div[@class='Artikel']
# Tidy up before article
strip: //div[@id='FAZHeaderNeu']
strip: //h2[@itemprop='headline']
strip: //span[@class='Datum']
strip: //span[@class='Autor']
strip_id_or_class: ArticlePagerTop
strip: //div[@class='FAZArtikelEinleitung']/h2
# General cleanup
strip: //div[@class='clear']
strip: //span[@class='Bildnachweis']
strip: //iframe
strip_id_or_class: Community
strip: ' · '
# Remove tracking and ads
strip_image_src: /l.gif?
strip: //img[@width='1']
strip_id_or_class: invisible
strip_id_or_class: Anzeige
strip_id_or_class: billboard
# Remove clutter after article
strip_id_or_class: Tagline
strip_id_or_class: ArtikelAbbinder
strip_id_or_class: FAZArtikelKommentare
strip_id_or_class: ArtikelKommentieren
strip_id_or_class: FAZContentRight
# Try it yourself
test_url: http://blogs.faz.net/wost/2014/08/17/viel-fuck-und-wenig-guter-sex-1239/

View File

@ -0,0 +1,14 @@
body: //div[@id='articlebody']
title: //h1
author: //p[@id='by']//a
next_page_link: //span[@class='next']/a
# Not the same as below!
prune: yes
tidy: no
# Annoying 'next' links plainly inside the article body
strip: //*[text()[contains(.,'Next: ')]]
test_url: http://psychology.about.com/od/theoriesofpersonality/ss/defensemech.htm

9
inc/3rdparty/site_config/standard/dn.pt.txt vendored Executable file
View File

@ -0,0 +1,9 @@
single_page_link: concat('http://www.dn.pt/Common/print.aspx?content_id=', //input[@type='hidden' and @name='link-comments']/@value)
#<input type="hidden" name="link-comments" class="link-comments" value="3972244">
title: //h1
author: //div[@class="Author"]
strip: //div[@class="Patrocinio"]
test_url: http://www.dn.pt/inicio/opiniao/interior.aspx?content_id=3972244&seccao=Alberto%20Gon%E7alves&tag=Opini%E3o%20-%20Em%20Foco&page=1

111
inc/3rdparty/site_config/standard/faz.net.txt vendored Executable file → Normal file
View File

@ -1,36 +1,101 @@
# Author: zinnober
# Complete rewrite of the faz.net template as the standard one is broken
# I tried to consider as many page variants as possible, which was some serious work
tidy: no
prune: no
# Title # Title
title: //p[@class='Content HeadlineShort'] title: //p[@class='Content HeadlineShort']
# Authors # Set author
# some are known and have a link, others don't author: substring-after(//span[@class='Autor'], 'von ')
author: substring-after(//span[@class='Autor'], 'Von') author: //span[@class='caps last']/span[@class='caps last']
author: //a[@rel='author']
# Date # Set date
date: //span[@class='Datum'] date: //span[@class='Datum']
date: //span[@class='Datum'],/span
# Body # Fetch full multipage articles
next_page_link: //a[@title='Nächste Seite']
# Content is here
body: //div[@class='Artikel'] body: //div[@class='Artikel']
# Removements before body text # Tidy up before article
strip: //div[@class='Breadcrumbs'] strip: //div[@id='FAZHeaderNeu']
strip: //div[@class='QuickSearchBox'] strip: //h2[@itemprop='headline']
strip: //div[@class='FAZArtikelEinleitung'] strip: //span[@class='Datum']
strip: //div[@class='FAZArtikelReiter'] strip: //span[@class='Autor']
strip_id_or_class: ArticlePagerTop
# General cleanup
strip: //div[@class='clear'] strip: //div[@class='clear']
strip: //a[@title='Zur Homepage FAZ.NET']
strip: //iframe
replace_string( · ):
# General removements # Remove tracking and ads
strip: //span[@class='Bildnachweis'] strip_image_src: /l.gif?
strip: //img[@class='MediaIcon'] strip: //div[contains(@style, 'background-image')]
strip: //div[@class='ArtikelMediaLink'] strip: //img[@width='1']
dissolve: //a[img] strip_id_or_class: invisible
strip_id_or_class: Anzeige
strip_id_or_class: billboard
# Removements after body text # Remove various text boxes and social media foo
strip: //div[@class='ArtikelAbbinder'] strip_id_or_class: WeitereBeitraege
strip: //div[@class='ArtikelKommentieren Artikelfuss GETS;tk;boxen.top-lesermeinungen;tp;content'] strip_id_or_class: WBListe
strip: //div[@class='FAZArtikelKommentare FAZArtikelContent'] strip_id_or_class: AutorenModul
strip: //div[@class='FAZArtikelFunktionen'] strip_id_or_class: Community
strip: //div[@id='FAZContentRight'] strip_id_or_class: SocialMediaStatus
strip_id_or_class: RelatedLinkBox
strip_id_or_class: MultimediaNavigation
strip_id_or_class: IndexTitel
# Fix picture captions # Fix picture caps and pictures (use better resolution and remove clutter)
wrap_in(small): //span[@class='Bildunterschrift']/text() strip_id_or_class: LightBoxOverlay
strip_id_or_class: exitLarge
strip_id_or_class: PagerBox
strip_id_or_class: Bildnachweis
strip_id_or_class: Bildueberschrift
strip_id_or_class: Bildbeschreibung
strip_id_or_class: ArtikelBild610
strip_id_or_class: MediaLink
strip_id_or_class: FotoBoxInnerLeft
strip_id_or_class: BilderRelatedLinks
# Remove clutter after article
strip_id_or_class: ArticlePagerBottom
strip_id_or_class: backToHome
strip_id_or_class: ArtikelAbbinder
strip_id_or_class: lesermeinungscontainer
strip_id_or_class: ThemenLinks
strip_id_or_class: rechtehinweis
strip_id_or_class: FAZArtikelMap
strip_id_or_class: FAZArtikelKommentare
strip_id_or_class: ArtikelKommentieren
strip_id_or_class: FAZArtikelFunktionen
strip_id_or_class: mailLB
strip_id_or_class: FAZContentRight
strip_id_or_class: stageModule
strip_id_or_class: ContentFooter
strip_id_or_class: ServicesFooter
strip_id_or_class: FAZFooter
# Clean up stuff present just in some articles
strip_id_or_class: Teaser620
strip_id_or_class: TeaserMultimedia
strip_id_or_class: VideoBox
# Remove as soon as Wallabag maight be able to embed flash video
strip_id_or_class: mmoObjectAsTeaserInArticle
strip_id_or_class: additionalStylesAudioVideo
strip_id_or_class: hideMMElements
# Try it yourself
test_url: http://www.faz.net/aktuell/feuilleton/zum-tod-von-margaret-thatcher-die-reizfigur-12141919.html#Drucken test_url: http://www.faz.net/aktuell/feuilleton/zum-tod-von-margaret-thatcher-die-reizfigur-12141919.html#Drucken
test_url: http://www.faz.net/aktuell/politik/inland/allensbach-analyse-im-namen-des-volkes-13106492.html
test_url: http://www.faz.net/aktuell/feuilleton/kino/video-filmkritiken/video-filmkritik-when-animals-dream-zerrissene-jugend-13105772.html

View File

@ -0,0 +1,21 @@
title: //span[@class="post_title"]
author: //div[@class="author"]
date: //div[@class="published
body: //div[@class='content html_format'] | //div[@id='comments']
strip: //a[@class="link_to_comment"]
strip: //div[@class="show_tree"]
strip: //a[@class="to_parent"]
replace_string(class="reply_comments"): style="padding-left: 20px"
replace_string(class="voting "): style="float: right"
replace_string(src="//habrastorage.org/getpro/habr/avatars/): style="width:24px; height:24px;" class="123" src="//habrastorage.org/getpro/habr/avatars/
replace_string(class="info "): style="padding-top:5px;font-size:0.85em;line-height:24px;"
prune: no
tidy: no
test_url: http://habrahabr.ru/post/229883/

View File

@ -23,6 +23,10 @@ class Database {
{ {
switch (STORAGE) { switch (STORAGE) {
case 'sqlite': case 'sqlite':
// Check if /db is writeable
if ( !is_writable(STORAGE_SQLITE) || !is_writable(dirname(STORAGE_SQLITE))) {
die('An error occured: "db" directory must be writeable for your web server user!');
}
$db_path = 'sqlite:' . STORAGE_SQLITE; $db_path = 'sqlite:' . STORAGE_SQLITE;
$this->handle = new PDO($db_path); $this->handle = new PDO($db_path);
break; break;

View File

@ -524,6 +524,14 @@ class Poche
$longlastingsession = isset($_POST['longlastingsession']); $longlastingsession = isset($_POST['longlastingsession']);
$passwordTest = ($isauthenticated) ? $user['password'] : Tools::encodeString($password . $login); $passwordTest = ($isauthenticated) ? $user['password'] : Tools::encodeString($password . $login);
Session::login($user['username'], $user['password'], $login, $passwordTest, $longlastingsession, array('poche_user' => new User($user))); Session::login($user['username'], $user['password'], $login, $passwordTest, $longlastingsession, array('poche_user' => new User($user)));
# reload l10n
$language = $user['config']['language'];
@putenv('LC_ALL=' . $language);
setlocale(LC_ALL, $language);
bindtextdomain($language, LOCALE);
textdomain($language);
$this->messages->add('s', _('welcome to your wallabag')); $this->messages->add('s', _('welcome to your wallabag'));
Tools::logm('login successful'); Tools::logm('login successful');
Tools::redirect($referer); Tools::redirect($referer);
@ -551,42 +559,39 @@ class Poche
* import datas into your wallabag * import datas into your wallabag
* @return boolean * @return boolean
*/ */
public function import()
{
if (isset($_FILES['file'])) {
Tools::logm('Import stated: parsing file');
// assume, that file is in json format public function import() {
$str_data = file_get_contents($_FILES['file']['tmp_name']); if ( isset($_FILES['file']) && $_FILES['file']['tmp_name'] ) {
$data = json_decode($str_data, true); Tools::logm('Import stated: parsing file');
if ($data === null) {
// not json - assume html // assume, that file is in json format
$str_data = file_get_contents($_FILES['file']['tmp_name']);
$data = json_decode($str_data, true);
$html = new simple_html_dom(); if ( $data === null ) {
$html->load_file($_FILES['file']['tmp_name']); //not json - assume html
$data = array(); $html = new simple_html_dom();
$read = 0; $html->load_file($_FILES['file']['tmp_name']);
foreach(array('ol','ul') as $list) { $data = array();
foreach($html->find($list) as $ul) { $read = 0;
foreach($ul->find('li') as $li) { foreach (array('ol','ul') as $list) {
$tmpEntry = array(); foreach ($html->find($list) as $ul) {
$a = $li->find('a'); foreach ($ul->find('li') as $li) {
$tmpEntry['url'] = $a[0]->href; $tmpEntry = array();
$tmpEntry['tags'] = $a[0]->tags; $a = $li->find('a');
$tmpEntry['is_read'] = $read; $tmpEntry['url'] = $a[0]->href;
if ($tmpEntry['url']) { $tmpEntry['tags'] = $a[0]->tags;
$data[] = $tmpEntry; $tmpEntry['is_read'] = $read;
} if ($tmpEntry['url']) {
} $data[] = $tmpEntry;
}
// the second <ol/ul> is for read links }
# the second <ol/ul> is for read links
$read = ((sizeof($data) && $read) ? 0 : 1); $read = ((sizeof($data) && $read)?0:1);
}
}
} }
}
}
// for readability structure // for readability structure
@ -629,9 +634,11 @@ class Poche
$this->messages->add('s', _('Articles inserted: ') . $i . _('. Please note, that some may be marked as "read".')); $this->messages->add('s', _('Articles inserted: ') . $i . _('. Please note, that some may be marked as "read".'));
} }
Tools::logm('Import of articles finished: ' . $i . ' articles added (w/o content if not provided).'); Tools::logm('Import of articles finished: '.$i.' articles added (w/o content if not provided).');
} }
else {
$this->messages->add('s', _('Did you forget to select a file?'));
}
// file parsing finished here // file parsing finished here
// now download article contents if any // now download article contents if any
// check if we need to download any content // check if we need to download any content
@ -750,8 +757,8 @@ class Poche
die(sprintf(_('User with this id (%d) does not exist.'), $user_id)); die(sprintf(_('User with this id (%d) does not exist.'), $user_id));
} }
if (!in_array($type, $allowed_types) || $token != $config['token']) { if (!in_array($type, $allowed_types) || !isset($config['token']) || $token != $config['token']) {
die(_('Uh, there is a problem while generating feeds.')); die(_('Uh, there is a problem while generating feed. Wrong token used?'));
} }
$feed = new FeedWriter(RSS2); $feed = new FeedWriter(RSS2);

79
inc/poche/Routing.class.php Normal file → Executable file
View File

@ -98,49 +98,50 @@ class Routing
private function _launchAction() private function _launchAction()
{ {
if (isset($_GET['login'])) { if (isset($_GET['login'])) {
// hello you // hello to you
$this->wallabag->login($this->referer); $this->wallabag->login($this->referer);
} elseif (isset($_GET['logout'])) { } elseif (isset($_GET['feed']) && isset($_GET['user_id'])) {
// see you soon ! $tag_id = (isset($_GET['tag_id']) ? intval($_GET['tag_id']) : 0);
$this->wallabag->logout(); $this->wallabag->generateFeeds($_GET['token'], filter_var($_GET['user_id'],FILTER_SANITIZE_NUMBER_INT), $tag_id, $_GET['type']);
} elseif (isset($_GET['config'])) { }
// update password
$this->wallabag->updatePassword($_POST['password'], $_POST['password_repeat']); //allowed ONLY to logged in user
} elseif (isset($_GET['newuser'])) { if (\Session::isLogged() === true)
$this->wallabag->createNewUser($_POST['newusername'], $_POST['password4newuser']); {
} elseif (isset($_GET['deluser'])) { if (isset($_GET['logout'])) {
$this->wallabag->deleteUser($_POST['password4deletinguser']); // see you soon !
} elseif (isset($_GET['epub'])) { $this->wallabag->logout();
$epub = new WallabagEpub($this->wallabag, $_GET['method'], $_GET['value']); } elseif (isset($_GET['config'])) {
$epub->run(); // update password
} elseif (isset($_GET['import'])) { $this->wallabag->updatePassword($_POST['password'], $_POST['password_repeat']);
$import = $this->wallabag->import(); } elseif (isset($_GET['newuser'])) {
$tplVars = array_merge($this->vars, $import); $this->wallabag->createNewUser($_POST['newusername'], $_POST['password4newuser']);
} elseif (isset($_GET['download'])) { } elseif (isset($_GET['deluser'])) {
Tools::downloadDb(); $this->wallabag->deleteUser($_POST['password4deletinguser']);
} elseif (isset($_GET['empty-cache'])) { } elseif (isset($_GET['epub'])) {
Tools::emptyCache(); $epub = new WallabagEpub($this->wallabag, $_GET['method'], $_GET['id'], $_GET['value']);
} elseif (isset($_GET['export'])) { $epub->run();
$this->wallabag->export(); } elseif (isset($_GET['import'])) {
} elseif (isset($_GET['updatetheme'])) { $import = $this->wallabag->import();
$this->wallabag->tpl->updateTheme($_POST['theme']); $tplVars = array_merge($this->vars, $import);
} elseif (isset($_GET['updatelanguage'])) { } elseif (isset($_GET['empty-cache'])) {
$this->wallabag->language->updateLanguage($_POST['language']); Tools::emptyCache();
} elseif (isset($_GET['uploadfile'])) { } elseif (isset($_GET['export'])) {
$this->wallabag->uploadFile(); $this->wallabag->export();
} elseif (isset($_GET['feed'])) { } elseif (isset($_GET['updatetheme'])) {
if (isset($_GET['action']) && $_GET['action'] == 'generate') { $this->wallabag->tpl->updateTheme($_POST['theme']);
} elseif (isset($_GET['updatelanguage'])) {
$this->wallabag->language->updateLanguage($_POST['language']);
} elseif (isset($_GET['uploadfile'])) {
$this->wallabag->uploadFile();
} elseif (isset($_GET['feed']) && isset($_GET['action']) && $_GET['action'] == 'generate') {
$this->wallabag->updateToken(); $this->wallabag->updateToken();
} }
else { elseif (isset($_GET['plainurl']) && !empty($_GET['plainurl'])) {
$tag_id = (isset($_GET['tag_id']) ? intval($_GET['tag_id']) : 0); $plainUrl = new Url(base64_encode($_GET['plainurl']));
$this->wallabag->generateFeeds($_GET['token'], filter_var($_GET['user_id'],FILTER_SANITIZE_NUMBER_INT), $tag_id, $_GET['type']); $this->wallabag->action('add', $plainUrl);
} }
} }
elseif (isset($_GET['plainurl']) && !empty($_GET['plainurl'])) {
$plainUrl = new Url(base64_encode($_GET['plainurl']));
$this->wallabag->action('add', $plainUrl);
}
} }
public function _render($file, $vars) public function _render($file, $vars)

View File

@ -55,6 +55,10 @@ final class Tools
|| ($https && $_SERVER["SERVER_PORT"]==SSL_PORT) //Custom HTTPS port detection || ($https && $_SERVER["SERVER_PORT"]==SSL_PORT) //Custom HTTPS port detection
? '' : ':' . $_SERVER["SERVER_PORT"]); ? '' : ':' . $_SERVER["SERVER_PORT"]);
if (isset($_SERVER["HTTP_X_FORWARDED_PORT"])) {
$serverport = ':' . $_SERVER["HTTP_X_FORWARDED_PORT"];
}
$scriptname = str_replace('/index.php', '/', $_SERVER["SCRIPT_NAME"]); $scriptname = str_replace('/index.php', '/', $_SERVER["SCRIPT_NAME"]);
if (!isset($_SERVER["HTTP_HOST"])) { if (!isset($_SERVER["HTTP_HOST"])) {
@ -294,21 +298,6 @@ final class Tools
} }
} }
/**
* Download the sqlite database
*/
public static function downloadDb()
{
header('Content-Disposition: attachment; filename="poche.sqlite.gz"');
self::_status(200);
header('Content-Transfer-Encoding: binary');
header('Content-Type: application/octet-stream');
echo gzencode(file_get_contents(STORAGE_SQLITE));
exit;
}
/** /**
* Get the content for a given URL (by a call to FullTextFeed) * Get the content for a given URL (by a call to FullTextFeed)
* *

View File

@ -59,7 +59,7 @@
@define ('LOCALE', ROOT . '/locale'); @define ('LOCALE', ROOT . '/locale');
@define ('CACHE', ROOT . '/cache'); @define ('CACHE', ROOT . '/cache');
@define ('PAGINATION', '10'); @define ('PAGINATION', '12');
//limit for download of articles during import //limit for download of articles during import
@define ('IMPORT_LIMIT', 5); @define ('IMPORT_LIMIT', 5);

View File

@ -33,7 +33,7 @@ final class Picture
} }
if (self::_downloadPictures($absolute_path, $fullpath) === true) { if (self::_downloadPictures($absolute_path, $fullpath) === true) {
$content = str_replace($matches[$i][2], $fullpath, $content); $content = str_replace($matches[$i][2], Tools::getPocheUrl() . $fullpath, $content);
} }
$processing_pictures[] = $absolute_path; $processing_pictures[] = $absolute_path;

View File

@ -9,6 +9,7 @@
*/ */
define ('POCHE', '1.8.0'); define ('POCHE', '1.8.0');
require 'check_essentials.php';
require 'check_setup.php'; require 'check_setup.php';
require_once 'inc/poche/global.inc.php'; require_once 'inc/poche/global.inc.php';

BIN
locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.mo Executable file → Normal file

Binary file not shown.

View File

@ -1,58 +1,40 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: wballabag\n" "Project-Id-Version: wallabag\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-02-24 15:19+0300\n" "POT-Creation-Date: 2014-02-25 15:17+0300\n"
"PO-Revision-Date: 2014-02-24 15:29+0300\n" "PO-Revision-Date: \n"
"Last-Translator: Maryana <mariroz@mr.lviv.ua>\n" "Last-Translator: skibbipl <skibbipl@users.noreply.github.com>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: \n" "Language: pl\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" "X-Generator: Poedit 1.6.6\n"
"X-Poedit-Basepath: .\n" "X-Poedit-Basepath: .\n"
"X-Poedit-Language: Polish\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"X-Poedit-Country: POLAND\n" "|| n%100>=20) ? 1 : 2);\n"
"X-Poedit-SourceCharset: utf-8\n" "X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-testing\n" "X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-"
"testing\n"
msgid "poche, a read it later open source system" msgid "wallabag, a read it later open source system"
msgstr "poche, serwis odrocznego czytania open source" msgstr "wallabag, open source'owy system typu \"przeczytaj to później\""
msgid "login failed: user doesn't exist" msgid "login failed: user doesn't exist"
msgstr "logowanie nie udało się: użytkownik nie istnieje" msgstr "logowanie się nie powiodło: użytkownik nie istnieje"
msgid "home" msgid "return home"
msgstr "strona domowa" msgstr "powrót do strony domowej"
msgid "favorites"
msgstr "ulubione"
msgid "archive"
msgstr "archiwum"
msgid "tags"
msgstr "tagi"
msgid "config" msgid "config"
msgstr "ustawienia" msgstr "konfiguracja"
msgid "logout" msgid "Saving articles"
msgstr "wyloguj" msgstr "Zapisywanie artykułów"
msgid "back to home" msgid "There are several ways to save an article:"
msgstr "wróć do strony domowej" msgstr "Istnieje kilka sposobów aby zapisać artykuł:"
msgid "Tags"
msgstr "Tagi"
#, fuzzy
msgid "Poching a link"
msgstr "Zapisywanie linków"
msgid "You can poche a link by several methods:"
msgstr "Istnieje kilka sposobów aby zapisać link:"
msgid "read the documentation" msgid "read the documentation"
msgstr "przeczytaj dokumentację" msgstr "przeczytaj dokumentację"
@ -60,54 +42,98 @@ msgstr "przeczytaj dokumentację"
msgid "download the extension" msgid "download the extension"
msgstr "pobierz rozszerzenie" msgstr "pobierz rozszerzenie"
msgid "via F-Droid"
msgstr "przez F-Droid"
msgid " or "
msgstr "albo "
msgid "via Google Play"
msgstr "przez Google Play"
msgid "download the application" msgid "download the application"
msgstr "pobierz aplikację" msgstr "pobierz aplikację"
#, fuzzy msgid "By filling this field"
msgid "by filling this field"
msgstr "Poprzez wypełnienie tego pola" msgstr "Poprzez wypełnienie tego pola"
msgid "poche it!" msgid "bag it!"
msgstr "zapisz!" msgstr "zapisz!"
#, fuzzy msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
msgid "bookmarklet: drag & drop this link to your bookmarks bar" msgstr "Skryptozakładka: przeciągnij i upuść ten link na twój pasek zakładek"
msgstr "Bookmarklet: przeciągnij i upucs ten link na pasek zakladek"
msgid "Updating poche" msgid "Upgrading wallabag"
msgstr "Aktualizacja poche" msgstr "Aktualizacja wallabag"
msgid "your version" msgid "Installed version"
msgstr "twoja wersja" msgstr "Zainstalowana wersja"
#, fuzzy msgid "Latest stable version"
msgid "latest stable version"
msgstr "Najnowsza stabilna wersja" msgstr "Najnowsza stabilna wersja"
#, fuzzy msgid "A more recent stable version is available."
msgid "a more recent stable version is available."
msgstr "Nowsza stabilna wersja jest dostępna." msgstr "Nowsza stabilna wersja jest dostępna."
msgid "you are up to date." msgid "You are up to date."
msgstr "brak nowych aktualizacji." msgstr "Posiadasz najnowszą wersję."
msgid "latest dev version" msgid "Latest dev version"
msgstr "najnowsza wersja rozwojowa" msgstr "Najnowsza wersja developerska"
msgid "a more recent development version is available." msgid "A more recent development version is available."
msgstr "Nowsza wersja rozwojowa jest dostępna." msgstr "Nowsza developerska wersja jest dostępna."
msgid "Feeds"
msgstr "Kanały"
msgid ""
"Your feed token is currently empty and must first be generated to enable "
"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
msgstr ""
"Twój token kanału jest aktualnie pusty i musi zostać wygenerowany, aby "
"włączyć kanały. Kliknij <a href='?feed&amp;action=generate'>tutaj, aby go "
"wygenerować</a>."
msgid "Unread feed"
msgstr "Nieprzeczytane kanały"
msgid "Favorites feed"
msgstr "Ulubione kanały"
msgid "Archive feed"
msgstr "Kanały archiwum"
msgid "Your token:"
msgstr "Twój token:"
msgid "Your user id:"
msgstr "Twój id użytkownika:"
msgid ""
"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!"
"</a>."
msgstr ""
"Możesz wygenewrować ponownie swój token: <a href='?feed&amp;"
"action=generate'>generuj!</a>."
msgid "Change your theme" msgid "Change your theme"
msgstr "Zmień motyw" msgstr "Zmień swój motyw"
msgid "Theme:" msgid "Theme:"
msgstr "Motyw:" msgstr "Motyw:"
msgid "Update" msgid "Update"
msgstr "Aktualizacja" msgstr "Aktualizuj"
msgid "Change your language"
msgstr "Zmień język"
msgid "Language:"
msgstr "Język:"
msgid "Change your password" msgid "Change your password"
msgstr "Zmień hasło" msgstr "Zmień swoje hasło"
msgid "New password:" msgid "New password:"
msgstr "Nowe hasło:" msgstr "Nowe hasło:"
@ -116,91 +142,104 @@ msgid "Password"
msgstr "Hasło" msgstr "Hasło"
msgid "Repeat your new password:" msgid "Repeat your new password:"
msgstr "Powtórz hasło jeszcze raz:" msgstr "Powtórz twoje nowe hasło:"
msgid "Import" msgid "Import"
msgstr "Import" msgstr "Import"
msgid "Please execute the import script locally, it can take a very long time." msgid ""
msgstr "Proszę wykonać skrypt importu lokalnie, ponieważ moze to trwać bardzo długo." "Please execute the import script locally as it can take a very long time."
msgstr ""
"Proszę wykonaj skrypt importu lokalnie, ponieważ może to trwać bardzo długo."
msgid "More infos in the official doc:" msgid "More info in the official documentation:"
msgstr "Więcej informacji znajduje się w oficjalnej dokumentacji:" msgstr "Więcej informacji znajdziesz w oficjalnej dokumentacji:"
msgid "import from Pocket" msgid "Import from Pocket"
msgstr "Importuj z Pocket'a" msgstr "Importuj z Pocket"
#, php-format #, php-format
msgid "(you must have a %s file on your server)" msgid "(you must have a %s file on your server)"
msgstr "(musisz mieć plik %s na serwerze)" msgstr "(musisz mieć plik %s na swoim serwerze)"
msgid "import from Readability" msgid "Import from Readability"
msgstr "Importuj z Readability" msgstr "Importuj z Readability"
msgid "import from Instapaper" msgid "Import from Instapaper"
msgstr "Importuj z Instapaper" msgstr "Importuj z Instapaper"
#, fuzzy msgid "Import from wallabag"
msgid "Export your poche datas" msgstr "Importuj z wallabag"
msgstr "Exportuj dane poche"
msgid "Export your wallabag data"
msgstr "Wyeksportuj swoje dane wallabag"
msgid "Click here" msgid "Click here"
msgstr "Kliknij tu" msgstr "Kliknij tu"
#, fuzzy msgid "to download your database."
msgid "to export your poche datas." msgstr "aby pobrać twoją bazę danych."
msgstr "aby wyeksportować dane poche."
msgid "to export your wallabag data."
msgstr "aby wyeksportować dane wallabag."
msgid "Cache"
msgstr "Cache"
msgid "to delete cache."
msgstr "aby wyczyścić cache."
msgid "You can enter multiple tags, separated by commas."
msgstr "Możesz wprowadzić wiele tagów, oddzielonych przecinkami."
msgid "return to article"
msgstr "powrót do artykułu"
msgid "plop" msgid "plop"
msgstr "plop" msgstr "plop"
msgid "installation" msgid ""
msgstr "instalacja" "You can <a href='wallabag_compatibility_test.php'>check your configuration "
"here</a>."
msgid "install your wallabag" msgstr ""
msgstr "zainstaluj wallabag" "Możesz <a href='wallabag_compatibility_test.php'>sprawdzić swoją "
"konfigurację tutaj</a>."
msgid "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation on wallabag website</a>."
msgstr "wallabag nie jest jeszcze zainstalowany. Proszę wypełnić poniższy formularz, aby go zainstalować. Nie wahaj się <a href='http://doc.wallabag.org/'>zapoznać się z dokumentacją na stronie wallabag</a>."
msgid "Login"
msgstr "Login"
msgid "Repeat your password"
msgstr "Powtórz hasło"
msgid "Install"
msgstr "Instaluj"
msgid "favoris" msgid "favoris"
msgstr "ulubione" msgstr "favoris"
msgid "archive"
msgstr "archiwum"
msgid "unread" msgid "unread"
msgstr "nieprzeczytane" msgstr "nieprzeczytane"
msgid "by date asc" msgid "by date asc"
msgstr "według daty rosnąco" msgstr "po dacie rosnąco"
msgid "by date" msgid "by date"
msgstr "wg daty" msgstr "po dacie"
msgid "by date desc" msgid "by date desc"
msgstr "według daty malejąco" msgstr "po dacie malejąco"
msgid "by title asc" msgid "by title asc"
msgstr "według tytułu rosnąco" msgstr "po tytule rosnąco"
msgid "by title" msgid "by title"
msgstr "wg tytułu" msgstr "po tytule"
msgid "by title desc" msgid "by title desc"
msgstr "według tytułu malejąco" msgstr "po tytule malejąco"
msgid "No link available here!" msgid "Tag"
msgstr "Brak dostępnych linków!" msgstr "Otaguj"
msgid "toggle mark as read" msgid "No articles found."
msgstr "przełącz jako przeczytane" msgstr "Nie znaleziono artykułów."
msgid "Toggle mark as read"
msgstr "Przełącz jako przeczytane"
msgid "toggle favorite" msgid "toggle favorite"
msgstr "przełącz ulubione" msgstr "przełącz ulubione"
@ -212,212 +251,82 @@ msgid "original"
msgstr "oryginał" msgstr "oryginał"
msgid "estimated reading time:" msgid "estimated reading time:"
msgstr "szacowany czas odczytu:" msgstr "szacowany czas czytania:"
msgid "mark all the entries as read"
msgstr "zaznacz wszystkie wpisy jako przeczytane"
msgid "results" msgid "results"
msgstr "wyniki" msgstr "rezultaty"
msgid "installation"
msgstr "instalacja"
msgid "install your wallabag"
msgstr "zainstauj wallabag"
msgid ""
"wallabag is still not installed. Please fill the below form to install it. "
"Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation "
"on wallabag website</a>."
msgstr ""
"wallabag wciąż nie jest zainstalowany. Proszę wypełnij poniższy formularz "
"aby go zainstalować. Nie wahaj się <a href='http://doc.wallabag."
"org/'>przeczytać dokumentacji na stronie wallabag</a>."
msgid "Login"
msgstr "Login"
msgid "Repeat your password"
msgstr "Powtórz swoje hasło"
msgid "Install"
msgstr "Zainstauj"
msgid "login to your wallabag" msgid "login to your wallabag"
msgstr "zaloguj się do swojego wallabag" msgstr "zaloguj się do twojego wallabag"
msgid "Login to wallabag"
msgstr "Logowanie do wallabag"
msgid "you are in demo mode, some features may be disabled." msgid "you are in demo mode, some features may be disabled."
msgstr "jesteś w trybie demo, niektóre funkcje mogą być wyłączone." msgstr "jesteś w trybie demo, niektóre funkcjonalności mogą być wyłączone."
msgid "Username"
msgstr "Nazwa użytkownika"
msgid "Stay signed in" msgid "Stay signed in"
msgstr "Pozostań zalogowany" msgstr "Pozostań zalogowany"
msgid "(Do not check on public computers)" msgid "(Do not check on public computers)"
msgstr "(Nie sprawdzaj na publicznych komputerach)" msgstr "(Nie zaznaczaj na komputerach z publicznym dostępem)"
msgid "Saving articles"
msgstr "Zapisywanie artykułów"
msgid "There are several ways to save an article:"
msgstr "Istnieje kilka sposobów aby zapisać artykuł:"
msgid "via F-Droid"
msgstr "przez F-Droid"
msgid " or "
msgstr "albo"
msgid "via Google Play"
msgstr "przez Google Play"
msgid "By filling this field"
msgstr "Poprzez wypełnienie tego pola"
msgid "bag it!"
msgstr "zapisz!"
msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
msgstr "Bookmarklet: przeciągnij i upuść ten link na pasek zakladek"
msgid "Upgrading wallabag"
msgstr "Aktualizacja wallabag"
msgid "Installed version"
msgstr "Zainstalowana wersja "
msgid "Latest stable version"
msgstr "Najnowsza stabilna wersja"
msgid "A more recent stable version is available."
msgstr "Nowsza stabilna wersja jest dostępna."
msgid "You are up to date."
msgstr "Brak nowych aktualizacji."
msgid "Latest dev version"
msgstr "Najnowsza wersja rozwojowa"
#, fuzzy
msgid "A more recent development version is available."
msgstr "Nowsza wersja rozwojowa jest dostępna."
msgid "Feeds"
msgstr "Kanały (feeds)"
msgid "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
msgstr "Twój token kanału jest pusty i musi najpierw zostać wygenerowany. Kliknij <a href='?feed&action=generate'>tu aby go wygenerować</a>."
msgid "Unread feed"
msgstr "Kanał nieprzeczytanych"
msgid "Favorites feed"
msgstr "Kanał ulubionych"
msgid "Archive feed"
msgstr "Kanał archiwum"
msgid "Your token:"
msgstr "Twój token: "
msgid "Your user id:"
msgstr "Twój identyfikator użytkownika:"
msgid "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>."
msgstr "Możesz wygenerować token ponownie: kliknij <a href='?feed&amp;action=generate'>generuj!</a>."
msgid "Change your language"
msgstr "Zmień język"
msgid "Language:"
msgstr "Język:"
msgid "Please execute the import script locally as it can take a very long time."
msgstr "Proszę wykonać skrypt importu lokalnie, gdyż moze to trwać bardzo długo."
#, fuzzy
msgid "More info in the official documentation:"
msgstr "Więcej informacji znajduje się w oficjalnej dokumentacji:"
msgid "Import from Pocket"
msgstr "Іmport z Pocket'a"
msgid "Import from Readability"
msgstr "Import z Readability"
msgid "Import from Instapaper"
msgstr "Import z Instapaper"
msgid "Import from wallabag"
msgstr "Import z wallabag"
msgid "Export your wallabag data"
msgstr "Eksportowac dane wallabag"
msgid "to download your database."
msgstr "aby pobrac bazę danych."
msgid "to export your wallabag data."
msgstr "aby eksportować dane wallabag."
msgid "Cache"
msgstr "Cache"
msgid "to delete cache."
msgstr "aby wyczyścić cache."
msgid "tweet"
msgstr "tweet"
#, fuzzy
msgid "email"
msgstr "Wyślij email"
msgid "shaarli"
msgstr "shaarli"
msgid "flattr"
msgstr "flattr"
msgid "this article appears wrong?"
msgstr "Czy ten artykuł wyświetla się nieprawidłowo?"
msgid "You can enter multiple tags, separated by commas."
msgstr "Możesz wprowadzić wiele tagów, rozdzielając je przecinkami."
msgid "return to article"
msgstr "wróć do artykułu"
#, fuzzy
msgid "powered by"
msgstr "zasilany przez"
msgid "debug mode is on so cache is off."
msgstr "tryb debugowania jest włączony, więc cashe jest wyłączony."
msgid "your wallabag version:"
msgstr "twoja wersja wallabag:"
msgid "storage:"
msgstr "magazyn:"
msgid "save a link"
msgstr "zapisz link"
msgid "return home"
msgstr "wróć do strony domowej"
msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>."
msgstr "Możesz <a href='wallabag_compatibility_test.php'>sprawdzić swoją konfigurację tu</a>."
msgid "Tag"
msgstr "Tag"
msgid "No articles found."
msgstr "Nie znaleziono artykułów."
msgid "Toggle mark as read"
msgstr "Przełącz jako przeczytane"
msgid "mark all the entries as read"
msgstr "zaznacz wszystko jako przeczytane"
msgid "Login to wallabag"
msgstr "Zaloguj się do wallabag"
msgid "Username"
msgstr "Nazwa użytkownika"
msgid "Sign in" msgid "Sign in"
msgstr "Login" msgstr "Zaloguj się"
msgid "favorites"
msgstr "ulubione"
msgid "estimated reading time :"
msgstr "szacowany czas czytania :"
msgid "Mark all the entries as read"
msgstr "Zaznacz wszystkie wpisy jako przeczytane"
msgid "Return home" msgid "Return home"
msgstr "Wróć do strony domowej" msgstr "Powrót na stronę domową"
msgid "Back to top" msgid "Back to top"
msgstr "Wróć na górę" msgstr "Powrót na górę"
msgid "Mark as read" msgid "Mark as read"
msgstr "Zaznacz jako przeczytane" msgstr "Oznacz jako przeczytane"
msgid "Favorite" msgid "Favorite"
msgstr "Ulubione" msgstr "Ulubione"
msgid "Toggle favorite" msgid "Toggle favorite"
msgstr "Zaznacz jako ulubione" msgstr "Przełącz ulubione"
msgid "Delete" msgid "Delete"
msgstr "Usuń" msgstr "Usuń"
@ -426,13 +335,19 @@ msgid "Tweet"
msgstr "Tweet" msgstr "Tweet"
msgid "Email" msgid "Email"
msgstr "Wyślij email" msgstr "Email"
msgid "shaarli"
msgstr "shaarli"
msgid "flattr"
msgstr "flattr"
msgid "Does this article appear wrong?" msgid "Does this article appear wrong?"
msgstr "Czy ten artykuł wyświetla się nieprawidłowo?" msgstr "Czy ten artykuł jest wyświetlany niepoprawnie?"
msgid "tags:" msgid "tags:"
msgstr "tegi:" msgstr "tagi:"
msgid "Edit tags" msgid "Edit tags"
msgstr "Edytuj tagi" msgstr "Edytuj tagi"
@ -440,75 +355,160 @@ msgstr "Edytuj tagi"
msgid "save link!" msgid "save link!"
msgstr "zapisz link!" msgstr "zapisz link!"
#, fuzzy msgid "home"
msgid "estimated reading time :" msgstr "strona domowa"
msgstr "szacowany czas odczytu:"
msgid "Mark all the entries as read" msgid "tags"
msgstr "Oznacz wszystko jako przeczytane" msgstr "tagi"
msgid "logout"
msgstr "wyloguj"
msgid "powered by"
msgstr "w oparciu o"
msgid "debug mode is on so cache is off."
msgstr "tryb debug jest włączony zatem cache jest wyłączony."
msgid "your wallabag version:"
msgstr "wersja twojego wallabag:"
msgid "storage:"
msgstr "storage:"
msgid "save a link"
msgstr "zapisz link"
msgid "back to home"
msgstr "powrót do strony domowej"
msgid "toggle mark as read"
msgstr "przełącz jako przeczytane"
msgid "tweet"
msgstr "tweet"
msgid "email"
msgstr "email"
msgid "this article appears wrong?"
msgstr "ten artykuł wygląda niepoprawnie?"
msgid "No link available here!"
msgstr "No link available here!"
#, fuzzy
msgid "Poching a link"
msgstr "Poching a link"
msgid "by filling this field"
msgstr "przez wypełnienie tego pola"
msgid "bookmarklet: drag & drop this link to your bookmarks bar"
msgstr "skryptozakładka: przeciągnij i upuść ten link na twój pasek zakładek"
msgid "your version"
msgstr "twoja wersja"
msgid "latest stable version"
msgstr "najnowsza stabilna wersja"
msgid "a more recent stable version is available."
msgstr "nowsza wersja stabilna jest dostępna."
msgid "you are up to date."
msgstr "posiadasz najnowszą wersję."
msgid "latest dev version"
msgstr "najnowsza wersja developerska"
msgid "a more recent development version is available."
msgstr "nowsza wersja developerska jest dostępna."
msgid "Please execute the import script locally, it can take a very long time."
msgstr ""
"Please execute the import script locally, it can take a very long time."
msgid "More infos in the official doc:"
msgstr "More infos in the official doc:"
msgid "import from Pocket"
msgstr "import from Pocket"
msgid "import from Readability"
msgstr "import from Readability"
msgid "import from Instapaper"
msgstr "import from Instapaper"
msgid "Tags"
msgstr "Tagi"
msgid "Untitled" msgid "Untitled"
msgstr "Bez nazwy" msgstr "Untitled"
msgid "the link has been added successfully" msgid "the link has been added successfully"
msgstr "link został pomyślnie dodany" msgstr "link został dodany pomyślnie"
msgid "error during insertion : the link wasn't added" msgid "error during insertion : the link wasn't added"
msgstr "błąd podczas wprowadzania: link nie został dodany" msgstr "błąd podczas dodawania : link nie został dodany"
msgid "the link has been deleted successfully" msgid "the link has been deleted successfully"
msgstr "link zostal pomyślnie usunięty" msgstr "link został usunięty pomyślnie"
msgid "the link wasn't deleted" msgid "the link wasn't deleted"
msgstr "link nie został usunięty" msgstr "link nie został usunięty"
msgid "Article not found!" msgid "Article not found!"
msgstr "Nie znaleziono artykułu." msgstr "Artykuł nie znaleziony!"
msgid "previous" msgid "previous"
msgstr "poprzednia" msgstr "poprzedni"
msgid "next" msgid "next"
msgstr "następna" msgstr "następny"
msgid "in demo mode, you can't update your password" msgid "in demo mode, you can't update your password"
msgstr "w trybie demo, nie można zmieniać hasła" msgstr "w trybie demo nie możesz zaktualizować swojego hasła"
msgid "your password has been updated" msgid "your password has been updated"
msgstr "twoje hasło zostało zmienione" msgstr "twoje hasło zostało zaktualizowane"
msgid "the two fields have to be filled & the password must be the same in the two fields" msgid ""
msgstr "oba pola muszą być wypełnione i hasła muszę być takie same w obu polach" "the two fields have to be filled & the password must be the same in the two "
"fields"
msgstr ""
"oba pola muszą być wypełnione oraz hasło musi być takie same w obu polach"
msgid "still using the \"" msgid "still using the \""
msgstr "nadal w użyciu \"" msgstr "wciąż używam \""
msgid "that theme does not seem to be installed" msgid "that theme does not seem to be installed"
msgstr "wydaje się że ten motyw nie jest zainstalowany" msgstr "ten motyw nie wygląda na zainstalowany"
msgid "you have changed your theme preferences" msgid "you have changed your theme preferences"
msgstr "ustawienia motywu zostały zmienione" msgstr "zmieniłeś swoje preferencje motywu"
msgid "that language does not seem to be installed" msgid "that language does not seem to be installed"
msgstr "wydaje się że ten język nie jest zainstalowany" msgstr "ten język nie wygląda na zainstalowany"
msgid "you have changed your language preferences" msgid "you have changed your language preferences"
msgstr "ustawienia języka zostały zmienione" msgstr "zmieniłeś swoje preferencje językowe"
msgid "login failed: you have to fill all fields" msgid "login failed: you have to fill all fields"
msgstr "logowanie nie powiodlo się: musisz wypełnić wszystkie pola" msgstr "logowanie się nie powiodło: musisz wypełnić wszystkie pola"
msgid "welcome to your wallabag" msgid "welcome to your wallabag"
msgstr "Witamy w wallabag" msgstr "witaj w twoim wallabag"
msgid "login failed: bad login or password" msgid "login failed: bad login or password"
msgstr "logowanie nie powiodlo się: niepoprawny login lub hasło" msgstr "logowanie się nie powiodło: nieprawidłowy login lub hasło"
msgid "import from instapaper completed" msgid "import from instapaper completed"
msgstr "import z instapaper'a zakończony" msgstr "import z instapaper zakończony"
msgid "import from pocket completed" msgid "import from pocket completed"
msgstr "import z pocket'a zakończony" msgstr "import z pocket zakończony"
msgid "import from Readability completed. " msgid "import from Readability completed. "
msgstr "import z Readability zakończony. " msgstr "import z Readability zakończony. "
@ -520,25 +520,34 @@ msgid "Unknown import provider."
msgstr "Nieznany dostawca importu." msgstr "Nieznany dostawca importu."
msgid "Incomplete inc/poche/define.inc.php file, please define \"" msgid "Incomplete inc/poche/define.inc.php file, please define \""
msgstr "Niekompletny plik inc/poche/define.inc.php, proszę zdefiniować \"" msgstr "Niekompletny plik inc/poche/define.inc.php, proszę zdefiniuj \""
msgid "Could not find required \"" msgid "Could not find required \""
msgstr "Nie znaleziono potrzebnego \"" msgstr "Nie znaleziono wymaganego \""
msgid "Uh, there is a problem while generating feeds." msgid "Uh, there is a problem while generating feeds."
msgstr "Uh, jest problem podczas generowania kanałów." msgstr "Ah, wystąpił problem podczas generowania kanałów."
msgid "Cache deleted." msgid "Cache deleted."
msgstr "Cache wyczyszczony." msgstr "Cache usunięty."
msgid "Oops, it seems you don't have PHP 5." msgid "Oops, it seems you don't have PHP 5."
msgstr "Oops, wygląda ze nie masz PHP 5." msgstr "Oops, wygląda na to że nie masz PHP 5."
#~ msgid "Import from poche" #~ msgid "poche it!"
#~ msgstr "Import z poche" #~ msgstr "poche it!"
#~ msgid "welcome to your poche" #~ msgid "Updating poche"
#~ msgstr "witamy w poche" #~ msgstr "Updating poche"
#~ msgid "see you soon!" #~ msgid "create an issue"
#~ msgstr "do zobaczenia wkrótce!" #~ msgstr "create an issue"
#~ msgid "or"
#~ msgstr "or"
#~ msgid "contact us by mail"
#~ msgstr "contact us by mail"
#~ msgid "your poche version:"
#~ msgstr "your poche version:"

View File

@ -4,7 +4,7 @@
{% trans "Save a link" %}</h2> {% trans "Save a link" %}</h2>
<input type="hidden" name="autoclose" value="1" /> <input type="hidden" name="autoclose" value="1" />
<input required placeholder="example.com/article" class="addurl" id="plainurl" name="plainurl" type="url" /> <input required placeholder="example.com/article" class="addurl" id="plainurl" name="plainurl" type="url" />
<span id="add-link-result"></span>
<input type="submit" value="{% trans "save link!" %}" /> <input type="submit" value="{% trans "save link!" %}" />
<div id="add-link-result"></div>
</form> </form>
</div> </div>

View File

@ -111,7 +111,7 @@
<fieldset class="w500p"> <fieldset class="w500p">
<div class="row"> <div class="row">
<label class="col w150p" for="file">{% trans "File:" %}</label> <label class="col w150p" for="file">{% trans "File:" %}</label>
<input class="col" type="file" id="file" name="file" tabindex="4"> <input class="col" type="file" id="file" name="file" tabindex="4" required="required">
</div> </div>
<div class="row mts txtcenter"> <div class="row mts txtcenter">
<button class="bouton" type="submit" tabindex="4">{% trans "Import" %}</button> <button class="bouton" type="submit" tabindex="4">{% trans "Import" %}</button>
@ -121,8 +121,6 @@
<p><a href="?import">{% trans "You can click here to fetch content for articles with no content." %}</a></p> <p><a href="?import">{% trans "You can click here to fetch content for articles with no content." %}</a></p>
<h2>{% trans "Export your wallabag data" %}</h2> <h2>{% trans "Export your wallabag data" %}</h2>
{% if constant('STORAGE') == 'sqlite' %}
<p><a href="?download" target="_blank">{% trans "Click here" %}</a> {% trans "to download your database." %}</p>{% endif %}
<p><a href="?export" target="_blank">{% trans "Click here" %}</a> {% trans "to export your wallabag data." %}</p> <p><a href="?export" target="_blank">{% trans "Click here" %}</a> {% trans "to export your wallabag data." %}</p>
<h2>{% trans "Fancy an E-Book ?" %}</h2> <h2>{% trans "Fancy an E-Book ?" %}</h2>

View File

@ -630,7 +630,7 @@ a.add-to-wallabag-link-after:after {
#add-link-result { #add-link-result {
font-weight: bold; font-weight: bold;
margin-top: 10px; font-size: 0.9em;
} }
/* ========================================================================== /* ==========================================================================
@ -923,6 +923,13 @@ blockquote {
text-decoration: underline; text-decoration: underline;
} }
pre code {
font-family: "Courier New", Courier, monospace;
border: 1px solid #ccc;
font-size: 0.96em;
}
/* ========================================================================== /* ==========================================================================
6 = Media Queries 6 = Media Queries
========================================================================== */ ========================================================================== */
@ -1055,3 +1062,4 @@ blockquote {
left: 0; left: 0;
} }
} }

View File

@ -4,6 +4,7 @@
{% endblock %} {% endblock %}
{% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %} {% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %}
{% block content %} {% block content %}
{% include '_highlight.twig' %}
<div id="article_toolbar"> <div id="article_toolbar">
<ul class="links"> <ul class="links">
<li class="topPosF"><a href="#top" title="{% trans "Back to top" %}" class="tool top icon icon-arrow-up-thick"><span>{% trans "Back to top" %}</span></a></li> <li class="topPosF"><a href="#top" title="{% trans "Back to top" %}" class="tool top icon icon-arrow-up-thick"><span>{% trans "Back to top" %}</span></a></li>

4
themes/default/_highlight.twig Executable file
View File

@ -0,0 +1,4 @@
{# include excelent highlight.js library for code highligting, see http://highlightjs.org/ #}
<link rel="stylesheet" href="{{ poche_url }}themes/default/highlightjs/styles/github.css">
<script src="{{ poche_url }}themes/default/highlightjs/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>

View File

@ -110,7 +110,7 @@
<fieldset class="w500p"> <fieldset class="w500p">
<div class="row"> <div class="row">
<label class="col w150p" for="file">{% trans "File:" %}</label> <label class="col w150p" for="file">{% trans "File:" %}</label>
<input class="col" type="file" id="file" name="file" tabindex="4"> <input class="col" type="file" id="file" name="file" tabindex="4" required="required">
</div> </div>
<div class="row mts txtcenter"> <div class="row mts txtcenter">
<button class="bouton" type="submit" tabindex="4">{% trans "Import" %}</button> <button class="bouton" type="submit" tabindex="4">{% trans "Import" %}</button>
@ -121,7 +121,6 @@
<h2>{% trans "Export your wallabag data" %}</h2> <h2>{% trans "Export your wallabag data" %}</h2>
{% if constant('STORAGE') == 'sqlite' %} {% if constant('STORAGE') == 'sqlite' %}
<p><a href="?download" target="_blank">{% trans "Click here" %}</a> {% trans "to download your database." %}</p>{% endif %}
<p><a href="?export" target="_blank">{% trans "Click here" %}</a> {% trans "to export your wallabag data." %}</p> <p><a href="?export" target="_blank">{% trans "Click here" %}</a> {% trans "to export your wallabag data." %}</p>
<h2>{% trans "Cache" %}</h2> <h2>{% trans "Cache" %}</h2>

View File

@ -430,3 +430,9 @@ a.add-to-wallabag-link-after:after {
color: black; color: black;
width: 50px; width: 50px;
} }
pre code {
font-family: "Courier New", Courier, monospace;
border: 1px solid #ddd;
font-size: 0.96em;
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,152 @@
/*
Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
*/
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
background: #f0f0f0;
}
.hljs,
.hljs-subst,
.hljs-tag .hljs-title,
.lisp .hljs-title,
.clojure .hljs-built_in,
.nginx .hljs-title {
color: black;
}
.hljs-string,
.hljs-title,
.hljs-constant,
.hljs-parent,
.hljs-tag .hljs-value,
.hljs-rules .hljs-value,
.hljs-preprocessor,
.hljs-pragma,
.haml .hljs-symbol,
.ruby .hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.hljs-template_tag,
.django .hljs-variable,
.smalltalk .hljs-class,
.hljs-addition,
.hljs-flow,
.hljs-stream,
.bash .hljs-variable,
.apache .hljs-tag,
.apache .hljs-cbracket,
.tex .hljs-command,
.tex .hljs-special,
.erlang_repl .hljs-function_or_atom,
.asciidoc .hljs-header,
.markdown .hljs-header,
.coffeescript .hljs-attribute {
color: #800;
}
.smartquote,
.hljs-comment,
.hljs-annotation,
.hljs-template_comment,
.diff .hljs-header,
.hljs-chunk,
.asciidoc .hljs-blockquote,
.markdown .hljs-blockquote {
color: #888;
}
.hljs-number,
.hljs-date,
.hljs-regexp,
.hljs-literal,
.hljs-hexcolor,
.smalltalk .hljs-symbol,
.smalltalk .hljs-char,
.go .hljs-constant,
.hljs-change,
.lasso .hljs-variable,
.makefile .hljs-variable,
.asciidoc .hljs-bullet,
.markdown .hljs-bullet,
.asciidoc .hljs-link_url,
.markdown .hljs-link_url {
color: #080;
}
.hljs-label,
.hljs-javadoc,
.ruby .hljs-string,
.hljs-decorator,
.hljs-filter .hljs-argument,
.hljs-localvars,
.hljs-array,
.hljs-attr_selector,
.hljs-important,
.hljs-pseudo,
.hljs-pi,
.haml .hljs-bullet,
.hljs-doctype,
.hljs-deletion,
.hljs-envvar,
.hljs-shebang,
.apache .hljs-sqbracket,
.nginx .hljs-built_in,
.tex .hljs-formula,
.erlang_repl .hljs-reserved,
.hljs-prompt,
.asciidoc .hljs-link_label,
.markdown .hljs-link_label,
.vhdl .hljs-attribute,
.clojure .hljs-attribute,
.asciidoc .hljs-attribute,
.lasso .hljs-attribute,
.coffeescript .hljs-property,
.hljs-phony {
color: #88f;
}
.hljs-keyword,
.hljs-id,
.hljs-title,
.hljs-built_in,
.css .hljs-tag,
.hljs-javadoctag,
.hljs-phpdoc,
.hljs-yardoctag,
.smalltalk .hljs-class,
.hljs-winutils,
.bash .hljs-variable,
.apache .hljs-tag,
.go .hljs-typename,
.tex .hljs-command,
.asciidoc .hljs-strong,
.markdown .hljs-strong,
.hljs-request,
.hljs-status {
font-weight: bold;
}
.asciidoc .hljs-emphasis,
.markdown .hljs-emphasis {
font-style: italic;
}
.nginx .hljs-built_in {
font-weight: normal;
}
.coffeescript .javascript,
.javascript .xml,
.lasso .markup,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
opacity: 0.5;
}

View File

@ -0,0 +1,127 @@
/*
github.com style (c) Vasily Polovnyov <vast@whiteants.net>
*/
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
color: #333;
background: #f8f8f8;
}
.hljs-comment,
.hljs-template_comment,
.diff .hljs-header,
.hljs-javadoc {
color: #998;
font-style: italic;
}
.hljs-keyword,
.css .rule .hljs-keyword,
.hljs-winutils,
.javascript .hljs-title,
.nginx .hljs-title,
.hljs-subst,
.hljs-request,
.hljs-status {
color: #333;
font-weight: bold;
}
.hljs-number,
.hljs-hexcolor,
.ruby .hljs-constant {
color: #099;
}
.hljs-string,
.hljs-tag .hljs-value,
.hljs-phpdoc,
.tex .hljs-formula {
color: #d14;
}
.hljs-title,
.hljs-id,
.coffeescript .hljs-params,
.scss .hljs-preprocessor {
color: #900;
font-weight: bold;
}
.javascript .hljs-title,
.lisp .hljs-title,
.clojure .hljs-title,
.hljs-subst {
font-weight: normal;
}
.hljs-class .hljs-title,
.haskell .hljs-type,
.vhdl .hljs-literal,
.tex .hljs-command {
color: #458;
font-weight: bold;
}
.hljs-tag,
.hljs-tag .hljs-title,
.hljs-rules .hljs-property,
.django .hljs-tag .hljs-keyword {
color: #000080;
font-weight: normal;
}
.hljs-attribute,
.hljs-variable,
.lisp .hljs-body {
color: #008080;
}
.hljs-regexp {
color: #009926;
}
.hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.lisp .hljs-keyword,
.tex .hljs-special,
.hljs-prompt {
color: #990073;
}
.hljs-built_in,
.lisp .hljs-title,
.clojure .hljs-built_in {
color: #0086b3;
}
.hljs-preprocessor,
.hljs-pragma,
.hljs-pi,
.hljs-doctype,
.hljs-shebang,
.hljs-cdata {
color: #999;
font-weight: bold;
}
.hljs-deletion {
background: #fdd;
}
.hljs-addition {
background: #dfd;
}
.diff .hljs-change {
background: #0086b3;
}
.hljs-chunk {
color: #aaa;
}

View File

@ -0,0 +1,148 @@
/*
Google Code style (c) Aahan Krish <geekpanth3r@gmail.com>
*/
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
background: white;
color: black;
}
.hljs-comment,
.hljs-template_comment,
.hljs-javadoc {
color: #800;
}
.hljs-keyword,
.method,
.hljs-list .hljs-title,
.clojure .hljs-built_in,
.nginx .hljs-title,
.hljs-tag .hljs-title,
.setting .hljs-value,
.hljs-winutils,
.tex .hljs-command,
.http .hljs-title,
.hljs-request,
.hljs-status {
color: #008;
}
.hljs-envvar,
.tex .hljs-special {
color: #660;
}
.hljs-string,
.hljs-tag .hljs-value,
.hljs-cdata,
.hljs-filter .hljs-argument,
.hljs-attr_selector,
.apache .hljs-cbracket,
.hljs-date,
.hljs-regexp,
.coffeescript .hljs-attribute {
color: #080;
}
.hljs-sub .hljs-identifier,
.hljs-pi,
.hljs-tag,
.hljs-tag .hljs-keyword,
.hljs-decorator,
.ini .hljs-title,
.hljs-shebang,
.hljs-prompt,
.hljs-hexcolor,
.hljs-rules .hljs-value,
.hljs-literal,
.hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.hljs-number,
.css .hljs-function,
.clojure .hljs-attribute {
color: #066;
}
.hljs-class .hljs-title,
.haskell .hljs-type,
.smalltalk .hljs-class,
.hljs-javadoctag,
.hljs-yardoctag,
.hljs-phpdoc,
.hljs-typename,
.hljs-tag .hljs-attribute,
.hljs-doctype,
.hljs-class .hljs-id,
.hljs-built_in,
.setting,
.hljs-params,
.hljs-variable,
.clojure .hljs-title {
color: #606;
}
.css .hljs-tag,
.hljs-rules .hljs-property,
.hljs-pseudo,
.hljs-subst {
color: #000;
}
.css .hljs-class,
.css .hljs-id {
color: #9b703f;
}
.hljs-value .hljs-important {
color: #ff7700;
font-weight: bold;
}
.hljs-rules .hljs-keyword {
color: #c5af75;
}
.hljs-annotation,
.apache .hljs-sqbracket,
.nginx .hljs-built_in {
color: #9b859d;
}
.hljs-preprocessor,
.hljs-preprocessor *,
.hljs-pragma {
color: #444;
}
.tex .hljs-formula {
background-color: #eee;
font-style: italic;
}
.diff .hljs-header,
.hljs-chunk {
color: #808080;
font-weight: bold;
}
.diff .hljs-change {
background-color: #bccff9;
}
.hljs-addition {
background-color: #baeeba;
}
.hljs-deletion {
background-color: #ffc8bd;
}
.hljs-comment .hljs-yardoctag {
font-weight: bold;
}

View File

@ -1,6 +1,7 @@
{% extends "layout.twig" %} {% extends "layout.twig" %}
{% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %} {% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %}
{% block content %} {% block content %}
{% include '_highlight.twig' %}
{% include '_pocheit-form.twig' %} {% include '_pocheit-form.twig' %}
<div id="article_toolbar"> <div id="article_toolbar">
<ul> <ul>