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
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
Thank you so much to @tcitworld and @mariroz.
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 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"');
}
}
$writableFolders = array('cache', 'db');
foreach ($writableFolders as $folder) {
if (! is_writable($folder)) {
die('The directory "' . $folder . '" must be writeable by your web server user');
}
// Check if /cache is writeable
if (! is_writable('cache')) {
die('The directory "cache" must be writeable by your web server user');
}
// 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 {
$topCandidate->innerHTML = $page->documentElement->innerHTML;
$page->documentElement->innerHTML = '';
$this->reinitBody();
$page->documentElement->appendChild($topCandidate);
}
} 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
// 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->body->innerHTML = $this->bodyCache;
$this->reinitBody();
if ($this->flagIsActive(self::FLAG_STRIP_UNLIKELYS)) {
$this->removeFlag(self::FLAG_STRIP_UNLIKELYS);
@ -1134,5 +1134,18 @@ class Readability
public function removeFlag($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

113
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: //p[@class='Content HeadlineShort']
# Authors
# some are known and have a link, others don't
author: substring-after(//span[@class='Autor'], 'Von')
# Set author
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'],/span
# Body
# Fetch full multipage articles
next_page_link: //a[@title='Nächste Seite']
# Content is here
body: //div[@class='Artikel']
# Removements before body text
strip: //div[@class='Breadcrumbs']
strip: //div[@class='QuickSearchBox']
strip: //div[@class='FAZArtikelEinleitung']
strip: //div[@class='FAZArtikelReiter']
# 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
# General cleanup
strip: //div[@class='clear']
strip: //a[@title='Zur Homepage FAZ.NET']
strip: //iframe
replace_string( · ):
# General removements
strip: //span[@class='Bildnachweis']
strip: //img[@class='MediaIcon']
strip: //div[@class='ArtikelMediaLink']
dissolve: //a[img]
# Remove tracking and ads
strip_image_src: /l.gif?
strip: //div[contains(@style, 'background-image')]
strip: //img[@width='1']
strip_id_or_class: invisible
strip_id_or_class: Anzeige
strip_id_or_class: billboard
# Removements after body text
strip: //div[@class='ArtikelAbbinder']
strip: //div[@class='ArtikelKommentieren Artikelfuss GETS;tk;boxen.top-lesermeinungen;tp;content']
strip: //div[@class='FAZArtikelKommentare FAZArtikelContent']
strip: //div[@class='FAZArtikelFunktionen']
strip: //div[@id='FAZContentRight']
# Remove various text boxes and social media foo
strip_id_or_class: WeitereBeitraege
strip_id_or_class: WBListe
strip_id_or_class: AutorenModul
strip_id_or_class: Community
strip_id_or_class: SocialMediaStatus
strip_id_or_class: RelatedLinkBox
strip_id_or_class: MultimediaNavigation
strip_id_or_class: IndexTitel
# Fix picture caps and pictures (use better resolution and remove clutter)
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/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
# Fix picture captions
wrap_in(small): //span[@class='Bildunterschrift']/text()
test_url: http://www.faz.net/aktuell/feuilleton/zum-tod-von-margaret-thatcher-die-reizfigur-12141919.html#Drucken

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) {
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;
$this->handle = new PDO($db_path);
break;

View File

@ -524,6 +524,14 @@ class Poche
$longlastingsession = isset($_POST['longlastingsession']);
$passwordTest = ($isauthenticated) ? $user['password'] : Tools::encodeString($password . $login);
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'));
Tools::logm('login successful');
Tools::redirect($referer);
@ -551,42 +559,39 @@ class Poche
* import datas into your wallabag
* @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']);
$data = json_decode($str_data, true);
if ($data === null) {
if ( isset($_FILES['file']) && $_FILES['file']['tmp_name'] ) {
Tools::logm('Import stated: parsing file');
// 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();
$html->load_file($_FILES['file']['tmp_name']);
$data = array();
$read = 0;
foreach(array('ol','ul') as $list) {
foreach($html->find($list) as $ul) {
foreach($ul->find('li') as $li) {
$tmpEntry = array();
$a = $li->find('a');
$tmpEntry['url'] = $a[0]->href;
$tmpEntry['tags'] = $a[0]->tags;
$tmpEntry['is_read'] = $read;
if ($tmpEntry['url']) {
$data[] = $tmpEntry;
}
}
// the second <ol/ul> is for read links
$read = ((sizeof($data) && $read) ? 0 : 1);
}
}
if ( $data === null ) {
//not json - assume html
$html = new simple_html_dom();
$html->load_file($_FILES['file']['tmp_name']);
$data = array();
$read = 0;
foreach (array('ol','ul') as $list) {
foreach ($html->find($list) as $ul) {
foreach ($ul->find('li') as $li) {
$tmpEntry = array();
$a = $li->find('a');
$tmpEntry['url'] = $a[0]->href;
$tmpEntry['tags'] = $a[0]->tags;
$tmpEntry['is_read'] = $read;
if ($tmpEntry['url']) {
$data[] = $tmpEntry;
}
}
# the second <ol/ul> is for read links
$read = ((sizeof($data) && $read)?0:1);
}
}
}
// 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".'));
}
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
// now download article contents if any
// 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));
}
if (!in_array($type, $allowed_types) || $token != $config['token']) {
die(_('Uh, there is a problem while generating feeds.'));
if (!in_array($type, $allowed_types) || !isset($config['token']) || $token != $config['token']) {
die(_('Uh, there is a problem while generating feed. Wrong token used?'));
}
$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()
{
if (isset($_GET['login'])) {
// hello you
$this->wallabag->login($this->referer);
} elseif (isset($_GET['logout'])) {
// see you soon !
$this->wallabag->logout();
} elseif (isset($_GET['config'])) {
// update password
$this->wallabag->updatePassword($_POST['password'], $_POST['password_repeat']);
} elseif (isset($_GET['newuser'])) {
$this->wallabag->createNewUser($_POST['newusername'], $_POST['password4newuser']);
} elseif (isset($_GET['deluser'])) {
$this->wallabag->deleteUser($_POST['password4deletinguser']);
} elseif (isset($_GET['epub'])) {
$epub = new WallabagEpub($this->wallabag, $_GET['method'], $_GET['value']);
$epub->run();
} elseif (isset($_GET['import'])) {
$import = $this->wallabag->import();
$tplVars = array_merge($this->vars, $import);
} elseif (isset($_GET['download'])) {
Tools::downloadDb();
} elseif (isset($_GET['empty-cache'])) {
Tools::emptyCache();
} elseif (isset($_GET['export'])) {
$this->wallabag->export();
} elseif (isset($_GET['updatetheme'])) {
$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'])) {
if (isset($_GET['action']) && $_GET['action'] == 'generate') {
// hello to you
$this->wallabag->login($this->referer);
} elseif (isset($_GET['feed']) && isset($_GET['user_id'])) {
$tag_id = (isset($_GET['tag_id']) ? intval($_GET['tag_id']) : 0);
$this->wallabag->generateFeeds($_GET['token'], filter_var($_GET['user_id'],FILTER_SANITIZE_NUMBER_INT), $tag_id, $_GET['type']);
}
//allowed ONLY to logged in user
if (\Session::isLogged() === true)
{
if (isset($_GET['logout'])) {
// see you soon !
$this->wallabag->logout();
} elseif (isset($_GET['config'])) {
// update password
$this->wallabag->updatePassword($_POST['password'], $_POST['password_repeat']);
} elseif (isset($_GET['newuser'])) {
$this->wallabag->createNewUser($_POST['newusername'], $_POST['password4newuser']);
} elseif (isset($_GET['deluser'])) {
$this->wallabag->deleteUser($_POST['password4deletinguser']);
} elseif (isset($_GET['epub'])) {
$epub = new WallabagEpub($this->wallabag, $_GET['method'], $_GET['id'], $_GET['value']);
$epub->run();
} elseif (isset($_GET['import'])) {
$import = $this->wallabag->import();
$tplVars = array_merge($this->vars, $import);
} elseif (isset($_GET['empty-cache'])) {
Tools::emptyCache();
} elseif (isset($_GET['export'])) {
$this->wallabag->export();
} elseif (isset($_GET['updatetheme'])) {
$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();
}
else {
$tag_id = (isset($_GET['tag_id']) ? intval($_GET['tag_id']) : 0);
$this->wallabag->generateFeeds($_GET['token'], filter_var($_GET['user_id'],FILTER_SANITIZE_NUMBER_INT), $tag_id, $_GET['type']);
elseif (isset($_GET['plainurl']) && !empty($_GET['plainurl'])) {
$plainUrl = new Url(base64_encode($_GET['plainurl']));
$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)

View File

@ -54,6 +54,10 @@ final class Tools
|| ($https && $_SERVER["SERVER_PORT"] == '443')
|| ($https && $_SERVER["SERVER_PORT"]==SSL_PORT) //Custom HTTPS port detection
? '' : ':' . $_SERVER["SERVER_PORT"]);
if (isset($_SERVER["HTTP_X_FORWARDED_PORT"])) {
$serverport = ':' . $_SERVER["HTTP_X_FORWARDED_PORT"];
}
$scriptname = str_replace('/index.php', '/', $_SERVER["SCRIPT_NAME"]);
@ -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)
*

View File

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

View File

@ -33,7 +33,7 @@ final class Picture
}
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;

View File

@ -9,6 +9,7 @@
*/
define ('POCHE', '1.8.0');
require 'check_essentials.php';
require 'check_setup.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 ""
msgstr ""
"Project-Id-Version: wballabag\n"
"Project-Id-Version: wallabag\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-02-24 15:19+0300\n"
"PO-Revision-Date: 2014-02-24 15:29+0300\n"
"Last-Translator: Maryana <mariroz@mr.lviv.ua>\n"
"POT-Creation-Date: 2014-02-25 15:17+0300\n"
"PO-Revision-Date: \n"
"Last-Translator: skibbipl <skibbipl@users.noreply.github.com>\n"
"Language-Team: \n"
"Language: \n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\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-Language: Polish\n"
"X-Poedit-Country: POLAND\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-testing\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-"
"testing\n"
msgid "poche, a read it later open source system"
msgstr "poche, serwis odrocznego czytania open source"
msgid "wallabag, a read it later open source system"
msgstr "wallabag, open source'owy system typu \"przeczytaj to później\""
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"
msgstr "strona domowa"
msgid "favorites"
msgstr "ulubione"
msgid "archive"
msgstr "archiwum"
msgid "tags"
msgstr "tagi"
msgid "return home"
msgstr "powrót do strony domowej"
msgid "config"
msgstr "ustawienia"
msgstr "konfiguracja"
msgid "logout"
msgstr "wyloguj"
msgid "Saving articles"
msgstr "Zapisywanie artykułów"
msgid "back to home"
msgstr "wróć do strony domowej"
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 "There are several ways to save an article:"
msgstr "Istnieje kilka sposobów aby zapisać artykuł:"
msgid "read the documentation"
msgstr "przeczytaj dokumentację"
@ -60,54 +42,98 @@ msgstr "przeczytaj dokumentację"
msgid "download the extension"
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"
msgstr "pobierz aplikację"
#, fuzzy
msgid "by filling this field"
msgid "By filling this field"
msgstr "Poprzez wypełnienie tego pola"
msgid "poche it!"
msgid "bag it!"
msgstr "zapisz!"
#, fuzzy
msgid "bookmarklet: drag & drop this link to your bookmarks bar"
msgstr "Bookmarklet: przeciągnij i upucs ten link na pasek zakladek"
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 "Updating poche"
msgstr "Aktualizacja poche"
msgid "Upgrading wallabag"
msgstr "Aktualizacja wallabag"
msgid "your version"
msgstr "twoja wersja"
msgid "Installed version"
msgstr "Zainstalowana wersja"
#, fuzzy
msgid "latest stable version"
msgid "Latest stable version"
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."
msgid "you are up to date."
msgstr "brak nowych aktualizacji."
msgid "You are up to date."
msgstr "Posiadasz najnowszą wersję."
msgid "latest dev version"
msgstr "najnowsza wersja rozwojowa"
msgid "Latest dev version"
msgstr "Najnowsza wersja developerska"
msgid "a more recent development version is available."
msgstr "Nowsza wersja rozwojowa jest dostępna."
msgid "A more recent development version is available."
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"
msgstr "Zmień motyw"
msgstr "Zmień swój motyw"
msgid "Theme:"
msgstr "Motyw:"
msgid "Update"
msgstr "Aktualizacja"
msgstr "Aktualizuj"
msgid "Change your language"
msgstr "Zmień język"
msgid "Language:"
msgstr "Język:"
msgid "Change your password"
msgstr "Zmień hasło"
msgstr "Zmień swoje hasło"
msgid "New password:"
msgstr "Nowe hasło:"
@ -116,91 +142,104 @@ msgid "Password"
msgstr "Hasło"
msgid "Repeat your new password:"
msgstr "Powtórz hasło jeszcze raz:"
msgstr "Powtórz twoje nowe hasło:"
msgid "Import"
msgstr "Import"
msgid "Please execute the import script locally, it can take a very long time."
msgstr "Proszę wykonać skrypt importu lokalnie, ponieważ moze to trwać bardzo długo."
msgid ""
"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:"
msgstr "Więcej informacji znajduje się w oficjalnej dokumentacji:"
msgid "More info in the official documentation:"
msgstr "Więcej informacji znajdziesz w oficjalnej dokumentacji:"
msgid "import from Pocket"
msgstr "Importuj z Pocket'a"
msgid "Import from Pocket"
msgstr "Importuj z Pocket"
#, php-format
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"
msgid "import from Instapaper"
msgid "Import from Instapaper"
msgstr "Importuj z Instapaper"
#, fuzzy
msgid "Export your poche datas"
msgstr "Exportuj dane poche"
msgid "Import from wallabag"
msgstr "Importuj z wallabag"
msgid "Export your wallabag data"
msgstr "Wyeksportuj swoje dane wallabag"
msgid "Click here"
msgstr "Kliknij tu"
#, fuzzy
msgid "to export your poche datas."
msgstr "aby wyeksportować dane poche."
msgid "to download your database."
msgstr "aby pobrać twoją bazę danych."
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"
msgstr "plop"
msgid "installation"
msgstr "instalacja"
msgid "install your wallabag"
msgstr "zainstaluj 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 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 ""
"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ę tutaj</a>."
msgid "favoris"
msgstr "ulubione"
msgstr "favoris"
msgid "archive"
msgstr "archiwum"
msgid "unread"
msgstr "nieprzeczytane"
msgid "by date asc"
msgstr "według daty rosnąco"
msgstr "po dacie rosnąco"
msgid "by date"
msgstr "wg daty"
msgstr "po dacie"
msgid "by date desc"
msgstr "według daty malejąco"
msgstr "po dacie malejąco"
msgid "by title asc"
msgstr "według tytułu rosnąco"
msgstr "po tytule rosnąco"
msgid "by title"
msgstr "wg tytułu"
msgstr "po tytule"
msgid "by title desc"
msgstr "według tytułu malejąco"
msgstr "po tytule malejąco"
msgid "No link available here!"
msgstr "Brak dostępnych linków!"
msgid "Tag"
msgstr "Otaguj"
msgid "toggle mark as read"
msgstr "przełącz jako przeczytane"
msgid "No articles found."
msgstr "Nie znaleziono artykułów."
msgid "Toggle mark as read"
msgstr "Przełącz jako przeczytane"
msgid "toggle favorite"
msgstr "przełącz ulubione"
@ -212,212 +251,82 @@ msgid "original"
msgstr "oryginał"
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"
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"
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."
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"
msgstr "Pozostań zalogowany"
msgid "(Do not check on public computers)"
msgstr "(Nie sprawdzaj na publicznych komputerach)"
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"
msgstr "(Nie zaznaczaj na komputerach z publicznym dostępem)"
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"
msgstr "Wróć do strony domowej"
msgstr "Powrót na stronę domową"
msgid "Back to top"
msgstr "Wróć na górę"
msgstr "Powrót na górę"
msgid "Mark as read"
msgstr "Zaznacz jako przeczytane"
msgstr "Oznacz jako przeczytane"
msgid "Favorite"
msgstr "Ulubione"
msgid "Toggle favorite"
msgstr "Zaznacz jako ulubione"
msgstr "Przełącz ulubione"
msgid "Delete"
msgstr "Usuń"
@ -426,13 +335,19 @@ msgid "Tweet"
msgstr "Tweet"
msgid "Email"
msgstr "Wyślij email"
msgstr "Email"
msgid "shaarli"
msgstr "shaarli"
msgid "flattr"
msgstr "flattr"
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:"
msgstr "tegi:"
msgstr "tagi:"
msgid "Edit tags"
msgstr "Edytuj tagi"
@ -440,75 +355,160 @@ msgstr "Edytuj tagi"
msgid "save link!"
msgstr "zapisz link!"
#, fuzzy
msgid "estimated reading time :"
msgstr "szacowany czas odczytu:"
msgid "home"
msgstr "strona domowa"
msgid "Mark all the entries as read"
msgstr "Oznacz wszystko jako przeczytane"
msgid "tags"
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"
msgstr "Bez nazwy"
msgstr "Untitled"
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"
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"
msgstr "link zostal pomyślnie usunięty"
msgstr "link został usunięty pomyślnie"
msgid "the link wasn't deleted"
msgstr "link nie został usunięty"
msgid "Article not found!"
msgstr "Nie znaleziono artykułu."
msgstr "Artykuł nie znaleziony!"
msgid "previous"
msgstr "poprzednia"
msgstr "poprzedni"
msgid "next"
msgstr "następna"
msgstr "następny"
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"
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"
msgstr "oba pola muszą być wypełnione i hasła muszę być takie same w obu polach"
msgid ""
"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 \""
msgstr "nadal w użyciu \""
msgstr "wciąż używam \""
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"
msgstr "ustawienia motywu zostały zmienione"
msgstr "zmieniłeś swoje preferencje motywu"
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"
msgstr "ustawienia języka zostały zmienione"
msgstr "zmieniłeś swoje preferencje językowe"
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"
msgstr "Witamy w wallabag"
msgstr "witaj w twoim wallabag"
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"
msgstr "import z instapaper'a zakończony"
msgstr "import z instapaper zakończony"
msgid "import from pocket completed"
msgstr "import z pocket'a zakończony"
msgstr "import z pocket zakończony"
msgid "import from Readability completed. "
msgstr "import z Readability zakończony. "
@ -520,25 +520,34 @@ msgid "Unknown import provider."
msgstr "Nieznany dostawca importu."
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 \""
msgstr "Nie znaleziono potrzebnego \""
msgstr "Nie znaleziono wymaganego \""
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."
msgstr "Cache wyczyszczony."
msgstr "Cache usunięty."
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"
#~ msgstr "Import z poche"
#~ msgid "poche it!"
#~ msgstr "poche it!"
#~ msgid "welcome to your poche"
#~ msgstr "witamy w poche"
#~ msgid "Updating poche"
#~ msgstr "Updating poche"
#~ msgid "see you soon!"
#~ msgstr "do zobaczenia wkrótce!"
#~ msgid "create an issue"
#~ 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>
<input type="hidden" name="autoclose" value="1" />
<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!" %}" />
<div id="add-link-result"></div>
</form>
</div>

View File

@ -111,7 +111,7 @@
<fieldset class="w500p">
<div class="row">
<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 class="row mts txtcenter">
<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>
<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>
<h2>{% trans "Fancy an E-Book ?" %}</h2>

View File

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

View File

@ -4,6 +4,7 @@
{% endblock %}
{% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %}
{% block content %}
{% include '_highlight.twig' %}
<div id="article_toolbar">
<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>

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">
<div class="row">
<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 class="row mts txtcenter">
<button class="bouton" type="submit" tabindex="4">{% trans "Import" %}</button>
@ -121,7 +121,6 @@
<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>
<h2>{% trans "Cache" %}</h2>

View File

@ -429,4 +429,10 @@ a.add-to-wallabag-link-after:after {
text-indent: 0;
color: black;
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" %}
{% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %}
{% block content %}
{% include '_highlight.twig' %}
{% include '_pocheit-form.twig' %}
<div id="article_toolbar">
<ul>