aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--CONTRIBUTING.md2
-rw-r--r--CREDITS.md2
-rw-r--r--GUIDELINES.md53
-rwxr-xr-xTRANSLATION.md30
-rw-r--r--Vagrantfile71
-rw-r--r--check_essentials.php14
-rwxr-xr-x[-rw-r--r--]check_setup.php20
-rw-r--r--inc/3rdparty/class.messages.php2
-rwxr-xr-x[-rw-r--r--]inc/3rdparty/libraries/readability/Readability.php17
-rw-r--r--inc/3rdparty/site_config/custom/blogs.faz.net.txt45
-rw-r--r--inc/3rdparty/site_config/standard/.about.com.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/512pixels.net.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/README.md8
-rw-r--r--inc/3rdparty/site_config/standard/adme.ru.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/alexduner.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/anandtech.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/apotheke-adhoc.de.txt23
-rwxr-xr-xinc/3rdparty/site_config/standard/arstechnica.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/autocar.co.uk.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/bbc.co.uk.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/bbc.com.txt60
-rwxr-xr-xinc/3rdparty/site_config/standard/bit-tech.net.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/bleacherreport.com.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/blogs.faz.net.txt45
-rwxr-xr-xinc/3rdparty/site_config/standard/brasil.elpais.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/businessweek.com.txt41
-rwxr-xr-xinc/3rdparty/site_config/standard/buzzfeed.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/canonrumors.com.txt28
-rwxr-xr-xinc/3rdparty/site_config/standard/chomsky.info.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/cn.reuters.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/code.fivefilters.org.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/csmonitor.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/da.feedsportal.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/designsponge.com.txt31
-rwxr-xr-xinc/3rdparty/site_config/standard/desitvforum.net.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/deutsche-apotheker-zeitung.de.txt29
-rwxr-xr-xinc/3rdparty/site_config/standard/dictionary.reference.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/dn.pt.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/dropbox.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/echo-online.de.txt24
-rwxr-xr-xinc/3rdparty/site_config/standard/economist.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/eurogamer.net.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/facebook.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/faz.net.txt117
-rwxr-xr-xinc/3rdparty/site_config/standard/finance.yahoo.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/fivechapters.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/fivefilters.org.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/foreignpolicy.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/golem.de.txt53
-rwxr-xr-xinc/3rdparty/site_config/standard/habrahabr.ru.txt21
-rwxr-xr-xinc/3rdparty/site_config/standard/heise.de.txt43
-rwxr-xr-xinc/3rdparty/site_config/standard/hosted.ap.org.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/itunes.apple.com.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/kachiblog.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/lifehacker.co.uk.txt7
-rw-r--r--inc/3rdparty/site_config/standard/m00natic.github.io.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/mainpost.de.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/medialens.org.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/medium.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/menshealth.com.sg.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/northumberlandview.ca.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/nytimes.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/real.gr.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/reddit.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/searchengineland.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/sourcebooks.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/tabletmag.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/tagesspiegel.de.txt60
-rwxr-xr-xinc/3rdparty/site_config/standard/techmeme.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/theatlantic.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/theglobeandmail.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/theguardian.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/theverge.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/thisiscolossal.com.txt25
-rwxr-xr-xinc/3rdparty/site_config/standard/towerofthehand.com.txt10
-rw-r--r--inc/3rdparty/site_config/standard/tuhdo.github.io.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/twitter.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/vanityfair.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/wn.de.txt18
-rw-r--r--inc/3rdparty/site_config/standard/wordyard.com.txt8
-rwxr-xr-xinc/poche/Database.class.php14
-rw-r--r--inc/poche/Language.class.php3
-rwxr-xr-xinc/poche/Poche.class.php96
-rwxr-xr-xinc/poche/Routing.class.php2
-rw-r--r--inc/poche/Template.class.php6
-rwxr-xr-xinc/poche/Tools.class.php22
-rw-r--r--inc/poche/WallabagEBooks.class.php8
-rwxr-xr-xinc/poche/config.inc.default.php8
-rw-r--r--inc/poche/pochePictures.php2
-rwxr-xr-xindex.php5
-rwxr-xr-xinstall/index.php45
-rw-r--r--install/mysql.sql12
-rw-r--r--install/wallabag_compatibility_test.php (renamed from wallabag_compatibility_test.php)117
-rw-r--r--locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mobin15241 -> 18368 bytes
-rw-r--r--locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po277
-rw-r--r--locale/en_US.utf8/LC_MESSAGES/en_US.utf8.mobin0 -> 15793 bytes
-rw-r--r--locale/en_US.utf8/LC_MESSAGES/en_US.utf8.po682
-rw-r--r--locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mobin20031 -> 21037 bytes
-rw-r--r--locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po48
-rw-r--r--[-rwxr-xr-x]locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.mobin11935 -> 12632 bytes
-rwxr-xr-xlocale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po613
-rw-r--r--themes/_global/css/jquery-ui-1.10.4.custom.css (renamed from themes/default/css/jquery-ui-1.10.4.custom.css)0
-rw-r--r--themes/_global/css/jquery-ui-1.10.4.custom.min.css (renamed from themes/default/css/jquery-ui-1.10.4.custom.min.css)0
-rwxr-xr-xthemes/_global/img/appicon/apple-touch-icon-114.png (renamed from themes/baggy/img/apple-touch-icon-114.png)bin2281 -> 2281 bytes
-rwxr-xr-xthemes/_global/img/appicon/apple-touch-icon-120.png (renamed from themes/baggy/img/apple-touch-icon-120.png)bin2318 -> 2318 bytes
-rwxr-xr-xthemes/_global/img/appicon/apple-touch-icon-144.png (renamed from themes/baggy/img/apple-touch-icon-144.png)bin2718 -> 2718 bytes
-rwxr-xr-xthemes/_global/img/appicon/apple-touch-icon-152.png (renamed from themes/baggy/img/apple-touch-icon-152.png)bin2835 -> 2835 bytes
-rwxr-xr-xthemes/_global/img/appicon/apple-touch-icon-57.png (renamed from themes/baggy/img/apple-touch-icon-57.png)bin1582 -> 1582 bytes
-rwxr-xr-xthemes/_global/img/appicon/apple-touch-icon-72.png (renamed from themes/baggy/img/apple-touch-icon-72.png)bin1709 -> 1709 bytes
-rwxr-xr-xthemes/_global/img/appicon/apple-touch-icon-76.png (renamed from themes/baggy/img/apple-touch-icon-76.png)bin1838 -> 1838 bytes
-rwxr-xr-xthemes/_global/img/appicon/apple-touch-icon.png (renamed from themes/baggy/img/apple-touch-icon.png)bin1579 -> 1579 bytes
-rwxr-xr-xthemes/_global/img/appicon/favicon.ico (renamed from themes/baggy/img/favicon.ico)bin34494 -> 34494 bytes
-rw-r--r--themes/_global/img/icons/carrot-icon--black.pngbin0 -> 1538 bytes
-rw-r--r--themes/_global/img/icons/carrot-icon--white.pngbin0 -> 1605 bytes
-rw-r--r--themes/_global/img/icons/diaspora-icon--black.pngbin0 -> 1555 bytes
-rw-r--r--themes/_global/img/icons/diaspora-icon--white.pngbin0 -> 612 bytes
-rw-r--r--themes/_global/js/autoClose.js (renamed from themes/default/js/autoClose.js)0
-rwxr-xr-xthemes/_global/js/autoCompleteTags.js (renamed from themes/default/js/autoCompleteTags.js)0
-rw-r--r--themes/_global/js/jquery-2.0.3.min.js (renamed from themes/default/js/jquery-2.0.3.min.js)0
-rw-r--r--themes/_global/js/jquery-ui-1.10.4.custom.js (renamed from themes/default/js/jquery-ui-1.10.4.custom.js)0
-rw-r--r--themes/_global/js/jquery-ui-1.10.4.custom.min.js (renamed from themes/default/js/jquery-ui-1.10.4.custom.min.js)0
-rw-r--r--themes/_global/js/popupForm.js72
-rw-r--r--[-rwxr-xr-x]themes/_global/js/restoreScroll.js (renamed from themes/courgette/js/restoreScroll.js)0
-rwxr-xr-xthemes/_global/js/saveLink.js (renamed from themes/default/js/saveLink.js)34
-rwxr-xr-xthemes/baggy/_head.twig39
-rw-r--r--themes/baggy/_menu.twig1
-rwxr-xr-xthemes/baggy/_pocheit-form.twig8
-rw-r--r--themes/baggy/_search-form.twig10
-rwxr-xr-xthemes/baggy/about.twig74
-rwxr-xr-xthemes/baggy/config.twig138
-rwxr-xr-xthemes/baggy/css/main.css278
-rwxr-xr-xthemes/baggy/edit-tags.twig10
-rwxr-xr-xthemes/baggy/home.twig22
-rwxr-xr-xthemes/baggy/js/init.js5
-rw-r--r--themes/baggy/login.twig8
-rwxr-xr-xthemes/baggy/tags.twig4
-rwxr-xr-xthemes/baggy/view.twig7
-rwxr-xr-xthemes/courgette/README.md3
-rwxr-xr-xthemes/courgette/_head.twig11
-rwxr-xr-xthemes/courgette/_menu.twig10
-rwxr-xr-xthemes/courgette/_top.twig9
-rwxr-xr-xthemes/courgette/_view.twig46
-rwxr-xr-xthemes/courgette/css/font.css22
-rwxr-xr-xthemes/courgette/css/knacss.css0
-rwxr-xr-xthemes/courgette/css/messages.css75
-rwxr-xr-xthemes/courgette/css/print.css48
-rwxr-xr-xthemes/courgette/css/style-default.css59
-rwxr-xr-xthemes/courgette/css/style.css684
-rw-r--r--themes/courgette/edit-tags.twig20
-rwxr-xr-xthemes/courgette/error.twig6
-rwxr-xr-xthemes/courgette/font/icomoon.eotbin3056 -> 0 bytes
-rwxr-xr-xthemes/courgette/font/icomoon.svg23
-rwxr-xr-xthemes/courgette/font/icomoon.ttfbin2892 -> 0 bytes
-rwxr-xr-xthemes/courgette/font/icomoon.woffbin3020 -> 0 bytes
-rwxr-xr-xthemes/courgette/home.twig62
-rwxr-xr-xthemes/courgette/img/apple-touch-icon-144x144-precomposed.pngbin7349 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/apple-touch-icon-72x72-precomposed.pngbin6168 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/apple-touch-icon.pngbin5803 -> 0 bytes
-rw-r--r--themes/courgette/img/bg-select.pngbin1193 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/backtotop.pngbin326 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/bad-display.pngbin343 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/checkmark-off.pngbin277 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/checkmark-on.pngbin235 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/clock.pngbin332 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/down.pngbin216 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/envelop.pngbin285 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/flattr.pngbin270 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/left.pngbin196 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/link.pngbin341 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/remove.pngbin252 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/shaarli.pngbin729 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/star-off.pngbin314 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/star-on.pngbin281 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/top.pngbin212 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/default/twitter.pngbin297 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/favicon.icobin346 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/logo.pngbin1350 -> 0 bytes
-rw-r--r--themes/courgette/img/logo.svg8
-rwxr-xr-xthemes/courgette/img/messages/close.pngbin662 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/messages/cross.pngbin655 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/messages/help.pngbin786 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/messages/tick.pngbin537 -> 0 bytes
-rwxr-xr-xthemes/courgette/img/messages/warning.pngbin666 -> 0 bytes
-rwxr-xr-xthemes/courgette/js/init.js6
-rwxr-xr-xthemes/courgette/layout.twig32
-rwxr-xr-xthemes/courgette/login.twig32
-rwxr-xr-xthemes/courgette/screenshot.jpgbin80611 -> 0 bytes
-rwxr-xr-xthemes/courgette/tags.twig8
-rw-r--r--themes/courgette/theme.ini3
-rwxr-xr-xthemes/default/_head.twig38
-rwxr-xr-xthemes/default/_highlight.twig4
-rw-r--r--themes/default/_menu.twig1
-rwxr-xr-xthemes/default/_search-form.twig2
-rwxr-xr-xthemes/default/_sorting.twig4
-rwxr-xr-xthemes/default/about.twig74
-rwxr-xr-xthemes/default/config.twig141
-rwxr-xr-xthemes/default/css/style-default.css12
-rwxr-xr-xthemes/default/css/style.css17
-rwxr-xr-xthemes/default/edit-tags.twig12
-rw-r--r--themes/default/highlightjs/highlight.pack.js1
-rw-r--r--themes/default/highlightjs/styles/default.css152
-rw-r--r--themes/default/highlightjs/styles/github.css127
-rw-r--r--themes/default/highlightjs/styles/googlecode.css148
-rwxr-xr-xthemes/default/home.twig26
-rw-r--r--themes/default/img/apple-touch-icon-144x144-precomposed.pngbin2361 -> 0 bytes
-rw-r--r--themes/default/img/apple-touch-icon-72x72-precomposed.pngbin1375 -> 0 bytes
-rw-r--r--themes/default/img/apple-touch-icon.pngbin1174 -> 0 bytes
-rw-r--r--themes/default/img/favicon.icobin346 -> 0 bytes
-rw-r--r--themes/default/js/popupForm.js20
-rw-r--r--themes/default/js/restoreScroll.js25
-rwxr-xr-xthemes/default/view.twig8
212 files changed, 3638 insertions, 2258 deletions
diff --git a/.gitignore b/.gitignore
index aec2e3ef..5b34c79f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,9 @@
1.DS_Store
1assets/* 2assets/*
2cache/* 3cache/*
3vendor 4vendor
4composer.phar 5composer.phar
5db/poche.sqlite 6db/poche.sqlite
6inc/poche/config.inc.php 7inc/poche/config.inc.php
7inc/3rdparty/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/ \ No newline at end of file 8inc/3rdparty/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/
9.vagrant \ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 9ccb0b14..58bc7134 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -26,3 +26,5 @@ Note : If you have large portions of text, use [Github's Gist service](https://g
26 26
27## You want to fix a bug or to add a feature 27## You want to fix a bug or to add a feature
28Please fork wallabag and work with **the dev branch** only. **Do not work on master branch**. 28Please fork wallabag and work with **the dev branch** only. **Do not work on master branch**.
29
30[Don't forget to read our guidelines](https://github.com/wallabag/wallabag/blob/dev/GUIDELINES.md). \ No newline at end of file
diff --git a/CREDITS.md b/CREDITS.md
index 7ec3cbb7..f1e9d7af 100644
--- a/CREDITS.md
+++ b/CREDITS.md
@@ -11,4 +11,6 @@ wallabag is based on :
11 11
12wallabag is mainly developed by Nicolas Lœuillet under the MIT License 12wallabag is mainly developed by Nicolas Lœuillet under the MIT License
13 13
14Thank you so much to @tcitworld and @mariroz.
15
14Contributors : https://github.com/wallabag/wallabag/graphs/contributors \ No newline at end of file 16Contributors : https://github.com/wallabag/wallabag/graphs/contributors \ No newline at end of file
diff --git a/GUIDELINES.md b/GUIDELINES.md
new file mode 100644
index 00000000..51e0de93
--- /dev/null
+++ b/GUIDELINES.md
@@ -0,0 +1,53 @@
1# Guidelines for wallabag
2
3If 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).
4
5## Basic Coding Standard (PSR-1)
6
7This 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.
8
9* Files MUST use only `<?php` and `<?=` tags.
10
11* Files MUST use only UTF-8 without BOM for PHP code.
12
13* 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.
14
15* Namespaces and classes MUST follow [PSR-0](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md).
16
17* Class names MUST be declared in `StudlyCaps`.
18
19* Class constants MUST be declared in all upper case with underscore separators.
20
21* Method names MUST be declared in `camelCase`.
22
23You can read details on [PHP FIG website](http://www.php-fig.org/psr/psr-1/).
24
25## Coding Style Guide (PSR-2)
26
27This guide extends and expands on PSR-1, the basic coding standard.
28
29The 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.
30
31The 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.
32
33* Code MUST follow PSR-1.
34
35* Code MUST use 4 spaces for indenting, not tabs.
36
37* There MUST NOT be a hard limit on line length; the soft limit MUST be 120 characters; lines SHOULD be 80 characters or less.
38
39* There MUST be one blank line after the `namespace` declaration, and there MUST be one blank line after the block of `use` declarations.
40
41* Opening braces for classes MUST go on the next line, and closing braces MUST go on the next line after the body.
42
43* Opening braces for methods MUST go on the next line, and closing braces MUST go on the next line after the body.
44
45* 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.
46
47* Control structure keywords MUST have one space after them; method and function calls MUST NOT.
48
49* Opening braces for control structures MUST go on the same line, and closing braces MUST go on the next line after the body.
50
51* Opening parentheses for control structures MUST NOT have a space after them, and closing parentheses for control structures MUST NOT have a space before.
52
53You can read details on [PHP FIG website](http://www.php-fig.org/psr/psr-2/). \ No newline at end of file
diff --git a/TRANSLATION.md b/TRANSLATION.md
index 2e38d5cc..a033662c 100755
--- a/TRANSLATION.md
+++ b/TRANSLATION.md
@@ -1,10 +1,10 @@
1# How to manage translations of wallabag 1# How to manage translations for wallabag
2 2
3This guide will describe procedure of translation management of wallabag web application. 3This guide will describe the procedure of translation management of the wallabag web application.
4 4
5All translation are made using [gettext](http://en.wikipedia.org/wiki/Gettext) system and tools. 5All translations are made using [gettext](http://en.wikipedia.org/wiki/Gettext) system and tools.
6 6
7You will need [Poedit](http://www.poedit.net/download.php) editor to update, edit and create your translation files comfortably. In general, you can handle translations also without it: all can be done using gettext tools and your favorite plain text editor only. This guide, however, describes editing with Poedit. If you want to use gettext only, pls refer to xgettext manual page to update po files from sources (see also how it is used by Poedit below) and use msgunfmt tool to compile .mo files manually. 7You will need the [Poedit](http://www.poedit.net/download.php) editor to update, edit and create your translation files easily. However, you can also handle translations also without it: all can be done using gettext tools and your favorite plain text editor only. This guide, however, describes editing with Poedit. If you want to use gettext only, please refer to the xgettext manual page to update po files from sources (see also how it is used by Poedit below) and use msgunfmt tool to compile .mo files manually.
8 8
9You need to know, that translation phrases are stored in **".po"** files (for example: `locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po`), which are then complied in **".mo"** files using **msgfmt** gettext tool or by Poedit, which will run msgfmt for you in background. 9You need to know, that translation phrases are stored in **".po"** files (for example: `locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po`), which are then complied in **".mo"** files using **msgfmt** gettext tool or by Poedit, which will run msgfmt for you in background.
10 10
@@ -22,7 +22,7 @@ go to root of your installation of wallabag project and run next command:
22 22
23`rm -rf ./cache/*` 23`rm -rf ./cache/*`
24 24
25(this may require root privileges if you run, for example Apatche web server with mod_php) 25(this may require root privileges if you run, for example Apache web server with mod_php)
26 26
27### 2. Generate php files from all twig templates 27### 2. Generate php files from all twig templates
28Do this using next command: 28Do this using next command:
@@ -31,37 +31,37 @@ Do this using next command:
31 31
32OR 32OR
33 33
34from your browser: **http://your-wallabag-host.com/locale/tools/fillCache.php** (this may require removal of .htacces file in locale/ directory). 34from your browser: **http://your-wallabag-host.com/locale/tools/fillCache.php** (this may require removal of .htaccess file in locale/ directory).
35 35
36### 3. Configure your Poedit 36### 3. Configure your Poedit
37Open Poedit editor, open Edit->Preferences. Go to "Parsers" tab, click on PHP and press "Edit" button. Make sure your "Parser command:" looks like 37Open Poedit editor, open Edit->Preferences. Go to "Parsers" tab, click on PHP and press "Edit" button. Make sure your "Parser command:" looks like
38 38
39`xgettext --no-location --force-po -o %o %C %K %F` 39`xgettext --no-location --force-po -o %o %C %K %F`
40 40
41Usualy it is required to add "--no-location" to default value. 41Usually it is required to add "--no-location" to default value.
42 42
43### 4. Open .po file you want to edit in Poedit and change it's settings 43### 4. Open .po file you want to edit in Poedit and change its settings
44Open, for example `locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po` file in your Poedit. 44Open, for example `locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po` file in your Poedit.
45 45
46Go to "Catalog"->"Settings..." menu. Go to "Path" tab and add path to wallabag installaion in your local file system. This step can't be ommited as you will not be able to update phrases otherwise. 46Go to "Catalog"->"Settings..." menu. Then go to "Path" tab and add path to wallabag installation in your local file system. This step can't be omitted as you will not be able to update phrases otherwise.
47 47
48You can also check "project into" tab to be sure, that "Language" is set correctly (this will allow you to spell check your translation). 48You can also check "project into" tab to be sure, that "Language" is set correctly (this will allow you to spell check your translation).
49 49
50### 5. Update opened .po file from sources 50### 5. Update opened .po file from sources
51Once you have set your path correctly, you are able to update phrases from sources. Press "Update catalog - synchronize it with sources" button or go to "Catalog"->"Update from sources" menu. 51Once you have set your path correctly, you are able to update phrases from sources. Press "Update catalog - synchronize it with sources" button or go to "Catalog"->"Update from sources" menu.
52 52
53As a result you will see confirmation popup with two tabs: "New strings" and "Obsolete strings". Pls review and accept changes (or press "Undo" if you see too many obsolete strings, as Poedit will remove them all - in this case please make sure all previous steps are performed w/o errors). 53As a result you will see confirmation popup with two tabs: "New strings" and "Obsolete strings". Please review and accept changes (or press "Undo" if you see too many obsolete strings, as Poedit will remove them all - in this case please make sure all previous steps are performed w/o errors).
54 54
55### 6. Translate and save your .po file 55### 6. Translate and save your .po file
56If you have any dificulties on this step, please consult with Poedit manual. 56If you have any difficulties on this step, please consult with Poedit manual.
57Every time you save your .po file, Poedit will also comple appropriate .mo file by default (of course, if not disabled in preferences). 57Every time you save your .po file, Poedit will also compile appropriate .mo file by default (of course, if not disabled in preferences).
58 58
59So, you are almost done. 59You are now almost done.
60 60
61### 7. Clear cache again 61### 7. Clear cache again
62This step may be required if your web server runs php scripts in name of, say, www user (i.e. Apache with mod_php, not cgi). 62This step may be required if your web server runs php scripts in name of, say, www user (i.e. Apache with mod_php, not cgi).
63 63
64 64
65##To create new translation 65##To create new translation
66Please simple create appropriate directories in locale folder and perform all steps, described above. Instead of opening an existing file just create new one. 66You just have to copy the folder corresponding to the language you want to translate from, change language in the project settings and for the folder and files names. Then start replacing all existing translations with your own.
67 67
diff --git a/Vagrantfile b/Vagrantfile
new file mode 100644
index 00000000..221ad6db
--- /dev/null
+++ b/Vagrantfile
@@ -0,0 +1,71 @@
1
2$script_sqlite = <<SCRIPT
3apt-get update
4apt-get install -y apache2 php5 php5-sqlite php5-xdebug
5apt-get clean -y
6echo "ServerName localhost" >> /etc/apache2/apache2.conf
7service apache2 restart
8rm -f /var/www/html/index.html
9date > /etc/vagrant_provisioned_at
10SCRIPT
11
12$script_mysql = <<SCRIPT
13export DEBIAN_FRONTEND=noninteractive
14apt-get update
15apt-get install -y apache2 php5 php5-mysql php5-xdebug mysql-server mysql-client
16apt-get clean -y
17echo "ServerName localhost" >> /etc/apache2/apache2.conf
18service apache2 restart
19service mysql restart
20echo "create database wallabag;" | mysql -u root
21rm -f /var/www/html/index.html
22date > /etc/vagrant_provisioned_at
23SCRIPT
24
25$script_postgres = <<SCRIPT
26export DEBIAN_FRONTEND=noninteractive
27apt-get update
28apt-get install -y apache2 php5 php5-pgsql php5-xdebug postgresql postgresql-contrib
29apt-get clean -y
30echo "ServerName localhost" >> /etc/apache2/apache2.conf
31service apache2 restart
32service postgresql restart
33rm -f /var/www/html/index.html
34date > /etc/vagrant_provisioned_at
35SCRIPT
36
37Vagrant.configure("2") do |config|
38
39 config.vm.define "sqlite" do |m|
40 m.vm.box = "ubuntu/trusty64"
41 m.vm.provision "shell", inline: $script_sqlite
42 m.vm.synced_folder ".", "/var/www/html", owner: "www-data", group: "www-data"
43 end
44
45 config.vm.define "mysql" do |m|
46 m.vm.box = "ubuntu/trusty64"
47 m.vm.provision "shell", inline: $script_mysql
48 m.vm.synced_folder ".", "/var/www/html", owner: "www-data", group: "www-data"
49 end
50
51 config.vm.define "postgres" do |m|
52 m.vm.box = "ubuntu/trusty64"
53 m.vm.provision "shell", inline: $script_postgres
54 m.vm.synced_folder ".", "/var/www/html", owner: "www-data", group: "www-data"
55 end
56
57 config.vm.define "debian7" do |m|
58 m.vm.box = "chef/debian-7.6"
59 m.vm.provision "shell", inline: $script_sqlite
60 m.vm.synced_folder ".", "/var/www", owner: "www-data", group: "www-data"
61 end
62
63 config.vm.define "debian6" do |m|
64 m.vm.box = "chef/debian-6.0.10"
65 m.vm.provision "shell", inline: $script_sqlite
66 m.vm.synced_folder ".", "/var/www", owner: "www-data", group: "www-data"
67 end
68
69 config.vm.network :forwarded_port, guest: 80, host: 8003
70 #config.vm.network "public_network", :bridge => "en0: Wi-Fi (AirPort)"
71end
diff --git a/check_essentials.php b/check_essentials.php
new file mode 100644
index 00000000..a47cd5a8
--- /dev/null
+++ b/check_essentials.php
@@ -0,0 +1,14 @@
1<?php
2
3// PHP 5.3 minimum
4if (version_compare(PHP_VERSION, '5.3.3', '<')) {
5 die('This software require PHP 5.3.3 minimum');
6}
7
8// Short tags must be enabled for PHP < 5.4
9if (version_compare(PHP_VERSION, '5.4.0', '<')) {
10
11 if (! ini_get('short_open_tag')) {
12 die('This software require to have short tags enabled, check your php.ini => "short_open_tag = On"');
13 }
14} \ No newline at end of file
diff --git a/check_setup.php b/check_setup.php
index c86b17fa..cf02c34b 100644..100755
--- a/check_setup.php
+++ b/check_setup.php
@@ -1,22 +1,8 @@
1<?php 1<?php
2// PHP 5.3 minimum
3if (version_compare(PHP_VERSION, '5.3.3', '<')) {
4 die('This software require PHP 5.3.3 minimum');
5}
6
7// Short tags must be enabled for PHP < 5.4
8if (version_compare(PHP_VERSION, '5.4.0', '<')) {
9
10 if (! ini_get('short_open_tag')) {
11 die('This software require to have short tags enabled, check your php.ini => "short_open_tag = On"');
12 }
13}
14 2
15$writableFolders = array('cache', 'db', 'inc/3rdparty/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer'); 3// Check if /cache is writeable
16foreach ($writableFolders as $folder) { 4if (! is_writable('cache')) {
17 if (! is_writable($folder)) { 5 die('The directory "cache" must be writeable by your web server user');
18 die('The directory "' . $folder . '" must be writeable by your web server user');
19 }
20} 6}
21 7
22// install folder still present, need to install wallabag 8// install folder still present, need to install wallabag
diff --git a/inc/3rdparty/class.messages.php b/inc/3rdparty/class.messages.php
index 27c28f43..fbca0df0 100644
--- a/inc/3rdparty/class.messages.php
+++ b/inc/3rdparty/class.messages.php
@@ -44,7 +44,7 @@ class Messages {
44 var $msgId; 44 var $msgId;
45 var $msgTypes = array( 'help', 'info', 'warning', 'success', 'error' ); 45 var $msgTypes = array( 'help', 'info', 'warning', 'success', 'error' );
46 var $msgClass = 'messages'; 46 var $msgClass = 'messages';
47 var $msgWrapper = "<div class='%s %s'><a href='#' class='closeMessage'>X</a>\n%s</div>\n"; 47 var $msgWrapper = "<div class='%s %s'><a href='#' class='closeMessage'>&times;</a>\n%s</div>\n";
48 var $msgBefore = '<p>'; 48 var $msgBefore = '<p>';
49 var $msgAfter = "</p>\n"; 49 var $msgAfter = "</p>\n";
50 50
diff --git a/inc/3rdparty/libraries/readability/Readability.php b/inc/3rdparty/libraries/readability/Readability.php
index d0f09d74..4fa3ba63 100644..100755
--- a/inc/3rdparty/libraries/readability/Readability.php
+++ b/inc/3rdparty/libraries/readability/Readability.php
@@ -679,6 +679,7 @@ class Readability
679 } else { 679 } else {
680 $topCandidate->innerHTML = $page->documentElement->innerHTML; 680 $topCandidate->innerHTML = $page->documentElement->innerHTML;
681 $page->documentElement->innerHTML = ''; 681 $page->documentElement->innerHTML = '';
682 $this->reinitBody();
682 $page->documentElement->appendChild($topCandidate); 683 $page->documentElement->appendChild($topCandidate);
683 } 684 }
684 } else { 685 } else {
@@ -794,8 +795,7 @@ class Readability
794 { 795 {
795 // 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 796 // 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
796 // in the meantime, we check and create an empty element if it's not there. 797 // in the meantime, we check and create an empty element if it's not there.
797 if (!isset($this->body->childNodes)) $this->body = $this->dom->createElement('body'); 798 $this->reinitBody();
798 $this->body->innerHTML = $this->bodyCache;
799 799
800 if ($this->flagIsActive(self::FLAG_STRIP_UNLIKELYS)) { 800 if ($this->flagIsActive(self::FLAG_STRIP_UNLIKELYS)) {
801 $this->removeFlag(self::FLAG_STRIP_UNLIKELYS); 801 $this->removeFlag(self::FLAG_STRIP_UNLIKELYS);
@@ -1134,5 +1134,18 @@ class Readability
1134 public function removeFlag($flag) { 1134 public function removeFlag($flag) {
1135 $this->flags = $this->flags & ~$flag; 1135 $this->flags = $this->flags & ~$flag;
1136 } 1136 }
1137
1138 /**
1139 * Will recreate previously deleted body property
1140 *
1141 * @return void
1142 */
1143 protected function reinitBody() {
1144 if (!isset($this->body->childNodes)) {
1145 $this->body = $this->dom->createElement('body');
1146 $this->body->innerHTML = $this->bodyCache;
1147 }
1148 }
1149
1137} 1150}
1138?> \ No newline at end of file 1151?> \ No newline at end of file
diff --git a/inc/3rdparty/site_config/custom/blogs.faz.net.txt b/inc/3rdparty/site_config/custom/blogs.faz.net.txt
new file mode 100644
index 00000000..4f2626f1
--- /dev/null
+++ b/inc/3rdparty/site_config/custom/blogs.faz.net.txt
@@ -0,0 +1,45 @@
1# Author: zinnober
2
3tidy: no
4prune: no
5
6# Set author
7author: //a[@rel='author']
8
9# Set date
10date: //span[@class='Datum']
11
12# Content is here
13body: //div[@class='Artikel']
14
15# Tidy up before article
16strip: //div[@id='FAZHeaderNeu']
17strip: //h2[@itemprop='headline']
18strip: //span[@class='Datum']
19strip: //span[@class='Autor']
20strip_id_or_class: ArticlePagerTop
21strip: //div[@class='FAZArtikelEinleitung']/h2
22
23# General cleanup
24strip: //div[@class='clear']
25strip: //span[@class='Bildnachweis']
26strip: //iframe
27strip_id_or_class: Community
28strip: ' · '
29
30# Remove tracking and ads
31strip_image_src: /l.gif?
32strip: //img[@width='1']
33strip_id_or_class: invisible
34strip_id_or_class: Anzeige
35strip_id_or_class: billboard
36
37# Remove clutter after article
38strip_id_or_class: Tagline
39strip_id_or_class: ArtikelAbbinder
40strip_id_or_class: FAZArtikelKommentare
41strip_id_or_class: ArtikelKommentieren
42strip_id_or_class: FAZContentRight
43
44# Try it yourself
45test_url: http://blogs.faz.net/wost/2014/08/17/viel-fuck-und-wenig-guter-sex-1239/
diff --git a/inc/3rdparty/site_config/standard/.about.com.txt b/inc/3rdparty/site_config/standard/.about.com.txt
new file mode 100644
index 00000000..e1ebaee3
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/.about.com.txt
@@ -0,0 +1,14 @@
1body: //div[@id='articlebody']
2title: //h1
3author: //p[@id='by']//a
4
5next_page_link: //span[@class='next']/a
6# Not the same as below!
7
8prune: yes
9tidy: no
10
11# Annoying 'next' links plainly inside the article body
12strip: //*[text()[contains(.,'Next: ')]]
13
14test_url: http://psychology.about.com/od/theoriesofpersonality/ss/defensemech.htm
diff --git a/inc/3rdparty/site_config/standard/512pixels.net.txt b/inc/3rdparty/site_config/standard/512pixels.net.txt
index e458980f..02a996f7 100755
--- a/inc/3rdparty/site_config/standard/512pixels.net.txt
+++ b/inc/3rdparty/site_config/standard/512pixels.net.txt
@@ -1,2 +1,2 @@
1title: substring-before(//title, '&mdash;') 1title: //meta[@property='og:title']/@content
2test_url: http://512pixels.net/more-on-linked-lists/ \ No newline at end of file 2test_url: http://www.512pixels.net/blog/2014/10/the-move
diff --git a/inc/3rdparty/site_config/standard/README.md b/inc/3rdparty/site_config/standard/README.md
index 9040ba85..ab5b12d9 100755
--- a/inc/3rdparty/site_config/standard/README.md
+++ b/inc/3rdparty/site_config/standard/README.md
@@ -1,12 +1,14 @@
1Full-Text RSS site config files 1Full-Text RSS site config files
2================ 2================
3 3
4[Full-Text RSS](http://fivefilters.org/content-only/), our article extraction tool, makes use of site-specific extraction rules to improve results. Each time a URL is processed, it checks to see if there are extraction rules for the site being processed. If there are no site patterns, it tries to detect the content block automatically. 4[Full-Text RSS](http://fivefilters.org/content-only/), our article extraction tool, makes use of site-specific extraction rules to improve results. Each time a URL is processed, it checks to see if there are extraction rules for the site being processed. If there are no rules are found, it tries to detect the content block automatically.
5 5
6This repository contains the site config files we use in Full-Text RSS. 6This repository contains the site-specific extraction rules we rely on in Full-Text RSS.
7 7
8### Contributing changes 8### Contributing changes
9 9
10We run automated tests on these files to detect issues. If you'd like to help keep these up to date, please look at the [test results](http://siteconfig.fivefilters.org/test/) and see which files you'd like to contribute fixes for.
11
10We chose GitHub for this set of files because they offer one feature which we hope will make contributing changes easier: [file editing](https://github.com/blog/844-forking-with-the-edit-button) through the web interface. 12We chose GitHub for this set of files because they offer one feature which we hope will make contributing changes easier: [file editing](https://github.com/blog/844-forking-with-the-edit-button) through the web interface.
11 13
12You can now make changes to any of our site config files and request that your changes be pulled into the main set we maintain. This is what GitHub calls the Fork and Pull model: 14You can now make changes to any of our site config files and request that your changes be pulled into the main set we maintain. This is what GitHub calls the Fork and Pull model:
@@ -31,7 +33,7 @@ Marco, Instapaper's creator, graciously opened up the database of contributions
31 33
32> And, recognizing that your efforts could be useful to a wide range of other tools and services, I'll make the list of all of these site-specific configurations available to the public, free, with no strings attached. 34> And, recognizing that your efforts could be useful to a wide range of other tools and services, I'll make the list of all of these site-specific configurations available to the public, free, with no strings attached.
33 35
34Most of the extraction rules in our set are borrowed from Instapaper. You can see the list maintained by Instapaper at [instapaper.com/bodytext/](http://instapaper.com/bodytext/) (login required). 36Most of the extraction rules in our set are borrowed from Instapaper. You can see the list maintained by Instapaper at [instapaper.com/bodytext/](http://instapaper.com/bodytext/) (no longer available since Instapaper was sold).
35 37
36### Testing site config files 38### Testing site config files
37 39
diff --git a/inc/3rdparty/site_config/standard/adme.ru.txt b/inc/3rdparty/site_config/standard/adme.ru.txt
new file mode 100644
index 00000000..b929685d
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/adme.ru.txt
@@ -0,0 +1,6 @@
1# Generated by FiveFilters.org's web-based selection tool
2# Place this file inside your site_config/custom/ folder
3# Source: http://siteconfig.fivefilters.org/grab.php?url=http%3A%2F%2Fwww.adme.ru%2Ftvorchestvo-hudozhniki%2Fprostoj-kak-5-kopeek-hudozhnik-557405%2F
4
5body: //article[contains(concat(' ',normalize-space(@class),' '),' article ')]
6test_url: http://www.adme.ru/tvorchestvo-hudozhniki/prostoj-kak-5-kopeek-hudozhnik-557405/
diff --git a/inc/3rdparty/site_config/standard/alexduner.com.txt b/inc/3rdparty/site_config/standard/alexduner.com.txt
index bd9de9d7..3897f9ec 100755
--- a/inc/3rdparty/site_config/standard/alexduner.com.txt
+++ b/inc/3rdparty/site_config/standard/alexduner.com.txt
@@ -1,4 +1,4 @@
1body: //section[@class='content'] 1body: //section[@class='content']
2date: //span[1] 2date: //span[1]
3author: //h1[@id='sitetitle'] 3author: //h1[@id='sitetitle']
4test_url: https://alexduner.com/blog/2013/1/something-i-learned-today \ No newline at end of file 4test_url: http://alexduner.com/blog/something-i-learned-today
diff --git a/inc/3rdparty/site_config/standard/anandtech.com.txt b/inc/3rdparty/site_config/standard/anandtech.com.txt
index 7d804918..fc95c5d8 100755
--- a/inc/3rdparty/site_config/standard/anandtech.com.txt
+++ b/inc/3rdparty/site_config/standard/anandtech.com.txt
@@ -1,3 +1,5 @@
1body: //section[@class='main_cont']/img | //div[@class='articleContent']
2title: //div[@class='blog_top_left']//h2
1author: //a[@class='b'][1] 3author: //a[@class='b'][1]
2date: substring-after(substring-before(//div, 'Posted in'), ' on ') 4date: substring-after(substring-before(//div, 'Posted in'), ' on ')
3strip_image_src: /content/images/globals/ 5strip_image_src: /content/images/globals/
@@ -8,4 +10,6 @@ prune: no
8 10
9single_page_link: concat('http://www.anandtech.com/print/', substring-after(//meta[@property='og:url']/@content, '/show/')) 11single_page_link: concat('http://www.anandtech.com/print/', substring-after(//meta[@property='og:url']/@content, '/show/'))
10 12
11test_url: http://www.anandtech.com/show/5812/eurocom-monster-10-clevos-little-monster/ \ No newline at end of file 13test_url: http://www.anandtech.com/show/8370/gigabyte-am1m-s2h-review
14test_url: http://www.anandtech.com/show/8402/sandisk-releases-ultra-ii-ssd-the-second-tlc-nand-ssd-in-the-market
15test_url: http://www.anandtech.com/show/8400/arms-cortex-m-even-smaller-and-lower-power-cpu-cores
diff --git a/inc/3rdparty/site_config/standard/apotheke-adhoc.de.txt b/inc/3rdparty/site_config/standard/apotheke-adhoc.de.txt
new file mode 100755
index 00000000..3a702e7b
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/apotheke-adhoc.de.txt
@@ -0,0 +1,23 @@
1# Author: zinnober
2
3prune: no
4
5title: substring-before(//div[@id='content']/h1, ',')
6
7single_page_link: //a[@title='Seite drucken']
8
9body: //div[@id='detail-body']
10
11replace_string(<span class="description">): <em>
12replace_string(<p class="leadtext"><small>): <p class="leadtext">
13
14# Fix headlines
15replace_string(Patrick Hollstein): &nbsp;
16replace_string(APOTHEKE ADHOC): &nbsp;
17replace_string(dpa): &nbsp;
18replace_string(Katharina Lübke): &nbsp;
19replace_string(Julia Pradel): &nbsp;
20replace_string(Franziska Gerhardt): &nbsp;
21
22test_url: http://www.apotheke-adhoc.de/nachrichten/politik/nachricht-detail-politik/deutscher-apothekertag-antraege-gegen-lieferengpaesse-2/
23
diff --git a/inc/3rdparty/site_config/standard/arstechnica.com.txt b/inc/3rdparty/site_config/standard/arstechnica.com.txt
index 767f6800..eb92aa2c 100755
--- a/inc/3rdparty/site_config/standard/arstechnica.com.txt
+++ b/inc/3rdparty/site_config/standard/arstechnica.com.txt
@@ -13,5 +13,7 @@ title: //div[@id='story']//h2[@class='title']
13strip: //div[@class='pager'] 13strip: //div[@class='pager']
14next_page_link: //nav//a[span/@class='next']/@href 14next_page_link: //nav//a[span/@class='next']/@href
15 15
16native_ad_clue: //meta[@property="og:url" and contains(@content, '/sponsored/')]
17
16test_url: http://arstechnica.com/tech-policy/news/2012/02/gigabit-internet-for-80-the-unlikely-success-of-californias-sonicnet.ars 18test_url: http://arstechnica.com/tech-policy/news/2012/02/gigabit-internet-for-80-the-unlikely-success-of-californias-sonicnet.ars
17test_url: http://arstechnica.com/apple/2005/04/macosx-10-4/ 19test_url: http://arstechnica.com/apple/2005/04/macosx-10-4/
diff --git a/inc/3rdparty/site_config/standard/autocar.co.uk.txt b/inc/3rdparty/site_config/standard/autocar.co.uk.txt
new file mode 100755
index 00000000..9f4fe18b
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/autocar.co.uk.txt
@@ -0,0 +1,13 @@
1title: //div[@class='col-center']/h1
2author: //div[@class='personality']/a
3date: //div[@class='personality-date']
4body: //div[@class='content-top ']//div[@class='content'][1] | //div[contains(@class,'article-body')] | //div[contains(@class,'main-article')]
5
6next_page_link: //div[@id='review-link']/a
7
8strip: //div[@class='author-block']
9strip: //p//iframe[contains(@src,'signup')]/preceding::p[1]
10
11test_url: http://www.autocar.co.uk/car-review/volkswagen/golf
12test_url: http://www.autocar.co.uk/car-news/pebble-beach/saleen-unveils-performance-electric-vehicle-based-tesla-model-s
13test_url: http://www.autocar.co.uk/car-review/rolls-royce/first-drives/rolls-royce-ghost-series-ii-first-drive-review
diff --git a/inc/3rdparty/site_config/standard/bbc.co.uk.txt b/inc/3rdparty/site_config/standard/bbc.co.uk.txt
index ef1f491a..bad77654 100755
--- a/inc/3rdparty/site_config/standard/bbc.co.uk.txt
+++ b/inc/3rdparty/site_config/standard/bbc.co.uk.txt
@@ -13,7 +13,7 @@ body: //div[contains(@class, 'hrecipe')]//div[@id='subcolumn-1']
13#strip: //div[@class="story-feature narrow"] 13#strip: //div[@class="story-feature narrow"]
14#strip: //div[@class="story-feature wide"] 14#strip: //div[@class="story-feature wide"]
15#strip: //div[@class="story-feature dslideshow-enclosure"] 15#strip: //div[@class="story-feature dslideshow-enclosure"]
16strip: //div[contains(@class, "story-feature")] 16strip: //div[contains(@class, "story-feature") and not(contains(@class, 'full-width'))]
17strip: //span[@class="story-date"] 17strip: //span[@class="story-date"]
18#strip: //div[@class="caption body-narrow-width"] 18#strip: //div[@class="caption body-narrow-width"]
19strip: //div[@class="warning"]//p 19strip: //div[@class="warning"]//p
@@ -30,13 +30,26 @@ strip: //div[contains(@class, 'comment-introduction')]
30strip: //div[contains(@class, 'share-tools')] 30strip: //div[contains(@class, 'share-tools')]
31strip: //div[@id='also-related-links'] 31strip: //div[@id='also-related-links']
32 32
33strip_id_or_class: share-help
34strip_id_or_class: comments_module
35
33replace_string(<noscript>): <div> 36replace_string(<noscript>): <div>
34replace_string(</noscript>): </div> 37replace_string(</noscript>): </div>
35 38
39tidy: no
36prune: no 40prune: no
37 41
38dissolve: //h2 42dissolve: //h2
43
39test_url: http://www.bbc.co.uk/sport/0/football/23224017 44test_url: http://www.bbc.co.uk/sport/0/football/23224017
45test_contains: Swansea City have completed the club-record signing
46
40test_url: http://www.bbc.co.uk/news/business-15060862 47test_url: http://www.bbc.co.uk/news/business-15060862
48test_contains: Europe's leaders are meeting again to try to solve
49
50# news feed
51test_url: http://feeds.bbci.co.uk/news/rss.xml
52# sports feed
53test_url: http://feeds.bbci.co.uk/sport/0/football/rss.xml?edition=int
41# video entry 54# video entry
42test_url: http://www.bbc.co.uk/news/world-asia-22056933 \ No newline at end of file 55test_url: http://www.bbc.co.uk/news/world-asia-22056933
diff --git a/inc/3rdparty/site_config/standard/bbc.com.txt b/inc/3rdparty/site_config/standard/bbc.com.txt
new file mode 100755
index 00000000..c04a683e
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/bbc.com.txt
@@ -0,0 +1,60 @@
1body: //div[@class="story-body"]
2# for video entries
3body: //div[contains(@class, "videoInStory") or @id="meta-information"]
4title: //h1[@class="story-header"]
5date: //span[@class="story-date"]/span[@class='date']
6# for sport site
7date: //meta[@name='DCTERMS.created']/@content
8author: //div[@id='headline']//span[@class='byline-name']
9
10# recipes, e.g. http://www.bbc.co.uk/food/recipes/mymincepies_71055
11body: //div[contains(@class, 'hrecipe')]//div[@id='subcolumn-1']
12
13#strip: //div[@class="story-feature narrow"]
14#strip: //div[@class="story-feature wide"]
15#strip: //div[@class="story-feature dslideshow-enclosure"]
16strip: //div[contains(@class, "story-feature") and not(contains(@class, 'full-width'))]
17strip: //span[@class="story-date"]
18#strip: //div[@class="caption body-narrow-width"]
19strip: //div[@class="warning"]//p
20strip: //div[@id='page-bookmark-links-head']
21strip: //object
22strip: //div[contains(@class, "bbccom_advert_placeholder")]
23strip: //div[contains(@class, "embedded-hyper")]
24strip: //div[contains(@class, 'market-data')]
25strip: //a[contains(@class, 'hidden')]
26strip: //div[contains(@class, 'hypertabs')]
27strip: //div[contains(@class, 'related')]
28strip: //form[@id='comment-form']
29strip: //div[contains(@class, 'comment-introduction')]
30strip: //div[contains(@class, 'share-tools')]
31strip: //div[@id='also-related-links']
32
33strip_id_or_class: share-help
34strip_id_or_class: comments_module
35
36replace_string(<noscript>): <div>
37replace_string(</noscript>): </div>
38
39native_ad_clue: //meta[@property="og:url" and contains(@content, '/sponsored/')]
40
41tidy: no
42prune: no
43
44dissolve: //h2
45
46test_url: http://www.bbc.com/sport/0/football/28918021
47test_contains: Cameroonian footballer Albert Ebosse has died
48
49test_url: http://www.bbc.com/sport/0/football/23224017
50
51test_url: http://www.bbc.com/news/business-15060862
52test_contains: Europe's leaders are meeting again to try
53
54
55# news feed
56test_url: http://feeds.bbci.co.uk/news/rss.xml
57# sports feed
58test_url: http://feeds.bbci.co.uk/sport/0/football/rss.xml?edition=int
59# video entry
60test_url: http://www.bbc.com/news/world-asia-22056933
diff --git a/inc/3rdparty/site_config/standard/bit-tech.net.txt b/inc/3rdparty/site_config/standard/bit-tech.net.txt
new file mode 100755
index 00000000..c6f5b204
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/bit-tech.net.txt
@@ -0,0 +1,19 @@
1body: //div[@id='column_1']
2next_page_link: //div[@class='next']/a[not(contains(@href, '/comments') or contains(@href, '/news/'))]
3prune: no
4
5author: substring-after(//p[@class='byline'], 'by ')
6date: substring-before(substring-after(//p[@class='byline'], 'on '), ' by')
7
8strip: //h1
9strip_id_or_class: socialLinks
10strip_id_or_class: byline
11strip_id_or_class: pageSelector
12strip_id_or_class: articleTabs
13strip_id_or_class: pageNav
14strip_id_or_class: share
15strip_id_or_class: commentsContainer
16strip_id_or_class: below_article_related
17
18test_url: http://www.bit-tech.net/hardware/storage/2014/08/13/ocz-arc-100-240gb-review/1
19test_url: http://www.bit-tech.net/news/bits/2014/08/15/google-trojan/1
diff --git a/inc/3rdparty/site_config/standard/bleacherreport.com.txt b/inc/3rdparty/site_config/standard/bleacherreport.com.txt
new file mode 100755
index 00000000..9205e44e
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/bleacherreport.com.txt
@@ -0,0 +1,16 @@
1body: //div[contains(@class, 'article_pages')]
2
3strip_id_or_class: article_page-header
4strip_id_or_class: paginator
5strip_id_or_class: article_info
6
7find_string: src="data:image
8replace_string: ignore-src="data:image
9find_string: data-defer-src="
10replace_string: src="
11
12prune: no
13
14test_url: http://bleacherreport.com/articles/feed
15test_url: http://bleacherreport.com/articles/2137787-christian-ponders-newborn-daughter-was-named-after-fsu-legend-bobby-bowden
16test_url: http://bleacherreport.com/articles/2137596-college-football-week-1-picks-unlv-runnin-rebels-vs-arizona-wildcats/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blogs.faz.net.txt b/inc/3rdparty/site_config/standard/blogs.faz.net.txt
new file mode 100755
index 00000000..4f2626f1
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/blogs.faz.net.txt
@@ -0,0 +1,45 @@
1# Author: zinnober
2
3tidy: no
4prune: no
5
6# Set author
7author: //a[@rel='author']
8
9# Set date
10date: //span[@class='Datum']
11
12# Content is here
13body: //div[@class='Artikel']
14
15# Tidy up before article
16strip: //div[@id='FAZHeaderNeu']
17strip: //h2[@itemprop='headline']
18strip: //span[@class='Datum']
19strip: //span[@class='Autor']
20strip_id_or_class: ArticlePagerTop
21strip: //div[@class='FAZArtikelEinleitung']/h2
22
23# General cleanup
24strip: //div[@class='clear']
25strip: //span[@class='Bildnachweis']
26strip: //iframe
27strip_id_or_class: Community
28strip: ' · '
29
30# Remove tracking and ads
31strip_image_src: /l.gif?
32strip: //img[@width='1']
33strip_id_or_class: invisible
34strip_id_or_class: Anzeige
35strip_id_or_class: billboard
36
37# Remove clutter after article
38strip_id_or_class: Tagline
39strip_id_or_class: ArtikelAbbinder
40strip_id_or_class: FAZArtikelKommentare
41strip_id_or_class: ArtikelKommentieren
42strip_id_or_class: FAZContentRight
43
44# Try it yourself
45test_url: http://blogs.faz.net/wost/2014/08/17/viel-fuck-und-wenig-guter-sex-1239/
diff --git a/inc/3rdparty/site_config/standard/brasil.elpais.com.txt b/inc/3rdparty/site_config/standard/brasil.elpais.com.txt
index 0b8feb6a..6a22dcb7 100755
--- a/inc/3rdparty/site_config/standard/brasil.elpais.com.txt
+++ b/inc/3rdparty/site_config/standard/brasil.elpais.com.txt
@@ -19,5 +19,8 @@ strip: //p[@class='nota_pie']
19strip: //div[starts-with(@id, 'sumario') and contains(., 'más información')] 19strip: //div[starts-with(@id, 'sumario') and contains(., 'más información')]
20strip: //div[@id='coment' or @id='foros_not'] 20strip: //div[@id='coment' or @id='foros_not']
21 21
22test_url: http://elpais.com/elpais/2012/02/06/gente/1328526783_491687.html 22test_url: http://brasil.elpais.com/brasil/2014/10/15/politica/1413334841_878730.html
23test_url: http://www.elpais.com/articulo/cultura/mano/retrato/materia/elpepicul/20120207elpepicul_2/Tes 23test_contains: O PT quer intensificar a presença do ex-presidente
24
25test_url: http://brasil.elpais.com/brasil/2014/10/13/internacional/1413225730_450761.html
26test_contains: Todos na localidade onde ele nasceu ainda falavam da façanha
diff --git a/inc/3rdparty/site_config/standard/businessweek.com.txt b/inc/3rdparty/site_config/standard/businessweek.com.txt
index 03085593..f546b708 100755
--- a/inc/3rdparty/site_config/standard/businessweek.com.txt
+++ b/inc/3rdparty/site_config/standard/businessweek.com.txt
@@ -1,30 +1,17 @@
1# story has several pages, should be detected 1# include the lead graphic in the body, if available
2body: //div[@id='storyBody'] 2body: //div[contains(concat(' ', normalize-space(@id), ' '), ' lead_graphic ')] | //div[contains(concat(' ', normalize-space(@itemprop), ' '), ' articleBody ')]
3body: //div[@id='article_body'] 3title: //h1[contains(concat(' ', normalize-space(@itemprop), ' '), ' headline ')]
4body: //div[@id='story_body'] 4date: //time[contains(concat(' ', normalize-space(@itemprop), ' '), ' datePublished ')]
5 5
6title://h1[@id='article_headline'] 6strip_id_or_class: photo_credit
7 7strip_id_or_class: photo_caption
8# article author 8strip_id_or_class: inline_gallery
9author: //p[@class='author']/a 9# pull quote, often inside a blockquote element
10# story author(s) 10strip_id_or_class: pq
11author: substring-after(//p[@class='byline'], 'By ') 11strip_id_or_class: credit
12 12strip_id_or_class: figcaption
13# article date 13strip_id_or_class: related_item
14date: //span[@class='published_date']
15# story date
16date: //span[@class='date']
17
18date: substring-after(//div[contains(@class,'attributor')],'on')
19strip_id_or_class: inset
20strip: //p/span[@class='photoCredit']
21strip: //h1
22
23strip_id_or_class: page_count
24strip_id_or_class: tools
25strip_id_or_class: pagination
26
27single_page_link: //li[@id='stPrint']/a
28 14
29test_url: http://www.businessweek.com/magazine/buyback-insurance-a-good-deal-for-retailers-07282011.html 15test_url: http://www.businessweek.com/magazine/buyback-insurance-a-good-deal-for-retailers-07282011.html
30test_url: http://www.businessweek.com/articles/2012-06-06/american-pain-the-largest-u-dot-s-dot-pill-mills-rise-and-fall \ No newline at end of file 16test_url: http://www.businessweek.com/articles/2012-06-06/american-pain-the-largest-u-dot-s-dot-pill-mills-rise-and-fall
17test_url: http://www.businessweek.com/articles/2014-07-09/american-apparel-dov-charneys-sleazy-struggle-for-control
diff --git a/inc/3rdparty/site_config/standard/buzzfeed.com.txt b/inc/3rdparty/site_config/standard/buzzfeed.com.txt
index 97dddaee..ea88ea47 100755
--- a/inc/3rdparty/site_config/standard/buzzfeed.com.txt
+++ b/inc/3rdparty/site_config/standard/buzzfeed.com.txt
@@ -10,6 +10,15 @@ date: //time[@data-print='date']
10body: //div[@data-print='body'] 10body: //div[@data-print='body']
11body: //section[@data-print='body'] 11body: //section[@data-print='body']
12 12
13find_string: rel:bf_image_src=
14replace_string: src=
15find_string: src="data:
16replace_string: disabled_src="data:
17
18native_ad_clue: //meta[@property="article:section" and @content="Advertiser"]
19
13# For various things... 20# For various things...
14strip: *[@data-print="ignore"] 21strip: *[@data-print="ignore"]
15test_url: http://www.buzzfeed.com/hgrant/35-reasons-why-dogs-hate-the-holidays \ No newline at end of file 22test_url: http://www.buzzfeed.com/hgrant/35-reasons-why-dogs-hate-the-holidays
23# Native ad
24test_url: http://www.buzzfeed.com/bravo/ways-to-up-your-online-dating-game \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/canonrumors.com.txt b/inc/3rdparty/site_config/standard/canonrumors.com.txt
new file mode 100755
index 00000000..c22cf4f1
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/canonrumors.com.txt
@@ -0,0 +1,28 @@
1# Author: zinnober
2
3tidy: no
4prune: no
5
6# Set title
7title: //h2
8
9date: //li[@class='time']
10
11# Set author
12author: //a[contains(@rel, 'author')]
13
14# Content is here
15body: //div[@id='content']
16
17# Tidy up before article
18strip: //div[@class='meta']
19
20# Tidy up after article
21strip_id_or_class: nr_related_placeholder
22strip_id_or_class: twitter-share-button
23strip_id_or_class: afterpost
24strip_id_or_class: tags
25
26# Try it yourself
27test_url: http://www.canonrumors.com/2014/09/chuck-westfall-talks-canon-eos-7d-mark-ii/
28test_url: http://www.canonrumors.com/2014/09/canon-cinema-eos-captures-space-in-4k-for-new-imax-3d-film/
diff --git a/inc/3rdparty/site_config/standard/chomsky.info.txt b/inc/3rdparty/site_config/standard/chomsky.info.txt
index 31440538..2645f119 100755
--- a/inc/3rdparty/site_config/standard/chomsky.info.txt
+++ b/inc/3rdparty/site_config/standard/chomsky.info.txt
@@ -2,4 +2,5 @@ title: //div[@class='title']
2author: //div[@class='author'] 2author: //div[@class='author']
3prune: no 3prune: no
4 4
5test_url: http://www.chomsky.info/onchomsky/2002----.htm \ No newline at end of file 5test_url: http://www.chomsky.info/onchomsky/2002----.htm
6test_contains: The propaganda model argues
diff --git a/inc/3rdparty/site_config/standard/cn.reuters.com.txt b/inc/3rdparty/site_config/standard/cn.reuters.com.txt
index b3878662..28f10472 100755
--- a/inc/3rdparty/site_config/standard/cn.reuters.com.txt
+++ b/inc/3rdparty/site_config/standard/cn.reuters.com.txt
@@ -1,5 +1,9 @@
1title: //div[@id='maincontent']//h1 1title: //div[@id='maincontent']//h1
2body: //div[@id='resizeableText'] 2body: //div[@id='resizeableText']
3 3
4single_page_link: concat(//link[@rel='canonical']/@href, '?sp=true')
5
4test_url: http://cn.reuters.com/article/CNAnalysesNews/idCNKBS0FF0NM20140710 6test_url: http://cn.reuters.com/article/CNAnalysesNews/idCNKBS0FF0NM20140710
5test_url: http://cn.reuters.feedsportal.com/CNAnalysesNews \ No newline at end of file 7test_url: http://cn.reuters.feedsportal.com/CNAnalysesNews
8# multipage link
9test_url: http://cn.reuters.com/article/idCNKBS0FF0UL20140710 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/code.fivefilters.org.txt b/inc/3rdparty/site_config/standard/code.fivefilters.org.txt
index 269fb547..f8a88cae 100755
--- a/inc/3rdparty/site_config/standard/code.fivefilters.org.txt
+++ b/inc/3rdparty/site_config/standard/code.fivefilters.org.txt
@@ -1 +1,3 @@
1body: //div[@id='content'] 1body: //div[@id='readme']
2
3test_url: http://code.fivefilters.org/full-text-rss
diff --git a/inc/3rdparty/site_config/standard/csmonitor.com.txt b/inc/3rdparty/site_config/standard/csmonitor.com.txt
index b482e34e..70ab9885 100755
--- a/inc/3rdparty/site_config/standard/csmonitor.com.txt
+++ b/inc/3rdparty/site_config/standard/csmonitor.com.txt
@@ -15,4 +15,4 @@ strip_id_or_class: promotion-tag
15tidy: no 15tidy: no
16prune: no 16prune: no
17 17
18test_url: www.csmonitor.com/World/Middle-East/2011/1108/Imminent-Iran-nuclear-threat-A-timeline-of-warnings-since-1979/Earliest-warnings-1979-84 \ No newline at end of file 18test_url: http://www.csmonitor.com/World/Middle-East/2011/1108/Imminent-Iran-nuclear-threat-A-timeline-of-warnings-since-1979/Earliest-warnings-1979-84
diff --git a/inc/3rdparty/site_config/standard/da.feedsportal.com.txt b/inc/3rdparty/site_config/standard/da.feedsportal.com.txt
index 381446e5..2bd66be8 100755
--- a/inc/3rdparty/site_config/standard/da.feedsportal.com.txt
+++ b/inc/3rdparty/site_config/standard/da.feedsportal.com.txt
@@ -2,4 +2,4 @@ single_page_link: //a
2tidy: no 2tidy: no
3prune: no 3prune: no
4 4
5test_url: da.feedsportal.com/c/585/f/413794/s/17037b5a/l/0L0Stelegraaf0Bnl0Cbinnenland0C10A2757860C0I0IKlacht0Itegen0Idr0B0IFrank0Iniet0I0Eontvankelijk0I0I0Bhtml0Dcid0Frss/ia1.htm \ No newline at end of file 5test_url: http://da.feedsportal.com/c/585/f/413794/s/17037b5a/l/0L0Stelegraaf0Bnl0Cbinnenland0C10A2757860C0I0IKlacht0Itegen0Idr0B0IFrank0Iniet0I0Eontvankelijk0I0I0Bhtml0Dcid0Frss/ia1.htm
diff --git a/inc/3rdparty/site_config/standard/designsponge.com.txt b/inc/3rdparty/site_config/standard/designsponge.com.txt
new file mode 100755
index 00000000..2cd2f1f6
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/designsponge.com.txt
@@ -0,0 +1,31 @@
1# Author: zinnober
2
3tidy: no
4prune: no
5
6# Set title
7title: //header/h1
8
9# Set author
10author: //a[rel='author']
11
12# Content is here
13body: //article
14
15# Tidy up before article
16strip: //header
17
18# Tidy up article
19strip: //div[contains(@id, 'gallery-')]
20replace_string(<a rel="attachment): <p rel="attachment
21
22
23# Tidy up after article
24strip: //div[@class='sm']
25strip_id_or_class: related
26strip_id_or_class: comments
27strip: //footer
28
29# Try it yourself
30test_url: http://www.designsponge.com/2010/06/seattle-design-guide.html
31test_url: http://www.designsponge.com/2012/04/sneak-peek-liz-cook.html
diff --git a/inc/3rdparty/site_config/standard/desitvforum.net.txt b/inc/3rdparty/site_config/standard/desitvforum.net.txt
index efa85f76..c77007b7 100755
--- a/inc/3rdparty/site_config/standard/desitvforum.net.txt
+++ b/inc/3rdparty/site_config/standard/desitvforum.net.txt
@@ -2,4 +2,6 @@ body: (//blockquote[contains(@class, 'postcontent')])[1]
2body: (//div[starts-with(@id, 'post_message')])[1] 2body: (//div[starts-with(@id, 'post_message')])[1]
3 3
4prune: no 4prune: no
5tidy: no \ No newline at end of file 5tidy: no
6
7test_url: http://www.desitvforum.net/forum/watch-online/431739-creature-3d-2014-watch-online-download-dvd-rip.html
diff --git a/inc/3rdparty/site_config/standard/deutsche-apotheker-zeitung.de.txt b/inc/3rdparty/site_config/standard/deutsche-apotheker-zeitung.de.txt
new file mode 100755
index 00000000..36709cab
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/deutsche-apotheker-zeitung.de.txt
@@ -0,0 +1,29 @@
1# Author: zinnober
2
3prune: yes
4tidy: yes
5
6title: //h1
7date: //p[@class='news_datum']
8author: //span[@class='author']
9
10body: //div[@class='tagesnews-content']
11
12# General clenaup
13strip_id_or_class: dachzeile
14strip: //h3
15strip: //p[@class='bodytext']//a
16strip_id_or_class: autor_datum
17strip_id_or_class: comments
18strip_id_or_class: banner-
19
20strip: //p[contains(., 'Lesen Sie')]
21strip: //p[contains(., '– in DAZ')]
22
23# Fix image captions
24replace_string(<p class="image_caption">): <p><small><em>
25replace_string(</dd>): </em></small></dd>
26
27test_url: http://www.deutsche-apotheker-zeitung.de/pharmazie/news/2014/09/03/weniger-nebenwirkungen-aber-kein-zusatznutzen/13715.html
28test_url: http://www.deutsche-apotheker-zeitung.de/recht/news/2014/09/02/urteile-zum-cannabis-eigenanbau-bfarm-geht-in-berufung/13716.html
29
diff --git a/inc/3rdparty/site_config/standard/dictionary.reference.com.txt b/inc/3rdparty/site_config/standard/dictionary.reference.com.txt
index f8b79c80..b8243d0c 100755
--- a/inc/3rdparty/site_config/standard/dictionary.reference.com.txt
+++ b/inc/3rdparty/site_config/standard/dictionary.reference.com.txt
@@ -1,8 +1,6 @@
1title: //h1[@id='query_h1'] 1body: //div[contains(@class, 'source-data')]
2body: //div[contains(@class, 'lunatext results_content')] 2strip: //button
3strip_id_or_class: spl_unshd
4#replace_string(<div class="dicTl">): <div class="dicTl">------------------<br />
5 3
6prune: no 4prune: no
7 5
8test_url: http://www.wired.com/cloudline/2011/10/meet-arms-cortex-a15-the-future-of-the-ipad-and-possibly-the-macbook-air/ \ No newline at end of file 6test_url: http://dictionary.reference.com/browse/propaganda
diff --git a/inc/3rdparty/site_config/standard/dn.pt.txt b/inc/3rdparty/site_config/standard/dn.pt.txt
new file mode 100755
index 00000000..051b8cb9
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/dn.pt.txt
@@ -0,0 +1,9 @@
1single_page_link: concat('http://www.dn.pt/Common/print.aspx?content_id=', //input[@type='hidden' and @name='link-comments']/@value)
2#<input type="hidden" name="link-comments" class="link-comments" value="3972244">
3
4title: //h1
5author: //div[@class="Author"]
6
7strip: //div[@class="Patrocinio"]
8
9test_url: http://www.dn.pt/inicio/opiniao/interior.aspx?content_id=3972244&seccao=Alberto%20Gon%E7alves&tag=Opini%E3o%20-%20Em%20Foco&page=1 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dropbox.com.txt b/inc/3rdparty/site_config/standard/dropbox.com.txt
index 92ae31b2..3b51569f 100755
--- a/inc/3rdparty/site_config/standard/dropbox.com.txt
+++ b/inc/3rdparty/site_config/standard/dropbox.com.txt
@@ -1 +1,3 @@
1single_page_link: //a[@id='download_button_link'] \ No newline at end of file 1single_page_link: //a[@id='download_button_link']
2
3test_url: https://www.dropbox.com/s/qmocfrco2t0d28o/Fluffbeast.docx
diff --git a/inc/3rdparty/site_config/standard/echo-online.de.txt b/inc/3rdparty/site_config/standard/echo-online.de.txt
new file mode 100755
index 00000000..e53de23e
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/echo-online.de.txt
@@ -0,0 +1,24 @@
1# Author: Marvin Dickhaus <github@marvindickhaus.de>
2# 2014-10-08
3
4#Tidy just messes up the DOM
5tidy: no
6
7title: //h1
8body: //h2 | //div[@id='artikelteaser'] | //div[@id='artikeltext']
9
10#Strip
11strip_image_src: artikel_a_merken.gif
12strip: //div[@class='zusatzinfo']
13
14#Author: substring is used to remove the " Von " prefix.
15author: substring(//li[@class='artikelautor'], 5)
16
17date: //li[@class='artikeldatum']
18
19#The first two URLs will at some point no longer show
20#the full article. There is a time-based paywall
21#installed. Using the feed should present valid output
22test_url: http://www.echo-online.de/art1231,5503063
23test_url: http://www.echo-online.de/art1168,5502598
24test_url: http://www.echo-online.de/rss/darmstadt.xml
diff --git a/inc/3rdparty/site_config/standard/economist.com.txt b/inc/3rdparty/site_config/standard/economist.com.txt
index 16c9ed64..8db5fdd6 100755
--- a/inc/3rdparty/site_config/standard/economist.com.txt
+++ b/inc/3rdparty/site_config/standard/economist.com.txt
@@ -1,8 +1,13 @@
1body: //div[@class='main-content'] 1body: //div[@class='main-content']
2body: //article[contains(@class, 'resp-node')]
2date: //time[@class='date-created'] 3date: //time[@class='date-created']
3strip: //aside 4strip: //aside
4prune: no 5prune: no
5 6
6autodetect_next_page: no 7autodetect_next_page: no
7 8
8test_url: http://www.economist.com/node/21528429 \ No newline at end of file 9test_url: http://www.economist.com/node/21528429
10
11test_url: http://www.economist.com/news/essays/21623373-which-something-old-and-powerful-encountered-vault
12test_contains: the calfskin pages are smooth
13test_contains: Books will evolve online and off
diff --git a/inc/3rdparty/site_config/standard/eurogamer.net.txt b/inc/3rdparty/site_config/standard/eurogamer.net.txt
index 8a351667..8931becb 100755
--- a/inc/3rdparty/site_config/standard/eurogamer.net.txt
+++ b/inc/3rdparty/site_config/standard/eurogamer.net.txt
@@ -1,8 +1,9 @@
1body: //div[ @class='content' ] | //div[ @class='blog-entry' ] 1body: //p[@class='strapline'] | //div[@class='cover-image'] | //article[@class='hd']
2strip: //div[@class='social top']
3strip: //p[@class='byline']
2 4
3strip: //h2/abbr | //div[ @class='lowleader' ] | //*[ @class='discussion' ] | //img[ @class='play-button' ] | //div[ @class='boxout' ] | //h2/a | //h2 | //h2/div | //p[ @class='timestamp' ] | //a[ @class='eurogamer-author' ] | //p[ @class='aPager' ] | //h1 | //div[ @id='lowleader' ] | //a[ @class='next' ] | //div[contains(concat(' ', normalize-space(@class), ' '), ' pullquote ')] 5date: //span[@itemprop='datePublished']
6author: //a[@itemprop='author']/text()
4 7
5date://p[ @class='timestamp' ] 8test_url: http://www.eurogamer.net/articles/2014-08-20-bungie-ordered-to-return-shares-to-composer-marty-odonnell
6 9test_url: http://www.eurogamer.net/articles/2014-08-20-invisible-inc-does-espionage-justice
7author://a[ @class='eurogamer-author' ]
8test_url: http://www.eurogamer.net/articles/digitalfoundry-vs-unreal-engine-4 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/facebook.com.txt b/inc/3rdparty/site_config/standard/facebook.com.txt
index 6a492767..26d4f905 100755
--- a/inc/3rdparty/site_config/standard/facebook.com.txt
+++ b/inc/3rdparty/site_config/standard/facebook.com.txt
@@ -1,5 +1,12 @@
1body: //div[@id='imagestage'] 1body: //div[@id='imagestage']
2body: //div[contains(@class, 'userContentWrapper')]
3
4strip_id_or_class: commentable
5
2prune: no 6prune: no
3tidy: no 7tidy: no
4 8
5test_url: https://www.facebook.com/feeds/page.php?id=338077742912613&format=rss20 \ No newline at end of file 9# single_page_link: replace(substring-after(//noscript//meta[@http-equiv="refresh"]/@content, 'URL='), "&amp;", "&")
10
11test_url: https://www.facebook.com/permalink.php?story_fbid=10154584776550183&id=294468630182
12test_contains: holding an extraordinary session in Brussels this month
diff --git a/inc/3rdparty/site_config/standard/faz.net.txt b/inc/3rdparty/site_config/standard/faz.net.txt
index d087d2aa..47048a1b 100755
--- a/inc/3rdparty/site_config/standard/faz.net.txt
+++ b/inc/3rdparty/site_config/standard/faz.net.txt
@@ -1,36 +1,101 @@
1# Author: zinnober
2# Complete rewrite of the faz.net template as the standard one is broken
3# I tried to consider as many page variants as possible, which was some serious work
4
5tidy: no
6prune: no
7
1# Title 8# Title
2title: //p[@class='Content HeadlineShort'] 9title: //p[@class='Content HeadlineShort']
3 10
4# Authors 11# Set author
5# some are known and have a link, others don't 12author: substring-after(//span[@class='Autor'], 'von ')
6author: substring-after(//span[@class='Autor'], 'Von') 13author: //span[@class='caps last']/span[@class='caps last']
14author: //a[@rel='author']
7 15
8# Date 16# Set date
9date: //span[@class='Datum'] 17date: //span[@class='Datum']
18date: //span[@class='Datum'],/span
19
20# Fetch full multipage articles
21next_page_link: //a[@title='Nächste Seite']
10 22
11# Body 23# Content is here
12body: //div[@class='Artikel'] 24body: //div[@class='Artikel']
13 25
14# Removements before body text 26# Tidy up before article
15strip: //div[@class='Breadcrumbs'] 27strip: //div[@id='FAZHeaderNeu']
16strip: //div[@class='QuickSearchBox'] 28strip: //h2[@itemprop='headline']
17strip: //div[@class='FAZArtikelEinleitung'] 29strip: //span[@class='Datum']
18strip: //div[@class='FAZArtikelReiter'] 30strip: //span[@class='Autor']
31strip_id_or_class: ArticlePagerTop
32
33# General cleanup
19strip: //div[@class='clear'] 34strip: //div[@class='clear']
35strip: //a[@title='Zur Homepage FAZ.NET']
36strip: //iframe
37replace_string( · ):
38
39# Remove tracking and ads
40strip_image_src: /l.gif?
41strip: //div[contains(@style, 'background-image')]
42strip: //img[@width='1']
43strip_id_or_class: invisible
44strip_id_or_class: Anzeige
45strip_id_or_class: billboard
46
47# Remove various text boxes and social media foo
48strip_id_or_class: WeitereBeitraege
49strip_id_or_class: WBListe
50strip_id_or_class: AutorenModul
51strip_id_or_class: Community
52strip_id_or_class: SocialMediaStatus
53strip_id_or_class: RelatedLinkBox
54strip_id_or_class: MultimediaNavigation
55strip_id_or_class: IndexTitel
56
57# Fix picture caps and pictures (use better resolution and remove clutter)
58strip_id_or_class: LightBoxOverlay
59strip_id_or_class: exitLarge
60strip_id_or_class: PagerBox
61strip_id_or_class: Bildnachweis
62strip_id_or_class: Bildueberschrift
63strip_id_or_class: Bildbeschreibung
64strip_id_or_class: ArtikelBild610
65strip_id_or_class: MediaLink
66strip_id_or_class: FotoBoxInnerLeft
67strip_id_or_class: BilderRelatedLinks
68
69# Remove clutter after article
70strip_id_or_class: ArticlePagerBottom
71strip_id_or_class: backToHome
72strip_id_or_class: ArtikelAbbinder
73strip_id_or_class: lesermeinungscontainer
74strip_id_or_class: ThemenLinks
75strip_id_or_class: rechtehinweis
76strip_id_or_class: FAZArtikelMap
77strip_id_or_class: FAZArtikelKommentare
78strip_id_or_class: ArtikelKommentieren
79strip_id_or_class: FAZArtikelFunktionen
80strip_id_or_class: mailLB
81strip_id_or_class: FAZContentRight
82strip_id_or_class: stageModule
83strip_id_or_class: ContentFooter
84strip_id_or_class: ServicesFooter
85strip_id_or_class: FAZFooter
86
87# Clean up stuff present just in some articles
88strip_id_or_class: Teaser620
89strip_id_or_class: TeaserMultimedia
90strip_id_or_class: VideoBox
91
92# Remove as soon as Wallabag maight be able to embed flash video
93strip_id_or_class: mmoObjectAsTeaserInArticle
94strip_id_or_class: additionalStylesAudioVideo
95strip_id_or_class: hideMMElements
96
97# Try it yourself
98test_url: http://www.faz.net/aktuell/feuilleton/zum-tod-von-margaret-thatcher-die-reizfigur-12141919.html#Drucken
99test_url: http://www.faz.net/aktuell/politik/inland/allensbach-analyse-im-namen-des-volkes-13106492.html
100test_url: http://www.faz.net/aktuell/feuilleton/kino/video-filmkritiken/video-filmkritik-when-animals-dream-zerrissene-jugend-13105772.html
20 101
21# General removements
22strip: //span[@class='Bildnachweis']
23strip: //img[@class='MediaIcon']
24strip: //div[@class='ArtikelMediaLink']
25dissolve: //a[img]
26
27# Removements after body text
28strip: //div[@class='ArtikelAbbinder']
29strip: //div[@class='ArtikelKommentieren Artikelfuss GETS;tk;boxen.top-lesermeinungen;tp;content']
30strip: //div[@class='FAZArtikelKommentare FAZArtikelContent']
31strip: //div[@class='FAZArtikelFunktionen']
32strip: //div[@id='FAZContentRight']
33
34# Fix picture captions
35wrap_in(small): //span[@class='Bildunterschrift']/text()
36test_url: http://www.faz.net/aktuell/feuilleton/zum-tod-von-margaret-thatcher-die-reizfigur-12141919.html#Drucken \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/finance.yahoo.com.txt b/inc/3rdparty/site_config/standard/finance.yahoo.com.txt
index 248522cb..0c967db0 100755
--- a/inc/3rdparty/site_config/standard/finance.yahoo.com.txt
+++ b/inc/3rdparty/site_config/standard/finance.yahoo.com.txt
@@ -5,8 +5,8 @@ strip: //div[contains(@class, 'related-companies')]
5strip: //div[@id='y-article-related'] 5strip: //div[@id='y-article-related']
6strip: //div[@id='ypf-article-related'] 6strip: //div[@id='ypf-article-related']
7prune: no 7prune: no
8tidy: no
8 9
9single_page_link: //div[@class='ft']//a[contains(@href, 'page=all')] 10single_page_link: //div[@class='ft']//a[contains(@href, 'page=all')]
10 11
11test_url: http://sg.finance.yahoo.com/news/Motorola-takes-wraps-249-rsg-3508842732.html?x=0&.v=1 12test_url: http://finance.yahoo.com/news/canadian-orebodies-gives-notice-exercise-130000032.html \ No newline at end of file
12test_url: http://finance.yahoo.com/news/super-young-retirement-savers.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/fivechapters.com.txt b/inc/3rdparty/site_config/standard/fivechapters.com.txt
index d9c5e42e..9614d2f6 100755
--- a/inc/3rdparty/site_config/standard/fivechapters.com.txt
+++ b/inc/3rdparty/site_config/standard/fivechapters.com.txt
@@ -1,2 +1,2 @@
1body: //div[@class='entry'] 1body: //div[@class='entry']
2test_url: http://www.fivechapters.com/2010/paris-part-one/ \ No newline at end of file 2test_url: http://www.fivechapters.com/2014/the-saddest-writer-in-america-part-two/
diff --git a/inc/3rdparty/site_config/standard/fivefilters.org.txt b/inc/3rdparty/site_config/standard/fivefilters.org.txt
index dc1db432..f37f02b9 100755
--- a/inc/3rdparty/site_config/standard/fivefilters.org.txt
+++ b/inc/3rdparty/site_config/standard/fivefilters.org.txt
@@ -1 +1,4 @@
1prune: no \ No newline at end of file 1body: //section[contains(@class, 'container')]
2prune: no
3
4test_url: http://fivefilters.org/kindle-it/
diff --git a/inc/3rdparty/site_config/standard/foreignpolicy.com.txt b/inc/3rdparty/site_config/standard/foreignpolicy.com.txt
index 4e84b989..853a5b7b 100755
--- a/inc/3rdparty/site_config/standard/foreignpolicy.com.txt
+++ b/inc/3rdparty/site_config/standard/foreignpolicy.com.txt
@@ -1,15 +1,19 @@
1title: //div[@class='translateHead']//h1 | //div[@id='art-mast']//h1 1title: //div[@class='translateHead']//h1 | //div[@id='art-mast']//h1
2author: substring-after(//span[@id='by-line'], 'BY ') 2author: substring-after(//span[@id='by-line'], 'BY ')
3date: //span[@id='pub-date'] 3date: //span[@id='pub-date']
4body: //div[@id='art-mast']/h2 | //div[@class='translateBody'] | //div[@id='art-body'] 4body: (//article//img[contains(@class, 'main_photo')])[1] | (//article//div[contains(@class, 'full_post_content')])[1]
5#body: //div[@id='art-mast']/h2 | //div[@class='translateBody'] | //div[@id='art-body']
5#Strip inside article content 6#Strip inside article content
6strip: //div[@id='share-box'] 7strip: //div[@id='share-box']
7strip: //div[@id='special-box'] 8strip: //div[@id='special-box
9
10strip_id_or_class: side_panel
8 11
9prune: no 12prune: no
10 13
11single_page_link: //span[@id='controls']/a[contains(@href, 'print=yes')] 14single_page_link: //span[@id='controls']/a[contains(@href, 'print=yes')]
12single_page_link: //a[text()='SINGLE PAGE'] 15single_page_link: //a[text()='SINGLE PAGE']
13 16
17test_url: http://www.foreignpolicy.com/articles/2014/07/22/the_end_game_in_gaza_netanyahu_hamas
14test_url: http://www.foreignpolicy.com/articles/2011/08/01/a_murderers_manifesto_and_me 18test_url: http://www.foreignpolicy.com/articles/2011/08/01/a_murderers_manifesto_and_me
15test_url: http://www.foreignpolicy.com/articles/2012/02/29/five_years_in_damascus \ No newline at end of file 19test_url: http://www.foreignpolicy.com/articles/2012/02/29/five_years_in_damascus \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/golem.de.txt b/inc/3rdparty/site_config/standard/golem.de.txt
index 6afdebe8..c64860c0 100755
--- a/inc/3rdparty/site_config/standard/golem.de.txt
+++ b/inc/3rdparty/site_config/standard/golem.de.txt
@@ -1,25 +1,34 @@
1# Jens Kohl, jens.kohl@... 1# Author: zinnober
2# - Added publication date 2# Rewrite of original template which fetched the printer-version without pictures
3# - Striped pagination block
4# - Added single page link
5# - Added xpath-querys for the printer friendly version
6 3
7title: //h1 4tidy: no
8body: //div[@class='formatted']
9prune: no 5prune: no
10 6
11date: substring-after(//li[2][@class="text1"], 'Datum:') 7# Set full title
12strip: //ol[@class="list-chapters"] 8title: //h1
13strip_comments: yes 9
14 10date: //time
15# next: commands for printer friendly pages 11
16single_page_link: //a[contains(@href, 'print.php?a=')]/@href 12# Content is here
17title: //body/h3 13body: //article
18strip_image_src: staticrl/images/logo.jpg 14
19strip_image_src: http://cpx.golem.de/cpx.php?class=7 15# Fetch full multipage articles
20strip: //body/h3 16next_page_link: //a[@id='atoc_next']
21strip: //body/b[1] 17
22strip: //body/b[2] 18# Remove tracking and ads
23strip: //body/b[3] 19strip_id_or_class: iqadtile4
24strip: //div[1] 20
25test_url: http://www.golem.de/1112/88696.html \ No newline at end of file 21# General Cleanup
22strip_id_or_class: list-jtoc
23strip_id_or_class: table-jtoc
24strip_id_or_class: implied
25strip_id_or_class: social-
26strip_id_or_class: comments
27strip_id_or_class: footer
28
29# Tidy up galleries (could still be improved, though)
30strip: //img[@src='']
31
32# Try yourself
33test_url: http://www.golem.de/news/intel-core-i7-5960x-im-test-die-pc-revolution-beginnt-mit-octacore-und-ddr4-1408-108893.html
34test_url: http://www.golem.de/news/test-infamous-first-light-neonbunter-actionspass-1408-108914.html
diff --git a/inc/3rdparty/site_config/standard/habrahabr.ru.txt b/inc/3rdparty/site_config/standard/habrahabr.ru.txt
new file mode 100755
index 00000000..67538359
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/habrahabr.ru.txt
@@ -0,0 +1,21 @@
1title: //span[@class="post_title"]
2author: //div[@class="author"]
3date: //div[@class="published
4
5body: //div[@class='content html_format'] | //div[@id='comments']
6
7strip: //a[@class="link_to_comment"]
8strip: //div[@class="show_tree"]
9strip: //a[@class="to_parent"]
10
11
12replace_string(class="reply_comments"): style="padding-left: 20px"
13replace_string(class="voting "): style="float: right"
14replace_string(src="//habrastorage.org/getpro/habr/avatars/): style="width:24px; height:24px;" class="123" src="//habrastorage.org/getpro/habr/avatars/
15replace_string(class="info "): style="padding-top:5px;font-size:0.85em;line-height:24px;"
16
17
18prune: no
19tidy: no
20
21test_url: http://habrahabr.ru/post/229883/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/heise.de.txt b/inc/3rdparty/site_config/standard/heise.de.txt
index c51af561..9433104b 100755
--- a/inc/3rdparty/site_config/standard/heise.de.txt
+++ b/inc/3rdparty/site_config/standard/heise.de.txt
@@ -1,7 +1,42 @@
1single_page_link: //p[@class='news_option']/a 1# Author: zinnober
2# Template should work well with either desktop or mobile version (m.heise.de)
2 3
4prune: no
5
6title: //article/h1 | //h1
3date: //p[@class='news_datum'] 7date: //p[@class='news_datum']
4title: //h1 8author: //h4[@class='author']
5body: //div[@class='meldung_wrapper'] 9
10body: //article | //div[@class='meldung_wrapper']
11
12# General cleanup
13strip: //time
14strip: //h4[@class='author']
15strip: //p[@class='news_datum']
16strip: //p[@class='artikel_datum']
17strip: //a[contains(@href, 'mailto')]
18strip_id_or_class: comments
19strip_id_or_class: ISI_IGNORE
20strip_id_or_class: clear
21
22strip_id_or_class: linkurl_grossbild
23strip_id_or_class: image-num
24strip_id_or_class: heisebox_right
25strip_id_or_class: dossier
26
27# Strip Ads
28strip_id_or_class: ad_
29
30# Some optimizations
31replace_string(<h5>): <h2>
32replace_string(</h5>): </h2>
33replace_string(<span class="bild_rechts"): <p
34replace_string(<div class="heisebox">): <blockquote>
35
36
37next_page_link: //a[@class='next']
38next_page_link: //a[@title='vor']
6 39
7test_url: http://www.heise.de/newsticker/meldung/Europa-soll-Grundrechteschutz-im-Netz-staerken-1392664.html \ No newline at end of file 40test_url: http://www.heise.de/open/artikel/Die-Neuerungen-von-Linux-3-15-2196231.html
41test_url: http://m.heise.de/open/artikel/Die-Neuerungen-von-Linux-3-15-2196231.html
42test_url: http://www.heise.de/newsticker/meldung/Ueberwachungstechnik-Die-globale-Handy-Standortueberwachung-2301494.html
diff --git a/inc/3rdparty/site_config/standard/hosted.ap.org.txt b/inc/3rdparty/site_config/standard/hosted.ap.org.txt
index dfd81937..a660f23b 100755
--- a/inc/3rdparty/site_config/standard/hosted.ap.org.txt
+++ b/inc/3rdparty/site_config/standard/hosted.ap.org.txt
@@ -2,4 +2,4 @@ body: //table[@class='ap-smallphoto-table'] | //div[@class='body']//*[@class='en
2tidy: no 2tidy: no
3strip_image_src: analytics.apnewsregistry 3strip_image_src: analytics.apnewsregistry
4 4
5test_url: http://hosted.ap.org/dynamic/stories/U/US_SPENDING_SHOWDOWN?SITE=FLPET&SECTION=HOME&TEMPLATE=DEFAULT&CTIME=2011-04-06-07-46-50 \ No newline at end of file 5test_url: http://hosted.ap.org/dynamic/stories/E/EU_TURKEY_KURDS?SITE=KSNEW&SECTION=HOME&TEMPLATE=DEFAULT&CTIME=2014-10-14-10-50-25
diff --git a/inc/3rdparty/site_config/standard/itunes.apple.com.txt b/inc/3rdparty/site_config/standard/itunes.apple.com.txt
new file mode 100755
index 00000000..ffd95561
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/itunes.apple.com.txt
@@ -0,0 +1,14 @@
1body: //div[@id='left-stack' or contains(@class, 'center-stack')]
2
3find_string: class="artwork" src="
4replace_string: class="artwork" src-disabled="
5find_string: src-swap-high-dpi="
6replace_string: src="
7
8strip_id_or_class: rating
9strip_id_or_class: listeners-also-bought
10
11prune: no
12
13test_url: https://itunes.apple.com/us/rss/topaudiobooks/limit=10/xml
14test_url: https://itunes.apple.com/us/audiobook/the-giver-unabridged/id356345850 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/kachiblog.com.txt b/inc/3rdparty/site_config/standard/kachiblog.com.txt
index 35baf8df..57ab0de1 100755
--- a/inc/3rdparty/site_config/standard/kachiblog.com.txt
+++ b/inc/3rdparty/site_config/standard/kachiblog.com.txt
@@ -4,4 +4,4 @@ body: //div[@itemprop='articleBody']
4tidy: no 4tidy: no
5 5
6test_url: http://www.kachiblog.com/2013/05/samsung-galaxy-s4-vs-samsung-galaxy.html 6test_url: http://www.kachiblog.com/2013/05/samsung-galaxy-s4-vs-samsung-galaxy.html
7test_url: http://www.kachiblog.com/feeds/posts/default \ No newline at end of file 7test_url: http://www.kachiblog.com/feed
diff --git a/inc/3rdparty/site_config/standard/lifehacker.co.uk.txt b/inc/3rdparty/site_config/standard/lifehacker.co.uk.txt
new file mode 100755
index 00000000..c540f7f3
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/lifehacker.co.uk.txt
@@ -0,0 +1,7 @@
1title: //div[@itemprop='headline']
2body: //noscript/img | //div[@itemprop='text']
3author: //div[@class='meta meta--post']//a[@class='is-author']
4date: //div[@class='meta meta--post']//time/@datetime
5
6test_url: http://www.lifehacker.co.uk/2014/08/22/dealhacker-10-google-chromecast-super-cheap-batteries-much
7test_url: http://www.lifehacker.co.uk/2014/08/18/andrognito-hides-files-youd-like-keep-away-prying-eyes
diff --git a/inc/3rdparty/site_config/standard/m00natic.github.io.txt b/inc/3rdparty/site_config/standard/m00natic.github.io.txt
new file mode 100644
index 00000000..911fcbd0
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/m00natic.github.io.txt
@@ -0,0 +1,7 @@
1# Generated by FiveFilters.org's web-based selection tool
2# Place this file inside your site_config/custom/ folder
3# Source: http://siteconfig.fivefilters.org/grab.php?url=https%3A%2F%2Fm00natic.github.io%2Femacs%2Femacs-wiki.html
4
5body: //div[@id='content']
6strip_id_or_class: table-of-contents
7test_url: https://m00natic.github.io/emacs/emacs-wiki.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mainpost.de.txt b/inc/3rdparty/site_config/standard/mainpost.de.txt
index 2136de3f..2f6382f1 100755
--- a/inc/3rdparty/site_config/standard/mainpost.de.txt
+++ b/inc/3rdparty/site_config/standard/mainpost.de.txt
@@ -25,4 +25,4 @@ strip_id_or_class: 'rightimage'
25#Comments 25#Comments
26strip: //table 26strip: //table
27strip: //p/following-sibling::*[0] 27strip: //p/following-sibling::*[0]
28test_url: http://www.mainpost.de/ueberregional/meinung/Dioxin-Skandal-bringt-Agrarministerin-in-Bedraengnis;art9517,5920211 \ No newline at end of file 28test_url: http://www.mainpost.de/regional/wuerzburg/Autobahnschuetze-Staatsanwalt-fordert-zwoelf-Jahre;art492151,8386332
diff --git a/inc/3rdparty/site_config/standard/medialens.org.txt b/inc/3rdparty/site_config/standard/medialens.org.txt
index 4c333aa1..c26bac55 100755
--- a/inc/3rdparty/site_config/standard/medialens.org.txt
+++ b/inc/3rdparty/site_config/standard/medialens.org.txt
@@ -1,4 +1,5 @@
1strip_id_or_class: article-tools 1strip_id_or_class: article-tools
2strip_id_or_class: pagenav 2strip_id_or_class: pagenav
3prune: no 3prune: no
4test_url: http://www.medialens.org/index.php/alerts/alert-archive/2012/713-the-illusion-of-democracy.html \ No newline at end of file 4test_url: http://www.medialens.org/index.php/alerts/alert-archive/2012/713-the-illusion-of-democracy.html
5test_contains: In an era of permanent war, economic meltdown
diff --git a/inc/3rdparty/site_config/standard/medium.com.txt b/inc/3rdparty/site_config/standard/medium.com.txt
index acf7cc90..9e9c6895 100755
--- a/inc/3rdparty/site_config/standard/medium.com.txt
+++ b/inc/3rdparty/site_config/standard/medium.com.txt
@@ -1,7 +1,12 @@
1body: //div[contains(@class, 'post-content-inner')] 1body: //div[contains(@class, 'postContent-inner')]
2strip_id_or_class: follow-ups 2strip_id_or_class: supplementalPostContent
3strip_id_or_class: footer
4 3
5prune: no 4prune: no
6 5
7test_url: https://medium.com/p/6844c0d7893b \ No newline at end of file 6test_url: https://medium.com/@savolai/kaytettavyyden-haasteet-keskustelukulttuurista-2-3-6844c0d7893b
7test_contains: Jos käytettävyysongelmat ovat kerran niin tyypillisiä
8test_contains: Keskustelukulttuuriongelmasta (subjective vs. objective bugs)
9
10test_url: https://medium.com/health-the-future/thirty-things-ive-learned-482765ee3503
11test_contains: Remember you will die
12test_contains: You have to have some faith.
diff --git a/inc/3rdparty/site_config/standard/menshealth.com.sg.txt b/inc/3rdparty/site_config/standard/menshealth.com.sg.txt
new file mode 100755
index 00000000..6a669253
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/menshealth.com.sg.txt
@@ -0,0 +1,12 @@
1strip: //div[contains(@style, 'float:right') and contains(., 'advertisement')]
2body: //div[@style="float:left;width:740px;"]
3
4tidy: no
5
6test_url: http://www.menshealth.com.sg/fitness/mh-picks-under-armour-clutchfit-nitro-mid-cleats
7test_contains: These cleats are made for one thing
8
9test_url: http://www.menshealth.com.sg/fitness/top-10-fat-burning-bodyweight-moves-you-can-do-10-minutes
10test_contains: let this workout fool you
11
12test_url: http://www.menshealth.com.sg/fitness/feed \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/northumberlandview.ca.txt b/inc/3rdparty/site_config/standard/northumberlandview.ca.txt
index 88429a78..f698d98e 100755
--- a/inc/3rdparty/site_config/standard/northumberlandview.ca.txt
+++ b/inc/3rdparty/site_config/standard/northumberlandview.ca.txt
@@ -8,4 +8,4 @@ strip_id_or_class: news_morearticlesincat
8strip_id_or_class: ezc_comments 8strip_id_or_class: ezc_comments
9strip_comments: yes 9strip_comments: yes
10 10
11test_url: http://www.northumberlandview.ca/index.php?module=news&func=display&sid=5972 \ No newline at end of file 11test_url: http://www.northumberlandview.ca/index.php?module=news&type=user&func=display&sid=31127
diff --git a/inc/3rdparty/site_config/standard/nytimes.com.txt b/inc/3rdparty/site_config/standard/nytimes.com.txt
index 23c9ad11..54735ec7 100755
--- a/inc/3rdparty/site_config/standard/nytimes.com.txt
+++ b/inc/3rdparty/site_config/standard/nytimes.com.txt
@@ -42,8 +42,12 @@ strip://h6[@class = 'kicker']
42author:substring-after(//h6[@class='byline'],'By ') 42author:substring-after(//h6[@class='byline'],'By ')
43 43
44test_url: http://www.nytimes.com/2011/07/24/books/review/an-academic-authors-unintentional-masterpiece.html 44test_url: http://www.nytimes.com/2011/07/24/books/review/an-academic-authors-unintentional-masterpiece.html
45test_contains: In this column I want to look at a not uncommon way of writing
46
45test_url: http://www.nytimes.com/2012/06/10/arts/television/the-newsroom-aaron-sorkins-return-to-tv.html 47test_url: http://www.nytimes.com/2012/06/10/arts/television/the-newsroom-aaron-sorkins-return-to-tv.html
48test_contains: IF you’ve seen enough of Aaron Sorkin’s theater
49
46test_url: http://www.nytimes.com/2013/03/25/world/middleeast/israeli-military-responds-after-patrols-come-under-fire-from-syria.html 50test_url: http://www.nytimes.com/2013/03/25/world/middleeast/israeli-military-responds-after-patrols-come-under-fire-from-syria.html
47test_url: http://www.nytimes.com/2013/08/15/nyregion/when-the-new-york-city-subway-ran-without-rails.html 51test_url: http://www.nytimes.com/2013/08/15/nyregion/when-the-new-york-city-subway-ran-without-rails.html
48test_url: http://www.nytimes.com/2004/02/29/weekinreview/correspondence-class-consciousness-china-s-wealthy-live-creed-hobbes-darwin-meet.html 52test_url: http://www.nytimes.com/2004/02/29/weekinreview/correspondence-class-consciousness-china-s-wealthy-live-creed-hobbes-darwin-meet.html
49test_url: http://www.nytimes.com/2014/06/19/opinion/gail-collins-romney-and-the-2016-contenders-huddle.html \ No newline at end of file 53test_url: http://www.nytimes.com/2014/06/19/opinion/gail-collins-romney-and-the-2016-contenders-huddle.html
diff --git a/inc/3rdparty/site_config/standard/real.gr.txt b/inc/3rdparty/site_config/standard/real.gr.txt
index 1a33610d..ce0a3c43 100755
--- a/inc/3rdparty/site_config/standard/real.gr.txt
+++ b/inc/3rdparty/site_config/standard/real.gr.txt
@@ -1,3 +1,5 @@
1body: //div[@id='_ctl12__ctl0_Article'] 1body: //div[contains(@class, 'article-photo-wrapper')]
2prune: no 2prune: no
3autodetect_on_failure: no \ No newline at end of file 3
4test_url: http://www.real.gr/DefaultArthro.aspx?page=arthro&id=360962&catID=1
5test_contains: Επισήμως το αποψινό υπουργικό
diff --git a/inc/3rdparty/site_config/standard/reddit.com.txt b/inc/3rdparty/site_config/standard/reddit.com.txt
index 8871f564..ba342c7c 100755
--- a/inc/3rdparty/site_config/standard/reddit.com.txt
+++ b/inc/3rdparty/site_config/standard/reddit.com.txt
@@ -7,7 +7,7 @@ author: //p[@class="tagline"]/a
7# this doesn't work for some reason...? 7# this doesn't work for some reason...?
8date: //p[@class="tagline"]//@datetime 8date: //p[@class="tagline"]//@datetime
9 9
10body: //div[@class="expando"]//div[@class="usertext-body"] 10body: (//div[contains(@class, 'noncollapsed')]//div[contains(@class, 'usertext-body')])[1]
11 11
12strip_id_or_class: tagline 12strip_id_or_class: tagline
13strip_id_or_class: unvotable-message 13strip_id_or_class: unvotable-message
@@ -17,4 +17,5 @@ strip_id_or_class: buttons
17single_page_link: //p[@class="title"]/a[contains(@href, 'http://')] 17single_page_link: //p[@class="title"]/a[contains(@href, 'http://')]
18 18
19test_url: http://www.reddit.com/r/truegaming/comments/wfe7r/i_wrote_about_the_problems_i_honestly_feel_that/ 19test_url: http://www.reddit.com/r/truegaming/comments/wfe7r/i_wrote_about_the_problems_i_honestly_feel_that/
20test_url: http://www.reddit.com/r/worldnews/comments/1as37r/twelve_north_korean_soldiers_attempting_to_defect/ \ No newline at end of file 20test_url: http://www.reddit.com/r/worldnews/comments/1as37r/twelve_north_korean_soldiers_attempting_to_defect/
21test_url: http://www.reddit.com/r/WritingPrompts/comments/2786lw/wp_in_a_world_where_puns_are_illegal_one_man/chybk8e \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/searchengineland.com.txt b/inc/3rdparty/site_config/standard/searchengineland.com.txt
index fb6a1074..9ccc5898 100755
--- a/inc/3rdparty/site_config/standard/searchengineland.com.txt
+++ b/inc/3rdparty/site_config/standard/searchengineland.com.txt
@@ -1,4 +1,4 @@
1body: //div[@class="storyBox"] 1body: //div[contains(concat(' ',normalize-space(@class),' '),' article ') and (contains(concat(' ',normalize-space(@class),' '),' clear '))]
2title: //div[@class="storyBox"]/h1 2title: //div[@class="storyBox"]/h1
3author: //a[@rel="author"] 3author: //a[@rel="author"]
4date: substring-before(//span[@class="dateline"], 'by') 4date: substring-before(//span[@class="dateline"], 'by')
diff --git a/inc/3rdparty/site_config/standard/sourcebooks.com.txt b/inc/3rdparty/site_config/standard/sourcebooks.com.txt
index b52169da..86e3df5e 100755
--- a/inc/3rdparty/site_config/standard/sourcebooks.com.txt
+++ b/inc/3rdparty/site_config/standard/sourcebooks.com.txt
@@ -1,4 +1,4 @@
1#grab the actual content div 1#grab the actual content div
2body: //div[@class='rt-article'] 2body: //div[@class='rt-article']
3 3
4test_url: http://www.sourcebooks.com/next/sourcebooks-next-our-blog/1601-another-piece-of-the-e-puzzle-or-when-good-ebook-promotions-go-bad.html \ No newline at end of file 4test_url: http://www.sourcebooks.com/blog/happy-27th-birthday-sourcebooks.html
diff --git a/inc/3rdparty/site_config/standard/tabletmag.com.txt b/inc/3rdparty/site_config/standard/tabletmag.com.txt
new file mode 100755
index 00000000..58b1f5bb
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/tabletmag.com.txt
@@ -0,0 +1,5 @@
1body: //div[contains(@class, 'story-text')]
2
3strip_id_or_class: related
4
5test_url: http://www.tabletmag.com/jewish-news-and-politics/181181/mossberg-parallel-states?all=1 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tagesspiegel.de.txt b/inc/3rdparty/site_config/standard/tagesspiegel.de.txt
new file mode 100755
index 00000000..57e7d3df
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/tagesspiegel.de.txt
@@ -0,0 +1,60 @@
1# Author: zinnober
2# Should work with "normal" articles as well as with image galleries
3
4prune: no
5
6# Title
7title: //h1/span[@class='hcf-headline']
8
9# Set author
10author: //a[@rel='author']
11
12# Set date
13date: //span[@class='date hcf-atlas']
14
15# Fetch full multipage articles
16next_page_link: //a[contains(@class, 'hcf-forward')]
17
18# Content is here
19body: //article
20body: //div[contains(@class, 'hcf-screen')]
21
22# Remove tracking and ads
23strip_id_or_class: hcf-ad
24strip_id_or_class: hcf-autoload-ad
25strip_id_or_class: hcf-content-ad
26
27# Tidy up before article
28strip: //article/h1
29strip_id_or_class: hcf-atlas
30strip_id_or_class: hcf-author
31strip_id_or_class: date hcf-atlas
32strip_id_or_class: date hcf-atlas
33
34# General cleanup
35strip: //div[contains(@class, 'hcf-screen')]//h1
36strip: //div[@class='hcf-subpage-titles']//ul
37strip_id_or_class: hcf-doctype-media
38strip_id_or_class: hcf-inline-gallery
39strip_id_or_class: hcf-doctype-video
40strip_id_or_class: hcf-links
41strip_id_or_class: hcf-mini-navi
42strip_id_or_class: hcf-media-control
43strip_id_or_class: hcf-hidden
44replace_string(<span class="hcf-update">Update</span>): <strong>Update: </strong>
45
46# Fix pictures and captions
47replace_string(<a class="hcf-doctype-gallery): <p class="hcf-doctype-gallery
48replace_string(<a class="hcf-doctype-enlarge): <p class="hcf-doctype-enlarge
49replace_string(<figcaption class="hcf-caption">): <br><small><em>
50replace_string(</figcaption>): </em></small>
51
52# Fix image galleries
53replace_string(<a class=" ajaxify): <p class="ajaxify
54replace_string(<div class="hcf-caption"><div><p>): <small><em>
55
56# Try it yourself
57test_url: http://www.tagesspiegel.de/berlin/bezirke/wedding/wedding-jetzt/auf-der-suche-nach-einem-stadtteil-wilder-weiter-wedding/8757156.html
58test_url: http://www.tagesspiegel.de/berlin/olympia-in-berlin-der-flughafen-tegel-soll-das-olympische-dorf-werden/10645036.html
59test_url: http://www.tagesspiegel.de/mediacenter/fotostrecken/berlin/bildergalerie-kreuzberger-der-woche/9305534.html
60
diff --git a/inc/3rdparty/site_config/standard/techmeme.com.txt b/inc/3rdparty/site_config/standard/techmeme.com.txt
index 0b4bfbd6..26eb37b0 100755
--- a/inc/3rdparty/site_config/standard/techmeme.com.txt
+++ b/inc/3rdparty/site_config/standard/techmeme.com.txt
@@ -1,3 +1,3 @@
1single_page_link_in_feed: //b/a 1single_page_link_in_feed: //b/a
2 2
3test_url_feed: http://www.techmeme.com/feed.xml \ No newline at end of file 3test_url: http://www.techmeme.com/feed.xml
diff --git a/inc/3rdparty/site_config/standard/theatlantic.com.txt b/inc/3rdparty/site_config/standard/theatlantic.com.txt
index aa41b153..3fc5611b 100755
--- a/inc/3rdparty/site_config/standard/theatlantic.com.txt
+++ b/inc/3rdparty/site_config/standard/theatlantic.com.txt
@@ -15,6 +15,8 @@ strip: //div[@class='earthbox']
15 15
16single_page_link: //article//a[contains(@class, 'print')] 16single_page_link: //article//a[contains(@class, 'print')]
17 17
18native_ad_clue: //meta[@property="og:url" and contains(@content, '/sponsored/')]
19
18test_url: http://www.theatlantic.com/technology/archive/2011/04/want-to-see-how-crazy-a-bot-run-market-can-be/237773/ 20test_url: http://www.theatlantic.com/technology/archive/2011/04/want-to-see-how-crazy-a-bot-run-market-can-be/237773/
19test_url: http://www.theatlantic.com/magazine/archive/2007/11/the-autumn-of-the-multitaskers/6342/ 21test_url: http://www.theatlantic.com/magazine/archive/2007/11/the-autumn-of-the-multitaskers/6342/
20test_url: http://www.theatlantic.com/entertainment/archive/2012/04/30-rock-live-a-funny-reminder-of-why-sitcoms-arent-shot-live-anymore/256447/ \ No newline at end of file 22test_url: http://www.theatlantic.com/entertainment/archive/2012/04/30-rock-live-a-funny-reminder-of-why-sitcoms-arent-shot-live-anymore/256447/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theglobeandmail.com.txt b/inc/3rdparty/site_config/standard/theglobeandmail.com.txt
index 750f8473..2473cad2 100755
--- a/inc/3rdparty/site_config/standard/theglobeandmail.com.txt
+++ b/inc/3rdparty/site_config/standard/theglobeandmail.com.txt
@@ -1,5 +1,10 @@
1body: //div[contains(@class, 'entry-content')]//div[contains(@class, 'column-2')]
1single_page_link: //div[contains(@class, 'pagination')]//a[contains(@title, 'ingle page')] 2single_page_link: //div[contains(@class, 'pagination')]//a[contains(@title, 'ingle page')]
3strip_id_or_class: entry-related
4strip_id_or_class: entry-sidebar
5strip_id_or_class: entry-pagination
2tidy: no 6tidy: no
3prune: no 7prune: no
4 8
5test_url: http://www.theglobeandmail.com/report-on-business/rob-magazine/how-a-novice-miner-survived-a-summer-in-the-klondike/article2345350/ \ No newline at end of file 9test_url: http://www.theglobeandmail.com/report-on-business/rob-magazine/how-a-novice-miner-survived-a-summer-in-the-klondike/article2345350/
10test_url: http://www.theglobeandmail.com/report-on-business/industry-news/energy-and-resources/cliffs-natural-resources-looking-to-exit-ontarios-ring-of-fire/article20651617/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theguardian.com.txt b/inc/3rdparty/site_config/standard/theguardian.com.txt
index c803e4e4..88e2ecf4 100755
--- a/inc/3rdparty/site_config/standard/theguardian.com.txt
+++ b/inc/3rdparty/site_config/standard/theguardian.com.txt
@@ -6,8 +6,19 @@ strip: //div[contains(@class, 'kindleWidget')]
6#strip: //a[not(text())] 6#strip: //a[not(text())]
7strip_id_or_class: pocket-btn 7strip_id_or_class: pocket-btn
8author: //li[@class='byline'] 8author: //li[@class='byline']
9native_ad_clue: //meta[@property="article:tag" and contains(@content, "Partner zone")]
10native_ad_clue: //meta[@property="video:tag" and contains(@content, "Partner zone")]
9prune: no 11prune: no
10tidy: no 12tidy: no
13
11test_url: http://www.theguardian.com/world/2013/oct/04/nsa-gchq-attack-tor-network-encryption 14test_url: http://www.theguardian.com/world/2013/oct/04/nsa-gchq-attack-tor-network-encryption
15test_contains: The National Security Agency has made repeated attempts to develop
16test_contains: The agency did not directly address those questions, instead providing a statement.
17
12test_url: http://www.theguardian.com/world/2013/oct/03/edward-snowden-files-john-lanchester 18test_url: http://www.theguardian.com/world/2013/oct/03/edward-snowden-files-john-lanchester
13test_url: http://www.theguardian.com/commentisfree/2014/jun/15/britishness-search-identity-my-part-in-camerons-odyssey \ No newline at end of file 19test_contains: In August, the editor of the Guardian rang me up and asked if I would spend a week in New York
20test_contains: As the second most senior judge in the country, Lord Hoffmann, said in 2004 about a previous version of our anti-terrorism laws
21
22test_url: http://www.theguardian.com/commentisfree/2014/jun/15/britishness-search-identity-my-part-in-camerons-odyssey
23# Native ad
24test_url: http://www.theguardian.com/sustainable-business/2014/jul/18/ben-jerry-turn-ice-cream-into-energy
diff --git a/inc/3rdparty/site_config/standard/theverge.com.txt b/inc/3rdparty/site_config/standard/theverge.com.txt
index 1e1ce58f..78f8654a 100755
--- a/inc/3rdparty/site_config/standard/theverge.com.txt
+++ b/inc/3rdparty/site_config/standard/theverge.com.txt
@@ -15,6 +15,11 @@ strip: //nav
15strip: //img[contains(@class, 'vox-lazy-load')] 15strip: //img[contains(@class, 'vox-lazy-load')]
16# deal with bad parsing 16# deal with bad parsing
17strip: //div[contains(@class, 'story-image')]//div[contains(., 'function(')] 17strip: //div[contains(@class, 'story-image')]//div[contains(., 'function(')]
18strip: //div[contains(@class, 'm-linkset')]
19strip: //div[contains(@class, 'm-entry__sidebar')]
20strip: //ul[contains(@class, 'm-article__sources')]
21strip: //div[contains(@class, 'chorus-emc__content')]
22
18 23
19strip_id_or_class: gallery 24strip_id_or_class: gallery
20strip_id_or_class: article-meta 25strip_id_or_class: article-meta
@@ -45,4 +50,4 @@ test_url: http://www.theverge.com/2012/2/29/2821763/lytro-review
45test_url: http://www.theverge.com/2011/11/3/2534861/nokia-lumia-800-review 50test_url: http://www.theverge.com/2011/11/3/2534861/nokia-lumia-800-review
46test_url: http://www.theverge.com/2013/2/24/4026114/barnes-noble-shifting-focus-away-from-nook-hardware 51test_url: http://www.theverge.com/2013/2/24/4026114/barnes-noble-shifting-focus-away-from-nook-hardware
47test_url: http://www.theverge.com/2014/6/19/5824072/top-shelf-living-the-dream 52test_url: http://www.theverge.com/2014/6/19/5824072/top-shelf-living-the-dream
48test_url: http://www.theverge.com/rss/frontpage \ No newline at end of file 53test_url: http://www.theverge.com/rss/frontpage
diff --git a/inc/3rdparty/site_config/standard/thisiscolossal.com.txt b/inc/3rdparty/site_config/standard/thisiscolossal.com.txt
new file mode 100755
index 00000000..ab16ce18
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/thisiscolossal.com.txt
@@ -0,0 +1,25 @@
1# Author: zinnober
2
3tidy: no
4prune: no
5
6# Set author
7author: //a[contains(@rel, 'author')]
8
9# Content is here
10body: //article
11
12# Tidy up before article
13strip: //header
14
15# Get rid of doubled images
16strip: //img[contains(@class, '-hidden')]
17
18# Tidy up after article
19strip_id_or_class: social-list
20strip_id_or_class: meta-info
21strip: //footer
22
23# Try it yourself
24test_url: http://www.thisiscolossal.com/2014/09/chicago-in-the-fog-by-michael-salisbury/
25test_url: http://www.thisiscolossal.com/2014/09/bird-portraits-ruffling-with-personality-by-leila-jeffreys/
diff --git a/inc/3rdparty/site_config/standard/towerofthehand.com.txt b/inc/3rdparty/site_config/standard/towerofthehand.com.txt
new file mode 100755
index 00000000..a4d87d12
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/towerofthehand.com.txt
@@ -0,0 +1,10 @@
1title: //div[@id='headline']
2body: //div[@class='entry_text']
3author: //div[text() = 'Author:']/following-sibling::div/a
4date: //div[text() = 'Published:']/following-sibling::div
5single_page_link: //a[@href='noscript.html']
6prune: no
7
8test_url: http://towerofthehand.com/blog/2014/08/08-pitch-this-got-spinoff/index.html
9test_url: http://towerofthehand.com/blog/2014/07/31-definitions-and-embodiments/index.html
10test_url: http://towerofthehand.com/blog/2014/07/03-hero-with-thousand-faces/index.html
diff --git a/inc/3rdparty/site_config/standard/tuhdo.github.io.txt b/inc/3rdparty/site_config/standard/tuhdo.github.io.txt
new file mode 100644
index 00000000..beb551fd
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/tuhdo.github.io.txt
@@ -0,0 +1,7 @@
1# Generated by FiveFilters.org's web-based selection tool
2# Place this file inside your site_config/custom/ folder
3# Source: http://siteconfig.fivefilters.org/grab.php?url=https%3A%2F%2Ftuhdo.github.io%2Femacs-tutor.html
4
5body: //div[@id='content']
6strip_id_or_class: table-of-contents
7test_url: https://tuhdo.github.io/emacs-tutor.html
diff --git a/inc/3rdparty/site_config/standard/twitter.com.txt b/inc/3rdparty/site_config/standard/twitter.com.txt
index 520ebd85..0e5b7487 100755
--- a/inc/3rdparty/site_config/standard/twitter.com.txt
+++ b/inc/3rdparty/site_config/standard/twitter.com.txt
@@ -6,4 +6,5 @@ date: //span[contains(@class, 'js-short-timestamp')]/@data-time
6prune: no 6prune: no
7tidy: no 7tidy: no
8 8
9test_url: https://twitter.com/medialens/status/216883678582804480 \ No newline at end of file 9test_url: https://twitter.com/medialens/status/216883678582804480
10test_contains: is all but alone in challenging the tsunami of UK
diff --git a/inc/3rdparty/site_config/standard/vanityfair.com.txt b/inc/3rdparty/site_config/standard/vanityfair.com.txt
index efa38224..f52339cf 100755
--- a/inc/3rdparty/site_config/standard/vanityfair.com.txt
+++ b/inc/3rdparty/site_config/standard/vanityfair.com.txt
@@ -2,6 +2,7 @@ title: //meta[@property="og:title"]/@content
2author: //div[contains(@class, 'byline')]//span[contains(@class, 'name')] 2author: //div[contains(@class, 'byline')]//span[contains(@class, 'name')]
3date: //div[contains(@class, 'cn_date_time')] 3date: //div[contains(@class, 'cn_date_time')]
4body: //div[contains(@class, 'pageContainers')] 4body: //div[contains(@class, 'pageContainers')]
5body: //div[@id='main']
5body: //article[@id='items-container'] 6body: //article[@id='items-container']
6#body: //h2[@class='sub-header'] | //div[contains(@class, 'contributor-type') or @class='display-date' or @class='content-container'] 7#body: //h2[@class='sub-header'] | //div[contains(@class, 'contributor-type') or @class='display-date' or @class='content-container']
7 8
@@ -26,5 +27,7 @@ strip: //li[@class='blogNavPrev']
26single_page_link: //a[@title='Print this page'] 27single_page_link: //a[@title='Print this page']
27 28
28test_url: http://www.vanityfair.com/politics/features/2011/05/egypt-revolutionaries-201105 29test_url: http://www.vanityfair.com/politics/features/2011/05/egypt-revolutionaries-201105
30test_contains: nothing can take away from the miracle of Tahrir Square
31
29test_url: http://www.vanityfair.com/politics/features/2008/08/hitchens200808 32test_url: http://www.vanityfair.com/politics/features/2008/08/hitchens200808
30test_url: http://www.vanityfair.com/style/2012/01/prisoners-of-style-201201 \ No newline at end of file 33test_url: http://www.vanityfair.com/style/2012/01/prisoners-of-style-201201
diff --git a/inc/3rdparty/site_config/standard/wn.de.txt b/inc/3rdparty/site_config/standard/wn.de.txt
new file mode 100755
index 00000000..ef18c8a5
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/wn.de.txt
@@ -0,0 +1,18 @@
1author: //div[@id='main']//div[@class='col right']//div[contains(@class, 'attribute-author')]
2body: //div[@id='main']//div[@class='col right']
3strip_id_or_class: boxes
4strip_id_or_class: lazy
5strip_id_or_class: comment_box
6strip_id_or_class: fb_comments
7
8find_string: <noscript>
9replace_string: <div>
10find_string: </noscript>
11replace_string: </div>
12
13prune: no
14tidy: no
15
16test_url: http://www.wn.de/Muenster/Kultur/1742956-Wilm-Weppelmann-verlaesst-die-Einsiedelei-Und-dann-ab-unter-die-Dusche
17# feed
18test_url: http://www.wn.de/rss/feed/wn_muenster \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wordyard.com.txt b/inc/3rdparty/site_config/standard/wordyard.com.txt
new file mode 100644
index 00000000..d8c753da
--- /dev/null
+++ b/inc/3rdparty/site_config/standard/wordyard.com.txt
@@ -0,0 +1,8 @@
1# Generated by FiveFilters.org's web-based selection tool
2# Place this file inside your site_config/custom/ folder
3# Source: http://siteconfig.fivefilters.org/grab.php?url=http%3A%2F%2Fwww.wordyard.com%2F2014%2F09%2F26%2Fremove-blindfold-before-embarking-to-utopia%2F
4
5body: //div[contains(concat(' ',normalize-space(@class),' '),' entry-content ')]
6strip_id_or_class: robots-nocontent
7strip_id_or_class: post-revisions
8test_url: http://www.wordyard.com/2014/09/26/remove-blindfold-before-embarking-to-utopia/ \ No newline at end of file
diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php
index 2c80b64b..f6ba4708 100755
--- a/inc/poche/Database.class.php
+++ b/inc/poche/Database.class.php
@@ -23,12 +23,18 @@ class Database {
23 { 23 {
24 switch (STORAGE) { 24 switch (STORAGE) {
25 case 'sqlite': 25 case 'sqlite':
26 // Check if /db is writeable
27 if ( !is_writable(STORAGE_SQLITE) || !is_writable(dirname(STORAGE_SQLITE))) {
28 die('An error occured: "db" directory must be writeable for your web server user!');
29 }
26 $db_path = 'sqlite:' . STORAGE_SQLITE; 30 $db_path = 'sqlite:' . STORAGE_SQLITE;
27 $this->handle = new PDO($db_path); 31 $this->handle = new PDO($db_path);
28 break; 32 break;
29 case 'mysql': 33 case 'mysql':
30 $db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB; 34 $db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB . ';charset=utf8mb4';
31 $this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD); 35 $this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD, array(
36 PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
37 ));
32 break; 38 break;
33 case 'postgres': 39 case 'postgres':
34 $db_path = 'pgsql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB; 40 $db_path = 'pgsql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB;
@@ -113,10 +119,10 @@ class Database {
113 $query = $this->executeQuery($sql, array()); 119 $query = $this->executeQuery($sql, array());
114 } 120 }
115 121
116 public function install($login, $password) 122 public function install($login, $password, $email = '')
117 { 123 {
118 $sql = 'INSERT INTO users ( username, password, name, email) VALUES (?, ?, ?, ?)'; 124 $sql = 'INSERT INTO users ( username, password, name, email) VALUES (?, ?, ?, ?)';
119 $params = array($login, $password, $login, ' '); 125 $params = array($login, $password, $login, $email);
120 $query = $this->executeQuery($sql, $params); 126 $query = $this->executeQuery($sql, $params);
121 127
122 $sequence = ''; 128 $sequence = '';
diff --git a/inc/poche/Language.class.php b/inc/poche/Language.class.php
index 8d3912f5..420f2fb9 100644
--- a/inc/poche/Language.class.php
+++ b/inc/poche/Language.class.php
@@ -18,6 +18,7 @@ class Language
18 'cs_CZ.utf8' => 'čeština', 18 'cs_CZ.utf8' => 'čeština',
19 'de_DE.utf8' => 'German', 19 'de_DE.utf8' => 'German',
20 'en_EN.utf8' => 'English', 20 'en_EN.utf8' => 'English',
21 'en_US.utf8' => 'English (US)',
21 'es_ES.utf8' => 'Español', 22 'es_ES.utf8' => 'Español',
22 'fa_IR.utf8' => 'فارسی', 23 'fa_IR.utf8' => 'فارسی',
23 'fr_FR.utf8' => 'Français', 24 'fr_FR.utf8' => 'Français',
@@ -110,4 +111,4 @@ class Language
110 Tools::emptyCache(); 111 Tools::emptyCache();
111 Tools::redirect('?view=config'); 112 Tools::redirect('?view=config');
112 } 113 }
113} \ No newline at end of file 114}
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php
index a49413f2..27d6f4a6 100755
--- a/inc/poche/Poche.class.php
+++ b/inc/poche/Poche.class.php
@@ -74,12 +74,13 @@ class Poche
74 /** 74 /**
75 * Creates a new user 75 * Creates a new user
76 */ 76 */
77 public function createNewUser($username, $password) 77 public function createNewUser($username, $password, $email = "")
78 { 78 {
79 if (!empty($username) && !empty($password)){ 79 if (!empty($username) && !empty($password)){
80 $newUsername = filter_var($username, FILTER_SANITIZE_STRING); 80 $newUsername = filter_var($username, FILTER_SANITIZE_STRING);
81 $email = filter_var($email, FILTER_SANITIZE_STRING);
81 if (!$this->store->userExists($newUsername)){ 82 if (!$this->store->userExists($newUsername)){
82 if ($this->store->install($newUsername, Tools::encodeString($password . $newUsername))) { 83 if ($this->store->install($newUsername, Tools::encodeString($password . $newUsername), $email)) {
83 Tools::logm('The new user ' . $newUsername . ' has been installed'); 84 Tools::logm('The new user ' . $newUsername . ' has been installed');
84 $this->messages->add('s', sprintf(_('The new user %s has been installed. Do you want to <a href="?logout">logout ?</a>'), $newUsername)); 85 $this->messages->add('s', sprintf(_('The new user %s has been installed. Do you want to <a href="?logout">logout ?</a>'), $newUsername));
85 Tools::redirect(); 86 Tools::redirect();
@@ -313,6 +314,8 @@ class Poche
313 314
314 switch ($view) 315 switch ($view)
315 { 316 {
317 case 'about':
318 break;
316 case 'config': 319 case 'config':
317 $dev_infos = $this->_getPocheVersion('dev'); 320 $dev_infos = $this->_getPocheVersion('dev');
318 $dev = trim($dev_infos[0]); 321 $dev = trim($dev_infos[0]);
@@ -387,7 +390,7 @@ class Poche
387 $this->pagination->page_links('?view=' . $view . '?search=' . $search . '&sort=' . $_SESSION['sort'] . '&' )); 390 $this->pagination->page_links('?view=' . $view . '?search=' . $search . '&sort=' . $_SESSION['sort'] . '&' ));
388 $tpl_vars['page_links'] = $page_links; 391 $tpl_vars['page_links'] = $page_links;
389 $tpl_vars['nb_results'] = $count; 392 $tpl_vars['nb_results'] = $count;
390 $tpl_vars['search_term'] = $search; 393 $tpl_vars['searchterm'] = $search;
391 } 394 }
392 break; 395 break;
393 case 'view': 396 case 'view':
@@ -524,6 +527,14 @@ class Poche
524 $longlastingsession = isset($_POST['longlastingsession']); 527 $longlastingsession = isset($_POST['longlastingsession']);
525 $passwordTest = ($isauthenticated) ? $user['password'] : Tools::encodeString($password . $login); 528 $passwordTest = ($isauthenticated) ? $user['password'] : Tools::encodeString($password . $login);
526 Session::login($user['username'], $user['password'], $login, $passwordTest, $longlastingsession, array('poche_user' => new User($user))); 529 Session::login($user['username'], $user['password'], $login, $passwordTest, $longlastingsession, array('poche_user' => new User($user)));
530
531 # reload l10n
532 $language = $user['config']['language'];
533 @putenv('LC_ALL=' . $language);
534 setlocale(LC_ALL, $language);
535 bindtextdomain($language, LOCALE);
536 textdomain($language);
537
527 $this->messages->add('s', _('welcome to your wallabag')); 538 $this->messages->add('s', _('welcome to your wallabag'));
528 Tools::logm('login successful'); 539 Tools::logm('login successful');
529 Tools::redirect($referer); 540 Tools::redirect($referer);
@@ -551,42 +562,39 @@ class Poche
551 * import datas into your wallabag 562 * import datas into your wallabag
552 * @return boolean 563 * @return boolean
553 */ 564 */
554 public function import()
555 {
556 if (isset($_FILES['file'])) {
557 Tools::logm('Import stated: parsing file');
558
559 // assume, that file is in json format
560
561 $str_data = file_get_contents($_FILES['file']['tmp_name']);
562 $data = json_decode($str_data, true);
563 if ($data === null) {
564
565 // not json - assume html
566
567 $html = new simple_html_dom();
568 $html->load_file($_FILES['file']['tmp_name']);
569 $data = array();
570 $read = 0;
571 foreach(array('ol','ul') as $list) {
572 foreach($html->find($list) as $ul) {
573 foreach($ul->find('li') as $li) {
574 $tmpEntry = array();
575 $a = $li->find('a');
576 $tmpEntry['url'] = $a[0]->href;
577 $tmpEntry['tags'] = $a[0]->tags;
578 $tmpEntry['is_read'] = $read;
579 if ($tmpEntry['url']) {
580 $data[] = $tmpEntry;
581 }
582 }
583
584 // the second <ol/ul> is for read links
585 565
586 $read = ((sizeof($data) && $read) ? 0 : 1); 566 public function import() {
587 } 567
588 } 568 if ( isset($_FILES['file']) && $_FILES['file']['tmp_name'] ) {
569 Tools::logm('Import stated: parsing file');
570
571 // assume, that file is in json format
572 $str_data = file_get_contents($_FILES['file']['tmp_name']);
573 $data = json_decode($str_data, true);
574
575 if ( $data === null ) {
576 //not json - assume html
577 $html = new simple_html_dom();
578 $html->load_file($_FILES['file']['tmp_name']);
579 $data = array();
580 $read = 0;
581 foreach (array('ol','ul') as $list) {
582 foreach ($html->find($list) as $ul) {
583 foreach ($ul->find('li') as $li) {
584 $tmpEntry = array();
585 $a = $li->find('a');
586 $tmpEntry['url'] = $a[0]->href;
587 $tmpEntry['tags'] = $a[0]->tags;
588 $tmpEntry['is_read'] = $read;
589 if ($tmpEntry['url']) {
590 $data[] = $tmpEntry;
591 }
592 }
593 # the second <ol/ul> is for read links
594 $read = ((sizeof($data) && $read)?0:1);
589 } 595 }
596 }
597 }
590 598
591 // for readability structure 599 // for readability structure
592 600
@@ -629,9 +637,11 @@ class Poche
629 $this->messages->add('s', _('Articles inserted: ') . $i . _('. Please note, that some may be marked as "read".')); 637 $this->messages->add('s', _('Articles inserted: ') . $i . _('. Please note, that some may be marked as "read".'));
630 } 638 }
631 639
632 Tools::logm('Import of articles finished: ' . $i . ' articles added (w/o content if not provided).'); 640 Tools::logm('Import of articles finished: '.$i.' articles added (w/o content if not provided).');
633 } 641 }
634 642 else {
643 $this->messages->add('s', _('Did you forget to select a file?'));
644 }
635 // file parsing finished here 645 // file parsing finished here
636 // now download article contents if any 646 // now download article contents if any
637 // check if we need to download any content 647 // check if we need to download any content
@@ -750,8 +760,8 @@ class Poche
750 die(sprintf(_('User with this id (%d) does not exist.'), $user_id)); 760 die(sprintf(_('User with this id (%d) does not exist.'), $user_id));
751 } 761 }
752 762
753 if (!in_array($type, $allowed_types) || $token != $config['token']) { 763 if (!in_array($type, $allowed_types) || !isset($config['token']) || $token != $config['token']) {
754 die(_('Uh, there is a problem while generating feeds.')); 764 die(_('Uh, there is a problem while generating feed. Wrong token used?'));
755 } 765 }
756 766
757 $feed = new FeedWriter(RSS2); 767 $feed = new FeedWriter(RSS2);
@@ -802,4 +812,4 @@ class Poche
802 } 812 }
803 813
804 814
805} 815} \ No newline at end of file
diff --git a/inc/poche/Routing.class.php b/inc/poche/Routing.class.php
index 44b0e168..5acd08ba 100755
--- a/inc/poche/Routing.class.php
+++ b/inc/poche/Routing.class.php
@@ -157,4 +157,4 @@ class Routing
157 { 157 {
158 echo $this->wallabag->tpl->render($file, $vars); 158 echo $this->wallabag->tpl->render($file, $vars);
159 } 159 }
160} \ No newline at end of file 160}
diff --git a/inc/poche/Template.class.php b/inc/poche/Template.class.php
index b686f2ec..4d0bfdbb 100644
--- a/inc/poche/Template.class.php
+++ b/inc/poche/Template.class.php
@@ -24,7 +24,7 @@ class Template extends Twig_Environment
24 24
25 $themeDirectory = (is_null($pocheUser) ? DEFAULT_THEME : $pocheUser->getConfigValue('theme')); 25 $themeDirectory = (is_null($pocheUser) ? DEFAULT_THEME : $pocheUser->getConfigValue('theme'));
26 26
27 if ($themeDirectory === false) { 27 if ($themeDirectory === false || !is_dir(THEME . '/' . $themeDirectory)) {
28 $themeDirectory = DEFAULT_THEME; 28 $themeDirectory = DEFAULT_THEME;
29 } 29 }
30 30
@@ -181,7 +181,7 @@ class Template extends Twig_Environment
181 while (($theme = readdir($handle)) !== false) { 181 while (($theme = readdir($handle)) !== false) {
182 # Themes are stored in a directory, so all directory names are themes 182 # Themes are stored in a directory, so all directory names are themes
183 # @todo move theme installation data to database 183 # @todo move theme installation data to database
184 if (!is_dir(THEME . '/' . $theme) || in_array($theme, array('.', '..'))) { 184 if (!is_dir(THEME . '/' . $theme) || in_array($theme, array('.', '..', '_global'))) {
185 continue; 185 continue;
186 } 186 }
187 187
@@ -232,4 +232,4 @@ class Template extends Twig_Environment
232 Tools::emptyCache(); 232 Tools::emptyCache();
233 Tools::redirect('?view=config'); 233 Tools::redirect('?view=config');
234 } 234 }
235} \ No newline at end of file 235}
diff --git a/inc/poche/Tools.class.php b/inc/poche/Tools.class.php
index 63137d76..f803e3b5 100755
--- a/inc/poche/Tools.class.php
+++ b/inc/poche/Tools.class.php
@@ -51,9 +51,14 @@ final class Tools
51 51
52 $serverport = (!isset($_SERVER["SERVER_PORT"]) 52 $serverport = (!isset($_SERVER["SERVER_PORT"])
53 || $_SERVER["SERVER_PORT"] == '80' 53 || $_SERVER["SERVER_PORT"] == '80'
54 || $_SERVER["SERVER_PORT"] == HTTP_PORT
54 || ($https && $_SERVER["SERVER_PORT"] == '443') 55 || ($https && $_SERVER["SERVER_PORT"] == '443')
55 || ($https && $_SERVER["SERVER_PORT"]==SSL_PORT) //Custom HTTPS port detection 56 || ($https && $_SERVER["SERVER_PORT"]==SSL_PORT) //Custom HTTPS port detection
56 ? '' : ':' . $_SERVER["SERVER_PORT"]); 57 ? '' : ':' . $_SERVER["SERVER_PORT"]);
58
59 if (isset($_SERVER["HTTP_X_FORWARDED_PORT"])) {
60 $serverport = ':' . $_SERVER["HTTP_X_FORWARDED_PORT"];
61 }
57 62
58 $scriptname = str_replace('/index.php', '/', $_SERVER["SCRIPT_NAME"]); 63 $scriptname = str_replace('/index.php', '/', $_SERVER["SCRIPT_NAME"]);
59 64
@@ -112,7 +117,7 @@ final class Tools
112 { 117 {
113 $views = array( 118 $views = array(
114 'install', 'import', 'export', 'config', 'tags', 119 'install', 'import', 'export', 'config', 'tags',
115 'edit-tags', 'view', 'login', 'error' 120 'edit-tags', 'view', 'login', 'error', 'about'
116 ); 121 );
117 122
118 return (in_array($view, $views) ? $view . '.twig' : 'home.twig'); 123 return (in_array($view, $views) ? $view . '.twig' : 'home.twig');
@@ -295,21 +300,6 @@ final class Tools
295 } 300 }
296 301
297 /** 302 /**
298 * Download the sqlite database
299 */
300 public static function downloadDb()
301 {
302 header('Content-Disposition: attachment; filename="poche.sqlite.gz"');
303 self::_status(200);
304
305 header('Content-Transfer-Encoding: binary');
306 header('Content-Type: application/octet-stream');
307 echo gzencode(file_get_contents(STORAGE_SQLITE));
308
309 exit;
310 }
311
312 /**
313 * Get the content for a given URL (by a call to FullTextFeed) 303 * Get the content for a given URL (by a call to FullTextFeed)
314 * 304 *
315 * @param Url $url 305 * @param Url $url
diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php
index 2ddece61..bc40990b 100644
--- a/inc/poche/WallabagEBooks.class.php
+++ b/inc/poche/WallabagEBooks.class.php
@@ -124,7 +124,7 @@ class WallabagEpub extends WallabagEBooks
124 124
125 $fullTitle = "<h1> " . $this->bookTitle . "</h1>\n"; 125 $fullTitle = "<h1> " . $this->bookTitle . "</h1>\n";
126 126
127 $book->setCoverImage("Cover.png", file_get_contents("themes/baggy/img/apple-touch-icon-152.png"), "image/png", $fullTitle); 127 $book->setCoverImage("Cover.png", file_get_contents("themes/_global/img/appicon/apple-touch-icon-152.png"), "image/png", $fullTitle);
128 128
129 $cover = $content_start . '<div style="text-align:center;"><p>' . _('Produced by wallabag with PHPePub') . '</p><p>'. _('Please open <a href="https://github.com/wallabag/wallabag/issues" >an issue</a> if you have trouble with the display of this E-Book on your device.') . '</p></div>' . $bookEnd; 129 $cover = $content_start . '<div style="text-align:center;"><p>' . _('Produced by wallabag with PHPePub') . '</p><p>'. _('Please open <a href="https://github.com/wallabag/wallabag/issues" >an issue</a> if you have trouble with the display of this E-Book on your device.') . '</p></div>' . $bookEnd;
130 130
@@ -182,7 +182,7 @@ class WallabagMobi extends WallabagEBooks
182 182
183 # introduction 183 # introduction
184 $content->appendParagraph('<div style="text-align:center;" ><p>' . _('Produced by wallabag with PHPMobi') . '</p><p>'. _('Please open <a href="https://github.com/wallabag/wallabag/issues" >an issue</a> if you have trouble with the display of this E-Book on your device.') . '</p></div>'); 184 $content->appendParagraph('<div style="text-align:center;" ><p>' . _('Produced by wallabag with PHPMobi') . '</p><p>'. _('Please open <a href="https://github.com/wallabag/wallabag/issues" >an issue</a> if you have trouble with the display of this E-Book on your device.') . '</p></div>');
185 $content->appendImage(imagecreatefrompng("themes/baggy/img/apple-touch-icon-152.png")); 185 $content->appendImage(imagecreatefrompng("themes/_global/img/appicon/apple-touch-icon-152.png"));
186 $content->appendPageBreak(); 186 $content->appendPageBreak();
187 187
188 Tools::logm('Adding actual content...'); 188 Tools::logm('Adding actual content...');
@@ -221,7 +221,7 @@ class WallabagPDF extends WallabagEbooks
221 $intro = '<h1>' . $this->bookTitle . '</h1><div style="text-align:center;" > 221 $intro = '<h1>' . $this->bookTitle . '</h1><div style="text-align:center;" >
222 <p>' . _('Produced by wallabag with tcpdf') . '</p> 222 <p>' . _('Produced by wallabag with tcpdf') . '</p>
223 <p>'. _('Please open <a href="https://github.com/wallabag/wallabag/issues" >an issue</a> if you have trouble with the display of this E-Book on your device.') . '</p> 223 <p>'. _('Please open <a href="https://github.com/wallabag/wallabag/issues" >an issue</a> if you have trouble with the display of this E-Book on your device.') . '</p>
224 <img src="themes/baggy/img/apple-touch-icon-152.png" /></div>'; 224 <img src="themes/_global/img/appicon/apple-touch-icon-152.png" /></div>';
225 225
226 226
227 $pdf->writeHTMLCell(0, 0, '', '', $intro, 0, 1, 0, true, '', true); 227 $pdf->writeHTMLCell(0, 0, '', '', $intro, 0, 1, 0, true, '', true);
@@ -243,4 +243,4 @@ class WallabagPDF extends WallabagEbooks
243 $pdf->Output($this->bookFileName . '.pdf', 'FD'); 243 $pdf->Output($this->bookFileName . '.pdf', 'FD');
244 244
245 } 245 }
246} \ No newline at end of file 246}
diff --git a/inc/poche/config.inc.default.php b/inc/poche/config.inc.default.php
index 6f03af18..3eaee3a3 100755
--- a/inc/poche/config.inc.default.php
+++ b/inc/poche/config.inc.default.php
@@ -24,6 +24,8 @@
24################################################################################# 24#################################################################################
25# Do not trespass unless you know what you are doing 25# Do not trespass unless you know what you are doing
26################################################################################# 26#################################################################################
27// Change this if http is running on nonstandard port - i.e is behind cache proxy
28@define ('HTTP_PORT', 80);
27 29
28// Change this if not using the standart port for SSL - i.e you server is behind sslh 30// Change this if not using the standart port for SSL - i.e you server is behind sslh
29@define ('SSL_PORT', 443); 31@define ('SSL_PORT', 443);
@@ -42,11 +44,14 @@
42@define ('SHARE_MAIL', TRUE); 44@define ('SHARE_MAIL', TRUE);
43@define ('SHARE_SHAARLI', FALSE); 45@define ('SHARE_SHAARLI', FALSE);
44@define ('SHAARLI_URL', 'http://myshaarliurl.com'); 46@define ('SHAARLI_URL', 'http://myshaarliurl.com');
47@define ('SHARE_DIASPORA', FALSE);
48@define ('DIASPORA_URL', 'http://diasporapod.com'); # Don't add a / at the end
45@define ('FLATTR', TRUE); 49@define ('FLATTR', TRUE);
46@define ('FLATTR_API', 'https://api.flattr.com/rest/v2/things/lookup/?url='); 50@define ('FLATTR_API', 'https://api.flattr.com/rest/v2/things/lookup/?url=');
47@define ('NOT_FLATTRABLE', '0'); 51@define ('NOT_FLATTRABLE', '0');
48@define ('FLATTRABLE', '1'); 52@define ('FLATTRABLE', '1');
49@define ('FLATTRED', '2'); 53@define ('FLATTRED', '2');
54@define ('CARROT', FALSE);
50// display or not print link in article view 55// display or not print link in article view
51@define ('SHOW_PRINTLINK', '1'); 56@define ('SHOW_PRINTLINK', '1');
52// display or not percent of read in article view. Affects only default theme. 57// display or not percent of read in article view. Affects only default theme.
@@ -59,10 +64,9 @@
59@define ('LOCALE', ROOT . '/locale'); 64@define ('LOCALE', ROOT . '/locale');
60@define ('CACHE', ROOT . '/cache'); 65@define ('CACHE', ROOT . '/cache');
61 66
62@define ('PAGINATION', '10'); 67@define ('PAGINATION', '12');
63 68
64//limit for download of articles during import 69//limit for download of articles during import
65@define ('IMPORT_LIMIT', 5); 70@define ('IMPORT_LIMIT', 5);
66//delay between downloads (in sec) 71//delay between downloads (in sec)
67@define ('IMPORT_DELAY', 5); 72@define ('IMPORT_DELAY', 5);
68
diff --git a/inc/poche/pochePictures.php b/inc/poche/pochePictures.php
index 7a914f90..52394c70 100644
--- a/inc/poche/pochePictures.php
+++ b/inc/poche/pochePictures.php
@@ -33,7 +33,7 @@ final class Picture
33 } 33 }
34 34
35 if (self::_downloadPictures($absolute_path, $fullpath) === true) { 35 if (self::_downloadPictures($absolute_path, $fullpath) === true) {
36 $content = str_replace($matches[$i][2], $fullpath, $content); 36 $content = str_replace($matches[$i][2], Tools::getPocheUrl() . $fullpath, $content);
37 } 37 }
38 38
39 $processing_pictures[] = $absolute_path; 39 $processing_pictures[] = $absolute_path;
diff --git a/index.php b/index.php
index a26f458a..adfef71b 100755
--- a/index.php
+++ b/index.php
@@ -8,7 +8,8 @@
8 * @license http://opensource.org/licenses/MIT see COPYING file 8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */ 9 */
10 10
11define ('POCHE', '1.8.0'); 11define ('POCHE', '1.8.1');
12require 'check_essentials.php';
12require 'check_setup.php'; 13require 'check_setup.php';
13require_once 'inc/poche/global.inc.php'; 14require_once 'inc/poche/global.inc.php';
14 15
@@ -18,4 +19,4 @@ Session::init();
18 19
19// Let's rock ! 20// Let's rock !
20$wallabag = new Poche(); 21$wallabag = new Poche();
21$wallabag->run(); \ No newline at end of file 22$wallabag->run();
diff --git a/install/index.php b/install/index.php
index 1ae782a2..fee063bb 100755
--- a/install/index.php
+++ b/install/index.php
@@ -86,6 +86,7 @@ else if (isset($_POST['install'])) {
86 $salted_password = sha1($password . $username . $salt); 86 $salted_password = sha1($password . $username . $salt);
87 87
88 // Database informations 88 // Database informations
89 $moreQueries = array();
89 if ($_POST['db_engine'] == 'sqlite') { 90 if ($_POST['db_engine'] == 'sqlite') {
90 if (!copy('install/poche.sqlite', 'db/poche.sqlite')) { 91 if (!copy('install/poche.sqlite', 'db/poche.sqlite')) {
91 $errors[] = 'Impossible to create inc/poche/config.inc.php file.'; 92 $errors[] = 'Impossible to create inc/poche/config.inc.php file.';
@@ -101,12 +102,21 @@ else if (isset($_POST['install'])) {
101 $content = file_get_contents('inc/poche/config.inc.php'); 102 $content = file_get_contents('inc/poche/config.inc.php');
102 103
103 if ($_POST['db_engine'] == 'mysql') { 104 if ($_POST['db_engine'] == 'mysql') {
104 $db_path = 'mysql:host=' . $_POST['mysql_server'] . ';dbname=' . $_POST['mysql_database']; 105 $db_path = 'mysql:host=' . $_POST['mysql_server'] . ';dbname=' . $_POST['mysql_database'] . ';charset=utf8mb4';
105 $content = str_replace("define ('STORAGE_SERVER', 'localhost');", "define ('STORAGE_SERVER', '".$_POST['mysql_server']."');", $content); 106 $content = str_replace("define ('STORAGE_SERVER', 'localhost');", "define ('STORAGE_SERVER', '".$_POST['mysql_server']."');", $content);
106 $content = str_replace("define ('STORAGE_DB', 'poche');", "define ('STORAGE_DB', '".$_POST['mysql_database']."');", $content); 107 $content = str_replace("define ('STORAGE_DB', 'poche');", "define ('STORAGE_DB', '".$_POST['mysql_database']."');", $content);
107 $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['mysql_user']."');", $content); 108 $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['mysql_user']."');", $content);
108 $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['mysql_password']."');", $content); 109 $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['mysql_password']."');", $content);
109 $handle = new PDO($db_path, $_POST['mysql_user'], $_POST['mysql_password']); 110 $handle = new PDO($db_path, $_POST['mysql_user'], $_POST['mysql_password'], array(
111 PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
112 ));
113
114 $moreQueries[] = "INSERT INTO `entries` (`id`, `title`, `url`, `is_read`, `is_fav`, `content`, `user_id`) VALUES
115(1, 'Framabag, un nouveau service libre et gratuit', 'http://www.framablog.org/index.php/post/2014/02/05/Framabag-service-libre-gratuit-interview-developpeur', 0, 0, 0x0a3c68323e556e6520696e74657276696577206465204e69636f6c61732c20736f6e2064c3a976656c6f70706575722e3c2f68323e0a3c703e3c656d3e496c206e6520766f757320612073c3bb72656d656e742070617320c3a96368617070c3a920717565206e6f74726520636f6e736f6d6d6174696f6e20646520636f6e74656e75732064752057656220657374207465727269626c656d656e74206368726f6e6f706861676520657420706172746963756c69c3a872656d656e7420667275737472616e746520746f757420c3a0206c6120666f6973c2a03a206e6f6e207365756c656d656e74206e6f757320706173736f6e732062656175636f7570202874726f70c2a03f292064652074656d707320656e206c69676e6520c3a0206578706c6f726572206c6573206d696e6573206175726966c3a8726573206465206c6120746f696c652c20792064c3a974656374616e742070c3a970697465732065742066696c6f6e732c206d616973206e6f757320736f6d6d657320737572746f757420636f6e7374616d6d656e7420656e206d616e7175652e204dc3aa6d65207369206e6f7573206e6520736f6d6d6573207061732064616e73206c65207a617070696e67206672c3a96ec3a9746971756520736920666163696c656d656e742064c3a96e6f6e63c3a920706172206c657320646f637465732070737963686f6c6f677565732071756920706f6e74696669656e7420737572206c65732064616e67657273206475206e756dc3a9726971756520706f7572206c6573206a65756e65732063657276656c6c65732c20696c206e6f7573207669656e7420736f7576656e74206c6520676fc3bb7420616d6572206465206ce28099696e6163686576c3a9c2a03a20706173206c652074656d707320646520746f7574206c69726520283c6120687265663d22687474703a2f2f66722e77696b74696f6e6172792e6f72672f77696b692f544c4452223e544c3b44523c2f613e2065737420646576656e75206c6520636c696e2064e28099c593696c206d692d6669677565206d692d72616973696e2064e28099756e652067c3a96ec3a9726174696f6e206465206c65637465757273207072657373c3a973292c207061732074726f70206c652074656d70732064652072c3a9666cc3a963686972206e6f6e20706c75732068c3a96c61732c20706173206c652074656d707320646520737569767265206c6120726962616d62656c6c65206465206c69656e73206173736f6369c3a97320c3a020756e2061727469636c65e280a63c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e506f7572206e6f757320646f6e6e657220626f6e6e6520636f6e736369656e63652c206e6f75732072616e67656f6e73207363727570756c657573656d656e7420756e206d61727175652d7061676520646520706c75732064616e7320756e20736f75732d646f73736965722071756920656e20636f6d706f7274652064c3a96ac3a0203235362c206e6f7573206e6f746f6e7320756e20c3a96cc3a96d656e7420646520706c75732064616e73206c6120746f756a6f757273207269646963756c656d656e74206c6f6e67756520746f75646f756c697374652c2062726566206e6f75732072656d6574746f6e7320c3a020706c757320746172642c2063e280996573742dc3a02d64697265206c6520706c757320736f7576656e742061757820696e74726f757661626c65732063616c656e6465732067726563717565732c206c6520736f696e206465206c69726520767261696d656e7420756e2061727469636c65206a7567c3a920696e74c3a972657373616e742c20646520726567617264657220756e6520766964c3a96f207369676e616cc3a96520706172206c65732072c3a97a6f73736f63696f732c206465206c69726520756e20636861706974726520656e746965722064e28099756e206f75767261676520646973706f6e69626c6520656e206c69676e65e280a63c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e416c6f7273206269656e2073c3bb722c20c3a02064c3a966617574206465206e6f757320646f6e6e657220746f7574206c652074656d70732071756920736572616974206ec3a963657373616972652c2064657320736f6c7574696f6e73206578697374656e7420706f7572206e6f7573207065726d657474726520646520c2abc2a06c69726520706c75732074617264c2a0c2bb20656e20736175766567617264616e74206c65207072c3a9636965757820706f6c6c656e206465206e6f7320627574696e61676573206465207369746520656e20736974652c2065742064e28099656e20666169726520756c74c3a97269657572656d656e7420766f747265206d69656cc2a03b2063e280996573742062656c20657420626f6e206d616973206c65732072756368657320736f6e7420756e207065752064697374616e7465732c20c3a7612073e28099617070656c6c65206c6520636c6f756420286e6f7320616d69732074656368696573206de280996f6e74206269656e206578706c697175c3a9206d616973206ae280996169207365756c656d656e7420636f6d70726973207175652064657320747275637320c3a0206d6f6920736f6e742073757220646573206d616368696e6573206c6f696e7461696e65732c20c3a761206e65206d652072617373757265207061732074726f702920657420656c6c657320736f6e7420736f7576656e742070726f707269c3a97461697265732c206e65206c61697373616e7420656e7472657220717565206c6573203c733e7574696c69736174657572733c2f733e20636f6e736f6d6d61746575727320706179616e74732065742071756920636f6e73656e74656e7420c3a0206c6575727320636f6e646974696f6e732e2053616e7320636f6d70746572207175652064652067726f7320626f7572646f6e73207669656e6e656e742070726f666974657220706c7573206f75206d6f696e73206469736372c3a874656d656e7420646520746f757465732063657320747261636573206465206e6f75732d6dc3aa6d657320717569207065726d657474656e74206465206d6f6ec3a97469736572206e6f7472652070726f66696cc2a03a207369206a6520636f6c6c65637465207375722063657320736572766963657320286e65206c6573206e6f6d6d6f6e73207061732c206a757374656d656e742920756e652073c3a97269652064e2809961727469636c657320737572206ce280996964c3a965206465204e6174757265206368657a2044696465726f742c206a6520726563657672616920646976657273657320736f6c6c696369746174696f6e7320706f757220646576656e697220636c69656e74206465206c6120626f757469717565204e61747572652026616d703b2044c3a9636f75766572746520647520626f756c65766172642044696465726f742e2045742073692064e280996176656e74757265206c65732070726f6772616d6d6573206465206c61204e5341206d6f756c696e656e7420737572206c6520736572766963652c206a6520736572616920706575742dc3aa74726520756e206a6f75722064616e7320756e65206c6973746520646573206d696c6974616e7473206e61747572697374657320696e64c3a973697261626c657320737572206c657320766f6c73206465206c612050616e416d20286a65206e65207361697320706c75732074726f70207369206a6520706c616973616e7465206cc3a02c2066696e616c656d656e74e280a6293c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4c6120626f6e6e65206964c3a965c2a03a20c2abc2a0736520636f6e7374697475657220756e2072c3a9736572766f697220646520646f63756d656e74732073c3a96c656374696f6e6ec3a97320c3a020706172636f7572697220706c75732074617264c2a0c2bb20617070656c61697420646f6e6320756e6520617574726520626f6e6e65206964c3a9652c2063656c6c652064e2809961766f6972206c6520636f6e7472c3b46c652064652063652072c3a9736572766f69722c206465206e6f74726520636f6c6c656374696f6e20706572736f6e6e656c6c652e2043e28099657374204e69636f6c6173204cc59375696c6c65742c2063692d646573736f757320696e74657276696577c3a92c207175692073e28099792065737420636f6c6cc3a9206176656320756e652062656c6c65206170706c69636174696f6e20617070656cc3a96520657568e280a6206f75692c20617070656cc3a9652057616c6c616261672e3c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4672616d61736f667420736f757469656e742064e28099617574616e7420706c757320736f6e20696e6974696174697665207175e280993c6120687265663d22687474703a2f2f7777772e6672616d61626c6f672e6f72672f696e6465782e7068702f706f73742f323031342f30312f33312f4765656b74696f6e6e6572642d57616c6c61626167223e6f6e206c7569206120636865726368c3a920646573206d6973c3a872657320706f757220756e6520686973746f697265206465206e6f6d3c2f613e206574207175e28099696c2065737420706f737369626c652064e28099696e7374616c6c657220736f692d6dc3aa6d6520756e6520636f7069652064652057616c6c616261672073757220736f6e2070726f70726520736974652e3c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4c6520706574697420706c7573206465204672616d61736f66742c2072c3a97365617520746f756a6f7572732064c3a973697265757820646520766f75732070726f706f7365722064657320616c7465726e617469766573206c6962c3a972617472696365732c2063e2809965737420646520766f75732070726f706f736572202873757220696e736372697074696f6e207072c3a9616c61626c652920756e20616363c3a873206175204672616d616261672c2061757472656d656e742064697420766f7472652057616c6c616261672073757220756e2073657276657572204672616d612a2061766563206e6f74726520676172616e74696520646520636f6e666964656e7469616c6974c3a92e20436f6d6d6520706f7572206c65204672616d616e6577732c206e6f757320766f7573206163637565696c6c6f6e7320766f6c6f6e74696572732064616e73206c61206c696d697465206465206e6f732063617061636974c3a9732c20656e20766f757320696e766974616e7420c3a020766f7573206c616e6365722064616e7320766f747265206175746f2d68c3a962657267656d656e742064652057616c6c616261672e3c6272202f3e4365742061727469636c65206573742074726f70206c6f6e67c2a03f204d657474657a2d6c652064616e73203c6120687265663d22687474703a2f2f7777772e6672616d616261672e6f72672f696e6465782e706870223e766f747265204672616d616261673c2f613e20657420686f702e3c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4672616d61626c6f67c2a03a2053616c7574204e69636f6c6173e280a62054752070657578207465207072c3a973656e74657220627269c3a876656d656e74c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e53616c7574c2a0212044c3a976656c6f70706575722050485020646570756973207175656c7175657320616e6ec3a96573206d61696e74656e616e742028313020616e73292c206ae28099616920766f756c75206d652072656d657474726520c3a0206e697665617520746563686e697175656d656e74207061726c616e742028646570756973203320616e732c206ae28099616920706173206d616c206cc3a26368c3a9206c6520636c6176696572292e20506f7572206d6573206265736f696e7320706572736f732c206ae28099616920646f6e63206372c3a9c3a920756e2070657469742070726f6a657420706f75722072656d706c6163657220756e6520736f6c7574696f6e2070726f707269c3a97461697265206578697374616e74652e2053616e7320617563756e65207072c3a974656e74696f6e2c206ae2809961692068c3a962657267c3a92063652070726f6a6574207375722047697468756220657420636f6d6d652063e28099657374206c61207365756c6520736f6c7574696f6e203c656d3e6f70656e20736f757263653c2f656d3e20646520636520747970652c206c65206e6f6d62726520646520706572736f6e6e657320696e74c3a972657373c3a965732061206175676d656e74c3a920e280a63c2f703e0a3c703e3c656d3e4c6573207574696c6973617465757273206465207365727669636573204672616d61736f6674206e65206c6520736176656e742070617320666f7263c3a96d656e742c206d6169732074752061732064c3a96ac3a020706173206d616c207061727469636970c3a920c3a0206c61204672616d6147616c617869652c206e6f6ec2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e456e2065666665742e204ae28099616920636f6d6d656e63c3a920756e20706c7567696e20706f7572204672616d616e6577732c203c6120687265663d2268747470733a2f2f6769746875622e636f6d2f6e69636f736f6d622f74747273732d70757267652d6163636f756e7473223e74747273732d70757267652d6163636f756e74733c2f613e2c20717569207065726d6574206465206e6574746f796572206c61206261736520646520646f6e6ec3a9657320646520636f6d7074657320706c7573207574696c6973c3a9732e204d616973206365203c656d3e706c7567696e3c2f656d3e2061206265736f696e2064e28099c3aa747265207465726d696ec3a920c3a0203130302520706f757220c3aa74726520696e74c3a96772c3a9206175207365696e206465204672616d616e6577732028657420646f6e632064652054696e792054696e7920525353292c207369207175656c7175e28099756e20736f756861697465206de2809961696465722c20696c206ee2809979206120617563756e20736f7563692e3c6272202f3e4ae28099616920617573736920666169742031206f7520322061707061726974696f6e732064616e73206465732074726164756374696f6e7320706f7572204672616d61626c6f672e205269656e2064e2809965787472616f7264696e616972652c206a65206e652073756973207061732062696c696e6775652c20c3a761206d65207065726d6574206465206de28099656e747261c3ae6e65722e3c2f703e0a3c703e3c656d3e5061726c6f6e73206465207375697465206465206365207175692066c3a2636865c2a03a20746f6e206170706c69636174696f6e2057616c6c616261672c20656c6c652073e28099617070656c6c6169742070617320e2809c506f636865e2809d2c206176616e74c2a03f205475206e6f7573207261636f6e746573206ce28099686973746f697265c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e45756820656e20656666657420e280a62044c3a96ac3a02c20706f757271756f69203c656d3e706f6368653c2f656d3ec2a03f20506172636520717565206ce28099756e206465732074726f697320c2abc2a074c3a96e6f7273c2a0c2bb20737572206c65206d61726368c3a92073e28099617070656c6c65203c656d3e506f636b65743c2f656d3e2e20436f6d6d65206d6f6e206170706c69206ee28099c3a9746169742064657374696ec3a965207175e28099c3a0206d6f6e20757361676520706572736f6e6e656c2061752064c3a9706172742c206a65206e65206d6520737569732070617320746f72747572c3a9206269656e206c6f6e6774656d70732e3c2f703e0a3c703e43657420c3a974c3a92c206f6e2061206661696c6c69206368616e676572206465206e6f6d2c207175616e6420696c2079206120657520646520706c757320656e20706c75732064e280997574696c69736174657572732e2045742070756973206f6e2073e28099657374206469742071756520706f6368652c2063e28099c3a97461697420706173206d616c2c20c3a76120736f6e6e616974206269656e206672616ec3a761697320657420707569732061766563206c6573207175656c717565732064697a61696e65732064e280997574696c69736174657572732c206f6e206e652067c3aa6e657261697420706572736f6e6e652e3c2f703e0a3c703e43e280996573742073616e7320636f6d707465722061766563206c657320736f6369c3a974c3a97320616dc3a972696361696e6573206574206c6575722066c3a2636865757365206d616e696520646520766f756c6f697220656e766f796572206c657572732061766f6361747320c3a020746f757420626f7574206465206368616d702e204c65203233206a616e766965722c206ae280996169207265c3a77520756e20656d61696c206465206c61207061727420647520636162696e65742064e2809961766f6361747320646520506f636b6574206d652064656d616e64616e74206465206368616e676572206c65206e6f6d2c206c65206c6f676f2c206465206e6520706c7573207574696c69736572206c65207465726d6520e2809c726561642d69742d6c61746572e2809d2028c2abc2a06c6973657a206c6520706c75732074617264c2a0c2bb29206574206465206e6520706c757320646972652071756520506f636b6574206ee280996573742070617320677261747569742028746f7574206573742070617274692064e280993c6120687265663d2268747470733a2f2f747769747465722e636f6d2f77616c6c616261676170702f7374617475732f343233373836333635393434323235373932223e756e2074776565743c2f613e206fc3b9206a65207175616c6966696520506f636b657420646520c2abc2a06e6f6e2066726565c2a0c2bb20c3a0207361766f6972206e6f6e206c69627265292e20427265662c206dc3aa6d65207369206a652073656d626c6169732064616e73206d6f6e2064726f69742c206ae280996169207175616e64206dc3aa6d652070726973206c612064c3a9636973696f6e206465206368616e676572206465206e6f6d2065742057616c6c6162616720657374206ec3a92c20737569746520617578203c6120687265663d22687474703a2f2f6672616d61646174652e6f72672f73747564732e7068703f736f6e646167653d6c6c6370366f6a70796339706b6c6861223e64697a61696e65732064652070726f706f736974696f6e73206465206e6f6d207265c3a77565733c2f613e2e2043e2809965737420756e206dc3a96c616e676520656e747265206c652077616c6c61627920286465206c612066616d696c6c6520646573206b616e676f75726f75732c207175692073746f636b656e742064616e73206c65757220706f63686520636520717569206c65757220657374206368657229206574203c656d3e6261673c2f656d3e20286c6573207465726d657320736163202f207361636f636865202f2062657361636520736f6e7420c3a96e6f726dc3a96d656e7420726576656e7573292e204d616973206d61696e74656e616e742c206f6e207661206465206ce280996176616e742c20706c75732064652074656d707320c3a020706572647265206176656320c3a7612c206f6e2061206475207061696e20737572206c6120706c616e6368652e3c6272202f3e3c696d67207372633d22687474703a2f2f7777772e6672616d61626c6f672e6f72672f7075626c69632f5f696d672f6672616d61626c6f672f77616c6c6162795f626162792e6a70672220616c743d2277616c6c61627920617665632062c3a962c3a92064616e7320736120706f6368652220636c6173733d22633122207469746c653d2277616c6c61627920617665632062c3a962c3a92064616e7320736120706f63686522202f3e206372c3a96469742070686f746f203c6120687265663d22687474703a2f2f7777772e666c69636b722e636f6d2f70686f746f732f3236373832383634404e30302f353032373230323233342f696e2f70686f746f6c6973742d3845654a35412d6831544c36762d4e454c38312d636e4e6b536f2d39594d3174762d374b636736622d387a70416f612d61315a4c4d4e2d39594d3339722d3768355341442d38456548664c2d3845654677752d647456776e4d2d38756f4d45312d4a457a58652d47713471792d3932564a50522d43786531762d38483344324a2d61315a464e732d395937324b362d38456547784c2d354c353346782d354e6b454e732d3555384354592d354e6b7373682d6e6b6176462d3943726777502d3773644341612d647566324b682d685a65707a792d685a645531652d685a656f66462d685a656b44672d685a656741592d685a654d5a6e2d6a61486741662d3850383744322d354e677152762d6154343851422d685a645634592d685a654336342d45526770732d3556594747642d3556594a42312d354e6b72466b2d364a786837682d3768395075512d4552664d782d6831553169682d683155534278223e57696c6c69616d2057617262793c2f613e20717569206175746f72697365206578706c69636974656d656e7420746f7574652072c3a97574696c69736174696f6e2e3c2f703e0a3c703e3c656d3e426f6e2c20616c6f7273206578706c697175652d6d6f6920636520717565206a65207661697320706f75766f69722066616972652061766563204672616d61626167e280a63c6272202f3e3c2f656d3e3c2f703e0a3c703e416c6f7273204672616d616261672c20c3a761207465207065726d6574206465207465206372c3a9657220756e20636f6d7074652067726174756974656d656e74206574206c696272656d656e7420706f757220706f75766f6972207574696c697365722057616c6c616261672e205365756c6520746f6e206164726573736520656d61696c20657374206ec3a963657373616972652c206f6e207365206368617267652064e28099696e7374616c6c6572206574206465206d657474726520c3a0206a6f75722057616c6c6162616720706f757220746f692e20547520706575782064e2809961696c6c657572732070726f6669746572203c6120687265663d22687474703a2f2f7777772e6672616d61736f66742e6e65742f23746f705067436c6f7564223e64e280996175747265732073657276696365732070726f706f73c3a97320706172204672616d61736f6674206963693c2f613e2e3c2f703e0a3c703ec380206365206a6f75722c20696c207920612038333420636f6d70746573206372c3a9c3a97320737572204672616d616261672e3c2f703e0a3c703e3c656d3e566f7573206176657a20767261696d656e7420636f6ec3a7752063652073657276696365206166696e207175e280996f6e20707569737365206ce280997574696c69736572206176656320756e206d6178696d756d2064e280996f7574696c732c206e6f6ec2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e4175746f7572206465206ce280996170706c69636174696f6e207765622c20696c206578697374652064c3a96ac3a020646573206170706c69636174696f6e7320706f757220736d61727470686f6e65732028416e64726f69642065742057696e646f77732050686f6e65292c2064657320657874656e73696f6e732046697265666f7820657420476f6f676c65204368726f6d652e3c2f703e0a3c703e436f6d6d652057616c6c6162616720706f7373c3a864652064657320666c7578205253532c2063e2809965737420666163696c65206465206c697265206c65732061727469636c657320736175766567617264c3a97320737572207361206c697365757365202873692063656c6c652d6369207065726d6574206465206c6972652064657320666c757820525353292e2043616c696272652028c2abc2a06c6f67696369656c206465206c6563747572652c2064652067657374696f6e206465206269626c696f7468c3a87175657320657420646520636f6e76657273696f6e206465206669636869657273206e756dc3a972697175657320646520747970652065626f6f6b206f75206c6976726520c3a96c656374726f6e69717565c2a0c2bb2c6e6f757320646974207562756e74752d66722e6f72672920696e74c3a867726520646570756973207175656c717565732073656d61696e6573206d61696e74656e616e74206c6120706f73736962696c6974c3a92064652072c3a9637570c3a9726572206c65732061727469636c6573206e6f6e206c75732c20707261746971756520706f757220666169726520756e20666963686965722065507562c2a0213c2f703e0a3c703e44e28099617574726573206170706c69636174696f6e7320776562207065726d657474656e74206ce28099696e74c3a967726174696f6e20617665632057616c6c61626167202846726573685253532c204c6565642065742054696e792054696e792052535320706f7572206c657320616772c3a96761746575727320646520666c7578292e204ce2809941504920717569207365726120646973706f6e69626c652064616e73206c612070726f636861696e652076657273696f6e2064652057616c6c61626167207065726d657474726120656e636f726520706c75732064e28099696e74657261637469766974c3a92e3c2f703e0a3c703e3c656d3e5920612d742d696c20756e206d6f6465206465206c65637475726520686f7273206c69676e65206f75206573742d6365207175652063e28099657374207072c3a9767520706f7572206c65732070726f636861696e65732076657273696f6e73c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e496c2079206120756e2070736575646f206d6f646520686f7273206c69676e652c20646973706f6e69626c652061766563206ce280996170706c69636174696f6e20416e64726f69642e204f6e20706575742072c3a9637570c3a9726572202876696120756e20666c75782052535329206c65732061727469636c6573206e6f6e206c757320717565206ce280996f6e206120736175766567617264c3a9732e20556e6520666f69732064c3a9636f6e6e656374c3a92c206f6e207065757420636f6e74696e75657220c3a0206c6972652073757220736f6e20736d61727470686f6e65206f75207361207461626c65747465206c65732061727469636c65732e2050617220636f6e7472652c20696c206d616e7175652064657320666f6e6374696f6e6e616c6974c3a973c2a03a207175616e64207475206d61727175657320756e2061727469636c6520636f6d6d65206c752c206365206ee28099657374207061732073796e6368726f6e6973c3a92061766563206c612076657273696f6e207765622064652057616c6c616261672e204ae28099657370c3a8726520717565206a652073756973207072657371756520636c6169722064616e73206d6573206578706c69636174696f6e732e3c2f703e0a3c703e506f7572206c612076322c20717569206573742064c3a96ac3a020656e20636f7572732064652064c3a976656c6f7070656d656e742c206fc3b9206a652073756973206269656e20616964c3a9207061722056696e63656e74204a6f757373652c206f6e2061757261206c6120706f73736962696c6974c3a92064e2809961766f697220756e2076726169206d6f646520686f7273206c69676e652e3c2f703e0a3c703e3c656d3e416c6f7273207369206f6e2076657574206169646572202f2070617274696369706572202f20747269666f75696c6c6572206c6520636f6465202f20766f757320656e766f79657220646573207265746f7572732c206f6e206661697420636f6d6d656e74c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e4f6e207065757420616964657220646520706c75736965757273206661c3a76f6e73c2a03a3c2f703e0a3c756c3e3c6c693e7574696c697365722077616c6c61626167206574206e6f75732072656d6f6e746572206c65732070726f626cc3a86d65732072656e636f6e7472c3a973c2a03b3c2f6c693e0a3c6c693e706172746963697065722061752064c3a976656c6f7070656d656e74206465206ce280996170706c69636174696f6e2068747470733a2f2f6769746875622e636f6d2f77616c6c616261672f77616c6c616261672053692053696c6578202f2053796d666f6e7932202f2048544d4c35202f206574632e207465207061726c656e742c206ee2809968c3a97369746520706173c2a0213c2f6c693e0a3c6c693e636f6d6d6520746f75742070726f6a65742c206c652067726f7320706f696e74206e6f697220657374206c65206d616e71756520646520646f63756d656e746174696f6e2e203c6120687265663d22687474703a2f2f646f632e77616c6c616261672e6f7267223e456c6c652065737420646973706f206963693c2f613e206d61697320696c206d616e71756520706c65696e2064652063686f73657320657420746f7574206ee280996573742070617320c3a0206a6f7572c2a03b3c2f6c693e0a3c6c693e7061726c65722064652057616c6c61626167206175746f757220646520766f7573c2a03b3c2f6c693e0a3c6c693e696c20657869737465203c6120687265663d2268747470733a2f2f666c617474722e636f6d2f7468696e672f313236353438302f706f6368652d612d726561642d69742d6c617465722d6f70656e2d736f757263652d73797374656d223e756e20636f6d70746520466c617474723c2f613e2e3c2f6c693e0a3c2f756c3e3c703e3c656d3e4c65206d6f74206465206c612066696ee280a63f3c6272202f3e3c2f656d3e3c2f703e0a3c703e4d6572636920c3a0204672616d61736f66742064e280996163637565696c6c697220657420646520736f7574656e69722057616c6c61626167c2a0213c2f703e0a3c703e4c6120726f7574652065737420656e636f7265206269656e206c6f6e67756520706f7572206e6520706c7573207574696c6973657220646520736f6c7574696f6e732070726f707269c3a97461697265732c206d616973206f6e2064657672616974207920617272697665722c206e6f6ec2a03f3c2f703e0a3c703e3c696d67207372633d22687474703a2f2f7777772e6672616d61626c6f672e6f72672f7075626c69632f5f696d672f6672616d61626c6f672f706c65696e4c6573506f636865732e706e672220616c743d226672616d61736f667420706c65696e206c657320706f636865732220636c6173733d22633122207469746c653d226672616d61736f667420706c65696e206c657320706f6368657322202f3e3c6272202f3e3c6120687265663d22687474703a2f2f6672616d616c61622e6f72672f676b6e642d63726561746f722f223e6861636b657a2047c3a967c3a9c2a0213c2f613e3c2f703e0a, 1),
116(2, 'wallabag/wallabag', 'https://github.com/wallabag/wallabag', 0, 0, 0x3c7370616e20636c6173733d226e616d65223e524541444d452e6d643c2f7370616e3e3c703e77616c6c6162616720697320612073656c6620686f737461626c65206170706c69636174696f6e20616c6c6f77696e6720796f7520746f206e6f74206d69737320616e7920636f6e74656e7420616e796d6f72652e20436c69636b2c20736176652c2072656164206974207768656e20796f752063616e2e20497420657874726163747320636f6e74656e7420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c703e4d6f726520696e666f726d6174696f6e73206f6e206f757220776562736974653a203c6120687265663d22687474703a2f2f77616c6c616261672e6f7267223e77616c6c616261672e6f72673c2f613e3c2f703e0a3c68323e3c6120636c6173733d22616e63686f722220687265663d2268747470733a2f2f6769746875622e636f6d2f77616c6c616261672f77616c6c61626167236c6963656e7365223e3c2f613e4c6963656e73653c2f68323e0a3c703e436f7079726967687420c2a920323031302d32303134204e69636f6c6173204cc59375696c6c6574203c6120687265663d226d61696c746f3a6e69636f6c6173406c6f6575696c6c65742e6f7267223e6e69636f6c6173406c6f6575696c6c65742e6f72673c2f613e205468697320776f726b20697320667265652e20596f752063616e2072656469737472696275746520697420616e642f6f72206d6f6469667920697420756e64657220746865207465726d73206f662074686520446f205768617420546865204675636b20596f752057616e7420546f205075626c6963204c6963656e73652c2056657273696f6e20322c206173207075626c69736865642062792053616d20486f63657661722e205365652074686520434f5059494e472066696c6520666f72206d6f72652064657461696c732e3c2f703e0a, 1),
117(3, 'a self hostable application for saving web pages | wallabag', 'https://www.wallabag.org/', 0, 1, 0x0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e77616c6c616261672028666f726d65726c7920706f636865292069732061203c7374726f6e673e73656c6620686f737461626c65206170706c69636174696f6e20666f7220736176696e67207765622070616765733c2f7374726f6e673e2e20556e6c696b65206f746865722073657276696365732cc2a077616c6c6162616720697320667265652028617320696e2066726565646f6d2920616e64206f70656e20736f757263652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e576974682074686973206170706c69636174696f6e20796f752077696c6c206e6f74206d69737320636f6e74656e7420616e796d6f72652e203c7374726f6e673e436c69636b2c20736176652c2072656164206974207768656e20796f752077616e743c2f7374726f6e673e2e2049742073617665732074686520636f6e74656e7420796f752073656c65637420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3620636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c68323e486f7720697420776f726b733c2f68323e0a3c703e5468616e6b7320746f2074686520626f6f6b6d61726b6c6574206f72203c61207469746c653d22446f776e6c6f6164732220687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f646f776e6c6f6164732f223e74686972642d7061727479206170706c69636174696f6e733c2f613e2c20796f75207361766520616e2061727469636c6520696e20796f7572c2a077616c6c6162616720746f2072656164206974206c617465722e205468656e2c207768656e20796f75206f70656e20796f75722077616c6c616261672c203c7374726f6e673e796f752063616e20636f6d666f727461626c79207265616420796f75722061727469636c65733c2f7374726f6e673e2e3c2f703e0a3c68323e486f7720746f207573652077616c6c616261673c2f68323e0a3c703e5468657265206172652074776f207761797320746f207573652077616c6c616261673a20796f752063616e203c6120687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f6672657175656e746c792d61736b65642d7175657374696f6e732f23486f775f63616e5f495f696e7374616c6c5f77616c6c616261675f616e645f776861745f6172655f7468655f726571756972656d656e7473223e696e7374616c6c2069743c2f613ec2a06f6e20796f75722077656220736572766572206f7220796f752063616ec2a03c6120687265663d22687474703a2f2f6170702e696e746865706f6368652e636f6d223e63726561746520616e206163636f756e743c2f613ec2a06174204672616d616261672028776520696e7374616c6c20616e642075706772616465c2a077616c6c6162616720666f7220796f75292e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a, 1);";
118 $moreQueries[] = "INSERT INTO `tags` (`id`, `value`) VALUES (1, 'opensource');";
119 $moreQueries[] = "INSERT INTO `tags_entries` (`id`, `entry_id`, `tag_id`) VALUES (1, 2, 1);";
110 120
111 $sql_structure = file_get_contents('install/mysql.sql'); 121 $sql_structure = file_get_contents('install/mysql.sql');
112 } 122 }
@@ -117,6 +127,13 @@ else if (isset($_POST['install'])) {
117 $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['pg_user']."');", $content); 127 $content = str_replace("define ('STORAGE_USER', 'poche');", "define ('STORAGE_USER', '".$_POST['pg_user']."');", $content);
118 $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['pg_password']."');", $content); 128 $content = str_replace("define ('STORAGE_PASSWORD', 'poche');", "define ('STORAGE_PASSWORD', '".$_POST['pg_password']."');", $content);
119 $handle = new PDO($db_path, $_POST['pg_user'], $_POST['pg_password']); 129 $handle = new PDO($db_path, $_POST['pg_user'], $_POST['pg_password']);
130
131 $moreQueries[] = "INSERT INTO entries (title, url, is_read, is_fav, content, user_id) VALUES
132('Framabag, un nouveau service libre et gratuit', 'http://www.framablog.org/index.php/post/2014/02/05/Framabag-service-libre-gratuit-interview-developpeur', false, false, convert_from(decode('3c68323e556e6520696e74657276696577206465204e69636f6c61732c20736f6e2064c3a976656c6f70706575722e3c2f68323e0a3c703e3c656d3e496c206e6520766f757320612073c3bb72656d656e742070617320c3a96368617070c3a920717565206e6f74726520636f6e736f6d6d6174696f6e20646520636f6e74656e75732064752057656220657374207465727269626c656d656e74206368726f6e6f706861676520657420706172746963756c69c3a872656d656e7420667275737472616e746520746f757420c3a0206c6120666f6973c2a03a206e6f6e207365756c656d656e74206e6f757320706173736f6e732062656175636f7570202874726f70c2a03f292064652074656d707320656e206c69676e6520c3a0206578706c6f726572206c6573206d696e6573206175726966c3a8726573206465206c6120746f696c652c20792064c3a974656374616e742070c3a970697465732065742066696c6f6e732c206d616973206e6f757320736f6d6d657320737572746f757420636f6e7374616d6d656e7420656e206d616e7175652e204dc3aa6d65207369206e6f7573206e6520736f6d6d6573207061732064616e73206c65207a617070696e67206672c3a96ec3a9746971756520736920666163696c656d656e742064c3a96e6f6e63c3a920706172206c657320646f637465732070737963686f6c6f677565732071756920706f6e74696669656e7420737572206c65732064616e67657273206475206e756dc3a9726971756520706f7572206c6573206a65756e65732063657276656c6c65732c20696c206e6f7573207669656e7420736f7576656e74206c6520676fc3bb7420616d6572206465206ce28099696e6163686576c3a9c2a03a20706173206c652074656d707320646520746f7574206c69726520283c6120687265663d22687474703a2f2f66722e77696b74696f6e6172792e6f72672f77696b692f544c4452223e544c3b44523c2f613e2065737420646576656e75206c6520636c696e2064e28099c593696c206d692d6669677565206d692d72616973696e2064e28099756e652067c3a96ec3a9726174696f6e206465206c65637465757273207072657373c3a973292c207061732074726f70206c652074656d70732064652072c3a9666cc3a963686972206e6f6e20706c75732068c3a96c61732c20706173206c652074656d707320646520737569767265206c6120726962616d62656c6c65206465206c69656e73206173736f6369c3a97320c3a020756e2061727469636c65e280a63c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e506f7572206e6f757320646f6e6e657220626f6e6e6520636f6e736369656e63652c206e6f75732072616e67656f6e73207363727570756c657573656d656e7420756e206d61727175652d7061676520646520706c75732064616e7320756e20736f75732d646f73736965722071756920656e20636f6d706f7274652064c3a96ac3a0203235362c206e6f7573206e6f746f6e7320756e20c3a96cc3a96d656e7420646520706c75732064616e73206c6120746f756a6f757273207269646963756c656d656e74206c6f6e67756520746f75646f756c697374652c2062726566206e6f75732072656d6574746f6e7320c3a020706c757320746172642c2063e280996573742dc3a02d64697265206c6520706c757320736f7576656e742061757820696e74726f757661626c65732063616c656e6465732067726563717565732c206c6520736f696e206465206c69726520767261696d656e7420756e2061727469636c65206a7567c3a920696e74c3a972657373616e742c20646520726567617264657220756e6520766964c3a96f207369676e616cc3a96520706172206c65732072c3a97a6f73736f63696f732c206465206c69726520756e20636861706974726520656e746965722064e28099756e206f75767261676520646973706f6e69626c6520656e206c69676e65e280a63c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e416c6f7273206269656e2073c3bb722c20c3a02064c3a966617574206465206e6f757320646f6e6e657220746f7574206c652074656d70732071756920736572616974206ec3a963657373616972652c2064657320736f6c7574696f6e73206578697374656e7420706f7572206e6f7573207065726d657474726520646520c2abc2a06c69726520706c75732074617264c2a0c2bb20656e20736175766567617264616e74206c65207072c3a9636965757820706f6c6c656e206465206e6f7320627574696e61676573206465207369746520656e20736974652c2065742064e28099656e20666169726520756c74c3a97269657572656d656e7420766f747265206d69656cc2a03b2063e280996573742062656c20657420626f6e206d616973206c65732072756368657320736f6e7420756e207065752064697374616e7465732c20c3a7612073e28099617070656c6c65206c6520636c6f756420286e6f7320616d69732074656368696573206de280996f6e74206269656e206578706c697175c3a9206d616973206ae280996169207365756c656d656e7420636f6d70726973207175652064657320747275637320c3a0206d6f6920736f6e742073757220646573206d616368696e6573206c6f696e7461696e65732c20c3a761206e65206d652072617373757265207061732074726f702920657420656c6c657320736f6e7420736f7576656e742070726f707269c3a97461697265732c206e65206c61697373616e7420656e7472657220717565206c6573203c733e7574696c69736174657572733c2f733e20636f6e736f6d6d61746575727320706179616e74732065742071756920636f6e73656e74656e7420c3a0206c6575727320636f6e646974696f6e732e2053616e7320636f6d70746572207175652064652067726f7320626f7572646f6e73207669656e6e656e742070726f666974657220706c7573206f75206d6f696e73206469736372c3a874656d656e7420646520746f757465732063657320747261636573206465206e6f75732d6dc3aa6d657320717569207065726d657474656e74206465206d6f6ec3a97469736572206e6f7472652070726f66696cc2a03a207369206a6520636f6c6c65637465207375722063657320736572766963657320286e65206c6573206e6f6d6d6f6e73207061732c206a757374656d656e742920756e652073c3a97269652064e2809961727469636c657320737572206ce280996964c3a965206465204e6174757265206368657a2044696465726f742c206a6520726563657672616920646976657273657320736f6c6c696369746174696f6e7320706f757220646576656e697220636c69656e74206465206c6120626f757469717565204e61747572652026616d703b2044c3a9636f75766572746520647520626f756c65766172642044696465726f742e2045742073692064e280996176656e74757265206c65732070726f6772616d6d6573206465206c61204e5341206d6f756c696e656e7420737572206c6520736572766963652c206a6520736572616920706575742dc3aa74726520756e206a6f75722064616e7320756e65206c6973746520646573206d696c6974616e7473206e61747572697374657320696e64c3a973697261626c657320737572206c657320766f6c73206465206c612050616e416d20286a65206e65207361697320706c75732074726f70207369206a6520706c616973616e7465206cc3a02c2066696e616c656d656e74e280a6293c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4c6120626f6e6e65206964c3a965c2a03a20c2abc2a0736520636f6e7374697475657220756e2072c3a9736572766f697220646520646f63756d656e74732073c3a96c656374696f6e6ec3a97320c3a020706172636f7572697220706c75732074617264c2a0c2bb20617070656c61697420646f6e6320756e6520617574726520626f6e6e65206964c3a9652c2063656c6c652064e2809961766f6972206c6520636f6e7472c3b46c652064652063652072c3a9736572766f69722c206465206e6f74726520636f6c6c656374696f6e20706572736f6e6e656c6c652e2043e28099657374204e69636f6c6173204cc59375696c6c65742c2063692d646573736f757320696e74657276696577c3a92c207175692073e28099792065737420636f6c6cc3a9206176656320756e652062656c6c65206170706c69636174696f6e20617070656cc3a96520657568e280a6206f75692c20617070656cc3a9652057616c6c616261672e3c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4672616d61736f667420736f757469656e742064e28099617574616e7420706c757320736f6e20696e6974696174697665207175e280993c6120687265663d22687474703a2f2f7777772e6672616d61626c6f672e6f72672f696e6465782e7068702f706f73742f323031342f30312f33312f4765656b74696f6e6e6572642d57616c6c61626167223e6f6e206c7569206120636865726368c3a920646573206d6973c3a872657320706f757220756e6520686973746f697265206465206e6f6d3c2f613e206574207175e28099696c2065737420706f737369626c652064e28099696e7374616c6c657220736f692d6dc3aa6d6520756e6520636f7069652064652057616c6c616261672073757220736f6e2070726f70726520736974652e3c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4c6520706574697420706c7573206465204672616d61736f66742c2072c3a97365617520746f756a6f7572732064c3a973697265757820646520766f75732070726f706f7365722064657320616c7465726e617469766573206c6962c3a972617472696365732c2063e2809965737420646520766f75732070726f706f736572202873757220696e736372697074696f6e207072c3a9616c61626c652920756e20616363c3a873206175204672616d616261672c2061757472656d656e742064697420766f7472652057616c6c616261672073757220756e2073657276657572204672616d612a2061766563206e6f74726520676172616e74696520646520636f6e666964656e7469616c6974c3a92e20436f6d6d6520706f7572206c65204672616d616e6577732c206e6f757320766f7573206163637565696c6c6f6e7320766f6c6f6e74696572732064616e73206c61206c696d697465206465206e6f732063617061636974c3a9732c20656e20766f757320696e766974616e7420c3a020766f7573206c616e6365722064616e7320766f747265206175746f2d68c3a962657267656d656e742064652057616c6c616261672e3c6272202f3e4365742061727469636c65206573742074726f70206c6f6e67c2a03f204d657474657a2d6c652064616e73203c6120687265663d22687474703a2f2f7777772e6672616d616261672e6f72672f696e6465782e706870223e766f747265204672616d616261673c2f613e20657420686f702e3c6272202f3e3c2f656d3e3c2f703e0a3c703e3c656d3e4672616d61626c6f67c2a03a2053616c7574204e69636f6c6173e280a62054752070657578207465207072c3a973656e74657220627269c3a876656d656e74c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e53616c7574c2a0212044c3a976656c6f70706575722050485020646570756973207175656c7175657320616e6ec3a96573206d61696e74656e616e742028313020616e73292c206ae28099616920766f756c75206d652072656d657474726520c3a0206e697665617520746563686e697175656d656e74207061726c616e742028646570756973203320616e732c206ae28099616920706173206d616c206cc3a26368c3a9206c6520636c6176696572292e20506f7572206d6573206265736f696e7320706572736f732c206ae28099616920646f6e63206372c3a9c3a920756e2070657469742070726f6a657420706f75722072656d706c6163657220756e6520736f6c7574696f6e2070726f707269c3a97461697265206578697374616e74652e2053616e7320617563756e65207072c3a974656e74696f6e2c206ae2809961692068c3a962657267c3a92063652070726f6a6574207375722047697468756220657420636f6d6d652063e28099657374206c61207365756c6520736f6c7574696f6e203c656d3e6f70656e20736f757263653c2f656d3e20646520636520747970652c206c65206e6f6d62726520646520706572736f6e6e657320696e74c3a972657373c3a965732061206175676d656e74c3a920e280a63c2f703e0a3c703e3c656d3e4c6573207574696c6973617465757273206465207365727669636573204672616d61736f6674206e65206c6520736176656e742070617320666f7263c3a96d656e742c206d6169732074752061732064c3a96ac3a020706173206d616c207061727469636970c3a920c3a0206c61204672616d6147616c617869652c206e6f6ec2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e456e2065666665742e204ae28099616920636f6d6d656e63c3a920756e20706c7567696e20706f7572204672616d616e6577732c203c6120687265663d2268747470733a2f2f6769746875622e636f6d2f6e69636f736f6d622f74747273732d70757267652d6163636f756e7473223e74747273732d70757267652d6163636f756e74733c2f613e2c20717569207065726d6574206465206e6574746f796572206c61206261736520646520646f6e6ec3a9657320646520636f6d7074657320706c7573207574696c6973c3a9732e204d616973206365203c656d3e706c7567696e3c2f656d3e2061206265736f696e2064e28099c3aa747265207465726d696ec3a920c3a0203130302520706f757220c3aa74726520696e74c3a96772c3a9206175207365696e206465204672616d616e6577732028657420646f6e632064652054696e792054696e7920525353292c207369207175656c7175e28099756e20736f756861697465206de2809961696465722c20696c206ee2809979206120617563756e20736f7563692e3c6272202f3e4ae28099616920617573736920666169742031206f7520322061707061726974696f6e732064616e73206465732074726164756374696f6e7320706f7572204672616d61626c6f672e205269656e2064e2809965787472616f7264696e616972652c206a65206e652073756973207061732062696c696e6775652c20c3a761206d65207065726d6574206465206de28099656e747261c3ae6e65722e3c2f703e0a3c703e3c656d3e5061726c6f6e73206465207375697465206465206365207175692066c3a2636865c2a03a20746f6e206170706c69636174696f6e2057616c6c616261672c20656c6c652073e28099617070656c6c6169742070617320e2809c506f636865e2809d2c206176616e74c2a03f205475206e6f7573207261636f6e746573206ce28099686973746f697265c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e45756820656e20656666657420e280a62044c3a96ac3a02c20706f757271756f69203c656d3e706f6368653c2f656d3ec2a03f20506172636520717565206ce28099756e206465732074726f697320c2abc2a074c3a96e6f7273c2a0c2bb20737572206c65206d61726368c3a92073e28099617070656c6c65203c656d3e506f636b65743c2f656d3e2e20436f6d6d65206d6f6e206170706c69206ee28099c3a9746169742064657374696ec3a965207175e28099c3a0206d6f6e20757361676520706572736f6e6e656c2061752064c3a9706172742c206a65206e65206d6520737569732070617320746f72747572c3a9206269656e206c6f6e6774656d70732e3c2f703e0a3c703e43657420c3a974c3a92c206f6e2061206661696c6c69206368616e676572206465206e6f6d2c207175616e6420696c2079206120657520646520706c757320656e20706c75732064e280997574696c69736174657572732e2045742070756973206f6e2073e28099657374206469742071756520706f6368652c2063e28099c3a97461697420706173206d616c2c20c3a76120736f6e6e616974206269656e206672616ec3a761697320657420707569732061766563206c6573207175656c717565732064697a61696e65732064e280997574696c69736174657572732c206f6e206e652067c3aa6e657261697420706572736f6e6e652e3c2f703e0a3c703e43e280996573742073616e7320636f6d707465722061766563206c657320736f6369c3a974c3a97320616dc3a972696361696e6573206574206c6575722066c3a2636865757365206d616e696520646520766f756c6f697220656e766f796572206c657572732061766f6361747320c3a020746f757420626f7574206465206368616d702e204c65203233206a616e766965722c206ae280996169207265c3a77520756e20656d61696c206465206c61207061727420647520636162696e65742064e2809961766f6361747320646520506f636b6574206d652064656d616e64616e74206465206368616e676572206c65206e6f6d2c206c65206c6f676f2c206465206e6520706c7573207574696c69736572206c65207465726d6520e2809c726561642d69742d6c61746572e2809d2028c2abc2a06c6973657a206c6520706c75732074617264c2a0c2bb29206574206465206e6520706c757320646972652071756520506f636b6574206ee280996573742070617320677261747569742028746f7574206573742070617274692064e280993c6120687265663d2268747470733a2f2f747769747465722e636f6d2f77616c6c616261676170702f7374617475732f343233373836333635393434323235373932223e756e2074776565743c2f613e206fc3b9206a65207175616c6966696520506f636b657420646520c2abc2a06e6f6e2066726565c2a0c2bb20c3a0207361766f6972206e6f6e206c69627265292e20427265662c206dc3aa6d65207369206a652073656d626c6169732064616e73206d6f6e2064726f69742c206ae280996169207175616e64206dc3aa6d652070726973206c612064c3a9636973696f6e206465206368616e676572206465206e6f6d2065742057616c6c6162616720657374206ec3a92c20737569746520617578203c6120687265663d22687474703a2f2f6672616d61646174652e6f72672f73747564732e7068703f736f6e646167653d6c6c6370366f6a70796339706b6c6861223e64697a61696e65732064652070726f706f736974696f6e73206465206e6f6d207265c3a77565733c2f613e2e2043e2809965737420756e206dc3a96c616e676520656e747265206c652077616c6c61627920286465206c612066616d696c6c6520646573206b616e676f75726f75732c207175692073746f636b656e742064616e73206c65757220706f63686520636520717569206c65757220657374206368657229206574203c656d3e6261673c2f656d3e20286c6573207465726d657320736163202f207361636f636865202f2062657361636520736f6e7420c3a96e6f726dc3a96d656e7420726576656e7573292e204d616973206d61696e74656e616e742c206f6e207661206465206ce280996176616e742c20706c75732064652074656d707320c3a020706572647265206176656320c3a7612c206f6e2061206475207061696e20737572206c6120706c616e6368652e3c6272202f3e3c696d67207372633d22687474703a2f2f7777772e6672616d61626c6f672e6f72672f7075626c69632f5f696d672f6672616d61626c6f672f77616c6c6162795f626162792e6a70672220616c743d2277616c6c61627920617665632062c3a962c3a92064616e7320736120706f6368652220636c6173733d22633122207469746c653d2277616c6c61627920617665632062c3a962c3a92064616e7320736120706f63686522202f3e206372c3a96469742070686f746f203c6120687265663d22687474703a2f2f7777772e666c69636b722e636f6d2f70686f746f732f3236373832383634404e30302f353032373230323233342f696e2f70686f746f6c6973742d3845654a35412d6831544c36762d4e454c38312d636e4e6b536f2d39594d3174762d374b636736622d387a70416f612d61315a4c4d4e2d39594d3339722d3768355341442d38456548664c2d3845654677752d647456776e4d2d38756f4d45312d4a457a58652d47713471792d3932564a50522d43786531762d38483344324a2d61315a464e732d395937324b362d38456547784c2d354c353346782d354e6b454e732d3555384354592d354e6b7373682d6e6b6176462d3943726777502d3773644341612d647566324b682d685a65707a792d685a645531652d685a656f66462d685a656b44672d685a656741592d685a654d5a6e2d6a61486741662d3850383744322d354e677152762d6154343851422d685a645634592d685a654336342d45526770732d3556594747642d3556594a42312d354e6b72466b2d364a786837682d3768395075512d4552664d782d6831553169682d683155534278223e57696c6c69616d2057617262793c2f613e20717569206175746f72697365206578706c69636974656d656e7420746f7574652072c3a97574696c69736174696f6e2e3c2f703e0a3c703e3c656d3e426f6e2c20616c6f7273206578706c697175652d6d6f6920636520717565206a65207661697320706f75766f69722066616972652061766563204672616d61626167e280a63c6272202f3e3c2f656d3e3c2f703e0a3c703e416c6f7273204672616d616261672c20c3a761207465207065726d6574206465207465206372c3a9657220756e20636f6d7074652067726174756974656d656e74206574206c696272656d656e7420706f757220706f75766f6972207574696c697365722057616c6c616261672e205365756c6520746f6e206164726573736520656d61696c20657374206ec3a963657373616972652c206f6e207365206368617267652064e28099696e7374616c6c6572206574206465206d657474726520c3a0206a6f75722057616c6c6162616720706f757220746f692e20547520706575782064e2809961696c6c657572732070726f6669746572203c6120687265663d22687474703a2f2f7777772e6672616d61736f66742e6e65742f23746f705067436c6f7564223e64e280996175747265732073657276696365732070726f706f73c3a97320706172204672616d61736f6674206963693c2f613e2e3c2f703e0a3c703ec380206365206a6f75722c20696c207920612038333420636f6d70746573206372c3a9c3a97320737572204672616d616261672e3c2f703e0a3c703e3c656d3e566f7573206176657a20767261696d656e7420636f6ec3a7752063652073657276696365206166696e207175e280996f6e20707569737365206ce280997574696c69736572206176656320756e206d6178696d756d2064e280996f7574696c732c206e6f6ec2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e4175746f7572206465206ce280996170706c69636174696f6e207765622c20696c206578697374652064c3a96ac3a020646573206170706c69636174696f6e7320706f757220736d61727470686f6e65732028416e64726f69642065742057696e646f77732050686f6e65292c2064657320657874656e73696f6e732046697265666f7820657420476f6f676c65204368726f6d652e3c2f703e0a3c703e436f6d6d652057616c6c6162616720706f7373c3a864652064657320666c7578205253532c2063e2809965737420666163696c65206465206c697265206c65732061727469636c657320736175766567617264c3a97320737572207361206c697365757365202873692063656c6c652d6369207065726d6574206465206c6972652064657320666c757820525353292e2043616c696272652028c2abc2a06c6f67696369656c206465206c6563747572652c2064652067657374696f6e206465206269626c696f7468c3a87175657320657420646520636f6e76657273696f6e206465206669636869657273206e756dc3a972697175657320646520747970652065626f6f6b206f75206c6976726520c3a96c656374726f6e69717565c2a0c2bb2c6e6f757320646974207562756e74752d66722e6f72672920696e74c3a867726520646570756973207175656c717565732073656d61696e6573206d61696e74656e616e74206c6120706f73736962696c6974c3a92064652072c3a9637570c3a9726572206c65732061727469636c6573206e6f6e206c75732c20707261746971756520706f757220666169726520756e20666963686965722065507562c2a0213c2f703e0a3c703e44e28099617574726573206170706c69636174696f6e7320776562207065726d657474656e74206ce28099696e74c3a967726174696f6e20617665632057616c6c61626167202846726573685253532c204c6565642065742054696e792054696e792052535320706f7572206c657320616772c3a96761746575727320646520666c7578292e204ce2809941504920717569207365726120646973706f6e69626c652064616e73206c612070726f636861696e652076657273696f6e2064652057616c6c61626167207065726d657474726120656e636f726520706c75732064e28099696e74657261637469766974c3a92e3c2f703e0a3c703e3c656d3e5920612d742d696c20756e206d6f6465206465206c65637475726520686f7273206c69676e65206f75206573742d6365207175652063e28099657374207072c3a9767520706f7572206c65732070726f636861696e65732076657273696f6e73c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e496c2079206120756e2070736575646f206d6f646520686f7273206c69676e652c20646973706f6e69626c652061766563206ce280996170706c69636174696f6e20416e64726f69642e204f6e20706575742072c3a9637570c3a9726572202876696120756e20666c75782052535329206c65732061727469636c6573206e6f6e206c757320717565206ce280996f6e206120736175766567617264c3a9732e20556e6520666f69732064c3a9636f6e6e656374c3a92c206f6e207065757420636f6e74696e75657220c3a0206c6972652073757220736f6e20736d61727470686f6e65206f75207361207461626c65747465206c65732061727469636c65732e2050617220636f6e7472652c20696c206d616e7175652064657320666f6e6374696f6e6e616c6974c3a973c2a03a207175616e64207475206d61727175657320756e2061727469636c6520636f6d6d65206c752c206365206ee28099657374207061732073796e6368726f6e6973c3a92061766563206c612076657273696f6e207765622064652057616c6c616261672e204ae28099657370c3a8726520717565206a652073756973207072657371756520636c6169722064616e73206d6573206578706c69636174696f6e732e3c2f703e0a3c703e506f7572206c612076322c20717569206573742064c3a96ac3a020656e20636f7572732064652064c3a976656c6f7070656d656e742c206fc3b9206a652073756973206269656e20616964c3a9207061722056696e63656e74204a6f757373652c206f6e2061757261206c6120706f73736962696c6974c3a92064e2809961766f697220756e2076726169206d6f646520686f7273206c69676e652e3c2f703e0a3c703e3c656d3e416c6f7273207369206f6e2076657574206169646572202f2070617274696369706572202f20747269666f75696c6c6572206c6520636f6465202f20766f757320656e766f79657220646573207265746f7572732c206f6e206661697420636f6d6d656e74c2a03f3c6272202f3e3c2f656d3e3c2f703e0a3c703e4f6e207065757420616964657220646520706c75736965757273206661c3a76f6e73c2a03a3c2f703e0a3c756c3e3c6c693e7574696c697365722077616c6c61626167206574206e6f75732072656d6f6e746572206c65732070726f626cc3a86d65732072656e636f6e7472c3a973c2a03b3c2f6c693e0a3c6c693e706172746963697065722061752064c3a976656c6f7070656d656e74206465206ce280996170706c69636174696f6e2068747470733a2f2f6769746875622e636f6d2f77616c6c616261672f77616c6c616261672053692053696c6578202f2053796d666f6e7932202f2048544d4c35202f206574632e207465207061726c656e742c206ee2809968c3a97369746520706173c2a0213c2f6c693e0a3c6c693e636f6d6d6520746f75742070726f6a65742c206c652067726f7320706f696e74206e6f697220657374206c65206d616e71756520646520646f63756d656e746174696f6e2e203c6120687265663d22687474703a2f2f646f632e77616c6c616261672e6f7267223e456c6c652065737420646973706f206963693c2f613e206d61697320696c206d616e71756520706c65696e2064652063686f73657320657420746f7574206ee280996573742070617320c3a0206a6f7572c2a03b3c2f6c693e0a3c6c693e7061726c65722064652057616c6c61626167206175746f757220646520766f7573c2a03b3c2f6c693e0a3c6c693e696c20657869737465203c6120687265663d2268747470733a2f2f666c617474722e636f6d2f7468696e672f313236353438302f706f6368652d612d726561642d69742d6c617465722d6f70656e2d736f757263652d73797374656d223e756e20636f6d70746520466c617474723c2f613e2e3c2f6c693e0a3c2f756c3e3c703e3c656d3e4c65206d6f74206465206c612066696ee280a63f3c6272202f3e3c2f656d3e3c2f703e0a3c703e4d6572636920c3a0204672616d61736f66742064e280996163637565696c6c697220657420646520736f7574656e69722057616c6c61626167c2a0213c2f703e0a3c703e4c6120726f7574652065737420656e636f7265206269656e206c6f6e67756520706f7572206e6520706c7573207574696c6973657220646520736f6c7574696f6e732070726f707269c3a97461697265732c206d616973206f6e2064657672616974207920617272697665722c206e6f6ec2a03f3c2f703e0a3c703e3c696d67207372633d22687474703a2f2f7777772e6672616d61626c6f672e6f72672f7075626c69632f5f696d672f6672616d61626c6f672f706c65696e4c6573506f636865732e706e672220616c743d226672616d61736f667420706c65696e206c657320706f636865732220636c6173733d22633122207469746c653d226672616d61736f667420706c65696e206c657320706f6368657322202f3e3c6272202f3e3c6120687265663d22687474703a2f2f6672616d616c61622e6f72672f676b6e642d63726561746f722f223e6861636b657a2047c3a967c3a9c2a0213c2f613e3c2f703e0a', 'hex'), 'UTF8'), 1),
133('wallabag/wallabag', 'https://github.com/wallabag/wallabag', false, false, convert_from(decode('3c7370616e20636c6173733d226e616d65223e524541444d452e6d643c2f7370616e3e3c703e77616c6c6162616720697320612073656c6620686f737461626c65206170706c69636174696f6e20616c6c6f77696e6720796f7520746f206e6f74206d69737320616e7920636f6e74656e7420616e796d6f72652e20436c69636b2c20736176652c2072656164206974207768656e20796f752063616e2e20497420657874726163747320636f6e74656e7420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c703e4d6f726520696e666f726d6174696f6e73206f6e206f757220776562736974653a203c6120687265663d22687474703a2f2f77616c6c616261672e6f7267223e77616c6c616261672e6f72673c2f613e3c2f703e0a3c68323e3c6120636c6173733d22616e63686f722220687265663d2268747470733a2f2f6769746875622e636f6d2f77616c6c616261672f77616c6c61626167236c6963656e7365223e3c2f613e4c6963656e73653c2f68323e0a3c703e436f7079726967687420c2a920323031302d32303134204e69636f6c6173204cc59375696c6c6574203c6120687265663d226d61696c746f3a6e69636f6c6173406c6f6575696c6c65742e6f7267223e6e69636f6c6173406c6f6575696c6c65742e6f72673c2f613e205468697320776f726b20697320667265652e20596f752063616e2072656469737472696275746520697420616e642f6f72206d6f6469667920697420756e64657220746865207465726d73206f662074686520446f205768617420546865204675636b20596f752057616e7420546f205075626c6963204c6963656e73652c2056657273696f6e20322c206173207075626c69736865642062792053616d20486f63657661722e205365652074686520434f5059494e472066696c6520666f72206d6f72652064657461696c732e3c2f703e0a', 'hex'), 'UTF8'), 1),
134('a self hostable application for saving web pages | wallabag', 'https://www.wallabag.org/', false, true, convert_from(decode('3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e77616c6c616261672028666f726d65726c7920706f636865292069732061203c7374726f6e673e73656c6620686f737461626c65206170706c69636174696f6e20666f7220736176696e67207765622070616765733c2f7374726f6e673e2e20556e6c696b65206f746865722073657276696365732cc2a077616c6c6162616720697320667265652028617320696e2066726565646f6d2920616e64206f70656e20736f757263652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3820636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c703e576974682074686973206170706c69636174696f6e20796f752077696c6c206e6f74206d69737320636f6e74656e7420616e796d6f72652e203c7374726f6e673e436c69636b2c20736176652c2072656164206974207768656e20796f752077616e743c2f7374726f6e673e2e2049742073617665732074686520636f6e74656e7420796f752073656c65637420736f207468617420796f752063616e2072656164206974207768656e20796f7520686176652074696d652e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a3c64697620636c6173733d22726f77223e0a3c64697620636c6173733d22636f6c2d6c672d3620636f6c2d6d642d313220636f6c2d78732d313220636f6c2d736d2d3132223e0a3c68323e486f7720697420776f726b733c2f68323e0a3c703e5468616e6b7320746f2074686520626f6f6b6d61726b6c6574206f72203c61207469746c653d22446f776e6c6f6164732220687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f646f776e6c6f6164732f223e74686972642d7061727479206170706c69636174696f6e733c2f613e2c20796f75207361766520616e2061727469636c6520696e20796f7572c2a077616c6c6162616720746f2072656164206974206c617465722e205468656e2c207768656e20796f75206f70656e20796f75722077616c6c616261672c203c7374726f6e673e796f752063616e20636f6d666f727461626c79207265616420796f75722061727469636c65733c2f7374726f6e673e2e3c2f703e0a3c68323e486f7720746f207573652077616c6c616261673c2f68323e0a3c703e5468657265206172652074776f207761797320746f207573652077616c6c616261673a20796f752063616e203c6120687265663d22687474703a2f2f7777772e77616c6c616261672e6f72672f6672657175656e746c792d61736b65642d7175657374696f6e732f23486f775f63616e5f495f696e7374616c6c5f77616c6c616261675f616e645f776861745f6172655f7468655f726571756972656d656e7473223e696e7374616c6c2069743c2f613ec2a06f6e20796f75722077656220736572766572206f7220796f752063616ec2a03c6120687265663d22687474703a2f2f6170702e696e746865706f6368652e636f6d223e63726561746520616e206163636f756e743c2f613ec2a06174204672616d616261672028776520696e7374616c6c20616e642075706772616465c2a077616c6c6162616720666f7220796f75292e3c2f703e0a3c2f6469763e0a0a3c2f6469763e0a', 'hex'), 'UTF8'), 1)";
135 $moreQueries[] = "INSERT INTO tags (value) VALUES ('opensource')";
136 $moreQueries[] = "INSERT INTO tags_entries (entry_id, tag_id) VALUES (2, 1)";
120 137
121 $sql_structure = file_get_contents('install/postgres.sql'); 138 $sql_structure = file_get_contents('install/postgres.sql');
122 } 139 }
@@ -140,17 +157,19 @@ else if (isset($_POST['install'])) {
140 } 157 }
141 } 158 }
142 159
143 // create database structure 160 if ($_POST['db_engine'] != "sqlite") {
144 $query = executeQuery($handle, $sql_structure, array()); 161 // create database structure
162 $query = $handle->exec($sql_structure);
163 }
145 164
146 // Create user 165 // Create user
147 $handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 166 $handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
148 167
149 $sql = 'INSERT INTO users (username, password, name) VALUES (?, ?, ?)'; 168 $sql = "INSERT INTO users (username, password, name, email) VALUES (?, ?, ?, '')";
150 $params = array($username, $salted_password, $username); 169 $params = array($username, $salted_password, $username);
151 $query = executeQuery($handle, $sql, $params); 170 $query = executeQuery($handle, $sql, $params);
152 171
153 $id_user = $handle->lastInsertId(); 172 $id_user = (int)$handle->lastInsertId('users_id_seq');
154 173
155 $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; 174 $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)';
156 $params = array($id_user, 'pager', '10'); 175 $params = array($id_user, 'pager', '10');
@@ -160,6 +179,10 @@ else if (isset($_POST['install'])) {
160 $params = array($id_user, 'language', 'en_EN.UTF8'); 179 $params = array($id_user, 'language', 'en_EN.UTF8');
161 $query = executeQuery($handle, $sql, $params); 180 $query = executeQuery($handle, $sql, $params);
162 181
182 foreach ($moreQueries as $query) {
183 executeQuery($handle, $query, array());
184 }
185
163 $successes[] = 'wallabag is now installed. You can now <a href="index.php?clean=0">access it !</a>'; 186 $successes[] = 'wallabag is now installed. You can now <a href="index.php?clean=0">access it !</a>';
164 } 187 }
165 } 188 }
@@ -235,7 +258,7 @@ else if (isset($_POST['install'])) {
235 <?php endif; ?> 258 <?php endif; ?>
236 <?php endif; ?> 259 <?php endif; ?>
237 <p>To install wallabag, you just have to fill the following fields. That's all.</p> 260 <p>To install wallabag, you just have to fill the following fields. That's all.</p>
238 <p>Don't forget to check your server compatibility <a href="wallabag_compatibility_test.php?from=install">here</a>.</p> 261 <p>Don't forget to check your server compatibility <a href="install/wallabag_compatibility_test.php?from=install">here</a>.</p>
239 <form method="post"> 262 <form method="post">
240 <fieldset> 263 <fieldset>
241 <legend><strong>Technical settings</strong></legend> 264 <legend><strong>Technical settings</strong></legend>
@@ -267,7 +290,7 @@ php composer.phar install</code></pre></li>
267 <li><label for="mysql_server">Server</label> <input type="text" placeholder="localhost" id="mysql_server" name="mysql_server" /></li> 290 <li><label for="mysql_server">Server</label> <input type="text" placeholder="localhost" id="mysql_server" name="mysql_server" /></li>
268 <li><label for="mysql_database">Database</label> <input type="text" placeholder="wallabag" id="mysql_database" name="mysql_database" /></li> 291 <li><label for="mysql_database">Database</label> <input type="text" placeholder="wallabag" id="mysql_database" name="mysql_database" /></li>
269 <li><label for="mysql_user">User</label> <input type="text" placeholder="user" id="mysql_user" name="mysql_user" /></li> 292 <li><label for="mysql_user">User</label> <input type="text" placeholder="user" id="mysql_user" name="mysql_user" /></li>
270 <li><label for="mysql_password">Password</label> <input type="text" placeholder="p4ssw0rd" id="mysql_password" name="mysql_password" /></li> 293 <li><label for="mysql_password">Password</label> <input type="password" placeholder="p4ssw0rd" id="mysql_password" name="mysql_password" /></li>
271 </ul> 294 </ul>
272 </li> 295 </li>
273 <li> 296 <li>
@@ -276,7 +299,7 @@ php composer.phar install</code></pre></li>
276 <li><label for="pg_server">Server</label> <input type="text" placeholder="localhost" id="pg_server" name="pg_server" /></li> 299 <li><label for="pg_server">Server</label> <input type="text" placeholder="localhost" id="pg_server" name="pg_server" /></li>
277 <li><label for="pg_database">Database</label> <input type="text" placeholder="wallabag" id="pg_database" name="pg_database" /></li> 300 <li><label for="pg_database">Database</label> <input type="text" placeholder="wallabag" id="pg_database" name="pg_database" /></li>
278 <li><label for="pg_user">User</label> <input type="text" placeholder="user" id="pg_user" name="pg_user" /></li> 301 <li><label for="pg_user">User</label> <input type="text" placeholder="user" id="pg_user" name="pg_user" /></li>
279 <li><label for="pg_password">Password</label> <input type="text" placeholder="p4ssw0rd" id="pg_password" name="pg_password" /></li> 302 <li><label for="pg_password">Password</label> <input type="password" placeholder="p4ssw0rd" id="pg_password" name="pg_password" /></li>
280 </ul> 303 </ul>
281 </li> 304 </li>
282 </ul> 305 </ul>
@@ -292,9 +315,11 @@ php composer.phar install</code></pre></li>
292 <p> 315 <p>
293 <label for="password">Password</label> 316 <label for="password">Password</label>
294 <input type="password" required id="password" name="password" value="wallabag" /> 317 <input type="password" required id="password" name="password" value="wallabag" />
318 <label for="show">Show password:</label> <input style="margin-left:-80px;" name="show" id="show" type="checkbox" onchange="document.getElementById('password').type = this.checked ? 'text' : 'password'">
295 </p> 319 </p>
296 <p> 320 <p>
297 <label for="show">Show password:</label> <input name="show" id="show" type="checkbox" onchange="document.getElementById('password').type = this.checked ? 'text' : 'password'"> 321 <label for="email">Email (not required)</label>
322 <input type="email" id="email" name="email" />
298 </p> 323 </p>
299 </fieldset> 324 </fieldset>
300 325
diff --git a/install/mysql.sql b/install/mysql.sql
index de5640e4..1b65cd35 100644
--- a/install/mysql.sql
+++ b/install/mysql.sql
@@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS `config` (
3 `name` varchar(255) NOT NULL, 3 `name` varchar(255) NOT NULL,
4 `value` varchar(255) NOT NULL, 4 `value` varchar(255) NOT NULL,
5 PRIMARY KEY (`id`) 5 PRIMARY KEY (`id`)
6) ENGINE=InnoDB DEFAULT CHARSET=utf8; 6) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
7 7
8CREATE TABLE IF NOT EXISTS `entries` ( 8CREATE TABLE IF NOT EXISTS `entries` (
9 `id` int(11) NOT NULL AUTO_INCREMENT, 9 `id` int(11) NOT NULL AUTO_INCREMENT,
@@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS `entries` (
14 `content` blob NOT NULL, 14 `content` blob NOT NULL,
15 `user_id` int(11) NOT NULL, 15 `user_id` int(11) NOT NULL,
16 PRIMARY KEY (`id`) 16 PRIMARY KEY (`id`)
17) ENGINE=InnoDB DEFAULT CHARSET=utf8; 17) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
18 18
19CREATE TABLE IF NOT EXISTS `users` ( 19CREATE TABLE IF NOT EXISTS `users` (
20 `id` int(11) NOT NULL AUTO_INCREMENT, 20 `id` int(11) NOT NULL AUTO_INCREMENT,
@@ -23,7 +23,7 @@ CREATE TABLE IF NOT EXISTS `users` (
23 `name` varchar(255) NOT NULL, 23 `name` varchar(255) NOT NULL,
24 `email` varchar(255) NOT NULL, 24 `email` varchar(255) NOT NULL,
25 PRIMARY KEY (`id`) 25 PRIMARY KEY (`id`)
26) ENGINE=InnoDB DEFAULT CHARSET=utf8; 26) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
27 27
28CREATE TABLE IF NOT EXISTS `users_config` ( 28CREATE TABLE IF NOT EXISTS `users_config` (
29 `id` int(11) NOT NULL AUTO_INCREMENT, 29 `id` int(11) NOT NULL AUTO_INCREMENT,
@@ -31,13 +31,13 @@ CREATE TABLE IF NOT EXISTS `users_config` (
31 `name` varchar(255) NOT NULL, 31 `name` varchar(255) NOT NULL,
32 `value` varchar(255) NOT NULL, 32 `value` varchar(255) NOT NULL,
33 PRIMARY KEY (`id`) 33 PRIMARY KEY (`id`)
34) ENGINE=InnoDB DEFAULT CHARSET=utf8; 34) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
35 35
36CREATE TABLE IF NOT EXISTS `tags` ( 36CREATE TABLE IF NOT EXISTS `tags` (
37 `id` int(11) NOT NULL AUTO_INCREMENT, 37 `id` int(11) NOT NULL AUTO_INCREMENT,
38 `value` varchar(255) NOT NULL, 38 `value` varchar(255) NOT NULL,
39 PRIMARY KEY (`id`) 39 PRIMARY KEY (`id`)
40) ENGINE=InnoDB DEFAULT CHARSET=utf8; 40) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
41 41
42CREATE TABLE IF NOT EXISTS `tags_entries` ( 42CREATE TABLE IF NOT EXISTS `tags_entries` (
43 `id` int(11) NOT NULL AUTO_INCREMENT, 43 `id` int(11) NOT NULL AUTO_INCREMENT,
@@ -46,4 +46,4 @@ CREATE TABLE IF NOT EXISTS `tags_entries` (
46 FOREIGN KEY(entry_id) REFERENCES entries(id) ON DELETE CASCADE, 46 FOREIGN KEY(entry_id) REFERENCES entries(id) ON DELETE CASCADE,
47 FOREIGN KEY(tag_id) REFERENCES tags(id) ON DELETE CASCADE, 47 FOREIGN KEY(tag_id) REFERENCES tags(id) ON DELETE CASCADE,
48 PRIMARY KEY (`id`) 48 PRIMARY KEY (`id`)
49) ENGINE=InnoDB DEFAULT CHARSET=utf8; 49) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
diff --git a/wallabag_compatibility_test.php b/install/wallabag_compatibility_test.php
index da078623..61a8e99f 100644
--- a/wallabag_compatibility_test.php
+++ b/install/wallabag_compatibility_test.php
@@ -14,6 +14,7 @@ $php_ok = (function_exists('version_compare') && version_compare(phpversion(), '
14$pcre_ok = extension_loaded('pcre'); 14$pcre_ok = extension_loaded('pcre');
15$zlib_ok = extension_loaded('zlib'); 15$zlib_ok = extension_loaded('zlib');
16$mbstring_ok = extension_loaded('mbstring'); 16$mbstring_ok = extension_loaded('mbstring');
17$dom_ok = extension_loaded('DOM');
17$iconv_ok = extension_loaded('iconv'); 18$iconv_ok = extension_loaded('iconv');
18$tidy_ok = function_exists('tidy_parse_string'); 19$tidy_ok = function_exists('tidy_parse_string');
19$curl_ok = function_exists('curl_exec'); 20$curl_ok = function_exists('curl_exec');
@@ -22,6 +23,8 @@ $parallel_ok = ((extension_loaded('http') && class_exists('HttpRequestPool')) ||
22$allow_url_fopen_ok = (bool)ini_get('allow_url_fopen'); 23$allow_url_fopen_ok = (bool)ini_get('allow_url_fopen');
23$filter_ok = extension_loaded('filter'); 24$filter_ok = extension_loaded('filter');
24$gettext_ok = function_exists("gettext"); 25$gettext_ok = function_exists("gettext");
26$gd_ok = extension_loaded('gd');
27
25 28
26if (extension_loaded('xmlreader')) { 29if (extension_loaded('xmlreader')) {
27 $xml_ok = true; 30 $xml_ok = true;
@@ -232,10 +235,20 @@ if (isset($_GET['from'])){
232 <td>Enabled</td> 235 <td>Enabled</td>
233 <?php echo ($iconv_ok) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td> 236 <?php echo ($iconv_ok) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
234 </tr> --> 237 </tr> -->
238 <tr class="<?php echo ($dom_ok) ? 'enabled' : 'disabled'; ?>">
239 <td><a href="http://php.net/manual/en/book.dom.php">DOM / XML extension</a></td>
240 <td>Enabled</td>
241 <?php echo ($dom_ok) ? '<td class="good">Enabled' : '<td class="bad">Disabled'; ?></td>
242 </tr>
235 <tr class="<?php echo ($filter_ok) ? 'enabled' : 'disabled'; ?>"> 243 <tr class="<?php echo ($filter_ok) ? 'enabled' : 'disabled'; ?>">
236 <td><a href="http://uk.php.net/manual/en/book.filter.php">Data filtering</a></td> 244 <td><a href="http://uk.php.net/manual/en/book.filter.php">Data filtering</a></td>
237 <td>Enabled</td> 245 <td>Enabled</td>
238 <?php echo ($filter_ok) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td> 246 <?php echo ($filter_ok) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td>
247 </tr>
248 <tr class="<?php echo ($gd_ok) ? 'enabled' : 'disabled'; ?>">
249 <td><a href="http://php.net/manual/en/book.image.php">GD</a></td>
250 <td>Enabled</td>
251 <?php echo ($gd_ok) ? '<td class="good">Enabled' : '<td class="pass">Disabled'; ?></td>
239 </tr> 252 </tr>
240 <tr class="<?php echo ($tidy_ok) ? 'enabled' : 'disabled'; ?>"> 253 <tr class="<?php echo ($tidy_ok) ? 'enabled' : 'disabled'; ?>">
241 <td><a href="http://php.net/tidy">Tidy</a></td> 254 <td><a href="http://php.net/tidy">Tidy</a></td>
@@ -275,7 +288,7 @@ if (isset($_GET['from'])){
275 <h3>What does this mean?</h3> 288 <h3>What does this mean?</h3>
276 <ol> 289 <ol>
277 <?php //if ($php_ok && $xml_ok && $pcre_ok && $mbstring_ok && $iconv_ok && $filter_ok && $zlib_ok && $tidy_ok && $curl_ok && $parallel_ok && $allow_url_fopen_ok): ?> 290 <?php //if ($php_ok && $xml_ok && $pcre_ok && $mbstring_ok && $iconv_ok && $filter_ok && $zlib_ok && $tidy_ok && $curl_ok && $parallel_ok && $allow_url_fopen_ok): ?>
278 <?php if ($php_ok && $xml_ok && $pcre_ok && $filter_ok && $tidy_ok && $curl_ok && $parallel_ok && $allow_url_fopen_ok && $gettext_ok && $parse_ini_ok): ?> 291 <?php if ($php_ok && $xml_ok && $pcre_ok && $dom_ok && $filter_ok && $gd_ok && $tidy_ok && $curl_ok && $parallel_ok && $allow_url_fopen_ok && $gettext_ok && $parse_ini_ok): ?>
279 <li><em>You have everything you need to run <?php echo $app_name; ?> properly! Congratulations!</em></li> 292 <li><em>You have everything you need to run <?php echo $app_name; ?> properly! Congratulations!</em></li>
280 <?php else: ?> 293 <?php else: ?>
281 <?php if ($php_ok): ?> 294 <?php if ($php_ok): ?>
@@ -292,48 +305,62 @@ if (isset($_GET['from'])){
292 <li><strong>Gettext:</strong> You have <code>gettext</code> enabled. <em>No problems here.</em></li> 305 <li><strong>Gettext:</strong> You have <code>gettext</code> enabled. <em>No problems here.</em></li>
293 306
294 <?php if ($parse_ini_ok): ?> 307 <?php if ($parse_ini_ok): ?>
308 <li><strong>Parse ini:</strong> You can parse <em>ini</em> files. <em>No problems here.</em></li>
309
310 <?php if ($dom_ok): ?>
311 <li><strong>DOM/XML:</strong> You can parse <em>ini</em> files. <em>No problems here.</em></li>
295 312
296 <?php if ($filter_ok): ?> 313 <?php if ($filter_ok): ?>
297 <li><strong>Data filtering:</strong> You have the PHP filter extension enabled. <em>No problems here.</em></li> 314 <li><strong>Data filtering:</strong> You can use the PHP build-in DOM to operate on XML documents. <em>No problems here.</em></li>
298 315
299 <?php if ($zlib_ok): ?> 316 <?php if ($zlib_ok): ?>
300 <li><strong>Zlib:</strong> You have <code>Zlib</code> enabled. This allows SimplePie to support GZIP-encoded feeds. <em>No problems here.</em></li> 317 <li><strong>Zlib:</strong> You have <code>Zlib</code> enabled. This allows SimplePie to support GZIP-encoded feeds. <em>No problems here.</em></li>
301 <?php else: ?> 318 <?php else: ?>
302 <li><strong>Zlib:</strong> The <code>Zlib</code> extension is not available. SimplePie will ignore any GZIP-encoding, and instead handle feeds as uncompressed text.</li> 319 <li><strong>Zlib:</strong> The <code>Zlib</code> extension is not available. SimplePie will ignore any GZIP-encoding, and instead handle feeds as uncompressed text.</li>
303 <?php endif; ?> 320 <?php endif; ?>
304 321
305 <?php if ($mbstring_ok && $iconv_ok): ?> 322 <?php if ($mbstring_ok && $iconv_ok): ?>
306 <li><strong>mbstring and iconv:</strong> You have both <code>mbstring</code> and <code>iconv</code> installed! This will allow <?php echo $app_name; ?> to handle the greatest number of languages. <em>No problems here.</em></li> 323 <li><strong>mbstring and iconv:</strong> You have both <code>mbstring</code> and <code>iconv</code> installed! This will allow <?php echo $app_name; ?> to handle the greatest number of languages. <em>No problems here.</em></li>
307 <?php elseif ($mbstring_ok): ?> 324 <?php elseif ($mbstring_ok): ?>
308 <li><strong>mbstring:</strong> <code>mbstring</code> is installed, but <code>iconv</code> is not.</li> 325 <li><strong>mbstring:</strong> <code>mbstring</code> is installed, but <code>iconv</code> is not.</li>
309 <?php elseif ($iconv_ok): ?> 326 <?php elseif ($iconv_ok): ?>
310 <li><strong>iconv:</strong> <code>iconv</code> is installed, but <code>mbstring</code> is not.</li> 327 <li><strong>iconv:</strong> <code>iconv</code> is installed, but <code>mbstring</code> is not.</li>
311 <?php else: ?> 328 <?php else: ?>
312 <li><strong>mbstring and iconv:</strong> <em>You do not have either of the extensions installed.</em> This will significantly impair your ability to read non-English feeds, as well as even some English ones.</li> 329 <li><strong>mbstring and iconv:</strong> <em>You do not have either of the extensions installed.</em> This will significantly impair your ability to read non-English feeds, as well as even some English ones.</li>
313 <?php endif; ?> 330 <?php endif; ?>
314 331
315 <?php if ($tidy_ok): ?> 332 <?php if ($gd_ok): ?>
316 <li><strong>Tidy:</strong> You have <code>Tidy</code> support installed. <em>No problems here.</em></li> 333 <li><strong>GD:</strong> You have <code>GD</code> support installed. <em>No problems here.</em></li>
317 <?php else: ?> 334 <?php else: ?>
318 <li><strong>Tidy:</strong> The <code>Tidy</code> extension is not available. <?php echo $app_name; ?> should still work with most feeds, but you may experience problems with some.</li> 335 <li><strong>GD:</strong> The <code>GD</code> extension is not available. <?php echo $app_name; ?> will not be able to download pictures locally on your server.</li>
319 <?php endif; ?> 336 <?php endif; ?>
320 337
321 <?php if ($curl_ok): ?> 338 <?php if ($tidy_ok): ?>
322 <li><strong>cURL:</strong> You have <code>cURL</code> support installed. <em>No problems here.</em></li> 339 <li><strong>Tidy:</strong> You have <code>Tidy</code> support installed. <em>No problems here.</em></li>
323 <?php else: ?> 340 <?php else: ?>
324 <li><strong>cURL:</strong> The <code>cURL</code> extension is not available. SimplePie will use <code>fsockopen()</code> instead.</li> 341 <li><strong>Tidy:</strong> The <code>Tidy</code> extension is not available. <?php echo $app_name; ?> should still work with most feeds, but you may experience problems with some. You can install it with <code>sudo apt-get install php5-tidy</code> and then reload Apache <code>sudo service apache2 reload</code>.</li>
325 <?php endif; ?> 342 <?php endif; ?>
326 343
327 <?php if ($parallel_ok): ?> 344 <?php if ($curl_ok): ?>
328 <li><strong>Parallel URL fetching:</strong> You have <code>HttpRequestPool</code> or <code>curl_multi</code> support installed. <em>No problems here.</em></li> 345 <li><strong>cURL:</strong> You have <code>cURL</code> support installed. <em>No problems here.</em></li>
329 <?php else: ?> 346 <?php else: ?>
330 <li><strong>Parallel URL fetching:</strong> <code>HttpRequestPool</code> or <code>curl_multi</code> support is not available. <?php echo $app_name; ?> will use <code>file_get_contents()</code> instead to fetch URLs sequentially rather than in parallel.</li> 347 <li><strong>cURL:</strong> The <code>cURL</code> extension is not available. SimplePie will use <code>fsockopen()</code> instead.</li>
331 <?php endif; ?> 348 <?php endif; ?>
332 349
333 <?php else: ?> 350 <?php if ($parallel_ok): ?>
334 <li><strong>Data filtering:</strong> Your PHP configuration has the filter extension disabled. <strong><?php echo $app_name; ?> will not work here.</strong></li> 351 <li><strong>Parallel URL fetching:</strong> You have <code>HttpRequestPool</code> or <code>curl_multi</code> support installed. <em>No problems here.</em></li>
335 <?php endif; ?> 352 <?php else: ?>
336 353 <li><strong>Parallel URL fetching:</strong> <code>HttpRequestPool</code> or <code>curl_multi</code> support is not available. <?php echo $app_name; ?> will use <code>file_get_contents()</code> instead to fetch URLs sequentially rather than in parallel.</li>
354 <?php endif; ?>
355
356 <?php else: ?>
357 <li><strong>Data filtering:</strong> Your PHP configuration has the filter extension disabled. <strong><?php echo $app_name; ?> will not work here.</strong></li>
358 <?php endif; ?>
359
360 <?php else: ?>
361 <li><strong>DOM/XML:</strong> Your PHP configuration isn't standard, you're missing PHP-DOM. You may try to install a package or recompile PHP. <strong><?php echo $app_name; ?> will not work here.</strong></li>
362 <?php endif; ?>
363
337 <?php else : ?> 364 <?php else : ?>
338 <li><strong>Parse ini files function :</strong> Bad luck : your webhost has decided to block the use of the <em>parse_ini_file</em> function. <strong><?php echo $app_name; ?> will not work here.</strong> 365 <li><strong>Parse ini files function :</strong> Bad luck : your webhost has decided to block the use of the <em>parse_ini_file</em> function. <strong><?php echo $app_name; ?> will not work here.</strong>
339 <?php endif; ?> 366 <?php endif; ?>
@@ -368,7 +395,7 @@ if (isset($_GET['from'])){
368 <p>You can download the latest version of <?php echo $app_name; ?> from <a href="http://wallabag.org/download">wallabag.org</a>.</p> 395 <p>You can download the latest version of <?php echo $app_name; ?> from <a href="http://wallabag.org/download">wallabag.org</a>.</p>
369 <p>If you already have done that, you should access <a href="index.php">the index.php file</a> of your installation to configure and/or start using wallabag</p> 396 <p>If you already have done that, you should access <a href="index.php">the index.php file</a> of your installation to configure and/or start using wallabag</p>
370 <?php } else { ?> 397 <?php } else { ?>
371 <p>You can now <a href="index.php">return to the installation section</a>.</p> 398 <p>You can now <a href="../index.php">return to the installation section</a>.</p>
372 <?php } ?> 399 <?php } ?>
373 <p><strong>Note</strong>: Passing this test does not guarantee that <?php echo $app_name; ?> will run on your webhost &mdash; it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.</p> 400 <p><strong>Note</strong>: Passing this test does not guarantee that <?php echo $app_name; ?> will run on your webhost &mdash; it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.</p>
374 <?php //} else if ($php_ok && $xml_ok && $pcre_ok && $mbstring_ok && $allow_url_fopen_ok && $filter_ok) { ?> 401 <?php //} else if ($php_ok && $xml_ok && $pcre_ok && $mbstring_ok && $allow_url_fopen_ok && $filter_ok) { ?>
@@ -379,7 +406,7 @@ if (isset($_GET['from'])){
379 <p>You can download the latest version of <?php echo $app_name; ?> from <a href="http://wallabag.org/download">wallabag.org</a>.</p> 406 <p>You can download the latest version of <?php echo $app_name; ?> from <a href="http://wallabag.org/download">wallabag.org</a>.</p>
380 <p>If you already have done that, you should access <a href="index.php">the index.php file</a> of your installation to configure and/or start using wallabag</p> 407 <p>If you already have done that, you should access <a href="index.php">the index.php file</a> of your installation to configure and/or start using wallabag</p>
381 <?php } else { ?> 408 <?php } else { ?>
382 <p>You can now <a href="index.php">return to the installation section</a>.</p> 409 <p>You can now <a href="../index.php">return to the installation section</a>.</p>
383 <?php } ?> 410 <?php } ?>
384 <p><strong>Note</strong>: Passing this test does not guarantee that <?php echo $app_name; ?> will run on your webhost &mdash; it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.</p> 411 <p><strong>Note</strong>: Passing this test does not guarantee that <?php echo $app_name; ?> will run on your webhost &mdash; it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.</p>
385 <?php } else { ?> 412 <?php } else { ?>
@@ -397,4 +424,4 @@ if (isset($_GET['from'])){
397</div> 424</div>
398 425
399</body> 426</body>
400</html> \ No newline at end of file 427</html>
diff --git a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo
index ff09d676..c9105ee6 100644
--- a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo
+++ b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo
Binary files differ
diff --git a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po
index 9761d6c8..81f87342 100644
--- a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po
+++ b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po
@@ -1,28 +1,29 @@
1msgid "" 1msgid ""
2msgstr "" 2msgstr ""
3"Project-Id-Version: wallabag 1.7.2\n" 3"Project-Id-Version: wallabag\n"
4"Report-Msgid-Bugs-To: \n" 4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-07-26 15:17+0300\n" 5"POT-Creation-Date: 2014-07-26 15:17+0300\n"
6"PO-Revision-Date: \n" 6"PO-Revision-Date: \n"
7"Last-Translator: tcit <tcit@tcit.fr>\n" 7"Last-Translator: Thomas Citharel <tcit@openmailbox.org>\n"
8"Language-Team: \n" 8"Language-Team: \n"
9"Language: en\n" 9"Language: en\n"
10"MIME-Version: 1.0\n" 10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n" 11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n" 12"Content-Transfer-Encoding: 8bit\n"
13"X-Generator: Poedit 1.6.4\n" 13"X-Generator: Poedit 1.5.4\n"
14"X-Poedit-Basepath: .\n"
14 15
15msgid "wallabag, a read it later open source system" 16msgid "wallabag, a read it later open source system"
16msgstr "wallabag, a read it later open source system" 17msgstr "wallabag, a read it later open source system"
17 18
18msgid "login failed: user doesn't exist" 19msgid "login failed: user doesn't exist"
19msgstr "login failed: user doesn't exist" 20msgstr "Login failed: user doesn't exist"
20 21
21msgid "return home" 22msgid "return home"
22msgstr "return home" 23msgstr "Return Home"
23 24
24msgid "config" 25msgid "config"
25msgstr "config" 26msgstr "Config"
26 27
27msgid "Saving articles" 28msgid "Saving articles"
28msgstr "Saving articles" 29msgstr "Saving articles"
@@ -31,10 +32,16 @@ msgid "There are several ways to save an article:"
31msgstr "There are several ways to save an article:" 32msgstr "There are several ways to save an article:"
32 33
33msgid "read the documentation" 34msgid "read the documentation"
34msgstr "read the documentation" 35msgstr "Read the documentation"
35 36
36msgid "download the extension" 37msgid "download the extension"
37msgstr "download the extension" 38msgstr "Download the extension"
39
40msgid "Firefox Add-On"
41msgstr "Firefox Add-On"
42
43msgid "Chrome Extension"
44msgstr "Chrome Extension"
38 45
39msgid "via F-Droid" 46msgid "via F-Droid"
40msgstr "via F-Droid" 47msgstr "via F-Droid"
@@ -46,7 +53,7 @@ msgid "via Google Play"
46msgstr "via Google Play" 53msgstr "via Google Play"
47 54
48msgid "download the application" 55msgid "download the application"
49msgstr "download the application" 56msgstr "Download the application"
50 57
51msgid "By filling this field" 58msgid "By filling this field"
52msgstr "By filling this field" 59msgstr "By filling this field"
@@ -55,7 +62,7 @@ msgid "bag it!"
55msgstr "bag it!" 62msgstr "bag it!"
56 63
57msgid "Bookmarklet: drag & drop this link to your bookmarks bar" 64msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
58msgstr "Bookmarklet: drag & drop this link to your bookmarks bar" 65msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar"
59 66
60msgid "Upgrading wallabag" 67msgid "Upgrading wallabag"
61msgstr "Upgrading wallabag" 68msgstr "Upgrading wallabag"
@@ -101,17 +108,15 @@ msgid "Your token:"
101msgstr "Your token:" 108msgstr "Your token:"
102 109
103msgid "Your user id:" 110msgid "Your user id:"
104msgstr "Your user id:" 111msgstr "Your user ID:"
105 112
106msgid "" 113msgid ""
107"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!" 114"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!"
108"</a>." 115"</a>."
109msgstr "" 116msgstr "<a href='?feed&amp;action=generate'>Regenerate Token</a>"
110"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!"
111"</a>."
112 117
113msgid "Change your theme" 118msgid "Change your theme"
114msgstr "Change your theme" 119msgstr "Change Your Theme"
115 120
116msgid "Theme:" 121msgid "Theme:"
117msgstr "Theme:" 122msgstr "Theme:"
@@ -120,13 +125,13 @@ msgid "Update"
120msgstr "Update" 125msgstr "Update"
121 126
122msgid "Change your language" 127msgid "Change your language"
123msgstr "Change your language" 128msgstr "Change Your Language"
124 129
125msgid "Language:" 130msgid "Language:"
126msgstr "Language:" 131msgstr "Language:"
127 132
128msgid "Change your password" 133msgid "Change your password"
129msgstr "Change your password" 134msgstr "Change Your Password"
130 135
131msgid "New password:" 136msgid "New password:"
132msgstr "New password:" 137msgstr "New password:"
@@ -141,6 +146,26 @@ msgid "Import"
141msgstr "Import" 146msgstr "Import"
142 147
143msgid "" 148msgid ""
149"You can import your Pocket, Readability, Instapaper, Wallabag or any data in "
150"appropriate json or html format."
151msgstr ""
152"You can import your Pocket, Readability, Instapaper, wallabag or any fil in "
153"appropriate JSON or HTML format."
154
155msgid ""
156"Please select export file on your computer and press \"Import\" button "
157"below. Wallabag will parse your file, insert all URLs and start fetching of "
158"articles if required."
159msgstr ""
160"Please select export file on your computer and press &ldquo;Import&rdquo; "
161"button below. wallabag will parse your file, insert all URLs and start "
162"fetching of articles if required.Please execute the import script locally as "
163"it can take a very long time."
164
165msgid "You can click here to fetch content for articles with no content."
166msgstr "Fetch content for articles with no content"
167
168msgid ""
144"Please execute the import script locally as it can take a very long time." 169"Please execute the import script locally as it can take a very long time."
145msgstr "" 170msgstr ""
146"Please execute the import script locally as it can take a very long time." 171"Please execute the import script locally as it can take a very long time."
@@ -148,6 +173,13 @@ msgstr ""
148msgid "More info in the official documentation:" 173msgid "More info in the official documentation:"
149msgstr "More info in the official documentation:" 174msgstr "More info in the official documentation:"
150 175
176msgid ""
177"(<a href=\"http://doc.wallabag.org/en/User_documentation/"
178"Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)"
179msgstr ""
180"(<a href=\"http://doc.wallabag.org/en/User_documentation/"
181"Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)"
182
151msgid "Import from Pocket" 183msgid "Import from Pocket"
152msgstr "Import from Pocket" 184msgstr "Import from Pocket"
153 185
@@ -176,17 +208,41 @@ msgstr "to download your database."
176msgid "to export your wallabag data." 208msgid "to export your wallabag data."
177msgstr "to export your wallabag data." 209msgstr "to export your wallabag data."
178 210
211msgid "Export JSON"
212msgstr "Export JSON"
213
179msgid "Cache" 214msgid "Cache"
180msgstr "Cache" 215msgstr "Cache"
181 216
182msgid "to delete cache." 217msgid "to delete cache."
183msgstr "to delete cache." 218msgstr "to delete cache."
184 219
220msgid "Delete Cache"
221msgstr "Delete Cache"
222
185msgid "You can enter multiple tags, separated by commas." 223msgid "You can enter multiple tags, separated by commas."
186msgstr "You can enter multiple tags, separated by commas." 224msgstr "You can enter multiple tags, separated by commas."
187 225
226msgid "Add tags:"
227msgstr "Add tags:"
228
229msgid "no tags"
230msgstr "no tags"
231
232msgid "The tag has been applied successfully"
233msgstr "The tag has been applied successfully"
234
235msgid "interview"
236msgstr "interview"
237
238msgid "editorial"
239msgstr "editorial"
240
241msgid "video"
242msgstr "video"
243
188msgid "return to article" 244msgid "return to article"
189msgstr "return to article" 245msgstr "Return to article"
190 246
191msgid "plop" 247msgid "plop"
192msgstr "plop" 248msgstr "plop"
@@ -199,13 +255,13 @@ msgstr ""
199"here</a>." 255"here</a>."
200 256
201msgid "favoris" 257msgid "favoris"
202msgstr "favoris" 258msgstr "Favorites"
203 259
204msgid "archive" 260msgid "archive"
205msgstr "archive" 261msgstr "Archive"
206 262
207msgid "unread" 263msgid "unread"
208msgstr "unread" 264msgstr "Unread"
209 265
210msgid "by date asc" 266msgid "by date asc"
211msgstr "by date asc" 267msgstr "by date asc"
@@ -235,28 +291,28 @@ msgid "Toggle mark as read"
235msgstr "Toggle mark as read" 291msgstr "Toggle mark as read"
236 292
237msgid "toggle favorite" 293msgid "toggle favorite"
238msgstr "toggle favorite" 294msgstr "Toggle favorite"
239 295
240msgid "delete" 296msgid "delete"
241msgstr "delete" 297msgstr "Delete"
242 298
243msgid "original" 299msgid "original"
244msgstr "original" 300msgstr "Original"
245 301
246msgid "estimated reading time:" 302msgid "estimated reading time:"
247msgstr "estimated reading time:" 303msgstr "Estimated reading time:"
248 304
249msgid "mark all the entries as read" 305msgid "mark all the entries as read"
250msgstr "mark all the entries as read" 306msgstr "Mark all the entries as read"
251 307
252msgid "results" 308msgid "results"
253msgstr "results" 309msgstr "Results"
254 310
255msgid "installation" 311msgid "installation"
256msgstr "installation" 312msgstr "Installation"
257 313
258msgid "install your wallabag" 314msgid "install your wallabag"
259msgstr "install your wallabag" 315msgstr "Install your wallabag"
260 316
261msgid "" 317msgid ""
262"wallabag is still not installed. Please fill the below form to install it. " 318"wallabag is still not installed. Please fill the below form to install it. "
@@ -277,13 +333,13 @@ msgid "Install"
277msgstr "Install" 333msgstr "Install"
278 334
279msgid "login to your wallabag" 335msgid "login to your wallabag"
280msgstr "login to your wallabag" 336msgstr "Login to your wallabag"
281 337
282msgid "Login to wallabag" 338msgid "Login to wallabag"
283msgstr "Login to wallabag" 339msgstr "Login to wallabag"
284 340
285msgid "you are in demo mode, some features may be disabled." 341msgid "you are in demo mode, some features may be disabled."
286msgstr "you are in demo mode, some features may be disabled." 342msgstr "You are in demo mode; some features may be disabled."
287 343
288msgid "Username" 344msgid "Username"
289msgstr "Username" 345msgstr "Username"
@@ -298,10 +354,10 @@ msgid "Sign in"
298msgstr "Sign in" 354msgstr "Sign in"
299 355
300msgid "favorites" 356msgid "favorites"
301msgstr "favorites" 357msgstr "Favorites"
302 358
303msgid "estimated reading time :" 359msgid "estimated reading time :"
304msgstr "estimated reading time :" 360msgstr "Estimated reading time:"
305 361
306msgid "Mark all the entries as read" 362msgid "Mark all the entries as read"
307msgstr "Mark all the entries as read" 363msgstr "Mark all the entries as read"
@@ -343,61 +399,64 @@ msgid "tags:"
343msgstr "tags:" 399msgstr "tags:"
344 400
345msgid "Edit tags" 401msgid "Edit tags"
346msgstr "Edit tags" 402msgstr "Edit Tags"
347 403
348msgid "save link!" 404msgid "save link!"
349msgstr "save link!" 405msgstr "Save Link"
350 406
351msgid "home" 407msgid "home"
352msgstr "home" 408msgstr "Home"
353 409
354msgid "tags" 410msgid "tags"
355msgstr "tags" 411msgstr "Tags"
356 412
357msgid "logout" 413msgid "logout"
358msgstr "logout" 414msgstr "Logout"
359 415
360msgid "powered by" 416msgid "powered by"
361msgstr "powered by" 417msgstr "Powered by"
362 418
363msgid "debug mode is on so cache is off." 419msgid "debug mode is on so cache is off."
364msgstr "debug mode is on so cache is off." 420msgstr "Debug mode is on, so cache is off."
365 421
366msgid "your wallabag version:" 422msgid "your wallabag version:"
367msgstr "your wallabag version:" 423msgstr "Your wallabag version:"
368 424
369msgid "storage:" 425msgid "storage:"
370msgstr "storage:" 426msgstr "Storage:"
371 427
372msgid "save a link" 428msgid "save a link"
373msgstr "save a link" 429msgstr "Save a Link"
374 430
375msgid "back to home" 431msgid "back to home"
376msgstr "back to home" 432msgstr "Back to Home"
377 433
378msgid "toggle mark as read" 434msgid "toggle mark as read"
379msgstr "toggle mark as read" 435msgstr "Toggle mark as read"
380 436
381msgid "tweet" 437msgid "tweet"
382msgstr "tweet" 438msgstr "Tweet"
383 439
384msgid "email" 440msgid "email"
385msgstr "email" 441msgstr "Email"
386 442
387msgid "this article appears wrong?" 443msgid "this article appears wrong?"
388msgstr "this article appears wrong?" 444msgstr "This article appears wrong?"
389 445
390msgid "No link available here!" 446msgid "No link available here!"
391msgstr "No link available here!" 447msgstr "No link available here"
392 448
393msgid "Poching a link" 449msgid "Poching a link"
394msgstr "Poching a link" 450msgstr "bagging a link"
395 451
396msgid "by filling this field" 452msgid "by filling this field"
397msgstr "by filling this field" 453msgstr "by filling this field"
398 454
399msgid "bookmarklet: drag & drop this link to your bookmarks bar" 455msgid "bookmarklet: drag & drop this link to your bookmarks bar"
400msgstr "bookmarklet: drag & drop this link to your bookmarks bar" 456msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar"
457
458msgid "Drag &amp; drop this link to your bookmarks bar:"
459msgstr "Drag &amp; drop this link to your bookmarks bar:"
401 460
402msgid "your version" 461msgid "your version"
403msgstr "your version" 462msgstr "your version"
@@ -406,32 +465,37 @@ msgid "latest stable version"
406msgstr "latest stable version" 465msgstr "latest stable version"
407 466
408msgid "a more recent stable version is available." 467msgid "a more recent stable version is available."
409msgstr "a more recent stable version is available." 468msgstr "A more recent stable version is available."
410 469
411msgid "you are up to date." 470msgid "you are up to date."
412msgstr "you are up to date." 471msgstr "You are up to date."
413 472
414msgid "latest dev version" 473msgid "latest dev version"
415msgstr "latest dev version" 474msgstr "latest dev version"
416 475
417msgid "a more recent development version is available." 476msgid "a more recent development version is available."
418msgstr "a more recent development version is available." 477msgstr "A more recent development version is available."
478
479msgid "You can clear cache to check the latest release."
480msgstr ""
481"You can <a href=\"#cache\">clear the cache</a> to check for the latest "
482"release."
419 483
420msgid "Please execute the import script locally, it can take a very long time." 484msgid "Please execute the import script locally, it can take a very long time."
421msgstr "" 485msgstr ""
422"Please execute the import script locally, it can take a very long time." 486"Please execute the import script locally, it can take a very long time."
423 487
424msgid "More infos in the official doc:" 488msgid "More infos in the official doc:"
425msgstr "More infos in the official doc:" 489msgstr "More information in the official doc:"
426 490
427msgid "import from Pocket" 491msgid "import from Pocket"
428msgstr "import from Pocket" 492msgstr "Import from Pocket"
429 493
430msgid "import from Readability" 494msgid "import from Readability"
431msgstr "import from Readability" 495msgstr "Import from Readability"
432 496
433msgid "import from Instapaper" 497msgid "import from Instapaper"
434msgstr "import from Instapaper" 498msgstr "Import from Instapaper"
435 499
436msgid "Tags" 500msgid "Tags"
437msgstr "Tags" 501msgstr "Tags"
@@ -440,74 +504,74 @@ msgid "Untitled"
440msgstr "Untitled" 504msgstr "Untitled"
441 505
442msgid "the link has been added successfully" 506msgid "the link has been added successfully"
443msgstr "the link has been added successfully" 507msgstr "The link has been added successfully."
444 508
445msgid "error during insertion : the link wasn't added" 509msgid "error during insertion : the link wasn't added"
446msgstr "error during insertion : the link wasn't added" 510msgstr "Error during insertion: the link wasn't added."
447 511
448msgid "the link has been deleted successfully" 512msgid "the link has been deleted successfully"
449msgstr "the link has been deleted successfully" 513msgstr "The link has been deleted successfully."
450 514
451msgid "the link wasn't deleted" 515msgid "the link wasn't deleted"
452msgstr "the link wasn't deleted" 516msgstr "The link wasn't deleted."
453 517
454msgid "Article not found!" 518msgid "Article not found!"
455msgstr "Article not found!" 519msgstr "Article not found."
456 520
457msgid "previous" 521msgid "previous"
458msgstr "previous" 522msgstr "Previous"
459 523
460msgid "next" 524msgid "next"
461msgstr "next" 525msgstr "Next"
462 526
463msgid "in demo mode, you can't update your password" 527msgid "in demo mode, you can't update your password"
464msgstr "in demo mode, you can't update your password" 528msgstr "In demo mode, you can't update your password."
465 529
466msgid "your password has been updated" 530msgid "your password has been updated"
467msgstr "your password has been updated" 531msgstr "Your password has been updated."
468 532
469msgid "" 533msgid ""
470"the two fields have to be filled & the password must be the same in the two " 534"the two fields have to be filled & the password must be the same in the two "
471"fields" 535"fields"
472msgstr "" 536msgstr ""
473"the two fields have to be filled & the password must be the same in the two " 537"les deux champs doivent être remplis et le mot de passe doit être le même "
474"fields" 538"pour les deux champs"
475 539
476msgid "still using the \"" 540msgid "still using the \""
477msgstr "still using the \"" 541msgstr "Still using the \""
478 542
479msgid "that theme does not seem to be installed" 543msgid "that theme does not seem to be installed"
480msgstr "that theme does not seem to be installed" 544msgstr "That theme does not seem to be installed."
481 545
482msgid "you have changed your theme preferences" 546msgid "you have changed your theme preferences"
483msgstr "you have changed your theme preferences" 547msgstr "You have changed your theme preferences."
484 548
485msgid "that language does not seem to be installed" 549msgid "that language does not seem to be installed"
486msgstr "that language does not seem to be installed" 550msgstr "That language does not seem to be installed."
487 551
488msgid "you have changed your language preferences" 552msgid "you have changed your language preferences"
489msgstr "you have changed your language preferences" 553msgstr "You have changed your language preferences."
490 554
491msgid "login failed: you have to fill all fields" 555msgid "login failed: you have to fill all fields"
492msgstr "login failed: you have to fill all fields" 556msgstr "Login failed: you have to fill all fields."
493 557
494msgid "welcome to your wallabag" 558msgid "welcome to your wallabag"
495msgstr "welcome to your wallabag" 559msgstr "Welcome to your wallabag."
496 560
497msgid "login failed: bad login or password" 561msgid "login failed: bad login or password"
498msgstr "login failed: bad login or password" 562msgstr "Login failed: bad login or password."
499 563
500msgid "import from instapaper completed" 564msgid "import from instapaper completed"
501msgstr "import from instapaper completed" 565msgstr "Import from Instapaper completed."
502 566
503msgid "import from pocket completed" 567msgid "import from pocket completed"
504msgstr "import from pocket completed" 568msgstr "Import from Pocket completed."
505 569
506msgid "import from Readability completed. " 570msgid "import from Readability completed. "
507msgstr "import from Readability completed. " 571msgstr "Import from Readability completed."
508 572
509msgid "import from Poche completed. " 573msgid "import from Poche completed. "
510msgstr "import from Poche completed. " 574msgstr "Import from Poche completed. "
511 575
512msgid "Unknown import provider." 576msgid "Unknown import provider."
513msgstr "Unknown import provider." 577msgstr "Unknown import provider."
@@ -519,7 +583,7 @@ msgid "Could not find required \""
519msgstr "Could not find required \"" 583msgstr "Could not find required \""
520 584
521msgid "Uh, there is a problem while generating feeds." 585msgid "Uh, there is a problem while generating feeds."
522msgstr "Uh, there is a problem while generating feeds." 586msgstr "There is a problem generating feeds."
523 587
524msgid "Cache deleted." 588msgid "Cache deleted."
525msgstr "Cache deleted." 589msgstr "Cache deleted."
@@ -527,8 +591,55 @@ msgstr "Cache deleted."
527msgid "Oops, it seems you don't have PHP 5." 591msgid "Oops, it seems you don't have PHP 5."
528msgstr "Oops, it seems you don't have PHP 5." 592msgstr "Oops, it seems you don't have PHP 5."
529 593
594msgid "Add user"
595msgstr "Add User"
596
597msgid "Add a new user :"
598msgstr "Add a new user:"
599
600msgid "Login for new user"
601msgstr "Login for new user:"
602
603msgid "Password for new user"
604msgstr "Password for new user:"
605
606msgid "Email for new user (not required)"
607msgstr "Email for new user (not required):"
608
609msgid "Send"
610msgstr "Send"
611
612msgid "Delete account"
613msgstr "Delete Account"
614
615msgid "You can delete your account by entering your password and validating."
616msgstr "You can delete your account by entering your password and validating."
617
618msgid "Be careful, data will be erased forever (that is a very long time)."
619msgstr "Be careful, data will be erased forever (that is a very long time)."
620
621msgid "Type here your password"
622msgstr "Enter your password"
623
624msgid "You are the only user, you cannot delete your own account."
625msgstr "You are the only user, you cannot delete your own account."
626
627msgid ""
628"To completely remove wallabag, delete the wallabag folder on your web server "
629"(and eventual databases)."
630msgstr ""
631"To completely remove wallabag, delete the wallabag folder on your web server "
632"(and eventual databases)."
633
634msgid "Enter your search here"
635msgstr "Enter your search here"
636
637msgid "Tag these results as"
638msgstr "Tag these results as"
639
640# ebook
530msgid "Fancy an E-Book ?" 641msgid "Fancy an E-Book ?"
531msgstr "Fancy an E-Book ?" 642msgstr "Fancy an E-Book?"
532 643
533msgid "Click to get all your articles in one ebook :" 644msgid "Click to get all your articles in one ebook :"
534msgstr "Click to get all your articles in one ebook :" 645msgstr "Click to get all your articles in one ebook :"
diff --git a/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.mo b/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.mo
new file mode 100644
index 00000000..77dee070
--- /dev/null
+++ b/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.mo
Binary files differ
diff --git a/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.po b/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.po
new file mode 100644
index 00000000..579d1aca
--- /dev/null
+++ b/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.po
@@ -0,0 +1,682 @@
1msgid ""
2msgstr ""
3"Project-Id-Version: wallabag\n"
4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-02-25 15:17+0300\n"
6"PO-Revision-Date: \n"
7"Last-Translator: Thomas Citharel <tcit@openmailbox.org>\n"
8"Language-Team: \n"
9"Language: en_US\n"
10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n"
13"X-Generator: Poedit 1.5.4\n"
14"X-Poedit-Basepath: .\n"
15
16msgid "wallabag, a read it later open source system"
17msgstr "wallabag, a read it later open source system"
18
19msgid "login failed: user doesn't exist"
20msgstr "Login failed: user doesn't exist"
21
22msgid "return home"
23msgstr "Return Home"
24
25msgid "config"
26msgstr "Config"
27
28msgid "Saving articles"
29msgstr "Saving articles"
30
31msgid "There are several ways to save an article:"
32msgstr "There are several ways to save an article:"
33
34msgid "read the documentation"
35msgstr "Read the documentation"
36
37msgid "download the extension"
38msgstr "Download the extension"
39
40msgid "Firefox Add-On"
41msgstr "Firefox Add-On"
42
43msgid "Chrome Extension"
44msgstr "Chrome Extension"
45
46msgid "via F-Droid"
47msgstr "via F-Droid"
48
49msgid " or "
50msgstr " or "
51
52msgid "via Google Play"
53msgstr "via Google Play"
54
55msgid "download the application"
56msgstr "Download the application"
57
58msgid "By filling this field"
59msgstr "By filling this field"
60
61msgid "bag it!"
62msgstr "bag it!"
63
64msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
65msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar"
66
67msgid "Upgrading wallabag"
68msgstr "Upgrading wallabag"
69
70msgid "Installed version"
71msgstr "Installed version"
72
73msgid "Latest stable version"
74msgstr "Latest stable version"
75
76msgid "A more recent stable version is available."
77msgstr "A more recent stable version is available."
78
79msgid "You are up to date."
80msgstr "You are up to date."
81
82msgid "Latest dev version"
83msgstr "Latest dev version"
84
85msgid "A more recent development version is available."
86msgstr "A more recent development version is available."
87
88msgid "You can clear cache to check the latest release."
89msgstr ""
90"You can <a href=\"#cache\">clear the cache</a> to check for the latest "
91"release."
92
93msgid "Feeds"
94msgstr "Feeds"
95
96msgid ""
97"Your feed token is currently empty and must first be generated to enable "
98"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
99msgstr ""
100"Your feed token is currently empty and must first be generated to enable "
101"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
102
103msgid "Unread feed"
104msgstr "Unread feed"
105
106msgid "Favorites feed"
107msgstr "Favorites feed"
108
109msgid "Archive feed"
110msgstr "Archive feed"
111
112msgid "Your token:"
113msgstr "Your token:"
114
115msgid "Your user id:"
116msgstr "Your user ID:"
117
118msgid ""
119"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!"
120"</a>."
121msgstr "<a href='?feed&amp;action=generate'>Regenerate Token</a>"
122
123msgid "Change your theme"
124msgstr "Change Your Theme"
125
126msgid "Theme:"
127msgstr "Theme:"
128
129msgid "Update"
130msgstr "Update"
131
132msgid "Change your language"
133msgstr "Change Your Language"
134
135msgid "Language:"
136msgstr "Language:"
137
138msgid "Change your password"
139msgstr "Change Your Password"
140
141msgid "New password:"
142msgstr "New password:"
143
144msgid "Password"
145msgstr "Password"
146
147msgid "Repeat your new password:"
148msgstr "Repeat your new password:"
149
150msgid "Import"
151msgstr "Import"
152
153msgid ""
154"You can import your Pocket, Readability, Instapaper, Wallabag or any data in "
155"appropriate json or html format."
156msgstr ""
157"You can import your Pocket, Readability, Instapaper, wallabag or any file in "
158"appropriate JSON or HTML format."
159
160msgid ""
161"Please execute the import script locally as it can take a very long time."
162msgstr ""
163"Please execute the import script locally as it can take a very long time."
164
165msgid ""
166"Please select export file on your computer and press \"Import\" button "
167"below. Wallabag will parse your file, insert all URLs and start fetching of "
168"articles if required."
169msgstr ""
170"Please select export file on your computer and press &ldquo;Import&rdquo; "
171"button below. wallabag will parse your file, insert all URLs and start "
172"fetching of articles if required."
173
174msgid "You can click here to fetch content for articles with no content."
175msgstr "Fetch content for articles with no content"
176
177msgid "More info in the official documentation:"
178msgstr "More info in the official documentation:"
179
180msgid ""
181"(<a href=\"http://doc.wallabag.org/en/User_documentation/"
182"Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)"
183msgstr ""
184"(<a href=\"http://doc.wallabag.org/en/User_documentation/"
185"Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)"
186
187msgid "Import from Pocket"
188msgstr "Import from Pocket"
189
190#, php-format
191msgid "(you must have a %s file on your server)"
192msgstr "(you must have a %s file on your server)"
193
194msgid "Import from Readability"
195msgstr "Import from Readability"
196
197msgid "Import from Instapaper"
198msgstr "Import from Instapaper"
199
200msgid "Import from wallabag"
201msgstr "Import from wallabag"
202
203msgid "Export your wallabag data"
204msgstr "Export your wallabag data"
205
206msgid "Click here"
207msgstr "Click here"
208
209msgid "to download your database."
210msgstr "to download your database."
211
212msgid "to export your wallabag data."
213msgstr "to export your wallabag data."
214
215msgid "Export JSON"
216msgstr "Export JSON"
217
218msgid "Cache"
219msgstr "Cache"
220
221msgid "to delete cache."
222msgstr "to delete cache."
223
224msgid "Delete Cache"
225msgstr "Delete Cache"
226
227msgid "You can enter multiple tags, separated by commas."
228msgstr "You can enter multiple tags, separated by commas."
229
230msgid "Add tags:"
231msgstr "Add tags:"
232
233msgid "no tags"
234msgstr "no tags"
235
236msgid "The tag has been applied successfully"
237msgstr "The tag has been applied successfully"
238
239msgid "interview"
240msgstr "interview"
241
242msgid "editorial"
243msgstr "editorial"
244
245msgid "video"
246msgstr "video"
247
248msgid "return to article"
249msgstr "Return to article"
250
251msgid "plop"
252msgstr "plop"
253
254msgid ""
255"You can <a href='wallabag_compatibility_test.php'>check your configuration "
256"here</a>."
257msgstr ""
258"You can <a href='wallabag_compatibility_test.php'>check your configuration "
259"here</a>."
260
261msgid "favoris"
262msgstr "Favorites"
263
264msgid "archive"
265msgstr "Archive"
266
267msgid "unread"
268msgstr "Unread"
269
270msgid "by date asc"
271msgstr "by date asc"
272
273msgid "by date"
274msgstr "by date"
275
276msgid "by date desc"
277msgstr "by date desc"
278
279msgid "by title asc"
280msgstr "by title asc"
281
282msgid "by title"
283msgstr "by title"
284
285msgid "by title desc"
286msgstr "by title desc"
287
288msgid "Tag"
289msgstr "Tag"
290
291msgid "No articles found."
292msgstr "No articles found."
293
294msgid "Toggle mark as read"
295msgstr "Toggle mark as read"
296
297msgid "toggle favorite"
298msgstr "Toggle favorite"
299
300msgid "delete"
301msgstr "Delete"
302
303msgid "original"
304msgstr "Original"
305
306msgid "estimated reading time:"
307msgstr "Estimated reading time:"
308
309msgid "mark all the entries as read"
310msgstr "Mark all the entries as read"
311
312msgid "results"
313msgstr "Results"
314
315msgid "installation"
316msgstr "Installation"
317
318msgid "install your wallabag"
319msgstr "Install your wallabag"
320
321msgid ""
322"wallabag is still not installed. Please fill the below form to install it. "
323"Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation "
324"on wallabag website</a>."
325msgstr ""
326"wallabag is still not installed. Please fill the below form to install it. "
327"Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation "
328"on wallabag website</a>."
329
330msgid "Login"
331msgstr "Login"
332
333msgid "Repeat your password"
334msgstr "Repeat your password"
335
336msgid "Install"
337msgstr "Install"
338
339msgid "login to your wallabag"
340msgstr "Login to your wallabag"
341
342msgid "Login to wallabag"
343msgstr "Login to wallabag"
344
345msgid "you are in demo mode, some features may be disabled."
346msgstr "You are in demo mode; some features may be disabled."
347
348msgid "Username"
349msgstr "Username"
350
351msgid "Stay signed in"
352msgstr "Stay signed in"
353
354msgid "(Do not check on public computers)"
355msgstr "(Do not check on public computers)"
356
357msgid "Sign in"
358msgstr "Sign in"
359
360msgid "favorites"
361msgstr "Favorites"
362
363msgid "estimated reading time :"
364msgstr "Estimated reading time:"
365
366msgid "Mark all the entries as read"
367msgstr "Mark all the entries as read"
368
369msgid "Return home"
370msgstr "Return home"
371
372msgid "Back to top"
373msgstr "Back to top"
374
375msgid "Mark as read"
376msgstr "Mark as read"
377
378msgid "Favorite"
379msgstr "Favorite"
380
381msgid "Toggle favorite"
382msgstr "Toggle favorite"
383
384msgid "Delete"
385msgstr "Delete"
386
387msgid "Tweet"
388msgstr "Tweet"
389
390msgid "Email"
391msgstr "Email"
392
393msgid "shaarli"
394msgstr "shaarli"
395
396msgid "flattr"
397msgstr "flattr"
398
399msgid "Does this article appear wrong?"
400msgstr "Does this article appear wrong?"
401
402msgid "tags:"
403msgstr "tags:"
404
405msgid "Edit tags"
406msgstr "Edit Tags"
407
408msgid "save link!"
409msgstr "Save Link"
410
411msgid "home"
412msgstr "Home"
413
414msgid "tags"
415msgstr "Tags"
416
417msgid "logout"
418msgstr "Logout"
419
420msgid "powered by"
421msgstr "Powered by"
422
423msgid "debug mode is on so cache is off."
424msgstr "Debug mode is on, so cache is off."
425
426msgid "your wallabag version:"
427msgstr "Your wallabag version:"
428
429msgid "storage:"
430msgstr "Storage:"
431
432msgid "save a link"
433msgstr "Save a Link"
434
435msgid "back to home"
436msgstr "Back to Home"
437
438msgid "toggle mark as read"
439msgstr "Toggle mark as read"
440
441msgid "tweet"
442msgstr "Tweet"
443
444msgid "email"
445msgstr "Email"
446
447msgid "this article appears wrong?"
448msgstr "This article appears wrong?"
449
450msgid "No link available here!"
451msgstr "No link available here"
452
453msgid "Poching a link"
454msgstr "bagging a link"
455
456msgid "by filling this field"
457msgstr "by filling this field"
458
459msgid "bookmarklet: drag & drop this link to your bookmarks bar"
460msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar"
461
462msgid "Drag &amp; drop this link to your bookmarks bar:"
463msgstr "Drag &amp; drop this link to your bookmarks bar:"
464
465msgid "your version"
466msgstr "your version"
467
468msgid "latest stable version"
469msgstr "latest stable version"
470
471msgid "a more recent stable version is available."
472msgstr "A more recent stable version is available."
473
474msgid "you are up to date."
475msgstr "You are up to date."
476
477msgid "latest dev version"
478msgstr "latest dev version"
479
480msgid "a more recent development version is available."
481msgstr "A more recent development version is available."
482
483msgid "Please execute the import script locally, it can take a very long time."
484msgstr ""
485"Please execute the import script locally, it can take a very long time."
486
487msgid "More infos in the official doc:"
488msgstr "More information in the official doc:"
489
490msgid "import from Pocket"
491msgstr "Import from Pocket"
492
493msgid "import from Readability"
494msgstr "Import from Readability"
495
496msgid "import from Instapaper"
497msgstr "Import from Instapaper"
498
499msgid "Tags"
500msgstr "Tags"
501
502msgid "Untitled"
503msgstr "Untitled"
504
505msgid "the link has been added successfully"
506msgstr "The link has been added successfully."
507
508msgid "error during insertion : the link wasn't added"
509msgstr "Error during insertion: the link wasn't added."
510
511msgid "the link has been deleted successfully"
512msgstr "The link has been deleted successfully."
513
514msgid "the link wasn't deleted"
515msgstr "The link wasn't deleted."
516
517msgid "Article not found!"
518msgstr "Article not found."
519
520msgid "previous"
521msgstr "Previous"
522
523msgid "next"
524msgstr "Next"
525
526msgid "in demo mode, you can't update your password"
527msgstr "In demo mode, you can't update your password."
528
529msgid "your password has been updated"
530msgstr "Your password has been updated."
531
532msgid ""
533"the two fields have to be filled & the password must be the same in the two "
534"fields"
535msgstr ""
536"The two fields must be filled, and the password must be the same in both "
537"fields"
538
539msgid "still using the \""
540msgstr "Still using the \""
541
542msgid "that theme does not seem to be installed"
543msgstr "That theme does not seem to be installed."
544
545msgid "you have changed your theme preferences"
546msgstr "You have changed your theme preferences."
547
548msgid "that language does not seem to be installed"
549msgstr "That language does not seem to be installed."
550
551msgid "you have changed your language preferences"
552msgstr "You have changed your language preferences."
553
554msgid "login failed: you have to fill all fields"
555msgstr "Login failed: you have to fill all fields."
556
557msgid "welcome to your wallabag"
558msgstr "Welcome to your wallabag."
559
560msgid "login failed: bad login or password"
561msgstr "Login failed: bad login or password."
562
563msgid "import from instapaper completed"
564msgstr "Import from Instapaper completed."
565
566msgid "import from pocket completed"
567msgstr "Import from Pocket completed."
568
569msgid "import from Readability completed. "
570msgstr "Import from Readability completed."
571
572msgid "import from Poche completed. "
573msgstr "Import from Poche completed. "
574
575msgid "Unknown import provider."
576msgstr "Unknown import provider."
577
578msgid "Incomplete inc/poche/define.inc.php file, please define \""
579msgstr "Incomplete inc/poche/define.inc.php file, please define \""
580
581msgid "Could not find required \""
582msgstr "Could not find required \""
583
584msgid "Uh, there is a problem while generating feeds."
585msgstr "There is a problem generating feeds."
586
587msgid "Cache deleted."
588msgstr "Cache deleted."
589
590msgid "Oops, it seems you don't have PHP 5."
591msgstr "Oops, it seems you don't have PHP 5."
592
593msgid "Add user"
594msgstr "Add User"
595
596msgid "Add a new user :"
597msgstr "Add a new user:"
598
599msgid "Login for new user"
600msgstr "Login for new user:"
601
602msgid "Password for new user"
603msgstr "Password for new user:"
604
605msgid "Email for new user (not required)"
606msgstr "Email for new user (not required):"
607
608msgid "Send"
609msgstr "Send"
610
611msgid "Delete account"
612msgstr "Delete Account"
613
614msgid "You can delete your account by entering your password and validating."
615msgstr "You can delete your account by entering your password and validating."
616
617msgid "Be careful, data will be erased forever (that is a very long time)."
618msgstr "Be careful, data will be erased forever (that is a very long time)."
619
620msgid "Type here your password"
621msgstr "Enter your password"
622
623msgid "You are the only user, you cannot delete your own account."
624msgstr "You cannot delete your account because you are the only user."
625
626msgid ""
627"To completely remove wallabag, delete the wallabag folder on your web server "
628"(and eventual databases)."
629msgstr ""
630"To completely remove wallabag, delete the wallabag folder and database(s) "
631"from your web server."
632
633msgid "Enter your search here"
634msgstr "Enter your search here"
635
636msgid "Tag these results as"
637msgstr "Tag these results as"
638
639# ebook
640msgid "Fancy an E-Book ?"
641msgstr "Fancy an E-Book?"
642
643msgid ""
644"Click on <a href=\"./?epub&amp;method=all\" title=\"Generate ePub\">this "
645"link</a> to get all your articles in one ebook (ePub 3 format)."
646msgstr ""
647"Click on <a href=\"./?epub&amp;method=all\" title=\"Generate EPUB\">this "
648"link</a> to get all your articles in one ebook (EPUB 3 format)."
649
650msgid ""
651"This can <b>take a while</b> and can <b>even fail</b> if you have too many "
652"articles, depending on your server configuration."
653msgstr ""
654"This can <b>take a while</b> and can <b>even fail</b> if you have too many "
655"articles, depending on your server configuration."
656
657msgid "Download the articles from this tag in an epub"
658msgstr "Download the articles from this tag in an EPUB"
659
660msgid "Download the articles from this search in an epub"
661msgstr "Download the articles from this search in an EPUB"
662
663msgid "Download the articles from this category in an epub"
664msgstr "Download the articles from this category in an EPUB"
665
666#~ msgid "poche it!"
667#~ msgstr "poche it!"
668
669#~ msgid "Updating poche"
670#~ msgstr "Updating poche"
671
672#~ msgid "create an issue"
673#~ msgstr "create an issue"
674
675#~ msgid "or"
676#~ msgstr "or"
677
678#~ msgid "contact us by mail"
679#~ msgstr "contact us by mail"
680
681#~ msgid "your poche version:"
682#~ msgstr "your poche version:"
diff --git a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo
index 6dfcdd37..eed260b2 100644
--- a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo
+++ b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo
Binary files differ
diff --git a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po
index 59dc29d6..4bdb3cd5 100644
--- a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po
+++ b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po
@@ -4,7 +4,7 @@ msgstr ""
4"Report-Msgid-Bugs-To: \n" 4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-07-26 20:09+0100\n" 5"POT-Creation-Date: 2014-07-26 20:09+0100\n"
6"PO-Revision-Date: \n" 6"PO-Revision-Date: \n"
7"Last-Translator: tcit <tcit@tcit.fr>\n" 7"Last-Translator: Thomas Citharel <tcit@openmailbox.org>\n"
8"Language-Team: \n" 8"Language-Team: \n"
9"Language: fr_FR\n" 9"Language: fr_FR\n"
10"MIME-Version: 1.0\n" 10"MIME-Version: 1.0\n"
@@ -12,7 +12,7 @@ msgstr ""
12"Content-Transfer-Encoding: 8bit\n" 12"Content-Transfer-Encoding: 8bit\n"
13"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" 13"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
14"X-Poedit-SourceCharset: UTF-8\n" 14"X-Poedit-SourceCharset: UTF-8\n"
15"X-Generator: Poedit 1.6.4\n" 15"X-Generator: Poedit 1.5.4\n"
16"Plural-Forms: nplurals=2; plural=(n != 1);\n" 16"Plural-Forms: nplurals=2; plural=(n != 1);\n"
17 17
18msgid "wallabag, a read it later open source system" 18msgid "wallabag, a read it later open source system"
@@ -298,6 +298,9 @@ msgstr "Nom d'utilisateur"
298msgid "Password for new user" 298msgid "Password for new user"
299msgstr "Mot de passe du nouvel utilisateur" 299msgstr "Mot de passe du nouvel utilisateur"
300 300
301msgid "Email for new user (not required)"
302msgstr "E-mail pour le nouvel utilisateur (facultatif)"
303
301msgid "Send" 304msgid "Send"
302msgstr "Envoyer" 305msgstr "Envoyer"
303 306
@@ -320,10 +323,12 @@ msgstr ""
320"Vous êtes l'unique utilisateur, vous ne pouvez pas supprimer votre compte." 323"Vous êtes l'unique utilisateur, vous ne pouvez pas supprimer votre compte."
321 324
322msgid "" 325msgid ""
323"To completely remove wallabag, delete the wallabag folder on your web server." 326"To completely remove wallabag, delete the wallabag folder on your web server "
327"(and eventual databases)."
324msgstr "" 328msgstr ""
325"Pour désinstaller complètement wallabag, supprimez le répertoire " 329"Pour désinstaller complètement wallabag, supprimez le répertoire "
326"<code>wallabag</code> de votre serveur Web." 330"<code>wallabag</code> de votre serveur Web (ainsi que les bases de données "
331"éventuelles)."
327 332
328msgid "Save a link" 333msgid "Save a link"
329msgstr "Ajouter un lien" 334msgstr "Ajouter un lien"
@@ -367,6 +372,24 @@ msgstr "Cet article s'affiche mal ?"
367msgid "tags:" 372msgid "tags:"
368msgstr "tags :" 373msgstr "tags :"
369 374
375msgid "Add tags:"
376msgstr "Ajouter des tags :"
377
378msgid "no tags"
379msgstr "pas de tags"
380
381msgid "The tag has been applied successfully"
382msgstr "Le tag a été appliqué avec succès"
383
384msgid "interview"
385msgstr "interview"
386
387msgid "editorial"
388msgstr "éditorial"
389
390msgid "video"
391msgstr "vidéo"
392
370msgid "Edit tags" 393msgid "Edit tags"
371msgstr "Modifier les tags" 394msgstr "Modifier les tags"
372 395
@@ -651,6 +674,10 @@ msgstr "Cache effacé."
651msgid "Oops, it seems you don't have PHP 5." 674msgid "Oops, it seems you don't have PHP 5."
652msgstr "Oups, vous ne semblez pas avoir PHP 5." 675msgstr "Oups, vous ne semblez pas avoir PHP 5."
653 676
677msgid "Tag these results as"
678msgstr "Appliquer à ces résultats le tag"
679
680# ebook
654msgid "Fancy an E-Book ?" 681msgid "Fancy an E-Book ?"
655msgstr "Envie d'un E-Book ?" 682msgstr "Envie d'un E-Book ?"
656 683
@@ -670,8 +697,17 @@ msgid ""
670"This can <b>take a while</b> and can <b>even fail</b> if you have too many " 697"This can <b>take a while</b> and can <b>even fail</b> if you have too many "
671"articles, depending on your server configuration." 698"articles, depending on your server configuration."
672msgstr "" 699msgstr ""
673"Ceci peut <b>prendre un moment</b> et peut <b>même échouer</b> si vous avez " 700"Ceci peut <b>prendre un moment</b> et même <b>échouer</b> si vous avez trop "
674"trop d'articles, selon la configuration de votre serveur." 701"d'articles, selon la configuration matérielle de votre serveur."
702
703msgid "Download the articles from this tag in an epub"
704msgstr "Télécharger les articles de ce tag dans un epub"
705
706msgid "Download the articles from this search in an epub"
707msgstr "Télécharger les articles de cette recherche dans un epub"
708
709msgid "Download the articles from this category in an epub"
710msgstr "Télécharger les articles de cette catégorie dans un epub"
675 711
676msgid "Download the articles from this tag in an ePub file" 712msgid "Download the articles from this tag in an ePub file"
677msgstr "Télécharger les articles de ce tag dans un fichier ePub" 713msgstr "Télécharger les articles de ce tag dans un fichier ePub"
diff --git a/locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.mo b/locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.mo
index b363385a..297516c0 100755..100644
--- a/locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.mo
+++ b/locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.mo
Binary files differ
diff --git a/locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po b/locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po
index 1764bd61..e39156e6 100755
--- a/locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po
+++ b/locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po
@@ -1,58 +1,40 @@
1msgid "" 1msgid ""
2msgstr "" 2msgstr ""
3"Project-Id-Version: wballabag\n" 3"Project-Id-Version: wallabag\n"
4"Report-Msgid-Bugs-To: \n" 4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-02-24 15:19+0300\n" 5"POT-Creation-Date: 2014-02-25 15:17+0300\n"
6"PO-Revision-Date: 2014-02-24 15:29+0300\n" 6"PO-Revision-Date: \n"
7"Last-Translator: Maryana <mariroz@mr.lviv.ua>\n" 7"Last-Translator: skibbipl <skibbipl@users.noreply.github.com>\n"
8"Language-Team: \n" 8"Language-Team: \n"
9"Language: \n" 9"Language: pl\n"
10"MIME-Version: 1.0\n" 10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n" 11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n" 12"Content-Transfer-Encoding: 8bit\n"
13"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" 13"X-Generator: Poedit 1.6.6\n"
14"X-Poedit-Basepath: .\n" 14"X-Poedit-Basepath: .\n"
15"X-Poedit-Language: Polish\n" 15"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
16"X-Poedit-Country: POLAND\n" 16"|| n%100>=20) ? 1 : 2);\n"
17"X-Poedit-SourceCharset: utf-8\n" 17"X-Poedit-SourceCharset: UTF-8\n"
18"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-testing\n" 18"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-"
19"testing\n"
19 20
20msgid "poche, a read it later open source system" 21msgid "wallabag, a read it later open source system"
21msgstr "poche, serwis odrocznego czytania open source" 22msgstr "wallabag, open source'owy system typu \"przeczytaj to później\""
22 23
23msgid "login failed: user doesn't exist" 24msgid "login failed: user doesn't exist"
24msgstr "logowanie nie udało się: użytkownik nie istnieje" 25msgstr "logowanie się nie powiodło: użytkownik nie istnieje"
25 26
26msgid "home" 27msgid "return home"
27msgstr "strona domowa" 28msgstr "powrót do strony domowej"
28
29msgid "favorites"
30msgstr "ulubione"
31
32msgid "archive"
33msgstr "archiwum"
34
35msgid "tags"
36msgstr "tagi"
37 29
38msgid "config" 30msgid "config"
39msgstr "ustawienia" 31msgstr "konfiguracja"
40
41msgid "logout"
42msgstr "wyloguj"
43
44msgid "back to home"
45msgstr "wróć do strony domowej"
46 32
47msgid "Tags" 33msgid "Saving articles"
48msgstr "Tagi" 34msgstr "Zapisywanie artykułów"
49
50#, fuzzy
51msgid "Poching a link"
52msgstr "Zapisywanie linków"
53 35
54msgid "You can poche a link by several methods:" 36msgid "There are several ways to save an article:"
55msgstr "Istnieje kilka sposobów aby zapisać link:" 37msgstr "Istnieje kilka sposobów aby zapisać artyk:"
56 38
57msgid "read the documentation" 39msgid "read the documentation"
58msgstr "przeczytaj dokumentację" 40msgstr "przeczytaj dokumentację"
@@ -60,54 +42,98 @@ msgstr "przeczytaj dokumentację"
60msgid "download the extension" 42msgid "download the extension"
61msgstr "pobierz rozszerzenie" 43msgstr "pobierz rozszerzenie"
62 44
45msgid "via F-Droid"
46msgstr "przez F-Droid"
47
48msgid " or "
49msgstr "albo "
50
51msgid "via Google Play"
52msgstr "przez Google Play"
53
63msgid "download the application" 54msgid "download the application"
64msgstr "pobierz aplikację" 55msgstr "pobierz aplikację"
65 56
66#, fuzzy 57msgid "By filling this field"
67msgid "by filling this field"
68msgstr "Poprzez wypełnienie tego pola" 58msgstr "Poprzez wypełnienie tego pola"
69 59
70msgid "poche it!" 60msgid "bag it!"
71msgstr "zapisz!" 61msgstr "zapisz!"
72 62
73#, fuzzy 63msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
74msgid "bookmarklet: drag & drop this link to your bookmarks bar" 64msgstr "Skryptozakładka: przeciągnij i upuść ten link na twój pasek zakładek"
75msgstr "Bookmarklet: przeciągnij i upucs ten link na pasek zakladek"
76 65
77msgid "Updating poche" 66msgid "Upgrading wallabag"
78msgstr "Aktualizacja poche" 67msgstr "Aktualizacja wallabag"
79 68
80msgid "your version" 69msgid "Installed version"
81msgstr "twoja wersja" 70msgstr "Zainstalowana wersja"
82 71
83#, fuzzy 72msgid "Latest stable version"
84msgid "latest stable version"
85msgstr "Najnowsza stabilna wersja" 73msgstr "Najnowsza stabilna wersja"
86 74
87#, fuzzy 75msgid "A more recent stable version is available."
88msgid "a more recent stable version is available."
89msgstr "Nowsza stabilna wersja jest dostępna." 76msgstr "Nowsza stabilna wersja jest dostępna."
90 77
91msgid "you are up to date." 78msgid "You are up to date."
92msgstr "brak nowych aktualizacji." 79msgstr "Posiadasz najnowszą wersję."
93 80
94msgid "latest dev version" 81msgid "Latest dev version"
95msgstr "najnowsza wersja rozwojowa" 82msgstr "Najnowsza wersja developerska"
96 83
97msgid "a more recent development version is available." 84msgid "A more recent development version is available."
98msgstr "Nowsza wersja rozwojowa jest dostępna." 85msgstr "Nowsza developerska wersja jest dostępna."
86
87msgid "Feeds"
88msgstr "Kanały"
89
90msgid ""
91"Your feed token is currently empty and must first be generated to enable "
92"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
93msgstr ""
94"Twój token kanału jest aktualnie pusty i musi zostać wygenerowany, aby "
95"włączyć kanały. Kliknij <a href='?feed&amp;action=generate'>tutaj, aby go "
96"wygenerować</a>."
97
98msgid "Unread feed"
99msgstr "Nieprzeczytane kanały"
100
101msgid "Favorites feed"
102msgstr "Ulubione kanały"
103
104msgid "Archive feed"
105msgstr "Kanały archiwum"
106
107msgid "Your token:"
108msgstr "Twój token:"
109
110msgid "Your user id:"
111msgstr "Twój id użytkownika:"
112
113msgid ""
114"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!"
115"</a>."
116msgstr ""
117"Możesz wygenewrować ponownie swój token: <a href='?feed&amp;"
118"action=generate'>generuj!</a>."
99 119
100msgid "Change your theme" 120msgid "Change your theme"
101msgstr "Zmień motyw" 121msgstr "Zmień swój motyw"
102 122
103msgid "Theme:" 123msgid "Theme:"
104msgstr "Motyw:" 124msgstr "Motyw:"
105 125
106msgid "Update" 126msgid "Update"
107msgstr "Aktualizacja" 127msgstr "Aktualizuj"
128
129msgid "Change your language"
130msgstr "Zmień język"
131
132msgid "Language:"
133msgstr "Język:"
108 134
109msgid "Change your password" 135msgid "Change your password"
110msgstr "Zmień hasło" 136msgstr "Zmień swoje hasło"
111 137
112msgid "New password:" 138msgid "New password:"
113msgstr "Nowe hasło:" 139msgstr "Nowe hasło:"
@@ -116,91 +142,104 @@ msgid "Password"
116msgstr "Hasło" 142msgstr "Hasło"
117 143
118msgid "Repeat your new password:" 144msgid "Repeat your new password:"
119msgstr "Powtórz hasło jeszcze raz:" 145msgstr "Powtórz twoje nowe hasło:"
120 146
121msgid "Import" 147msgid "Import"
122msgstr "Import" 148msgstr "Import"
123 149
124msgid "Please execute the import script locally, it can take a very long time." 150msgid ""
125msgstr "Proszę wykonać skrypt importu lokalnie, ponieważ moze to trwać bardzo długo." 151"Please execute the import script locally as it can take a very long time."
152msgstr ""
153"Proszę wykonaj skrypt importu lokalnie, ponieważ może to trwać bardzo długo."
126 154
127msgid "More infos in the official doc:" 155msgid "More info in the official documentation:"
128msgstr "Więcej informacji znajduje s w oficjalnej dokumentacji:" 156msgstr "Więcej informacji znajdziesz w oficjalnej dokumentacji:"
129 157
130msgid "import from Pocket" 158msgid "Import from Pocket"
131msgstr "Importuj z Pocket'a" 159msgstr "Importuj z Pocket"
132 160
133#, php-format 161#, php-format
134msgid "(you must have a %s file on your server)" 162msgid "(you must have a %s file on your server)"
135msgstr "(musisz mieć plik %s na serwerze)" 163msgstr "(musisz mieć plik %s na swoim serwerze)"
136 164
137msgid "import from Readability" 165msgid "Import from Readability"
138msgstr "Importuj z Readability" 166msgstr "Importuj z Readability"
139 167
140msgid "import from Instapaper" 168msgid "Import from Instapaper"
141msgstr "Importuj z Instapaper" 169msgstr "Importuj z Instapaper"
142 170
143#, fuzzy 171msgid "Import from wallabag"
144msgid "Export your poche datas" 172msgstr "Importuj z wallabag"
145msgstr "Exportuj dane poche" 173
174msgid "Export your wallabag data"
175msgstr "Wyeksportuj swoje dane wallabag"
146 176
147msgid "Click here" 177msgid "Click here"
148msgstr "Kliknij tu" 178msgstr "Kliknij tu"
149 179
150#, fuzzy 180msgid "to download your database."
151msgid "to export your poche datas." 181msgstr "aby pobrać twoją bazę danych."
152msgstr "aby wyeksportować dane poche."
153 182
154msgid "plop" 183msgid "to export your wallabag data."
155msgstr "plop" 184msgstr "aby wyeksportować dane wallabag."
156 185
157msgid "installation" 186msgid "Cache"
158msgstr "instalacja" 187msgstr "Cache"
159 188
160msgid "install your wallabag" 189msgid "to delete cache."
161msgstr "zainstaluj wallabag" 190msgstr "aby wyczyścić cache."
162 191
163msgid "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>." 192msgid "You can enter multiple tags, separated by commas."
164msgstr "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>." 193msgstr "Możesz wprowadzić wiele tagów, oddzielonych przecinkami."
165 194
166msgid "Login" 195msgid "return to article"
167msgstr "Login" 196msgstr "powrót do artykułu"
168 197
169msgid "Repeat your password" 198msgid "plop"
170msgstr "Powtórz hasło" 199msgstr "plop"
171 200
172msgid "Install" 201msgid ""
173msgstr "Instaluj" 202"You can <a href='wallabag_compatibility_test.php'>check your configuration "
203"here</a>."
204msgstr ""
205"Możesz <a href='wallabag_compatibility_test.php'>sprawdzić swoją "
206"konfigurację tutaj</a>."
174 207
175msgid "favoris" 208msgid "favoris"
176msgstr "ulubione" 209msgstr "favoris"
210
211msgid "archive"
212msgstr "archiwum"
177 213
178msgid "unread" 214msgid "unread"
179msgstr "nieprzeczytane" 215msgstr "nieprzeczytane"
180 216
181msgid "by date asc" 217msgid "by date asc"
182msgstr "według daty rosnąco" 218msgstr "po dacie rosnąco"
183 219
184msgid "by date" 220msgid "by date"
185msgstr "wg daty" 221msgstr "po dacie"
186 222
187msgid "by date desc" 223msgid "by date desc"
188msgstr "według daty malejąco" 224msgstr "po dacie malejąco"
189 225
190msgid "by title asc" 226msgid "by title asc"
191msgstr "według tytułu rosnąco" 227msgstr "po tytule rosnąco"
192 228
193msgid "by title" 229msgid "by title"
194msgstr "wg tytułu" 230msgstr "po tytule"
195 231
196msgid "by title desc" 232msgid "by title desc"
197msgstr "według tytułu malejąco" 233msgstr "po tytule malejąco"
198 234
199msgid "No link available here!" 235msgid "Tag"
200msgstr "Brak dostępnych linków!" 236msgstr "Otaguj"
201 237
202msgid "toggle mark as read" 238msgid "No articles found."
203msgstr "przełącz jako przeczytane" 239msgstr "Nie znaleziono artykułów."
240
241msgid "Toggle mark as read"
242msgstr "Przełącz jako przeczytane"
204 243
205msgid "toggle favorite" 244msgid "toggle favorite"
206msgstr "przełącz ulubione" 245msgstr "przełącz ulubione"
@@ -212,139 +251,91 @@ msgid "original"
212msgstr "oryginał" 251msgstr "oryginał"
213 252
214msgid "estimated reading time:" 253msgid "estimated reading time:"
215msgstr "szacowany czas odczytu:" 254msgstr "szacowany czas czytania:"
216
217msgid "results"
218msgstr "wyniki"
219
220msgid "login to your wallabag"
221msgstr "zaloguj się do swojego wallabag"
222
223msgid "you are in demo mode, some features may be disabled."
224msgstr "jesteś w trybie demo, niektóre funkcje mogą być wyłączone."
225
226msgid "Stay signed in"
227msgstr "Pozostań zalogowany"
228
229msgid "(Do not check on public computers)"
230msgstr "(Nie sprawdzaj na publicznych komputerach)"
231
232msgid "Saving articles"
233msgstr "Zapisywanie artykułów"
234
235msgid "There are several ways to save an article:"
236msgstr "Istnieje kilka sposobów aby zapisać artykuł:"
237
238msgid "via F-Droid"
239msgstr "przez F-Droid"
240
241msgid " or "
242msgstr "albo"
243
244msgid "via Google Play"
245msgstr "przez Google Play"
246
247msgid "By filling this field"
248msgstr "Poprzez wypełnienie tego pola"
249
250msgid "bag it!"
251msgstr "zapisz!"
252
253msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
254msgstr "Bookmarklet: przeciągnij i upuść ten link na pasek zakladek"
255
256msgid "Upgrading wallabag"
257msgstr "Aktualizacja wallabag"
258
259msgid "Installed version"
260msgstr "Zainstalowana wersja "
261 255
262msgid "Latest stable version" 256msgid "mark all the entries as read"
263msgstr "Najnowsza stabilna wersja" 257msgstr "zaznacz wszystkie wpisy jako przeczytane"
264
265msgid "A more recent stable version is available."
266msgstr "Nowsza stabilna wersja jest dostępna."
267
268msgid "You are up to date."
269msgstr "Brak nowych aktualizacji."
270 258
271msgid "Latest dev version" 259msgid "results"
272msgstr "Najnowsza wersja rozwojowa" 260msgstr "rezultaty"
273 261
274#, fuzzy 262msgid "installation"
275msgid "A more recent development version is available." 263msgstr "instalacja"
276msgstr "Nowsza wersja rozwojowa jest dostępna."
277 264
278msgid "Feeds" 265msgid "install your wallabag"
279msgstr "Kanały (feeds)" 266msgstr "zainstauj wallabag"
280 267
281msgid "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>." 268msgid ""
282msgstr "Twój token kanału jest pusty i musi najpierw zostać wygenerowany. Kliknij <a href='?feed&action=generate'>tu aby go wygenerować</a>." 269"wallabag is still not installed. Please fill the below form to install it. "
270"Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation "
271"on wallabag website</a>."
272msgstr ""
273"wallabag wciąż nie jest zainstalowany. Proszę wypełnij poniższy formularz "
274"aby go zainstalować. Nie wahaj się <a href='http://doc.wallabag."
275"org/'>przeczytać dokumentacji na stronie wallabag</a>."
283 276
284msgid "Unread feed" 277msgid "Login"
285msgstr "Kanał nieprzeczytanych" 278msgstr "Login"
286 279
287msgid "Favorites feed" 280msgid "Repeat your password"
288msgstr "Kanał ulubionych" 281msgstr "Powtórz swoje hasło"
289 282
290msgid "Archive feed" 283msgid "Install"
291msgstr "Kanał archiwum" 284msgstr "Zainstauj"
292 285
293msgid "Your token:" 286msgid "login to your wallabag"
294msgstr "Twój token: " 287msgstr "zaloguj się do twojego wallabag"
295 288
296msgid "Your user id:" 289msgid "Login to wallabag"
297msgstr "Twój identyfikator użytkownika:" 290msgstr "Logowanie do wallabag"
298 291
299msgid "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>." 292msgid "you are in demo mode, some features may be disabled."
300msgstr "Możesz wygenerować token ponownie: kliknij <a href='?feed&amp;action=generate'>generuj!</a>." 293msgstr "jesteś w trybie demo, niektóre funkcjonalności mogą być wyłączone."
301 294
302msgid "Change your language" 295msgid "Username"
303msgstr "Zmień język" 296msgstr "Nazwa użytkownika"
304 297
305msgid "Language:" 298msgid "Stay signed in"
306msgstr "zyk:" 299msgstr "Pozostań zalogowany"
307 300
308msgid "Please execute the import script locally as it can take a very long time." 301msgid "(Do not check on public computers)"
309msgstr "Proszę wykonać skrypt importu lokalnie, gdyż moze to trwa bardzo długo." 302msgstr "(Nie zaznaczaj na komputerach z publicznym dostpem)"
310 303
311#, fuzzy 304msgid "Sign in"
312msgid "More info in the official documentation:" 305msgstr "Zaloguj się"
313msgstr "Więcej informacji znajduje się w oficjalnej dokumentacji:"
314 306
315msgid "Import from Pocket" 307msgid "favorites"
316msgstr "Іmport z Pocket'a" 308msgstr "ulubione"
317 309
318msgid "Import from Readability" 310msgid "estimated reading time :"
319msgstr "Import z Readability" 311msgstr "szacowany czas czytania :"
320 312
321msgid "Import from Instapaper" 313msgid "Mark all the entries as read"
322msgstr "Import z Instapaper" 314msgstr "Zaznacz wszystkie wpisy jako przeczytane"
323 315
324msgid "Import from wallabag" 316msgid "Return home"
325msgstr "Import z wallabag" 317msgstr "Powrót na stronę domową"
326 318
327msgid "Export your wallabag data" 319msgid "Back to top"
328msgstr "Eksportowac dane wallabag" 320msgstr "Powrót na górę"
329 321
330msgid "to download your database." 322msgid "Mark as read"
331msgstr "aby pobrac bazę danych." 323msgstr "Oznacz jako przeczytane"
332 324
333msgid "to export your wallabag data." 325msgid "Favorite"
334msgstr "aby eksportować dane wallabag." 326msgstr "Ulubione"
335 327
336msgid "Cache" 328msgid "Toggle favorite"
337msgstr "Cache" 329msgstr "Przełącz ulubione"
338 330
339msgid "to delete cache." 331msgid "Delete"
340msgstr "aby wyczycić cache." 332msgstr "Usu"
341 333
342msgid "tweet" 334msgid "Tweet"
343msgstr "tweet" 335msgstr "Tweet"
344 336
345#, fuzzy 337msgid "Email"
346msgid "email" 338msgstr "Email"
347msgstr "Wyślij email"
348 339
349msgid "shaarli" 340msgid "shaarli"
350msgstr "shaarli" 341msgstr "shaarli"
@@ -352,163 +343,172 @@ msgstr "shaarli"
352msgid "flattr" 343msgid "flattr"
353msgstr "flattr" 344msgstr "flattr"
354 345
355msgid "this article appears wrong?" 346msgid "Does this article appear wrong?"
356msgstr "Czy ten artykuł wyświetla się nieprawidłowo?" 347msgstr "Czy ten artykuł jest wyświetlany niepoprawnie?"
357 348
358msgid "You can enter multiple tags, separated by commas." 349msgid "tags:"
359msgstr "Możesz wprowadzić wiele tagów, rozdzielając je przecinkami." 350msgstr "tagi:"
360 351
361msgid "return to article" 352msgid "Edit tags"
362msgstr "wróć do artykułu" 353msgstr "Edytuj tagi"
354
355msgid "save link!"
356msgstr "zapisz link!"
357
358msgid "home"
359msgstr "strona domowa"
360
361msgid "tags"
362msgstr "tagi"
363
364msgid "logout"
365msgstr "wyloguj"
363 366
364#, fuzzy
365msgid "powered by" 367msgid "powered by"
366msgstr "zasilany przez" 368msgstr "w oparciu o"
367 369
368msgid "debug mode is on so cache is off." 370msgid "debug mode is on so cache is off."
369msgstr "tryb debugowania jest włączony, więc cashe jest wyłączony." 371msgstr "tryb debug jest włączony zatem cache jest wyłączony."
370 372
371msgid "your wallabag version:" 373msgid "your wallabag version:"
372msgstr "twoja wersja wallabag:" 374msgstr "wersja twojego wallabag:"
373 375
374msgid "storage:" 376msgid "storage:"
375msgstr "magazyn:" 377msgstr "storage:"
376 378
377msgid "save a link" 379msgid "save a link"
378msgstr "zapisz link" 380msgstr "zapisz link"
379 381
380msgid "return home" 382msgid "back to home"
381msgstr "wróć do strony domowej" 383msgstr "powrót do strony domowej"
382
383msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>."
384msgstr "Możesz <a href='wallabag_compatibility_test.php'>sprawdzić swoją konfigurację tu</a>."
385
386msgid "Tag"
387msgstr "Tag"
388 384
389msgid "No articles found." 385msgid "toggle mark as read"
390msgstr "Nie znaleziono artykułów." 386msgstr "przełącz jako przeczytane"
391 387
392msgid "Toggle mark as read" 388msgid "tweet"
393msgstr "Przełącz jako przeczytane" 389msgstr "tweet"
394 390
395msgid "mark all the entries as read" 391msgid "email"
396msgstr "zaznacz wszystko jako przeczytane" 392msgstr "email"
397 393
398msgid "Login to wallabag" 394msgid "this article appears wrong?"
399msgstr "Zaloguj się do wallabag" 395msgstr "ten artykuł wygląda niepoprawnie?"
400 396
401msgid "Username" 397msgid "No link available here!"
402msgstr "Nazwa użytkownika" 398msgstr "No link available here!"
403 399
404msgid "Sign in" 400#, fuzzy
405msgstr "Login" 401msgid "Poching a link"
402msgstr "Poching a link"
406 403
407msgid "Return home" 404msgid "by filling this field"
408msgstr "Wróć do strony domowej" 405msgstr "przez wypełnienie tego pola"
409 406
410msgid "Back to top" 407msgid "bookmarklet: drag & drop this link to your bookmarks bar"
411msgstr "Wróć na gó" 408msgstr "skryptozakładka: przecignij i upuś ten link na twój pasek zakładek"
412 409
413msgid "Mark as read" 410msgid "your version"
414msgstr "Zaznacz jako przeczytane" 411msgstr "twoja wersja"
415 412
416msgid "Favorite" 413msgid "latest stable version"
417msgstr "Ulubione" 414msgstr "najnowsza stabilna wersja"
418 415
419msgid "Toggle favorite" 416msgid "a more recent stable version is available."
420msgstr "Zaznacz jako ulubione" 417msgstr "nowsza wersja stabilna jest dostępna."
421 418
422msgid "Delete" 419msgid "you are up to date."
423msgstr "Us" 420msgstr "posiadasz najnowszą wersję."
424 421
425msgid "Tweet" 422msgid "latest dev version"
426msgstr "Tweet" 423msgstr "najnowsza wersja developerska"
427 424
428msgid "Email" 425msgid "a more recent development version is available."
429msgstr "Wyślij email" 426msgstr "nowsza wersja developerska jest dostępna."
430 427
431msgid "Does this article appear wrong?" 428msgid "Please execute the import script locally, it can take a very long time."
432msgstr "Czy ten artykuł wyświetla się nieprawidłowo?" 429msgstr ""
430"Please execute the import script locally, it can take a very long time."
433 431
434msgid "tags:" 432msgid "More infos in the official doc:"
435msgstr "tegi:" 433msgstr "More infos in the official doc:"
436 434
437msgid "Edit tags" 435msgid "import from Pocket"
438msgstr "Edytuj tagi" 436msgstr "import from Pocket"
439 437
440msgid "save link!" 438msgid "import from Readability"
441msgstr "zapisz link!" 439msgstr "import from Readability"
442 440
443#, fuzzy 441msgid "import from Instapaper"
444msgid "estimated reading time :" 442msgstr "import from Instapaper"
445msgstr "szacowany czas odczytu:"
446 443
447msgid "Mark all the entries as read" 444msgid "Tags"
448msgstr "Oznacz wszystko jako przeczytane" 445msgstr "Tagi"
449 446
450msgid "Untitled" 447msgid "Untitled"
451msgstr "Bez nazwy" 448msgstr "Untitled"
452 449
453msgid "the link has been added successfully" 450msgid "the link has been added successfully"
454msgstr "link został pomyślnie dodany" 451msgstr "link został dodany pomyślnie"
455 452
456msgid "error during insertion : the link wasn't added" 453msgid "error during insertion : the link wasn't added"
457msgstr "błąd podczas wprowadzania: link nie został dodany" 454msgstr "błąd podczas dodawania : link nie został dodany"
458 455
459msgid "the link has been deleted successfully" 456msgid "the link has been deleted successfully"
460msgstr "link zostal pomylnie usunięty" 457msgstr "link zosta usunięty pomyślnie"
461 458
462msgid "the link wasn't deleted" 459msgid "the link wasn't deleted"
463msgstr "link nie został usunięty" 460msgstr "link nie został usunięty"
464 461
465msgid "Article not found!" 462msgid "Article not found!"
466msgstr "Nie znaleziono artykułu." 463msgstr "Artykuł nie znaleziony!"
467 464
468msgid "previous" 465msgid "previous"
469msgstr "poprzednia" 466msgstr "poprzedni"
470 467
471msgid "next" 468msgid "next"
472msgstr "następna" 469msgstr "następny"
473 470
474msgid "in demo mode, you can't update your password" 471msgid "in demo mode, you can't update your password"
475msgstr "w trybie demo, nie można zmieniać hasła" 472msgstr "w trybie demo nie możesz zaktualizowswojego hasła"
476 473
477msgid "your password has been updated" 474msgid "your password has been updated"
478msgstr "twoje hasło zostało zmienione" 475msgstr "twoje hasło zostało zaktualizowane"
479 476
480msgid "the two fields have to be filled & the password must be the same in the two fields" 477msgid ""
481msgstr "oba pola muszą być wypełnione i hasła muszę być takie same w obu polach" 478"the two fields have to be filled & the password must be the same in the two "
479"fields"
480msgstr ""
481"oba pola muszą być wypełnione oraz hasło musi być takie same w obu polach"
482 482
483msgid "still using the \"" 483msgid "still using the \""
484msgstr "nadal w użyciu \"" 484msgstr "wciąż używam \""
485 485
486msgid "that theme does not seem to be installed" 486msgid "that theme does not seem to be installed"
487msgstr "wydaje się że ten motyw nie jest zainstalowany" 487msgstr "ten motyw nie wygląda na zainstalowany"
488 488
489msgid "you have changed your theme preferences" 489msgid "you have changed your theme preferences"
490msgstr "ustawienia motywu zostały zmienione" 490msgstr "zmieniłeś swoje preferencje motywu"
491 491
492msgid "that language does not seem to be installed" 492msgid "that language does not seem to be installed"
493msgstr "wydaje się że ten język nie jest zainstalowany" 493msgstr "ten język nie wygląda na zainstalowany"
494 494
495msgid "you have changed your language preferences" 495msgid "you have changed your language preferences"
496msgstr "ustawienia języka zostały zmienione" 496msgstr "zmieniłeś swoje preferencje językowe"
497 497
498msgid "login failed: you have to fill all fields" 498msgid "login failed: you have to fill all fields"
499msgstr "logowanie nie powiodlo się: musisz wypełnić wszystkie pola" 499msgstr "logowanie się nie powiodło: musisz wypełnić wszystkie pola"
500 500
501msgid "welcome to your wallabag" 501msgid "welcome to your wallabag"
502msgstr "Witamy w wallabag" 502msgstr "witaj w twoim wallabag"
503 503
504msgid "login failed: bad login or password" 504msgid "login failed: bad login or password"
505msgstr "logowanie nie powiodlo się: niepoprawny login lub hasło" 505msgstr "logowanie się nie powiodło: nieprawidłowy login lub hasło"
506 506
507msgid "import from instapaper completed" 507msgid "import from instapaper completed"
508msgstr "import z instapaper'a zakończony" 508msgstr "import z instapaper zakończony"
509 509
510msgid "import from pocket completed" 510msgid "import from pocket completed"
511msgstr "import z pocket'a zakończony" 511msgstr "import z pocket zakończony"
512 512
513msgid "import from Readability completed. " 513msgid "import from Readability completed. "
514msgstr "import z Readability zakończony. " 514msgstr "import z Readability zakończony. "
@@ -520,25 +520,34 @@ msgid "Unknown import provider."
520msgstr "Nieznany dostawca importu." 520msgstr "Nieznany dostawca importu."
521 521
522msgid "Incomplete inc/poche/define.inc.php file, please define \"" 522msgid "Incomplete inc/poche/define.inc.php file, please define \""
523msgstr "Niekompletny plik inc/poche/define.inc.php, proszę zdefiniować \"" 523msgstr "Niekompletny plik inc/poche/define.inc.php, proszę zdefiniuj \""
524 524
525msgid "Could not find required \"" 525msgid "Could not find required \""
526msgstr "Nie znaleziono potrzebnego \"" 526msgstr "Nie znaleziono wymaganego \""
527 527
528msgid "Uh, there is a problem while generating feeds." 528msgid "Uh, there is a problem while generating feeds."
529msgstr "Uh, jest problem podczas generowania kanałów." 529msgstr "Ah, wystąpił problem podczas generowania kanałów."
530 530
531msgid "Cache deleted." 531msgid "Cache deleted."
532msgstr "Cache wyczyszczony." 532msgstr "Cache usunięty."
533 533
534msgid "Oops, it seems you don't have PHP 5." 534msgid "Oops, it seems you don't have PHP 5."
535msgstr "Oops, wygląda ze nie masz PHP 5." 535msgstr "Oops, wygląda na to że nie masz PHP 5."
536
537#~ msgid "poche it!"
538#~ msgstr "poche it!"
539
540#~ msgid "Updating poche"
541#~ msgstr "Updating poche"
542
543#~ msgid "create an issue"
544#~ msgstr "create an issue"
536 545
537#~ msgid "Import from poche" 546#~ msgid "or"
538#~ msgstr "Import z poche" 547#~ msgstr "or"
539 548
540#~ msgid "welcome to your poche" 549#~ msgid "contact us by mail"
541#~ msgstr "witamy w poche" 550#~ msgstr "contact us by mail"
542 551
543#~ msgid "see you soon!" 552#~ msgid "your poche version:"
544#~ msgstr "do zobaczenia wkrótce!" 553#~ msgstr "your poche version:"
diff --git a/themes/default/css/jquery-ui-1.10.4.custom.css b/themes/_global/css/jquery-ui-1.10.4.custom.css
index 5690172f..5690172f 100644
--- a/themes/default/css/jquery-ui-1.10.4.custom.css
+++ b/themes/_global/css/jquery-ui-1.10.4.custom.css
diff --git a/themes/default/css/jquery-ui-1.10.4.custom.min.css b/themes/_global/css/jquery-ui-1.10.4.custom.min.css
index 4dba92a8..4dba92a8 100644
--- a/themes/default/css/jquery-ui-1.10.4.custom.min.css
+++ b/themes/_global/css/jquery-ui-1.10.4.custom.min.css
diff --git a/themes/baggy/img/apple-touch-icon-114.png b/themes/_global/img/appicon/apple-touch-icon-114.png
index 0e96edd5..0e96edd5 100755
--- a/themes/baggy/img/apple-touch-icon-114.png
+++ b/themes/_global/img/appicon/apple-touch-icon-114.png
Binary files differ
diff --git a/themes/baggy/img/apple-touch-icon-120.png b/themes/_global/img/appicon/apple-touch-icon-120.png
index dc5aab1c..dc5aab1c 100755
--- a/themes/baggy/img/apple-touch-icon-120.png
+++ b/themes/_global/img/appicon/apple-touch-icon-120.png
Binary files differ
diff --git a/themes/baggy/img/apple-touch-icon-144.png b/themes/_global/img/appicon/apple-touch-icon-144.png
index 1d005db6..1d005db6 100755
--- a/themes/baggy/img/apple-touch-icon-144.png
+++ b/themes/_global/img/appicon/apple-touch-icon-144.png
Binary files differ
diff --git a/themes/baggy/img/apple-touch-icon-152.png b/themes/_global/img/appicon/apple-touch-icon-152.png
index f915231f..f915231f 100755
--- a/themes/baggy/img/apple-touch-icon-152.png
+++ b/themes/_global/img/appicon/apple-touch-icon-152.png
Binary files differ
diff --git a/themes/baggy/img/apple-touch-icon-57.png b/themes/_global/img/appicon/apple-touch-icon-57.png
index 5aa19ed9..5aa19ed9 100755
--- a/themes/baggy/img/apple-touch-icon-57.png
+++ b/themes/_global/img/appicon/apple-touch-icon-57.png
Binary files differ
diff --git a/themes/baggy/img/apple-touch-icon-72.png b/themes/_global/img/appicon/apple-touch-icon-72.png
index b8b48e1b..b8b48e1b 100755
--- a/themes/baggy/img/apple-touch-icon-72.png
+++ b/themes/_global/img/appicon/apple-touch-icon-72.png
Binary files differ
diff --git a/themes/baggy/img/apple-touch-icon-76.png b/themes/_global/img/appicon/apple-touch-icon-76.png
index 9f9dba27..9f9dba27 100755
--- a/themes/baggy/img/apple-touch-icon-76.png
+++ b/themes/_global/img/appicon/apple-touch-icon-76.png
Binary files differ
diff --git a/themes/baggy/img/apple-touch-icon.png b/themes/_global/img/appicon/apple-touch-icon.png
index 9cf29e2b..9cf29e2b 100755
--- a/themes/baggy/img/apple-touch-icon.png
+++ b/themes/_global/img/appicon/apple-touch-icon.png
Binary files differ
diff --git a/themes/baggy/img/favicon.ico b/themes/_global/img/appicon/favicon.ico
index 0346558b..0346558b 100755
--- a/themes/baggy/img/favicon.ico
+++ b/themes/_global/img/appicon/favicon.ico
Binary files differ
diff --git a/themes/_global/img/icons/carrot-icon--black.png b/themes/_global/img/icons/carrot-icon--black.png
new file mode 100644
index 00000000..6da7925b
--- /dev/null
+++ b/themes/_global/img/icons/carrot-icon--black.png
Binary files differ
diff --git a/themes/_global/img/icons/carrot-icon--white.png b/themes/_global/img/icons/carrot-icon--white.png
new file mode 100644
index 00000000..a70044b6
--- /dev/null
+++ b/themes/_global/img/icons/carrot-icon--white.png
Binary files differ
diff --git a/themes/_global/img/icons/diaspora-icon--black.png b/themes/_global/img/icons/diaspora-icon--black.png
new file mode 100644
index 00000000..32bca194
--- /dev/null
+++ b/themes/_global/img/icons/diaspora-icon--black.png
Binary files differ
diff --git a/themes/_global/img/icons/diaspora-icon--white.png b/themes/_global/img/icons/diaspora-icon--white.png
new file mode 100644
index 00000000..fc48d47c
--- /dev/null
+++ b/themes/_global/img/icons/diaspora-icon--white.png
Binary files differ
diff --git a/themes/default/js/autoClose.js b/themes/_global/js/autoClose.js
index e9145b7e..e9145b7e 100644
--- a/themes/default/js/autoClose.js
+++ b/themes/_global/js/autoClose.js
diff --git a/themes/default/js/autoCompleteTags.js b/themes/_global/js/autoCompleteTags.js
index 90bc982c..90bc982c 100755
--- a/themes/default/js/autoCompleteTags.js
+++ b/themes/_global/js/autoCompleteTags.js
diff --git a/themes/default/js/jquery-2.0.3.min.js b/themes/_global/js/jquery-2.0.3.min.js
index a4dd0a2f..a4dd0a2f 100644
--- a/themes/default/js/jquery-2.0.3.min.js
+++ b/themes/_global/js/jquery-2.0.3.min.js
diff --git a/themes/default/js/jquery-ui-1.10.4.custom.js b/themes/_global/js/jquery-ui-1.10.4.custom.js
index 6f599fca..6f599fca 100644
--- a/themes/default/js/jquery-ui-1.10.4.custom.js
+++ b/themes/_global/js/jquery-ui-1.10.4.custom.js
diff --git a/themes/default/js/jquery-ui-1.10.4.custom.min.js b/themes/_global/js/jquery-ui-1.10.4.custom.min.js
index 31635026..31635026 100644
--- a/themes/default/js/jquery-ui-1.10.4.custom.min.js
+++ b/themes/_global/js/jquery-ui-1.10.4.custom.min.js
diff --git a/themes/_global/js/popupForm.js b/themes/_global/js/popupForm.js
new file mode 100644
index 00000000..d233e600
--- /dev/null
+++ b/themes/_global/js/popupForm.js
@@ -0,0 +1,72 @@
1$(document).ready(function() {
2
3 $("#search-form").hide();
4 $("#bagit-form").hide();
5
6 //---------------------------------------------------------------------------
7 // Toggle the "Search" popup in the sidebar
8 //---------------------------------------------------------------------------
9 function toggleSearch() {
10 $("#search-form").toggle();
11 $("#search").toggleClass("current");
12 $("#search").toggleClass("active-current");
13 $("#search-arrow").toggleClass("arrow-down");
14 if ($("#search").hasClass("current")) {
15 $("#content").addClass("opacity03");
16 } else {
17 $("#content").removeClass("opacity03");
18 }
19 }
20
21 //---------------------------------------------------------------------------
22 // Toggle the "Save a Link" popup in the sidebar
23 //---------------------------------------------------------------------------
24 function toggleBagit() {
25 $("#bagit-form").toggle();
26 $("#bagit").toggleClass("current");
27 $("#bagit").toggleClass("active-current");
28 $("#bagit-arrow").toggleClass("arrow-down");
29 if ($("#bagit").hasClass("current")) {
30 $("#content").addClass("opacity03");
31 } else {
32 $("#content").removeClass("opacity03");
33 }
34 }
35
36 //---------------------------------------------------------------------------
37 // Close all #links popups in the sidebar
38 //---------------------------------------------------------------------------
39 function closePopups() {
40 $("#links .messages").hide();
41 $("#links > li > a").removeClass("active-current");
42 $("#links > li > a").removeClass("current");
43 $("[id$=-arrow]").removeClass("arrow-down");
44 $("#content").removeClass("opacity03");
45 }
46
47 $("#search").click(function(){
48 closePopups();
49 toggleSearch();
50 $("#searchfield").focus();
51 });
52
53 $("#bagit").click(function(){
54 closePopups();
55 toggleBagit();
56 $("#plainurl").focus();
57 });
58
59 $("#search-form-close").click(function(){
60 toggleSearch();
61 });
62
63 $("#bagit-form-close").click(function(){
64 toggleBagit();
65 });
66
67 // $("#").click(function(){
68 // toggleSearch();
69 // });
70
71
72});
diff --git a/themes/courgette/js/restoreScroll.js b/themes/_global/js/restoreScroll.js
index 331c9e19..331c9e19 100755..100644
--- a/themes/courgette/js/restoreScroll.js
+++ b/themes/_global/js/restoreScroll.js
diff --git a/themes/default/js/saveLink.js b/themes/_global/js/saveLink.js
index 6dbce97e..a7acd84c 100755
--- a/themes/default/js/saveLink.js
+++ b/themes/_global/js/saveLink.js
@@ -13,7 +13,7 @@ $.fn.ready(function() {
13 13
14 $bagit.toggleClass("active-current"); 14 $bagit.toggleClass("active-current");
15 15
16 //only if bagiti link is not presented on page 16 //only if bag-it link is not presented on page
17 if ( $bagit.length === 0 ) { 17 if ( $bagit.length === 0 ) {
18 if ( event !== 'undefined' && event ) { 18 if ( event !== 'undefined' && event ) {
19 $bagitForm.css( {position:"absolute", top:event.pageY, left:event.pageX-200}); 19 $bagitForm.css( {position:"absolute", top:event.pageY, left:event.pageX-200});
@@ -23,6 +23,11 @@ $.fn.ready(function() {
23 } 23 }
24 } 24 }
25 25
26 if ($("#search-form").length != 0) {
27 $("#search").removeClass("current");
28 $("#search-arrow").removeClass("arrow-down");
29 $("#search-form").hide();
30 }
26 $bagitForm.toggle(); 31 $bagitForm.toggle();
27 $('#content').toggleClass("opacity03"); 32 $('#content').toggleClass("opacity03");
28 if (url !== 'undefined' && url) { 33 if (url !== 'undefined' && url) {
@@ -31,18 +36,21 @@ $.fn.ready(function() {
31 $('#plainurl').focus(); 36 $('#plainurl').focus();
32 } 37 }
33 38
34 39 //---------------------------------------------------------------------------
35 $bagit.click(function(){ 40 // These two functions are now taken care of in popupForm.js
36 $bagit.toggleClass("current"); 41 //---------------------------------------------------------------------------
37 $("#bagit-arrow").toggleClass("arrow-down"); 42
38 toggleSaveLinkForm(); 43 // $bagit.click(function(){
39 }); 44 // $bagit.toggleClass("current");
40 45 // $("#bagit-arrow").toggleClass("arrow-down");
41 $("#bagit-form-close").click(function(){ 46 // toggleSaveLinkForm();
42 $bagit.removeClass("current"); 47 // });
43 $("#bagit-arrow").removeClass("arrow-down"); 48
44 toggleSaveLinkForm(); 49 // $("#bagit-form-close").click(function(){
45 }); 50 // $bagit.removeClass("current");
51 // $("#bagit-arrow").removeClass("arrow-down");
52 // toggleSaveLinkForm();
53 // });
46 54
47 55
48 //send "bag it link" form request via ajax 56 //send "bag it link" form request via ajax
diff --git a/themes/baggy/_head.twig b/themes/baggy/_head.twig
index be11673f..a88d4186 100755
--- a/themes/baggy/_head.twig
+++ b/themes/baggy/_head.twig
@@ -1,16 +1,39 @@
1 <link rel="shortcut icon" type="image/x-icon" href="{{ poche_url }}themes/{{theme}}/img/favicon.ico" /> 1 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-152.png" sizes="152x152">
2 <link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ poche_url }}themes/{{theme}}/img/apple-touch-icon-144x144-precomposed.png"> 2 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-152.png" sizes="152x152">
3 <link rel="apple-touch-icon-precomposed" sizes="72x72" href="{{ poche_url }}themes/{{theme}}/img/apple-touch-icon-72x72-precomposed.png"> 3
4 <link rel="apple-touch-icon-precomposed" href="{{ poche_url }}themes/{{theme}}/img/apple-touch-icon-precomposed.png"> 4 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-144.png" sizes="144x144">
5 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-144.png" sizes="144x144">
6
7 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-120.png" sizes="120x120">
8 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-120.png" sizes="120x120">
9
10 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-114.png" sizes="114x114">
11 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-114.png" sizes="114x114">
12
13 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-76.png" sizes="76x76">
14 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-76.png" sizes="76x76">
15
16 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-72.png" sizes="72x72">
17 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-72.png" sizes="72x72">
18
19 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-57.png" sizes="57x57">
20 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-57.png" sizes="57x57">
21
22 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon.png">
23 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon.png">
24
25 <link rel="shortcut icon" type="image/x-icon" href="{{ poche_url }}themes/_global/img/appicon/favicon.ico" sizes="16x16">
26
5 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/ratatouille.css" media="all"> 27 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/ratatouille.css" media="all">
6 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/font.css" media="all"> 28 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/font.css" media="all">
7 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/main.css" media="all"> 29 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/main.css" media="all">
8 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/messages.css" media="all"> 30 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/messages.css" media="all">
9 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/print.css" media="print"> 31 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/print.css" media="print">
10 <script src="{{ poche_url }}themes/default/js/jquery-2.0.3.min.js"></script> 32
11 <script src="{{ poche_url }}themes/default/js/autoClose.js"></script> 33 <script src="{{ poche_url }}themes/_global/js/jquery-2.0.3.min.js"></script>
34 <script src="{{ poche_url }}themes/_global/js/autoClose.js"></script>
12 <script src="{{ poche_url }}themes/{{theme}}/js/jquery.cookie.js"></script> 35 <script src="{{ poche_url }}themes/{{theme}}/js/jquery.cookie.js"></script>
13 <script src="{{ poche_url }}themes/{{theme}}/js/init.js"></script> 36 <script src="{{ poche_url }}themes/{{theme}}/js/init.js"></script>
14 <script src="{{ poche_url }}themes/default/js/saveLink.js"></script> 37 <script src="{{ poche_url }}themes/_global/js/saveLink.js"></script>
15 <script src="{{ poche_url }}themes/default/js/popupForm.js"></script> 38 <script src="{{ poche_url }}themes/_global/js/popupForm.js"></script>
16 <script src="{{ poche_url }}themes/{{theme}}/js/closeMessage.js"></script> 39 <script src="{{ poche_url }}themes/{{theme}}/js/closeMessage.js"></script>
diff --git a/themes/baggy/_menu.twig b/themes/baggy/_menu.twig
index 59b6a46b..8b80f65d 100644
--- a/themes/baggy/_menu.twig
+++ b/themes/baggy/_menu.twig
@@ -11,6 +11,7 @@
11 {% include '_search-form.twig' %} 11 {% include '_search-form.twig' %}
12 </li> 12 </li>
13 <li><a href="./?view=config" {% if view == 'config' %}class="current"{% endif %}>{% trans "config" %}</a></li> 13 <li><a href="./?view=config" {% if view == 'config' %}class="current"{% endif %}>{% trans "config" %}</a></li>
14 <li><a href="./?view=about" {% if view == 'about' %}class="current"{% endif %}>{% trans "about" %}</a></li>
14 <li><a class="icon icon-power" href="./?logout" title="{% trans "logout" %}">{% trans "logout" %}</a></li> 15 <li><a class="icon icon-power" href="./?logout" title="{% trans "logout" %}">{% trans "logout" %}</a></li>
15 </ul> 16 </ul>
16 17
diff --git a/themes/baggy/_pocheit-form.twig b/themes/baggy/_pocheit-form.twig
index 505ec368..bf2ae903 100755
--- a/themes/baggy/_pocheit-form.twig
+++ b/themes/baggy/_pocheit-form.twig
@@ -1,10 +1,10 @@
1<div id="bagit-form" class="messages info"> 1<div id="bagit-form" class="messages info popup-form">
2 <form method="get" action="index.php" target="_blank" id="bagit-form-form"> 2 <form method="get" action="index.php" target="_blank" id="bagit-form-form">
3 <h2><a href="javascript: void(null);" id="bagit-form-close">X</a> 3 <h2>{% trans "Save a link" %}</h2>
4 {% trans "Save a link" %}</h2> 4 <a href="javascript: void(null);" id="bagit-form-close" class="close-button--popup close-button">&times;</a>
5 <input type="hidden" name="autoclose" value="1" /> 5 <input type="hidden" name="autoclose" value="1" />
6 <input required placeholder="example.com/article" class="addurl" id="plainurl" name="plainurl" type="url" /> 6 <input required placeholder="example.com/article" class="addurl" id="plainurl" name="plainurl" type="url" />
7 <span id="add-link-result"></span>
7 <input type="submit" value="{% trans "save link!" %}" /> 8 <input type="submit" value="{% trans "save link!" %}" />
8 <div id="add-link-result"></div>
9 </form> 9 </form>
10</div> 10</div>
diff --git a/themes/baggy/_search-form.twig b/themes/baggy/_search-form.twig
index b8ac3bfa..73f7951f 100644
--- a/themes/baggy/_search-form.twig
+++ b/themes/baggy/_search-form.twig
@@ -1,7 +1,9 @@
1<div id="search-form" class="messages info"> 1<div id="search-form" class="messages info popup-form">
2<form method="get" action="index.php"> 2<form method="get" action="index.php">
3 <h2>{%trans "Search" %}</h2>
4 <a href="javascript: void(null);" id="search-form-close" class="close-button--popup close-button">&times;</a>
3 <input type="hidden" name="view" value="search"></input> 5 <input type="hidden" name="view" value="search"></input>
4 <label><a href="javascript: void(null);" id="search-form-close">X</a>{% trans "Search" %}</label> : <input type="text" name="search" /> 6 <input required placeholder="{% trans "Enter your search here" %}" type="text" name="search" id="searchfield"><br>
5 <input id="submit-search" type="submit" value="{% trans "Search" %} !"></input> 7 <input id="submit-search" type="submit" value="{% trans "Search" %}"></input>
6</form> 8</form>
7</div> \ No newline at end of file 9</div>
diff --git a/themes/baggy/about.twig b/themes/baggy/about.twig
new file mode 100755
index 00000000..7e19a900
--- /dev/null
+++ b/themes/baggy/about.twig
@@ -0,0 +1,74 @@
1{% extends "layout.twig" %}
2
3{% block title %}{% trans "About" %}{% endblock %}
4{% block menu %}
5{% include '_menu.twig' %}
6{% endblock %}
7{% block content %}
8 <h2>{% trans "About wallabag" %}</h2>
9
10 <dl>
11 <dt>{% trans "Project website" %}</dt>
12 <dd><a href="http://www.wallabag.org">http://www.wallabag.org</a></dd>
13
14 <dt>{% trans "Main developer" %}</dt>
15 <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{% trans "website" %}</a></dd>
16
17 <dt>{% trans "Contributors:" %}</dt>
18 <dd><a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans "on Github" %}</a></dd>
19
20 <dt>{% trans "Bug reports" %}</dt>
21 <dd><a href="http://support.wallabag.org">{% trans "On our support website" %}</a> {% trans "or" %} <a href="https://github.com/wallabag/wallabag/issues">{% trans "on Github" %}</a></dd>
22
23 <dt>{% trans "License" %}</dt>
24 <dd><a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dd>
25
26 <dt>{% trans "Version" %}</dt>
27 <dd>{{ constant('POCHE') }}</dd>
28 </dl>
29
30 <p>{% trans "wallabag is a read-it-later application: you can save a web page by keeping only content. Elements like ads or menus are deleted." %}</p>
31
32 <h2>{% trans "Helping wallabag" %}</h2>
33
34 <p>{% trans "wallabag is free and opensource. You can help us:" %}</p>
35
36 <dl>
37 <dt><a href="http://www.wallabag.org">{% trans "via Paypal" %}</a></dt>
38
39 <dt><a href="http://www.wallabag.org">{% trans "via Flattr" %}</a></dt>
40 </dl>
41
42 <h2>{% trans "Credits" %}</h2>
43 <dl>
44 <dt>PHP Readability</dt>
45 <dd><a href="https://bitbucket.org/fivefilters/php-readability">https://bitbucket.org/fivefilters/php-readability</a></dd>
46
47 <dt>Full Text RSS</dt>
48 <dd><a href="http://code.fivefilters.org/full-text-rss/src">http://code.fivefilters.org/full-text-rss/src</a></dd>
49
50 <dt>logo by Maylis Agniel</dt>
51 <dd><a href="https://github.com/wallabag/logo">https://github.com/wallabag/logo</a></dd>
52
53 <dt>icons</dt>
54 <dd><a href="http://icomoon.io">http://icomoon.io</a></dd>
55
56 <dt>PHP Simple HTML DOM Parser</dt>
57 <dd><a href="http://simplehtmldom.sourceforge.net/">http://simplehtmldom.sourceforge.net/</a></dd>
58
59 <dt>Session</dt>
60 <dd><a href="https://github.com/tontof/kriss_feed/blob/master/src/class/Session.php">https://github.com/tontof/kriss_feed/blob/master/src/class/Session.php</a></dd>
61
62 <dt>Twig</dt>
63 <dd><a href="http://twig.sensiolabs.org">http://twig.sensiolabs.org</a></dd>
64
65 <dt>Flash messages</dt>
66 <dd><a href="https://github.com/plasticbrain/PHP-Flash-Messages">https://github.com/plasticbrain/PHP-Flash-Messages</a></dd>
67
68 <dt>Pagination</dt>
69 <dd><a href="https://github.com/daveismyname/pagination">https://github.com/daveismyname/pagination</a></dd>
70
71 <dt>PHPePub</dt>
72 <dd><a href="https://github.com/Grandt/PHPePub/">https://github.com/Grandt/PHPePub/</a></dd>
73 </dl>
74{% endblock %}
diff --git a/themes/baggy/config.twig b/themes/baggy/config.twig
index dda05c29..a5a61559 100755
--- a/themes/baggy/config.twig
+++ b/themes/baggy/config.twig
@@ -6,30 +6,29 @@
6{% endblock %} 6{% endblock %}
7{% block content %} 7{% block content %}
8 <h2>{% trans "Saving articles" %}</h2> 8 <h2>{% trans "Saving articles" %}</h2>
9 <p>{% trans "There are several ways to save an article:" %} (<a href="http://doc.wallabag.org/" title="{% trans "read the documentation" %}">?</a>)</p> 9 <p>{% trans "There are several ways to save an article:" %} {% trans "(<a href=\"http://doc.wallabag.org/en/User_documentation/Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)" %}</p>
10 <p>
11 <form method="get" action="index.php">
12 <label class="addurl" for="config_plainurl">{% trans "By filling this field" %}:</label><br>
13 <input required placeholder="example.com/article" class="addurl" id="config_plainurl" name="plainurl" type="url" />
14 <input type="submit" value="{% trans "bag it!" %}" />
15 </form>
16 </p>
17 <h3>Browser Plugins</h3>
10 <ul> 18 <ul>
11 <li>Firefox: <a href="https://addons.mozilla.org/firefox/addon/wallabag/" title="download the firefox extension">{% trans "download the extension" %}</a></li> 19 <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans "Firefox Add-On" %}</a></li>
12 <li>Chrome: <a href="http://doc.wallabag.org/doku.php?id=users:chrome_extension" title="download the chrome extension">{% trans "download the extension" %}</a></li> 20 <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans "Chrome Extension" %}</a></li>
13 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" title="download the application">{% trans "via F-Droid" %}</a> {% trans " or " %} <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" title="download the application">{% trans "via Google Play" %}</a></li>
14 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" title="download the iOS application">{% trans "download the application" %}</a></li>
15 <li>Windows Phone: <a href="http://www.windowsphone.com/en-us/store/app/wallabag/ff890514-348c-4d0b-9b43-153fff3f7450" title="download the window phone application">{% trans "download the application" %}</a></li>
16 <li>
17 <form method="get" action="index.php">
18 <label class="addurl" for="config_plainurl">{% trans "By filling this field" %}:</label>
19 <input required placeholder="example.com/article" class="addurl" id="config_plainurl" name="plainurl" type="url" />
20 <input type="submit" value="{% trans "bag it!" %}" />
21 </form>
22 </li>
23 <li>{% trans "Bookmarklet: drag &amp; drop this link to your bookmarks bar" %} <a id="bookmarklet" ondragend="this.click();" title="i am a bookmarklet, use me !" href="javascript:if(top['bookmarklet-url@wallabag.org']){top['bookmarklet-url@wallabag.org'];}else{(function(){var%20url%20=%20location.href%20||%20url;window.open('{{ poche_url }}?action=add&url='%20+%20btoa(url),'_self');})();void(0);}">{% trans "bag it!" %}</a></li>
24 </ul> 21 </ul>
25 22 <h3>Mobile Apps</h3>
26 <h2>{% trans "Upgrading wallabag" %}</h2>
27 <ul> 23 <ul>
28 <li>{% trans "Installed version" %} : <strong>{{ constant('POCHE') }}</strong></li> 24 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" target="_blank">{% trans "via F-Droid" %}</a> {% trans " or " %} <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" target="_blank">{% trans "via Google Play" %}</a></li>
29 <li>{% trans "Latest stable version" %} : {{ prod }}. {% if compare_prod == -1 %}<strong><a href="http://wallabag.org/">{% trans "A more recent stable version is available." %}</a></strong>{% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_prod }})</li> 25 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{% trans "download the application" %}</a></li>
30 {% if constant('DEBUG_POCHE') == 1 %}<li>{% trans "Latest dev version" %} : {{ dev }}. {% if compare_dev == -1 %}<strong><a href="http://wallabag.org/">{% trans "A more recent development version is available." %}</a></strong>{% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_dev }}){% endif %}</li> 26 <li>Windows Phone: <a href="http://www.windowsphone.com/en-us/store/app/wallabag/ff890514-348c-4d0b-9b43-153fff3f7450" target="_blank">{% trans "download the application" %}</a></li>
31 </ul> 27 </ul>
32 <p>{% trans "You can clear cache to check the latest release." %}</p> 28 <h3>{% trans "Bookmarklet" %}</h3>
29 <p>
30 {% trans "Drag &amp; drop this link to your bookmarks bar:" %} <a id="bookmarklet" ondragend="this.click();" href="javascript:if(top['bookmarklet-url@wallabag.org']){top['bookmarklet-url@wallabag.org'];}else{(function(){var%20url%20=%20location.href%20||%20url;window.open('{{ poche_url }}?action=add&url='%20+%20btoa(url),'_self');})();void(0);}">{% trans "bag it!" %}</a>
31 </p>
33 32
34 <h2>{% trans "Feeds" %}</h2> 33 <h2>{% trans "Feeds" %}</h2>
35 {% if token == '' %} 34 {% if token == '' %}
@@ -40,9 +39,11 @@
40 <li><a href="?feed&amp;type=fav&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Favorites feed" %}</a></li> 39 <li><a href="?feed&amp;type=fav&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Favorites feed" %}</a></li>
41 <li><a href="?feed&amp;type=archive&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Archive feed" %}</a></li> 40 <li><a href="?feed&amp;type=archive&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Archive feed" %}</a></li>
42 </ul> 41 </ul>
43 <p>{% trans "Your token:" %} <strong>{{token}}</strong></p> 42 <p class="more-info">
44 <p>{% trans "Your user id:" %} <strong>{{user_id}}</strong></p> 43 {% trans "Your token:" %} <strong>{{token}}</strong><br>
45 <p>{% trans "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>." %}</p> 44 {% trans "Your user id:" %} <strong>{{user_id}}</strong><br>
45 {% trans "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>." %}
46 </p>
46 {% endif %} 47 {% endif %}
47 48
48 <h2>{% trans "Change your theme" %}</h2> 49 <h2>{% trans "Change your theme" %}</h2>
@@ -83,35 +84,14 @@
83 <input type="hidden" name="token" value="{{ token }}"> 84 <input type="hidden" name="token" value="{{ token }}">
84 </form> 85 </form>
85 86
86 {% if http_auth == 0 %} 87 <h2><a name="import"></a>{% trans "Import" %}</h2>
87 <h2>{% trans "Change your password" %}</h2>
88 <form method="post" action="?config" name="loginform">
89 <fieldset class="w500p">
90 <div class="row">
91 <label class="col w150p" for="password">{% trans "New password:" %}</label>
92 <input class="col" type="password" id="password" name="password" placeholder="{% trans "Password" %}" tabindex="2">
93 </div>
94 <div class="row">
95 <label class="col w150p" for="password_repeat">{% trans "Repeat your new password:" %}</label>
96 <input class="col" type="password" id="password_repeat" name="password_repeat" placeholder="{% trans "Password" %}" tabindex="3">
97 </div>
98 <div class="row mts txtcenter">
99 <button class="bouton" type="submit" tabindex="4">{% trans "Update" %}</button>
100 </div>
101 </fieldset>
102 <input type="hidden" name="returnurl" value="{{ referer }}">
103 <input type="hidden" name="token" value="{{ token }}">
104 </form>
105 {% endif %}
106
107 <h2>{% trans "Import" %}</h2>
108 <p>{% trans "You can import your Pocket, Readability, Instapaper, Wallabag or any data in appropriate json or html format." %}</p> 88 <p>{% trans "You can import your Pocket, Readability, Instapaper, Wallabag or any data in appropriate json or html format." %}</p>
109 <p>{% trans "Please select export file on your computer and press \"Import\" button below.<br>Wallabag will parse your file, insert all URLs and start fetching of articles if required.<br>Fetching process is controlled by two constants in your config file: IMPORT_LIMIT (how many articles are fetched at once) and IMPORT_DELAY (delay between fetch of next batch of articles)." %}</p> 89 <p>{% trans "Please select export file on your computer and press \"Import\" button below. Wallabag will parse your file, insert all URLs and start fetching of articles if required." %}</p>
110 <form method="post" action="?import" name="uploadfile" enctype="multipart/form-data"> 90 <form method="post" action="?import" name="uploadfile" enctype="multipart/form-data">
111 <fieldset class="w500p"> 91 <fieldset class="w500p">
112 <div class="row"> 92 <div class="row">
113 <label class="col w150p" for="file">{% trans "File:" %}</label> 93 <label class="col w150p" for="file">{% trans "File:" %}</label>
114 <input class="col" type="file" id="file" name="file" tabindex="4"> 94 <input class="col" type="file" id="file" name="file" tabindex="4" required="required">
115 </div> 95 </div>
116 <div class="row mts txtcenter"> 96 <div class="row mts txtcenter">
117 <button class="bouton" type="submit" tabindex="4">{% trans "Import" %}</button> 97 <button class="bouton" type="submit" tabindex="4">{% trans "Import" %}</button>
@@ -119,12 +99,12 @@
119 </fieldset> 99 </fieldset>
120 </form> 100 </form>
121 <p><a href="?import">{% trans "You can click here to fetch content for articles with no content." %}</a></p> 101 <p><a href="?import">{% trans "You can click here to fetch content for articles with no content." %}</a></p>
122 102 <p class="more-info">{% trans "Fetching process is controlled by two constants in your config file: IMPORT_LIMIT (how many articles are fetched at once) and IMPORT_DELAY (delay between fetch of next batch of articles)." %}</p>
103
123 <h2>{% trans "Export your wallabag data" %}</h2> 104 <h2>{% trans "Export your wallabag data" %}</h2>
124 {% if constant('STORAGE') == 'sqlite' %} 105 <p><a href="?export" target="_blank">{% trans "Export JSON" %}</a><br>
125 <p><a href="?download" target="_blank">{% trans "Click here" %}</a> {% trans "to download your database." %}</p>{% endif %} 106 <span class="more-info">Data will be exported in a single JSON file.</span></p>
126 <p><a href="?export" target="_blank">{% trans "Click here" %}</a> {% trans "to export your wallabag data." %}</p> 107
127
128 <h2>{% trans "Fancy an E-Book ?" %}</h2> 108 <h2>{% trans "Fancy an E-Book ?" %}</h2>
129 <p>{% trans "Click to get all your articles in one ebook :" %} 109 <p>{% trans "Click to get all your articles in one ebook :" %}
130 <ul> 110 <ul>
@@ -133,25 +113,50 @@
133 <li><a href="./?pdf&amp;method=all" title="{% trans 'Generate PDF file' %}">PDF</a></li> 113 <li><a href="./?pdf&amp;method=all" title="{% trans 'Generate PDF file' %}">PDF</a></li>
134 </ul> 114 </ul>
135 115
136 <br>{% trans "This can <b>take a while</b> and can <b>even fail</b> if you have too many articles, depending on your server configuration." %}</p> 116 <span class="more-info">{% trans "This can <b>take a while</b> and can <b>even fail</b> if you have too many articles, depending on your server configuration." %}</span></p>
137 117
138 <h2>{% trans "Cache" %}</h2> 118 <h2><a name="cache"></a>{% trans "Cache" %}</h2>
139 <p><a href="?empty-cache">{% trans "Click here" %}</a> {% trans "to delete cache." %}</p> 119 <p><a href="?empty-cache">{% trans "Delete Cache" %}</a><br>
120 <span class="more-info">Deleting the cache may help with display or other problems.</span></p>
121
122 {% if http_auth == 0 %}
123 <h2>{% trans "Change your password" %}</h2>
124 <form method="post" action="?config" name="loginform">
125 <fieldset class="w500p">
126 <div class="row">
127 <label class="col w150p" for="password">{% trans "New password:" %}</label>
128 <input class="col" type="password" id="password" name="password" placeholder="{% trans "Password" %}" tabindex="2">
129 </div>
130 <div class="row">
131 <label class="col w150p" for="password_repeat">{% trans "Repeat your new password:" %}</label>
132 <input class="col" type="password" id="password_repeat" name="password_repeat" placeholder="{% trans "Password" %}" tabindex="3">
133 </div>
134 <div class="row mts txtcenter">
135 <button class="bouton" type="submit" tabindex="4">{% trans "Update" %}</button>
136 </div>
137 </fieldset>
138 <input type="hidden" name="returnurl" value="{{ referer }}">
139 <input type="hidden" name="token" value="{{ token }}">
140 </form>
141 {% endif %}
140 142
141 <h2>{% trans 'Add user' %}</h2> 143 <h2>{% trans 'Add user' %}</h2>
142 <p>{% trans 'Add a new user :' %}</p>
143 <form method="post" action="?newuser"> 144 <form method="post" action="?newuser">
144 <fieldset class="w500p"> 145 <fieldset class="w500p">
145 <div class="row"> 146 <div class="row">
146 <label class="col w150p" for="newusername">{% trans 'Login for new user' %}</label> 147 <label class="col w150p" for="newusername">{% trans 'Login for new user' %}</label>
147 <input class="col" type="text" id="newusername" name="newusername" placeholder="{% trans 'Login' %}"> 148 <input class="col" type="text" id="newusername" name="newusername" placeholder="{% trans 'Login' %}" required>
148 </div> 149 </div>
149 <div class="row"> 150 <div class="row">
150 <label class="col w150p" for="password4newuser">{% trans "Password for new user" %}</label> 151 <label class="col w150p" for="password4newuser">{% trans "Password for new user" %}</label>
151 <input class="col" type="password" id="password4newuser" name="password4newuser" placeholder="{% trans "Password" %}"> 152 <input class="col" type="password" id="password4newuser" name="password4newuser" placeholder="{% trans 'Password' %}" required>
153 </div>
154 <div class="row">
155 <label class="col w150p" for="newuseremail">{% trans 'Email for new user (not required)' %}</label>
156 <input class="col" type="email" id="newuseremail" name="newuseremail" placeholder="{% trans 'Email' %}">
152 </div> 157 </div>
153 <div class="row mts txtcenter"> 158 <div class="row mts txtcenter">
154 <button type="submit">{% trans "Send" %}</button> 159 <button type="submit">{% trans "Add user" %}</button>
155 </div> 160 </div>
156 </fieldset> 161 </fieldset>
157 </form> 162 </form>
@@ -165,9 +170,18 @@
165 <input class="col" type="password" id="password4deletinguser" name="password4deletinguser" placeholder="{% trans "Password" %}"> 170 <input class="col" type="password" id="password4deletinguser" name="password4deletinguser" placeholder="{% trans "Password" %}">
166 </div> 171 </div>
167 <div class="row mts txtcenter"> 172 <div class="row mts txtcenter">
168 <button type="submit">{% trans "Send" %}</button> 173 <button type="submit">{% trans "Delete account" %}</button>
169 </div> 174 </div>
170 </form> 175 </form>
171 {% else %}<p>{% trans "You are the only user, you cannot delete your own account." %}<br /> 176 {% else %}<p>{% trans "You are the only user, you cannot delete your own account." %}</p>
172 {% trans "To completely remove wallabag, delete the wallabag folder on your web server." %}</p>{% endif %} 177 <p>{% trans "To completely remove wallabag, delete the wallabag folder on your web server (and eventual databases)." %}</p>{% endif %}
178
179 <h2>{% trans "Upgrading wallabag" %}</h2>
180 <ul>
181 <li>{% trans "Installed version" %}: <strong>{{ constant('POCHE') }}</strong></li>
182 <li>{% trans "Latest stable version" %}: {{ prod }}. {% if compare_prod == -1 %}<strong><a href="http://wallabag.org/">{% trans "A more recent stable version is available." %}</a></strong>{% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_prod }})</li>
183 {% if constant('DEBUG_POCHE') == 1 %}<li>{% trans "Latest dev version" %}: {{ dev }}. {% if compare_dev == -1 %}<strong><a href="http://wallabag.org/">{% trans "A more recent development version is available." %}</a></strong>{% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_dev }}){% endif %}</li>
184 </ul>
185 <p class="more-info">{% trans "You can clear cache to check the latest release." %}</p>
186
173{% endblock %} 187{% endblock %}
diff --git a/themes/baggy/css/main.css b/themes/baggy/css/main.css
index 6d320cd2..1df82910 100755
--- a/themes/baggy/css/main.css
+++ b/themes/baggy/css/main.css
@@ -15,11 +15,11 @@ html {
15} 15}
16 16
17body { 17body {
18 background: #EEE; 18 background-color: #EEE;
19} 19}
20 20
21.login { 21.login {
22 background: #333; 22 background-color: #333;
23} 23}
24 24
25.login #main { 25.login #main {
@@ -28,7 +28,7 @@ body {
28} 28}
29 29
30.login form { 30.login form {
31 background: #FFF; 31 background-color: #FFF;
32 padding: 1.5em; 32 padding: 1.5em;
33 box-shadow: 0 1px 8px rgba(0,0,0,0.9); 33 box-shadow: 0 1px 8px rgba(0,0,0,0.9);
34 width: 20em; 34 width: 20em;
@@ -51,7 +51,7 @@ body {
51 51
52::selection { 52::selection {
53 color: #FFF; 53 color: #FFF;
54 background: #000; 54 background-color: #000;
55} 55}
56 56
57.desktopHide { 57.desktopHide {
@@ -70,7 +70,7 @@ h2, h3, h4 {
70 text-transform: uppercase; 70 text-transform: uppercase;
71} 71}
72 72
73p, li { 73p, li, label {
74 color: #666; 74 color: #666;
75} 75}
76 76
@@ -89,7 +89,7 @@ form fieldset {
89 margin: 0; 89 margin: 0;
90} 90}
91 91
92form input[type="text"], select, form input[type="password"], form input[type="url"] { 92form input[type="text"], select, form input[type="password"], form input[type="url"], form input[type="email"] {
93 border: 1px solid #999; 93 border: 1px solid #999;
94 padding: 0.5em 1em; 94 padding: 0.5em 1em;
95 min-width: 12em; 95 min-width: 12em;
@@ -104,10 +104,6 @@ form input[type="text"], select, form input[type="password"], form input[type="u
104 } 104 }
105} 105}
106 106
107fieldset label {
108 min-width: 12.5em;
109}
110
111.inline .row { 107.inline .row {
112 display: inline-block; 108 display: inline-block;
113 margin-right: 0.5em; 109 margin-right: 0.5em;
@@ -119,17 +115,21 @@ fieldset label {
119 115
120fieldset label { 116fieldset label {
121 display: inline-block; 117 display: inline-block;
122 margin-right: 0.5em; 118 min-width: 12.5em;
123 color: #666; 119 color: #666;
124} 120}
125 121
122label {
123 margin-right: 0.5em;
124}
125
126form .row { 126form .row {
127 margin-bottom: 0.5em; 127 margin-bottom: 0.5em;
128} 128}
129 129
130form button, input[type="submit"] { 130form button, input[type="submit"] {
131 cursor:pointer; 131 cursor:pointer;
132 background: #000; 132 background-color: #000;
133 color: #FFF; 133 color: #FFF;
134 border:0; 134 border:0;
135 padding: 0.5em 1em; 135 padding: 0.5em 1em;
@@ -138,7 +138,7 @@ form button, input[type="submit"] {
138} 138}
139 139
140 form button:hover, form button:focus, input[type="submit"]:hover, input[type="submit"]:focus { 140 form button:hover, form button:focus, input[type="submit"]:hover, input[type="submit"]:focus {
141 background: #FFF; 141 background-color: #FFF;
142 color: #000; 142 color: #000;
143 -webkit-transition: all 0.5s ease; 143 -webkit-transition: all 0.5s ease;
144 -moz-transition: all 0.5s ease; 144 -moz-transition: all 0.5s ease;
@@ -155,7 +155,7 @@ h2:after {
155 content: ""; 155 content: "";
156 height: 4px; 156 height: 4px;
157 width: 70px; 157 width: 70px;
158 background: #000; 158 background-color: #000;
159 display: block; 159 display: block;
160} 160}
161 161
@@ -176,11 +176,11 @@ h2:after {
176 width: 10em; 176 width: 10em;
177 left: 0; 177 left: 0;
178 text-align: right; 178 text-align: right;
179 background: #333; 179 background-color: #333;
180 padding-top: 9.5em; 180 padding-top: 9.5em;
181 height: 100%; 181 height: 100%;
182 box-shadow:inset -4px 0 20px rgba(0,0,0,0.6); 182 box-shadow:inset -4px 0 20px rgba(0,0,0,0.6);
183 z-index: 10; 183 z-index: 15;
184} 184}
185 185
186#main { 186#main {
@@ -191,7 +191,7 @@ h2:after {
191 padding-bottom: 1em; 191 padding-bottom: 1em;
192} 192}
193 193
194 #links a { 194 #links > li > a {
195 display: block; 195 display: block;
196 padding: 0.5em 2em 0.5em 1em; 196 padding: 0.5em 2em 0.5em 1em;
197 color: #FFF; 197 color: #FFF;
@@ -207,8 +207,8 @@ h2:after {
207 transition: all 0.5s ease; 207 transition: all 0.5s ease;
208 } 208 }
209 209
210 #links a:hover, #links a:focus { 210 #links > li > a:hover, #links > li > a:focus {
211 background: #999; 211 background-color: #999;
212 color: #000; 212 color: #000;
213 } 213 }
214 214
@@ -281,12 +281,12 @@ h2:after {
281#listmode a:hover { 281#listmode a:hover {
282 opacity: 1; 282 opacity: 1;
283} 283}
284.tablemode { 284#listmode.tablemode {
285 background-image: url("../img/baggy/table.png"); 285 background-image: url("../img/baggy/table.png");
286 background-repeat: no-repeat; 286 background-repeat: no-repeat;
287 background-position: bottom; 287 background-position: bottom;
288} 288}
289.listmode { 289#listmode.listmode {
290 background-image: url("../img/baggy/list.png"); 290 background-image: url("../img/baggy/list.png");
291 background-repeat: no-repeat; 291 background-repeat: no-repeat;
292 background-position: bottom; 292 background-position: bottom;
@@ -327,15 +327,11 @@ footer a {
327 margin-left: 0!important; 327 margin-left: 0!important;
328} 328}
329 329
330.listmode .entrie p {
331 display: none;
332}
333
334.list-entries + .results { 330.list-entries + .results {
335 margin-bottom: 2em; 331 margin-bottom: 2em;
336} 332}
337 333
338.estimatedTime a { 334.estimatedTime .reading-time {
339 color: #999; 335 color: #999;
340 font-style: italic; 336 font-style: italic;
341 font-weight: normal; 337 font-weight: normal;
@@ -348,7 +344,7 @@ footer a {
348} 344}
349 345
350.entrie { 346.entrie {
351 background: #FFF; 347 background-color: #FFF;
352 letter-spacing:normal; 348 letter-spacing:normal;
353 box-shadow: 0 3px 7px rgba(0,0,0,0.3); 349 box-shadow: 0 3px 7px rgba(0,0,0,0.3);
354 display: inline-block; 350 display: inline-block;
@@ -359,11 +355,15 @@ footer a {
359 position: relative; 355 position: relative;
360 overflow: hidden; 356 overflow: hidden;
361 padding: 1.5em 1.5em 3em 1.5em; 357 padding: 1.5em 1.5em 3em 1.5em;
362 -webkit-transition: all 0.5s ease; 358
363 -moz-transition: all 0.5s ease; 359 /* Removing CSS transitions because they make the switch from list view to
364 -ms-transition: all 0.5s ease; 360 * table view jerky
365 -o-transition: all 0.5s ease; 361 */
366 transition: all 0.5s ease; 362 /* -webkit-transition: all 0.5s ease; */
363 /* -moz-transition: all 0.5s ease; */
364 /* -ms-transition: all 0.5s ease; */
365 /* -o-transition: all 0.5s ease; */
366 /* transition: all 0.5s ease; */
367} 367}
368 368
369.entrie:before { 369.entrie:before {
@@ -391,7 +391,7 @@ footer a {
391 width: 100%; 391 width: 100%;
392 bottom: 0; 392 bottom: 0;
393 left: 0; 393 left: 0;
394 background: #000; 394 background-color: #000;
395 -webkit-transition: all 0.5s ease; 395 -webkit-transition: all 0.5s ease;
396 -moz-transition: all 0.5s ease; 396 -moz-transition: all 0.5s ease;
397 -ms-transition: all 0.5s ease; 397 -ms-transition: all 0.5s ease;
@@ -418,6 +418,7 @@ footer a {
418.entrie h2 { 418.entrie h2 {
419 text-transform: none; 419 text-transform: none;
420 margin-bottom: 0; 420 margin-bottom: 0;
421 line-height: 1.2;
421} 422}
422 423
423 .entrie h2:after { 424 .entrie h2:after {
@@ -540,7 +541,7 @@ footer a {
540 2.1 = "save a link" related styles 541 2.1 = "save a link" related styles
541 ========================================================================== */ 542 ========================================================================== */
542 543
543#bagit-form, #search-form { 544.popup-form {
544 background: rgba(0,0,0,0.5); 545 background: rgba(0,0,0,0.5);
545 position: absolute; 546 position: absolute;
546 top: 0; 547 top: 0;
@@ -549,37 +550,53 @@ footer a {
549 height: 100%; 550 height: 100%;
550 width: 100%; 551 width: 100%;
551 margin: 0; 552 margin: 0;
552 margin-top: -30%; 553 margin-top: -30% !important; /* TODO: get rid of !important here; overridden by .messages selector */
553 padding: 2em; 554 padding: 2em;
554 display: none; 555 display: none;
555 border-left: 1px #EEE solid; 556 border-left: 1px #EEE solid;
556} 557}
557 558
558#bagit-form form, #search-form form { 559 .popup-form form {
559 background: #FFF; 560 background-color: #FFF;
560 position: absolute; 561 position: absolute;
561 top: 0; 562 top: 0;
562 left: 0; 563 left: 0;
563 z-index: 20; 564 z-index: 20;
564 border: 10px solid #000; 565 border: 10px solid #000;
565 width: 400px; 566 width: 400px;
566 height: 200px; 567 height: 200px;
567 /* margin: -150px 0 0 -300px; */ 568 padding: 2em;
568 padding: 2em; 569 }
570
571#bagit-form-form .addurl {
572 margin-left: 0;
569} 573}
570 574
571a#bagit-form-close, a#search-form-close { 575.closeMessage,
572 background: #000; 576.close-button {
577 background-color: #000;
573 color: #FFF; 578 color: #FFF;
574 padding: 0.2em 0.5em; 579 font-size: 1.2em;
580 line-height: 1.6;
581 width: 1.6em;
582 height: 1.6em;
583 text-align: center;
575 text-decoration: none; 584 text-decoration: none;
576 display: inline-block;
577 float: right;
578 font-size: 0.6em;
579} 585}
580a#bagit-form-close:hover, a#search-form-close:hover { 586 .closeMessage:hover,
581 background: #999; 587 .closeMessage:focus,
582 color: #000; 588 .close-button:hover,
589 .close-button:focus {
590 background-color: #999;
591 color: #000;
592 }
593
594.close-button--popup {
595 display: inline-block;
596 position: absolute;
597 top: 0;
598 right: 0;
599 font-size: 1.4em;
583} 600}
584 601
585.active-current { 602.active-current {
@@ -630,57 +647,7 @@ a.add-to-wallabag-link-after:after {
630 647
631#add-link-result { 648#add-link-result {
632 font-weight: bold; 649 font-weight: bold;
633 margin-top: 10px; 650 font-size: 0.9em;
634}
635
636/* ==========================================================================
637 2.2 = "search for articles" popup div related styles
638 ========================================================================== */
639#search-form {
640 background: rgba(0,0,0,0.5);
641 position: absolute;
642 top: 0;
643 left: 10em;
644 z-index: 20;
645 height: 100%;
646 width: 100%;
647 margin: 0;
648 margin-top: -30%;
649 padding: 2em;
650 display: none;
651 border-left: 1px #EEE solid;
652}
653
654#search-form form {
655 background: #FFF;
656 position: absolute;
657 top: 0;
658 left: 0;
659 z-index: 20;
660 border: 10px solid #000;
661 width: 400px;
662 height: 200px;
663 /* margin: -150px 0 0 -300px; */
664 padding: 2em;
665}
666
667a#search-form-close {
668 background: #000;
669 color: #FFF;
670 padding: 0.2em 0.5em;
671 text-decoration: none;
672 display: inline-block;
673 float: right;
674 font-size: 1.2em;
675}
676a#search-form-close:hover {
677 background: #999;
678 color: #000;
679}
680
681#submit-search{
682margin-left: 4em;
683margin-top:1em;
684} 651}
685 652
686/* ========================================================================== 653/* ==========================================================================
@@ -690,15 +657,16 @@ margin-top:1em;
690@font-face { 657@font-face {
691 font-family: 'icomoon'; 658 font-family: 'icomoon';
692 src:url('../fonts/icomoon.eot?-s0mcsx'); 659 src:url('../fonts/icomoon.eot?-s0mcsx');
693 src:url('../fonts/icomoon.eot?#iefix-s0mcsx') format('embedded-opentype'), 660 src:url('../fonts/icomoon.eot?#iefix-s0mcsx') format('embedded-opentype'),
694 url('../fonts/icomoon.woff?-s0mcsx') format('woff'), 661 url('../fonts/icomoon.woff?-s0mcsx') format('woff'),
695 url('../fonts/icomoon.ttf?-s0mcsx') format('truetype'), 662 url('../fonts/icomoon.ttf?-s0mcsx') format('truetype'),
696 url('../fonts/icomoon.svg?-s0mcsx#icomoon') format('svg'); 663 url('../fonts/icomoon.svg?-s0mcsx#icomoon') format('svg');
697 font-weight: normal; 664 font-weight: normal;
698 font-style: normal; 665 font-style: normal;
699} 666}
700 667
701.icon span { 668.icon span,
669.icon-image span {
702 position: absolute; 670 position: absolute;
703 top: -9999px; 671 top: -9999px;
704} 672}
@@ -769,6 +737,28 @@ margin-top:1em;
769 content: "\e80d"; 737 content: "\e80d";
770} 738}
771 739
740
741/* .icon-image class, for image-based icons
742 ========================================================================== */
743
744.icon-image {
745 background-size: 16px 16px;
746 background-repeat: no-repeat;
747 background-position: center;
748 padding-right: 1em !important;
749 padding-left: 1em !important;
750}
751
752/* Carrot (http://carrot.org) */
753.icon-image--carrot {
754 background-image: url('../../_global/img/icons/carrot-icon--white.png');
755}
756
757/* Diaspora */
758.icon-image--diaspora {
759 background-image: url('../../_global/img/icons/diaspora-icon--black.png');
760}}
761
772/* ========================================================================== 762/* ==========================================================================
773 Icon selected 763 Icon selected
774 ========================================================================== */ 764 ========================================================================== */
@@ -777,6 +767,10 @@ margin-top:1em;
777 color: #FFF; 767 color: #FFF;
778} 768}
779 769
770.icon-check.archive:before {
771 color: #FFF;
772}
773
780/* ========================================================================== 774/* ==========================================================================
781 4 = Messages 775 4 = Messages
782 ========================================================================== */ 776 ========================================================================== */
@@ -788,18 +782,6 @@ margin-top:1em;
788 782
789.messages > * { display: inline-block;} 783.messages > * { display: inline-block;}
790 784
791.closeMessage {
792 background: #000;
793 color: #FFF;
794 padding: 0.2em 0.5em;
795 text-decoration: none;
796}
797
798 .closeMessage:hover, .closeMessage:focus {
799 background: #FFF;
800 color: #000;
801 }
802
803.warning { 785.warning {
804 /* font-size: 3em; 786 /* font-size: 3em;
805 color: #999; 787 color: #999;
@@ -816,6 +798,16 @@ margin-top:1em;
816 width: 100%; 798 width: 100%;
817} 799}
818 800
801.more-info {
802 font-size: 0.85em;
803 line-height: 1.5;
804 color: #aaa;
805}
806
807 .more-info a {
808 color: #aaa;
809 }
810
819/* ========================================================================== 811/* ==========================================================================
820 5 = Article 812 5 = Article
821 ========================================================================== */ 813 ========================================================================== */
@@ -836,11 +828,15 @@ margin-top:1em;
836 828
837blockquote { 829blockquote {
838 border:1px solid #999; 830 border:1px solid #999;
839 background: #FFF; 831 background-color: #FFF;
840 padding: 1em; 832 padding: 1em;
841 margin: 0; 833 margin: 0;
842} 834}
843 835
836#article h1 {
837 text-align: left;
838}
839
844#article h2, #article h3, #article h4 { 840#article h2, #article h3, #article h4 {
845 text-transform: none; 841 text-transform: none;
846} 842}
@@ -865,14 +861,14 @@ blockquote {
865} 861}
866 862
867#article_toolbar a { 863#article_toolbar a {
868 background: #000; 864 background-color: #000;
869 padding: 0.3em 0.5em 0.2em; 865 padding: 0.3em 0.5em 0.2em;
870 color: #FFF; 866 color: #FFF;
871 text-decoration: none; 867 text-decoration: none;
872} 868}
873 869
874 #article_toolbar a:hover, #article_toolbar a:focus { 870 #article_toolbar a:hover, #article_toolbar a:focus {
875 background: #999; 871 background-color: #999;
876 } 872 }
877 873
878.shaarli:before { 874.shaarli:before {
@@ -895,7 +891,7 @@ blockquote {
895} 891}
896 892
897.icon-rss { 893.icon-rss {
898 background: #000; 894 background-color: #000;
899 color: #FFF; 895 color: #FFF;
900 padding: 0.2em 0.5em; 896 padding: 0.2em 0.5em;
901} 897}
@@ -910,7 +906,7 @@ blockquote {
910} 906}
911 907
912.list-tags .icon-rss:hover, .list-tags .icon-rss:focus { 908.list-tags .icon-rss:hover, .list-tags .icon-rss:focus {
913 background: #FFF; 909 background-color: #FFF;
914 color: #000; 910 color: #000;
915 text-decoration: none; 911 text-decoration: none;
916} 912}
@@ -923,6 +919,13 @@ blockquote {
923 text-decoration: underline; 919 text-decoration: underline;
924} 920}
925 921
922pre code {
923 font-family: "Courier New", Courier, monospace;
924 border: 1px solid #ccc;
925 font-size: 0.96em;
926}
927
928
926/* ========================================================================== 929/* ==========================================================================
927 6 = Media Queries 930 6 = Media Queries
928 ========================================================================== */ 931 ========================================================================== */
@@ -964,7 +967,7 @@ blockquote {
964 margin-left: 0; 967 margin-left: 0;
965 } 968 }
966 body > header { 969 body > header {
967 background: #333; 970 background-color: #333;
968 position: fixed; 971 position: fixed;
969 top: 0; 972 top: 0;
970 width: 100%; 973 width: 100%;
@@ -1010,11 +1013,11 @@ blockquote {
1010 width: 2.5em; 1013 width: 2.5em;
1011 height: 2.5em; 1014 height: 2.5em;
1012 cursor: pointer; 1015 cursor: pointer;
1013 background: #999; 1016 background-color: #999;
1014 font-size: 1.2em; 1017 font-size: 1.2em;
1015 } 1018 }
1016 .desktopHide:hover, .desktopHide:focus { 1019 .desktopHide:hover, .desktopHide:focus {
1017 background: #FFF; 1020 background-color: #FFF;
1018 } 1021 }
1019 #links { 1022 #links {
1020 display: none; 1023 display: none;
@@ -1022,6 +1025,9 @@ blockquote {
1022 height: auto; 1025 height: auto;
1023 padding-top: 3em; 1026 padding-top: 3em;
1024 } 1027 }
1028 #links.menu--open {
1029 display: block;
1030 }
1025 footer { 1031 footer {
1026 position: static; 1032 position: static;
1027 margin-right: 3em; 1033 margin-right: 3em;
@@ -1051,7 +1057,15 @@ blockquote {
1051 display: none; 1057 display: none;
1052 } 1058 }
1053 1059
1054 #bagit-form, #search-form { 1060 .popup-form, #bagit-form, #search-form {
1055 left: 0; 1061 left: 0;
1062 width: 100%;
1063 border-left: none;
1064 }
1065
1066 .popup-form form,
1067 #bagit-form form,
1068 #search-form form {
1069 width: 100%;
1056 } 1070 }
1057} 1071}
diff --git a/themes/baggy/edit-tags.twig b/themes/baggy/edit-tags.twig
index 2113e964..15f15560 100755
--- a/themes/baggy/edit-tags.twig
+++ b/themes/baggy/edit-tags.twig
@@ -5,22 +5,22 @@
5{% endblock %} 5{% endblock %}
6{% block content %} 6{% block content %}
7 7
8<script src="{{ poche_url }}themes/default/js/jquery-ui-1.10.4.custom.min.js"></script> 8<script src="{{ poche_url }}themes/_global/js/jquery-ui-1.10.4.custom.min.js"></script>
9<script src="{{ poche_url }}themes/default/js/autoCompleteTags.js"></script> 9<script src="{{ poche_url }}themes/_global/js/autoCompleteTags.js"></script>
10<link rel="stylesheet" href="{{ poche_url }}themes/default/css/jquery-ui-1.10.4.custom.min.css" media="all"> 10<link rel="stylesheet" href="{{ poche_url }}themes/_global/css/jquery-ui-1.10.4.custom.min.css" media="all">
11 11
12<div id="article"> 12<div id="article">
13 <h2>{{ entry.title|raw }}</21> 13 <h2>{{ entry.title|raw }}</21>
14</div> 14</div>
15{% if tags is empty %} 15{% if tags is empty %}
16<div class="notags">no tags</div> 16<div class="notags">{% trans "no tags" %}</div>
17{% endif %} 17{% endif %}
18<ul> 18<ul>
19{% for tag in tags %}<li>{{ tag.value }} <a href="./?action=remove_tag&amp;tag_id={{ tag.id }}&amp;id={{ entry_id }}">✘</a></li>{% endfor %} 19{% for tag in tags %}<li>{{ tag.value }} <a href="./?action=remove_tag&amp;tag_id={{ tag.id }}&amp;id={{ entry_id }}">✘</a></li>{% endfor %}
20</ul> 20</ul>
21<form method="post" action="./?action=add_tag"> 21<form method="post" action="./?action=add_tag">
22 <input type="hidden" name="entry_id" value="{{ entry_id }}" /> 22 <input type="hidden" name="entry_id" value="{{ entry_id }}" />
23 <label for="value">Add tags: </label><input type="text" placeholder="interview, editorial, video" id="value" name="value" required="required" /> 23 <label for="value">{% trans "Add tags:" %}</label><input type="text" placeholder="{% trans "interview" %}, {% trans "editorial" %}, {% trans "video" %}" id="value" name="value" required="required" />
24 <input type="submit" value="Tag" /> 24 <input type="submit" value="Tag" />
25 <p>{% trans "Start typing for auto complete." %}<br> 25 <p>{% trans "Start typing for auto complete." %}<br>
26 {% trans "You can enter multiple tags, separated by commas." %}</p> 26 {% trans "You can enter multiple tags, separated by commas." %}</p>
diff --git a/themes/baggy/home.twig b/themes/baggy/home.twig
index 4f415220..426ead1d 100755
--- a/themes/baggy/home.twig
+++ b/themes/baggy/home.twig
@@ -38,12 +38,12 @@
38 {% endblock %} 38 {% endblock %}
39 <div id="list-entries" class="list-entries"> 39 <div id="list-entries" class="list-entries">
40 {% for entry in entries %} 40 {% for entry in entries %}
41 <div id="entry-{{ entry.id|e }}" class="entrie"{% if listmode %} style="width:100%; margin-left:0;"{% endif %}> 41 <div id="entry-{{ entry.id|e }}" class="entrie">
42 <h2><a href="index.php?view=view&amp;id={{ entry.id|e }}">{{ entry.title|raw }}</a></h2> 42 <h2><a href="index.php?view=view&amp;id={{ entry.id|e }}">{{ entry.title|raw }}</a></h2>
43 {% if entry.content| getReadingTime > 0 %} 43 {% if entry.content| getReadingTime > 0 %}
44 <div class="estimatedTime"><a target="_blank" title="{% trans "estimated reading time:" %} {{ entry.content| getReadingTime }} min" class="tool reading-time"><span>{% trans "estimated reading time :" %} {{ entry.content| getReadingTime }} min</span></div> 44 <div class="estimatedTime"><span class="tool reading-time">{% trans "estimated reading time :" %} {{ entry.content| getReadingTime }} min</span></div>
45 {% else %} 45 {% else %}
46 <div class="estimatedTime"><a target="_blank" title="{% trans "estimated reading time:" %} {{ entry.content| getReadingTime }} min" class="tool reading-time"><span>{% trans "estimated reading time :" %} <small class="inferieur"></small> 1 min</span></div> 46 <div class="estimatedTime"><span class="tool reading-time">{% trans "estimated reading time :" %} <small class="inferieur">&lt;</small> 1 min</span></div>
47 {% endif %} 47 {% endif %}
48 <ul class="tools links"> 48 <ul class="tools links">
49 <li><a title="{% trans "Toggle mark as read" %}" class="tool icon-check icon {% if entry.is_read == 0 %}archive-off{% else %}archive{% endif %}" href="./?action=toggle_archive&amp;id={{ entry.id|e }}"><span>{% trans "Toggle mark as read" %}</span></a></li> 49 <li><a title="{% trans "Toggle mark as read" %}" class="tool icon-check icon {% if entry.is_read == 0 %}archive-off{% else %}archive{% endif %}" href="./?action=toggle_archive&amp;id={{ entry.id|e }}"><span>{% trans "Toggle mark as read" %}</span></a></li>
@@ -57,23 +57,21 @@
57 {% endfor %} 57 {% endfor %}
58 </div> 58 </div>
59 {{ block('pager') }} 59 {{ block('pager') }}
60 {% if view == 'home' %}{% if nb_results > 1 %}<a title="{% trans "Mark all the entries as read" %}" href="./?action=archive_all">{{ "Mark all the entries as read" }}</a>{% endif %}{% endif %} 60 {% if view == 'home' %}{% if nb_results > 1 %}<p><a title="{% trans "Mark all the entries as read" %}" href="./?action=archive_all">{% trans "Mark all the entries as read" %}</a></p>{% endif %}{% endif %}
61 61 {% if searchterm is defined %}<a title="{% trans "Tag these results as" %} {{ searchterm }}" href="./?action=add_tag&search={{ searchterm }}">{% trans "Tag these results as" %} {{ searchterm }}</a>{% endif %}<br />
62 {% if search_term is defined %}<a title="{% trans %} Apply the tag {{ search_term }} to this search {% endtrans %}" href="./?action=add_tag&amp;search={{ search_term }}">{% trans %} Apply the tag {{ search_term }} to this search {% endtrans %}</a>{% endif %}
63 62
64 {% if tag %} 63 {% if tag %}
65 <a title="{% trans "Download the articles from this tag in an epub file" %}" href="./?epub&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as ePub3" %}</a> 64 <a title="{% trans "Download the articles from this tag in an epub file" %}" href="./?epub&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as ePub3" %}</a>
66 <a title="{% trans "Download the articles from this tag in a mobi file" %}" href="./?mobi&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as Mobi" %}</a> 65 <a title="{% trans "Download the articles from this tag in a mobi file" %}" href="./?mobi&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as Mobi" %}</a>
67 <a title="{% trans "Download the articles from this tag in a pdf file" %}" href="./?pdf&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as PDF" %}</a> 66 <a title="{% trans "Download the articles from this tag in a pdf file" %}" href="./?pdf&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as PDF" %}</a>
68 {% elseif search_term is defined %} 67 {% elseif searchterm is defined %}
69 <a title="{% trans "Download the articles from this search in an epub" %}" href="./?epub&amp;method=search&amp;value={{ search_term }}">{% trans "Download as ePub3" %}</a> 68 <a title="{% trans "Download the articles from this search in an epub" %}" href="./?epub&amp;method=search&amp;value={{ searchterm }}">{% trans "Download as ePub3" %}</a>
70 <a title="{% trans "Download the articles from this search in a mobi file" %}" href="./?mobi&amp;method=search&amp;value={{ search_term }}">{% trans "Download as Mobi" %}</a> 69 <a title="{% trans "Download the articles from this search in a mobi file" %}" href="./?mobi&amp;method=search&amp;value={{ searchterm }}">{% trans "Download as Mobi" %}</a>
71 <a title="{% trans "Download the articles from this search in a pdf file" %}" href="./?pdf&amp;method=search&amp;value={{ search_term }}">{% trans "Download as PDF" %}</a> 70 <a title="{% trans "Download the articles from this search in a pdf file" %}" href="./?pdf&amp;method=search&amp;value={{ searchterm }}">{% trans "Download as PDF" %}</a>
72 {% else %} 71 {% else %}
73 <a title="{% trans "Download the articles from this category in an epub" %}" href="./?epub&amp;method=category&amp;value={{ view }}">{% trans "Download as ePub3" %}</a> 72 <a title="{% trans "Download the articles from this category in an epub" %}" href="./?epub&amp;method=category&amp;value={{ view }}">{% trans "Download as ePub3" %}</a>
74 <a title="{% trans "Download the articles from this category in a mobi file" %}" href="./?mobi&amp;method=category&amp;value={{ view }}">{% trans "Download as Mobi" %}</a> 73 <a title="{% trans "Download the articles from this category in a mobi file" %}" href="./?mobi&amp;method=category&amp;value={{ view }}">{% trans "Download as Mobi" %}</a>
75 <a title="{% trans "Download the articles from this category in a pdf file" %}" href="./?pdf&amp;method=category&amp;value={{ view }}">{% trans "Download as PDF" %}</a> 74 <a title="{% trans "Download the articles from this category in a pdf file" %}" href="./?pdf&amp;method=category&amp;value={{ view }}">{% trans "Download as PDF" %}</a>
76 {% endif %} 75 {% endif %}
77 76{% endif %}
78 {% endif %}
79{% endblock %} 77{% endblock %}
diff --git a/themes/baggy/js/init.js b/themes/baggy/js/init.js
index 00470fbf..74cbae68 100755
--- a/themes/baggy/js/init.js
+++ b/themes/baggy/js/init.js
@@ -8,7 +8,10 @@ $.fn.ready(function() {
8 ========================================================================== */ 8 ========================================================================== */
9 9
10 $("#menu").click(function(){ 10 $("#menu").click(function(){
11 $("#links").toggle(); 11 $("#links").toggleClass('menu--open');
12 if ($('#content').hasClass('opacity03')) {
13 $('#content').removeClass('opacity03');
14 }
12 }); 15 });
13 16
14 /* ========================================================================== 17 /* ==========================================================================
diff --git a/themes/baggy/login.twig b/themes/baggy/login.twig
index 645db376..58290e9c 100644
--- a/themes/baggy/login.twig
+++ b/themes/baggy/login.twig
@@ -9,17 +9,17 @@
9 {% if constant('MODE_DEMO') == 1 %}<p>{% trans "you are in demo mode, some features may be disabled." %}</p>{% endif %} 9 {% if constant('MODE_DEMO') == 1 %}<p>{% trans "you are in demo mode, some features may be disabled." %}</p>{% endif %}
10 <div class="row"> 10 <div class="row">
11 <label class="col w150p" for="login">{% trans "Username" %}</label> 11 <label class="col w150p" for="login">{% trans "Username" %}</label>
12 <input class="col" type="text" id="login" name="login" placeholder="Login" tabindex="1" autofocus {% if constant('MODE_DEMO') == 1 %}value="poche"{% endif %} /> 12 <input class="col" type="text" id="login" name="login" placeholder="{% trans "Username" %}" tabindex="1" autofocus {% if constant('MODE_DEMO') == 1 %}value="poche"{% endif %} />
13 </div> 13 </div>
14 14
15 <div class="row"> 15 <div class="row">
16 <label class="col w150p" for="password">{% trans "Password" %}</label> 16 <label class="col w150p" for="password">{% trans "Password" %}</label>
17 <input class="col" type="password" id="password" name="password" placeholder="Password" tabindex="2" {% if constant('MODE_DEMO') == 1 %}value="poche"{% endif %} /> 17 <input class="col" type="password" id="password" name="password" placeholder="{% trans "Password" %}" tabindex="2" {% if constant('MODE_DEMO') == 1 %}value="poche"{% endif %} />
18 </div> 18 </div>
19 <div class="row"> 19 <div class="row">
20 <label class="col w150p" for="longlastingsession">{% trans "Stay signed in" %}</label> 20
21 <div class="col"> 21 <div class="col">
22 <input type="checkbox" id="longlastingsession" name="longlastingsession" tabindex="3"> 22 <input type="checkbox" id="longlastingsession" name="longlastingsession" tabindex="3" /> <label for="longlastingsession">{% trans "Stay signed in" %}</label><br />
23 <small class="inbl">{% trans "(Do not check on public computers)" %}</small> 23 <small class="inbl">{% trans "(Do not check on public computers)" %}</small>
24 </div> 24 </div>
25 </div> 25 </div>
diff --git a/themes/baggy/tags.twig b/themes/baggy/tags.twig
index 9bb93a45..65930eb2 100755
--- a/themes/baggy/tags.twig
+++ b/themes/baggy/tags.twig
@@ -1,5 +1,5 @@
1{% extends "layout.twig" %} 1{% extends "layout.twig" %}
2{% block title %}tags{% endblock %} 2{% block title %}Tags{% endblock %}
3{% block menu %} 3{% block menu %}
4{% include '_menu.twig' %} 4{% include '_menu.twig' %}
5{% endblock %} 5{% endblock %}
@@ -10,4 +10,4 @@
10</li> 10</li>
11{% endfor %} 11{% endfor %}
12</ul> 12</ul>
13{% endblock %} \ No newline at end of file 13{% endblock %}
diff --git a/themes/baggy/view.twig b/themes/baggy/view.twig
index 3f151592..dd274327 100755
--- a/themes/baggy/view.twig
+++ b/themes/baggy/view.twig
@@ -4,6 +4,7 @@
4{% endblock %} 4{% endblock %}
5{% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %} 5{% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %}
6{% block content %} 6{% block content %}
7 {% include '_highlight.twig' %}
7 <div id="article_toolbar"> 8 <div id="article_toolbar">
8 <ul class="links"> 9 <ul class="links">
9 <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> 10 <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>
@@ -14,7 +15,9 @@
14 {% if constant('SHARE_TWITTER') == 1 %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="{% trans "Tweet" %}"><span>{% trans "Tweet" %}</span></a></li>{% endif %} 15 {% if constant('SHARE_TWITTER') == 1 %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="{% trans "Tweet" %}"><span>{% trans "Tweet" %}</span></a></li>{% endif %}
15 {% if constant('SHARE_MAIL') == 1 %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{% trans "Email" %}"><span>{% trans "Email" %}</span></a></li>{% endif %} 16 {% if constant('SHARE_MAIL') == 1 %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{% trans "Email" %}"><span>{% trans "Email" %}</span></a></li>{% endif %}
16 {% if constant('SHARE_SHAARLI') == 1 %}<li><a href="{{ constant('SHAARLI_URL') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans "shaarli" %}"><span>{% trans "shaarli" %}</span></a></li>{% endif %} 17 {% if constant('SHARE_SHAARLI') == 1 %}<li><a href="{{ constant('SHAARLI_URL') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans "shaarli" %}"><span>{% trans "shaarli" %}</span></a></li>{% endif %}
17 {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}<li><a href="http://flattr.com/submit/auto?url={{ entry.url }}" class="tool flattr icon icon-flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span></a></li>{% elseif flattr.status == constant('FLATTRED') %}<li><a href="{{ flattr.flattrItemURL }}" class="tool flattr icon icon-flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span> ({{ flattr.numflattrs }})</a></li>{% endif %}{% endif %} 18 {% if constant('SHARE_DIASPORA') == 1 %}<li><a href="{{ constant('DIASPORA_URL') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="{% trans "diaspora" %}"><span>{% trans "diaspora" %}</span></a></li>{% endif %}
19 {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}<li><a href="http://flattr.com/submit/auto?url={{ entry.url }}" class="tool flattr icon icon-flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span></a></li>{% elseif flattr.status == constant('FLATTRED') %}<li><a href="{{ flattr.flattrItemURL }}" class="tool flattr icon icon-flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span> ({{ flattr.numFlattrs }})</a></li>{% endif %}{% endif %}
20 {% if constant('CARROT') == 1 %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon-image icon-image--carrot" target="_blank" title="{% trans "carrot" %}"><span>Carrot</span></a></li>{% endif %}
18 {% if constant('SHOW_PRINTLINK') == 1 %}<li><a title="{% trans "Print" %}" class="tool icon icon-print" href="javascript: window.print();"><span>{% trans "Print" %}</span></a></li>{% endif %} 21 {% if constant('SHOW_PRINTLINK') == 1 %}<li><a title="{% trans "Print" %}" class="tool icon icon-print" href="javascript: window.print();"><span>{% trans "Print" %}</span></a></li>{% endif %}
19 <li><a href="./?epub&amp;method=id&amp;value={{ entry.id|e }}" title="Generate ePub file">EPUB</a></li> 22 <li><a href="./?epub&amp;method=id&amp;value={{ entry.id|e }}" title="Generate ePub file">EPUB</a></li>
20 <li><a href="./?mobi&amp;method=id&amp;value={{ entry.id|e }}" title="Generate Mobi file">MOBI</a></li> 23 <li><a href="./?mobi&amp;method=id&amp;value={{ entry.id|e }}" title="Generate Mobi file">MOBI</a></li>
@@ -33,7 +36,7 @@
33 {{ content | raw }} 36 {{ content | raw }}
34 </article> 37 </article>
35 </div> 38 </div>
36 <script src="{{ poche_url }}themes/{{theme}}/js/restoreScroll.js"></script> 39 <script src="{{ poche_url }}themes/_global/js/restoreScroll.js"></script>
37 <script type="text/javascript"> 40 <script type="text/javascript">
38 $(document).ready(function() { 41 $(document).ready(function() {
39 42
diff --git a/themes/courgette/README.md b/themes/courgette/README.md
deleted file mode 100755
index e13d3900..00000000
--- a/themes/courgette/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
1# Courgette Theme
2
3theme created by Thomas LEBEAU alias Courgette http://thomaslebeau.fr/ \ No newline at end of file
diff --git a/themes/courgette/_head.twig b/themes/courgette/_head.twig
deleted file mode 100755
index 059936d9..00000000
--- a/themes/courgette/_head.twig
+++ /dev/null
@@ -1,11 +0,0 @@
1 <link rel="shortcut icon" type="image/x-icon" href="{{ poche_url }}themes/{{theme}}/img/favicon.ico" />
2 <link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ poche_url }}themes/{{theme}}/img/apple-touch-icon-144x144-precomposed.png">
3 <link rel="apple-touch-icon-precomposed" sizes="72x72" href="{{ poche_url }}themes/{{theme}}/img/apple-touch-icon-72x72-precomposed.png">
4 <link rel="apple-touch-icon-precomposed" href="{{ poche_url }}themes/{{theme}}/img/apple-touch-icon-precomposed.png">
5 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/font.css" media="all">
6 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/style.css" media="all">
7 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/messages.css" media="all">
8 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/print.css" media="print">
9 <link href='//fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
10 <script src="//codeorigin.jquery.com/jquery-2.0.3.min.js"></script>
11 <script src="{{ poche_url }}themes/{{theme}}/js/init.js"></script>
diff --git a/themes/courgette/_menu.twig b/themes/courgette/_menu.twig
deleted file mode 100755
index 0e37660a..00000000
--- a/themes/courgette/_menu.twig
+++ /dev/null
@@ -1,10 +0,0 @@
1 <div id="menuContainer">
2 <ul id="links">
3 <li><a href="./" {% if view == 'home' %}class="current"{% endif %}>{% trans "unread" %}</a></li>
4 <li><a href="./?view=fav" {% if view == 'fav' %}class="current"{% endif %}>{% trans "favorites" %}</a></li>
5 <li><a href="./?view=archive" {% if view == 'archive' %}class="current"{% endif %}>{% trans "archive" %}</a></li>
6 <li><a href="./?view=tags" {% if view == 'tags' %}class="current"{% endif %}>{% trans "tags" %}</a></li>
7 <li><a href="./?view=config" {% if view == 'config' %}class="current"{% endif %}>{% trans "config" %}</a></li>
8 <li><a href="./?logout" title="{% trans "logout" %}">{% trans "logout" %}</a></li>
9 </ul>
10 </div> \ No newline at end of file
diff --git a/themes/courgette/_top.twig b/themes/courgette/_top.twig
deleted file mode 100755
index 2d41db17..00000000
--- a/themes/courgette/_top.twig
+++ /dev/null
@@ -1,9 +0,0 @@
1 <header>
2 <h1>
3 {% if view == 'home' %}{% block logo %}<img src="{{ poche_url }}themes/{{theme}}/img/logo.svg" alt="wallabag logo" />{% endblock %}
4 {% elseif view == 'fav' %}<a href="./" title="{% trans "back to home" %}" >{{ block('logo') }} <span>Favoris</span></a>
5 {% elseif view == 'archive' %}<a href="./" title="{% trans "back to home" %}" >{{ block('logo') }} <span>Archive</span></a>
6 {% else %}<a href="./" title="{% trans "back to home" %}" >{{ block('logo') }}</a>
7 {% endif %}
8 </h1>
9 </header> \ No newline at end of file
diff --git a/themes/courgette/_view.twig b/themes/courgette/_view.twig
deleted file mode 100755
index c5c916c0..00000000
--- a/themes/courgette/_view.twig
+++ /dev/null
@@ -1,46 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %}
3{% block content %}
4 <div id="article_toolbar">
5 <ul>
6 <li><a href="./" title="{% trans "back to home" %}" class="tool back"><span>{% trans "back to home" %}</span></a></li>
7 <li><a href="{{ entry.url|e }}" target="_blank" title="{% trans "original" %} : {{ entry.title|e }}" class="tool link"><span>{{ entry.url | e | getDomain }}</span></a></li>
8 <li><a title="{% trans "toggle mark as read" %}" class="tool {% if entry.is_read == 0 %}archive-off{% else %}archive{% endif %}" href="./?action=toggle_archive&amp;id={{ entry.id|e }}"><span>{% trans "toggle mark as read" %}</span></a></li>
9 <li><a title="{% trans "toggle favorite" %}" class="tool {% if entry.is_fav == 0 %}fav-off{% else %}fav{% endif %}" href="./?action=toggle_fav&amp;id={{ entry.id|e }}"><span>{% trans "toggle favorite" %}</span></a></li>
10 <li><a title="{% trans "delete" %}" class="tool delete" href="./?action=delete&amp;id={{ entry.id|e }}"><span>{% trans "delete" %}</span></a></li>
11 {% if constant('SHARE_TWITTER') == 1 %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter" title="{% trans "tweet" %}"><span>{% trans "tweet" %}</span></a></li>{% endif %}
12 {% if constant('SHARE_MAIL') == 1 %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email" title="{% trans "email" %}"><span>{% trans "email" %}</span></a></li>{% endif %}
13 {% if constant('SHARE_SHAARLI') == 1 %}<li><a href="{{ constant('SHAARLI_URL') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans "shaarli" %}"><span>{% trans "shaarli" %}</span></a></li>{% endif %}
14 {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}<li class="flattrli"><a href="http://flattr.com/submit/auto?url={{ entry.url }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span></a></li>{% elseif flattr.status == constant('FLATTRED') %}<li><a href="{{ flattr.flattrItemURL }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span>{{ flattr.numflattrs }}</a></li>{% endif %}{% endif %}
15 <li><a href="./?epub&amp;method=id&amp;value={{ entry.id|e }}" title="Generate epub file">EPUB</a></li>
16 <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{% trans "this article appears wrong?" %}" class="tool bad-display"><span>{% trans "this article appears wrong?" %}</span></a></li>
17 </ul>
18 </div>
19 <div id="article">
20 <header class="mbm">
21 <h1>{{ entry.title|raw }}</h1>
22 </header>
23 <article>
24 {{ content | raw }}
25 </article>
26 </div>
27 <script src="{{ poche_url }}themes/{{theme}}/js/restoreScroll.js"></script>
28 <script type="text/javascript">
29 $(document).ready(function() {
30
31 $(window).scroll(function(e){
32 var scrollTop = $(window).scrollTop();
33 var docHeight = $(document).height();
34 var scrollPercent = (scrollTop) / (docHeight);
35 var scrollPercentRounded = Math.round(scrollPercent*100)/100;
36 savePercent({{ entry.id|e }}, scrollPercentRounded);
37 });
38
39 retrievePercent({{ entry.id|e }});
40
41 $(window).resize(function(){
42 retrievePercent({{ entry.id|e }});
43 });
44 });
45 </script>
46{% endblock %} \ No newline at end of file
diff --git a/themes/courgette/css/font.css b/themes/courgette/css/font.css
deleted file mode 100755
index 849ff85b..00000000
--- a/themes/courgette/css/font.css
+++ /dev/null
@@ -1,22 +0,0 @@
1@font-face {
2 font-family: 'fontello';
3 src: url('../font/fontello.eot?97381924');
4 src: url('../font/fontello.eot?97381924#iefix') format('embedded-opentype'),
5 url('../font/fontello.woff?97381924') format('woff'),
6 url('../font/fontello.ttf?97381924') format('truetype'),
7 url('../font/fontello.svg?97381924#fontello') format('svg');
8 font-weight: normal;
9 font-style: normal;
10}
11
12@font-face {
13 font-family: 'icomoon';
14 src:url('../font/icomoon.eot?-72nnzw');
15 src:url('../font/icomoon.eot?#iefix-72nnzw') format('embedded-opentype'),
16 url('../font/icomoon.woff?-72nnzw') format('woff'),
17 url('../font/comoon.ttf?-72nnzw') format('truetype'),
18 url('../font/icomoon.svg?-72nnzw#icomoon') format('svg');
19 font-weight: normal;
20 font-style: normal;
21}
22
diff --git a/themes/courgette/css/knacss.css b/themes/courgette/css/knacss.css
deleted file mode 100755
index e69de29b..00000000
--- a/themes/courgette/css/knacss.css
+++ /dev/null
diff --git a/themes/courgette/css/messages.css b/themes/courgette/css/messages.css
deleted file mode 100755
index fe6fbbe8..00000000
--- a/themes/courgette/css/messages.css
+++ /dev/null
@@ -1,75 +0,0 @@
1.messages {
2 display: block;
3 clear: both;
4 width: 400px;
5 margin: 10px auto 10px;
6 padding: 10px 0;
7 -moz-border-radius: 4px;
8 border-radius: 4px;
9}
10
11.messages a.closeMessage {
12 display: none;
13 float: right;
14 width: 16px;
15 height: 16px;
16 margin: -14px -8px 0 0;
17 background: url(../img/messages/close.png) no-repeat;
18}
19
20/*.messages:hover a.closeMessage { visibility:visible; }*/
21
22.messages p {
23 margin: 3px 0 3px 10px !important;
24 padding: 0 10px 0 23px !important;
25 font-size: 14px;
26 line-height: 16px;
27}
28
29.messages.error {
30 border: 1px solid #c42608;
31 color: #c00 !important;
32 background: #fff0ef;
33}
34
35.messages.error p {
36 color: #c00 !important;
37 background: url(../img/messages/cross.png) no-repeat 0 50%;
38}
39
40.messages.success {
41 border: 1px solid #6dc70c;
42 background: #e0fbcc;
43}
44
45.messages.success p {
46 color: #2b6301 !important;
47 background: url(../img/messages/tick.png) no-repeat 0 50%;
48}
49
50.messages.warning {
51 border: 1px solid #ebcd41;
52 color: #000;
53 background: #fffcd3;
54}
55
56.messages.warning p {
57 color: #5f4e01;
58 background: url(../img/messages/warning.png) no-repeat 0 50%;
59}
60
61.messages.information,
62.messages.info {
63 border: 1px solid #82aee7;
64 background: #dfebfb;
65}
66
67.messages.information p,
68.messages.info p {
69 color: #064393;
70 background: url(../img/messages/help.png) no-repeat 0 50%;
71}
72
73.messages.information a {
74 text-decoration: underline;
75} \ No newline at end of file
diff --git a/themes/courgette/css/print.css b/themes/courgette/css/print.css
deleted file mode 100755
index 9aefa779..00000000
--- a/themes/courgette/css/print.css
+++ /dev/null
@@ -1,48 +0,0 @@
1/* ### Layout ### */
2
3body {
4 font-family: Serif;
5 background-color: #fff;
6}
7
8@page {
9 margin: 1cm;
10}
11
12img {
13 max-width: 100% !important;
14}
15
16/* ### Content ### */
17
18/* Hide useless blocks */
19body > header,
20#links,
21#sort,
22body > footer,
23.top_link,
24div.tools,
25header div,
26.messages,
27.entrie + .results {
28 display: none !important;
29}
30
31article {
32 border: none !important;
33}
34
35/* Add URL after links */
36.vieworiginal a:after {
37 content: " (" attr(href) ")";
38}
39
40/* Add explanation after abbr */
41abbr[title]:after {
42 content: " (" attr(title) ")";
43}
44
45/* Change border on current pager item */
46.pagination span.current {
47 border-style: dashed;
48}
diff --git a/themes/courgette/css/style-default.css b/themes/courgette/css/style-default.css
deleted file mode 100755
index 3377a75b..00000000
--- a/themes/courgette/css/style-default.css
+++ /dev/null
@@ -1,59 +0,0 @@
1a.back span {
2 background-image: url('../img/default/left.png');
3}
4
5a.top span {
6 background-image: url('../img/default/top.png');
7}
8
9a.fav span,
10a.fav-off span:hover {
11 background-image: url('../img/default/star-on.png');
12}
13
14a.fav span:hover,
15a.fav-off span {
16 background-image: url('../img/default/star-off.png');
17}
18
19a.archive span,
20a.archive-off span:hover {
21 background-image: url('../img/default/checkmark-on.png');
22}
23
24a.archive span:hover,
25a.archive-off span {
26 background-image: url('../img/default/checkmark-off.png');
27}
28
29a.twitter span {
30 background-image: url('../img/default/twitter.png');
31}
32
33a.shaarli span {
34 background-image: url('../img/default/shaarli.png');
35}
36
37a.flattr span {
38 background-image: url('../img/default/flattr.png');
39}
40
41a.email span {
42 background-image: url('../img/default/envelop.png');
43}
44
45a.delete span {
46 background-image: url('../img/default/remove.png');
47}
48
49a.link span {
50 background-image: url('../img/default/link.png');
51}
52
53a.bad-display span {
54 background-image: url('../img/default/bad-display.png');
55}
56
57a.reading-time span {
58 background-image: url('../img/default/clock.png');
59}
diff --git a/themes/courgette/css/style.css b/themes/courgette/css/style.css
deleted file mode 100755
index edd09c78..00000000
--- a/themes/courgette/css/style.css
+++ /dev/null
@@ -1,684 +0,0 @@
1* {
2 -webkit-box-sizing: border-box;
3 -moz-box-sizing: border-box;
4 box-sizing: border-box;
5}
6
7body {
8 margin: 10px;
9 font-family: 'Roboto',Verdana,Geneva,sans-serif;
10 font-size: 16px;
11 color: #000;
12}
13
14h1 span {
15 color #FFF;
16 background: #000;
17 display: inline-block;
18 padding: 0.2em 1em 0.2em 1.2em;
19 font-size: 0.7em;
20 position: relative;
21 top: -1em;
22 left: -1em;
23}
24
25h1 a {
26 color: #FFF;
27 text-decoration: none;
28}
29
30#menu {
31 font-family: 'fontello';
32 position:fixed;
33 z-index: 11;
34 top: 0.7em;
35 right: 0.5em;
36 border:0;
37 font-size: 2em;
38 background: #000;
39 color:#FFF;
40 height: 58px;
41 width: 58px;
42 line-height:58px;
43 border-radius:120px;
44}
45
46#menu:hover, #menu:focus {
47 background: #FFF;
48 color:#000;
49 cursor: pointer;
50}
51
52#menu span {
53 position: absolute;
54 top: -99999px;
55}
56
57#menuContainer ul, #article_toolbar ul {
58 position:fixed;
59 top: 0;
60 left:0;
61 width: 100%;
62 padding: 0;
63 margin: 0;
64 text-align:center;
65 height:80px;
66}
67
68/*Inspired by http://tympanus.net/Tutorials/AnimatedBorderMenus/index.html */
69
70#menuContainer, #article_toolbar {
71 position: fixed;
72 top: 0;
73 left:0;
74 width: 100%;
75 height: 0;
76 overflow: hidden;
77 border-width:0;
78 border-style: solid;
79 border-color:#000;
80 background-color: transparent;
81 -webkit-transition: border-width 0.3s, background-color 0.3s, height 0s 0.3s;
82 -moz-transition: border-width 0.3s, background-color 0.3s, height 0s 0.3s;
83 transition: border-width 0.3s, background-color 0.3s, height 0s 0.3s;
84}
85
86#article_toolbar ul {
87 padding: 1.7em;
88}
89
90#menuContainer.open, #article_toolbar.open {
91 border-width:80px;
92 height: 100%;
93 background: rgba(0,0,0,0.5);
94 -webkit-transition: border-width 0.3s, background-color 0.3s;
95 -moz-transition: border-width 0.3s, background-color 0.3s;
96 transition: border-width 0.3s, background-color 0.3s;
97 z-index: 1;
98}
99
100#links li, #article_toolbar li {
101 list-style: none;
102 display: inline-block;
103}
104
105#links li a, #article_toolbar a {
106 color:#FFF;
107 display: block;
108 position:relative;
109 top: -200px;
110 -webkit-transition: top 0.3s ease;
111 -moz-transition: top 0.3s ease;
112 transition: top 0.3s ease;
113 padding:1.85em 1em;
114}
115
116#links li a {
117 text-decoration:none;
118 text-transform:uppercase;
119}
120
121#links li a:hover, #links li a:focus {
122 background: #FFF;
123 color:#000;
124}
125
126#menuContainer.open li a, #article_toolbar.open a {
127 top: 0;
128 -webkit-transition: top 0.3s ease;
129 -moz-transition: top 0.3s ease;
130 transition: top 0.3s ease;
131 -webkit-transition-delay:0.25ms;
132 -moz-transition-delay:0.25ms;
133 transition-delay:0.25ms;
134}
135
136#menuContainer.open li:nth-child(2) a {
137 -webkit-transition-delay:0.50ms;
138 -moz-transition-delay:0.50ms;
139 transition-delay:0.50ms;
140}
141
142#menuContainer.open li:nth-child(3) a {
143 -webkit-transition-delay:1ms;
144 -moz-transition-delay:1ms;
145 transition-delay:1ms;
146}
147
148#menuContainer.open li:nth-child(4) a {
149 -webkit-transition-delay:1.25ms;
150 -moz-transition-delay:1.25ms;
151 transition-delay:1.25ms;
152}
153
154#menuContainer.open li:nth-child(5) a {
155 -webkit-transition-delay:1.55ms;
156 -moz-transition-delay:1.55ms;
157 transition-delay:1.55ms;
158}
159
160#article_toolbar li:nth-child(2) { display: none; }
161
162#menu:before {
163 content: "\e801";
164 display: block;
165 text-indent: 0;
166}
167
168body > header {
169 position: fixed;
170 top: 0;
171 left: 1em;
172 z-index: 10;
173}
174
175#main {
176 padding:6em;
177}
178
179/* ==========================================================================
180 entrie
181 ========================================================================== */
182
183.entrie, #article {
184 width: 45em;
185 margin: auto;
186 position:relative;
187 padding: 0 0 1em 0;
188 margin-bottom: 1.5em;
189}
190
191#article a {
192 text-decoration: underline;
193 color:#000;
194}
195
196#article a:hover, #article a:focus {
197 text-decoration: none;
198}
199
200.entrie:after {
201 content:"";
202 position: absolute;
203 width: 100%;
204 height: 4px;
205 background: #000;
206 bottom:0;
207 left: -1em;
208}
209
210.entrie p {
211 padding:0 0 0 1.5em;
212}
213
214.entrie:before {
215 content:'';
216 position: absolute;
217 top: 0;
218 left: -1em;
219 width: 4px;
220 height: 100%;
221 background: #000;
222}
223
224.entrie h2:after {
225 content:"";
226 display: block;
227 width: 0;
228 height: 0;
229 border-color: #000;
230 border-width:7px;
231 border-color:transparent transparent transparent #000;
232 border-style: solid;
233 position: absolute;
234 top: 0.8em;
235 right: -0.58em;
236}
237
238.entrie h2 {
239 margin:0;
240 display: inline-block;
241 position: relative;
242 max-width: 78%;
243}
244
245.entrie h2 a {
246 color:#000;
247 text-decoration:none;
248 display: block;
249 background: #000;
250 padding: 0.4em 1em;
251 color:#FFF;
252 margin-left: -0.5em;
253 -webkit-transition: all 0.3s ease-out;
254 -moz-transition: all 0.3s ease-out;
255 transition: all 0.3s ease-out;
256}
257
258.entrie h2 a:hover, .entrie h2 a:focus {
259 padding:0.4em 1em 0.4em 2em;
260}
261
262ul {
263 padding:0;
264 margin:0;
265}
266
267ul li {
268 list-style: none;
269}
270
271.tools {
272 display: inline-block;
273 margin-left: 1em;
274 vertical-align: top;
275 padding-top: 1em;
276}
277
278.tools a span {
279 position:absolute;
280 top: -99999px;
281}
282
283.tools li {
284 display: inline-block;
285}
286
287.tools a {
288 display: block;
289 color:#FFF;
290 background: #000;
291 text-decoration:none;
292 height: 1.5em;
293 width: 1.5em;
294 text-align: center;
295 line-height:1.5em;
296 border-radius: 90px;
297}
298
299.tools a:hover, .tools a:focus {
300 background: #FFF;
301 color:#000;
302}
303
304.tools a:before { display: block; font-family: 'icomoon'; }
305
306
307.fav-off:before, .fav:before { content: '\e805'; } /* '' */
308.archive-off:before, .archive:before { content: '\e804'; } /* '' */
309.tools .archive, .tools .fav {
310 background: #FFF;
311 color:#000;
312}
313.link:before { content: '\e801'; } /* '' */
314.delete:before { content: '\e80c'; } /* '' */
315.reading-time:before { content: '\e803'; } /* '' */
316
317#article_toolbar a:before {
318 display: block;
319 font-family: 'icomoon';
320}
321
322#article_toolbar a {
323 display: block;
324 color:#000;
325 background: #FFF;
326 text-decoration:none;
327 height: 1.5em;
328 width: 1.5em;
329 text-align: center;
330 line-height:1.5em;
331 border-radius: 90px;
332 padding: 0;
333}
334
335#article_toolbar a:hover, #article_toolbar a:focus {
336 background: #000;
337 color:#FFF;
338}
339
340#article_toolbar span {
341 position: absolute;
342 top: -99999px;
343}
344
345.email:before { content: '\e80a'; } /* '' */
346.icon-check:before { content: '\e804'; } /* '' */
347.back:before { content: '\e806'; } /* '' */
348.flattr:before { content: '\e800'; } /* '' */
349.bad-display:before { content: '\e600'; } /* '' */
350.twitter:before { content: '\e807'; } /* '' */
351
352#article_toolbar .flattrli {
353 display: none;
354}
355
356#article_toolbar li {
357 margin: 0 0 0 1em;
358}
359
360
361footer {
362 position: fixed;
363 bottom: 0;
364 width: 100%;
365 padding: 0 2%;
366 left: 0;
367 text-align:right;
368 font-size: 0.8em;
369 font-style: italic;
370 background: rgba(255,255,255,0.5);
371}
372
373footer a {
374 color:#000;
375}
376
377footer a:hover,footer a:focus {
378 text-decoration: none;
379}
380
381footer p:first-child {
382 float:left;
383}
384
385#loginForm fieldset {
386 border:5px solid #000;
387 padding: 1.5em;
388}
389
390fieldset {
391 border:0;
392 padding: 0;
393}
394
395#loginForm {
396 max-width: 25em;
397 margin: auto;
398}
399
400#loginForm .row {
401 margin-bottom: 0.5em;
402}
403
404form h2 {
405 margin-top: 0;
406}
407
408form label {
409 width: 40%;
410 display: inline-block;
411}
412
413form input[type="text"], form input[type="password"], form input[type='url'], form select {
414 border:1px solid #000;
415 padding:0.5em 1em;
416}
417
418@media screen and (-webkit-min-device-pixel-ratio:0){
419 form select{
420 -webkit-appearance: none;
421 background: url(../img/bg-select.png) no-repeat right center;
422 padding-right: 2.2em;
423 border-radius: 0;
424 }
425}
426
427form button, form input[type="submit"] {
428 background: #000;
429 color:#FFF;
430 border:0;
431 font-size:1em;
432 padding:0.5em 1em;
433 margin-top: 1em;
434 cursor: pointer;
435}
436
437form button:hover, form button:focus, form input[type="submit"]:hover, form input[type="submit"]:focus {
438 background: #FFF;
439 color: #000;
440}
441
442/* ==========================================================================
443 Config
444 ========================================================================== */
445
446#config {
447 max-width: 60%;
448 margin: auto;
449}
450
451#config a {
452 background: #000;
453 text-decoration: none;
454 color:#FFF;
455 padding: 0.2em 1em;
456}
457
458#config .special {
459 background: none;
460 padding:0;
461 color: #000;
462}
463
464#config a:hover, #config a:focus {
465 background: #FFF;
466 color:#000;
467}
468
469#config li {
470 margin-bottom: 1em;
471}
472
473#plainurl {
474 font-size: 1em;
475}
476
477#config label {
478 width: 20%;
479}
480
481.results {
482 max-width: 62.5%;
483 font-style:italic;
484 margin: 1em auto 2.5em;
485}
486
487#sort {
488 max-width: 62.5%;
489 margin: 0 auto -2.5em;
490 text-align: right;
491 border-bottom:1px dotted #000;
492}
493
494#sort li {
495 display: inline-block;
496 vertical-align: top;
497 position: relative;
498 top: -0.1em;
499 margin-left: 1em;
500}
501
502#sort li img {
503 display: none;
504}
505
506#sort a {
507 display: inline-block;
508 font-family: 'fontello';
509 color:#000;
510 text-decoration: none;
511}
512
513#sort a:hover, #sort a:focus {
514 text-decoration: underline;
515}
516
517#sort a:before {
518 display: block;
519}
520
521#sort li a:first-child:before {
522 content: '\e809';
523}
524
525#sort li a:first-child + a:before {
526 content: '\e80b';
527}
528
529@media screen and (max-width: 860px) {
530 .entrie, #article {
531 width: 30em;
532 }
533}
534
535@media screen and (max-width: 650px) {
536 #menuContainer ul, #article_toolbar ul {
537 width: 120px;
538 height: 100%;
539 }
540
541 body > header {
542 position: static;
543 }
544
545 #main {
546 padding: 0 0.5em 6em;
547 }
548
549 #menu {
550 display: none;
551 }
552
553 #main:before {
554 content:none;
555 }
556
557 #menuContainer, #article_toolbar, #menuContainer ul, #article_toolbar ul {
558 position: static;
559 width: 100%;
560 height: auto;
561 }
562
563 #links li a, #article_toolbar a {
564 position: static;
565 color: #000;
566 }
567
568 #links li a {
569 padding: 1em;
570 min-width: 120px;
571 text-align: left;
572 }
573
574 #article_toolbar li {
575 margin-bottom: 1em;
576 margin-left: 0.5em;
577 }
578
579}
580
581@media screen and (max-width: 500px) {
582 .entrie, #article {
583 width: 17em;
584 }
585 .entrie h2 {
586 width: 100%;
587 max-width: none;
588 }
589 .entrie h2 a:hover, .entrie h2 a:focus {
590 padding-left: 1em;
591 background: #FFF;
592 color: #000;
593 }
594 .entrie h2:after {
595 content:none;
596 }
597
598 .messages {
599 width: 100%!important;
600 }
601
602 #sort {
603 margin: 3em auto 0;
604 max-width: none;
605 text-align: center;
606 }
607 #config {
608 margin: 7em auto 0;
609 max-width: none;
610 }
611 #config label { width: 100%; }
612 .results {
613 max-width: none;
614 margin-bottom: 1em;
615 }
616
617 footer p:first-child {
618 float: none;
619 }
620 footer {
621 position:static;
622 }
623}
624
625
626.w600p {
627 width: 70%;
628 margin: auto;
629}
630
631.tagForm {
632 margin: 1em 0;
633}
634
635.tagForm p {
636 font-style: italic;
637 margin: 0;
638 font-size: 0.8em;
639 color: #999;
640}
641
642.tagForm label {
643 width: auto;
644 margin-right: 1em;
645}
646
647.back:before {
648 font-family: "icomoon";
649}
650
651.back.link {
652 color: #000;
653 text-decoration: none;
654}
655
656.back.link:before {
657 margin-right: 0.5em;
658}
659
660.tag-list a {
661 color: #000;
662 text-decoration: none;
663}
664
665.tag-list li {
666 display: inline-block;
667 margin-right: 1em;
668}
669
670a:hover {
671 text-decoration: underline;
672}
673
674.tag {
675 background: #000;
676 color: #FFF;
677 padding: 0.5em 1em;
678 text-decoration: none;
679}
680
681.tag:hover, .tag:focus {
682 background: #FFF;
683 color: #000;
684} \ No newline at end of file
diff --git a/themes/courgette/edit-tags.twig b/themes/courgette/edit-tags.twig
deleted file mode 100644
index bcddbe46..00000000
--- a/themes/courgette/edit-tags.twig
+++ /dev/null
@@ -1,20 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}edit tags{% endblock %}
3{% block menu %}
4{% include '_menu.twig' %}
5{% endblock %}
6{% block content %}
7{% if tags is empty %}
8<em>no tags</em>
9{% endif %}
10<ul class='tag-list'>
11{% for tag in tags %}<li>{{ tag.value }} <a href="./?action=remove_tag&amp;tag_id={{ tag.id }}&amp;id={{ entry_id }}">✘</a></li>{% endfor %}
12</ul>
13<form method="post" action="./?action=add_tag" class="tagForm">
14 <label for="value">Add tags: </label><input type="text" placeholder="interview, editorial, video" id="value" name="value" required="required" />
15 <p>{% trans "You can enter multiple tags, separated by commas." %}</p>
16 <input type="hidden" name="entry_id" value="{{ entry_id }}" />
17 <input type="submit" value="Tag" />
18</form>
19<a class="back link" href="./?view=view&id={{ entry_id }}">{% trans "return to article" %}</a>
20{% endblock %}
diff --git a/themes/courgette/error.twig b/themes/courgette/error.twig
deleted file mode 100755
index 4d4db1f3..00000000
--- a/themes/courgette/error.twig
+++ /dev/null
@@ -1,6 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}{% trans "plop" %}{% endblock %}
3{% block content %}
4 {{ msg|raw }}
5 <p>Don't forget <a href="http://doc.wallabag.org">the documentation</a>.</p>
6{% endblock %} \ No newline at end of file
diff --git a/themes/courgette/font/icomoon.eot b/themes/courgette/font/icomoon.eot
deleted file mode 100755
index ff2d109d..00000000
--- a/themes/courgette/font/icomoon.eot
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/font/icomoon.svg b/themes/courgette/font/icomoon.svg
deleted file mode 100755
index 8968452d..00000000
--- a/themes/courgette/font/icomoon.svg
+++ /dev/null
@@ -1,23 +0,0 @@
1<?xml version="1.0" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3<svg xmlns="http://www.w3.org/2000/svg">
4<metadata>Generated by IcoMoon</metadata>
5<defs>
6<font id="icomoon" horiz-adv-x="512">
7<font-face units-per-em="512" ascent="480" descent="-32" />
8<missing-glyph horiz-adv-x="512" />
9<glyph unicode="&#x20;" d="" horiz-adv-x="256" />
10<glyph unicode="&#xe600;" d="M256 389.333c-94.272 0-170.667-76.416-170.667-170.666s76.394-170.667 170.667-170.667 170.667 76.416 170.667 170.667-76.394 170.666-170.667 170.666zM335.082 169.749c8.341-8.341 8.341-21.824 0-30.166-4.16-4.16-9.622-6.25-15.082-6.25s-10.923 2.091-15.082 6.25l-48.918 48.918-48.917-48.918c-4.16-4.16-9.621-6.25-15.083-6.25s-10.923 2.091-15.083 6.25c-8.341 8.341-8.341 21.824 0 30.166l48.917 48.918-48.917 48.917c-8.341 8.341-8.341 21.824 0 30.166s21.824 8.341 30.166 0l48.917-48.917 48.918 48.917c8.341 8.341 21.824 8.341 30.166 0s8.341-21.824 0-30.166l-48.918-48.917 48.918-48.918z" />
11<glyph unicode="&#xe800;" d="M0 25.856v263.168q0 91.648 43.52 142.336t132.608 50.688h280.576q-2.56-2.56-26.624-27.136t-51.2-51.712-55.808-55.808-48.64-47.616-21.504-18.944q-7.68 0-7.68 8.192v79.872h-24.576q-30.208 0-48.128-3.072t-32.256-13.312-19.968-29.184-6.144-49.152v-134.144zM34.304-34.048q2.56 2.56 27.136 27.136t51.2 51.712 55.808 56.32 48.64 47.616 20.992 18.432q7.68 0 7.68-8.192v-79.872h24.576q59.392 0 82.944 18.432t23.040 76.288v134.144l114.688 114.176v-263.168q0-91.648-43.008-142.336t-133.12-50.688h-280.576z" horiz-adv-x="491" />
12<glyph unicode="&#xe801;" d="M150.528 104.192q7.168 7.168 17.408 7.168t18.432-7.168q16.384-17.408 0-35.84l-21.504-20.48q-28.672-28.672-67.584-28.672-39.936 0-68.608 28.672t-28.672 67.584q0 39.936 28.672 68.608l75.776 75.776q35.84 34.816 73.728 39.424t65.536-22.016q8.192-8.192 8.192-18.432t-8.192-18.432q-18.432-16.384-35.84 0-25.6 24.576-67.584-17.408l-75.776-74.752q-13.312-13.312-13.312-32.768t13.312-31.744q13.312-13.312 32.256-13.312t32.256 13.312zM380.928 398.080q28.672-28.672 28.672-67.584 0-39.936-28.672-68.608l-80.896-80.896q-37.888-36.864-76.8-36.864-31.744 0-57.344 25.6-7.168 7.168-7.168 17.408t7.168 18.432q7.168 7.168 17.92 7.168t17.92-7.168q25.6-24.576 62.464 12.288l80.896 79.872q14.336 14.336 14.336 32.768 0 19.456-14.336 31.744-12.288 13.312-28.672 15.872t-30.72-10.752l-25.6-25.6q-8.192-7.168-18.432-7.168t-17.408 7.168q-17.408 17.408 0 35.84l25.6 25.6q27.648 27.648 65.024 26.112t66.048-31.232z" horiz-adv-x="410" />
13<glyph unicode="&#xe802;" d="M438.784 96v-36.352q0-7.68-5.12-12.8t-13.312-5.632h-401.92q-7.68 0-12.8 5.632t-5.632 12.8v36.352q0 7.68 5.632 12.8t12.8 5.632h401.92q7.68 0 13.312-5.632t5.12-12.8zM438.784 242.432v-36.864q0-7.168-5.12-12.8t-13.312-5.12h-401.92q-7.68 0-12.8 5.12t-5.632 12.8v36.864q0 7.168 5.632 12.8t12.8 5.12h401.92q7.68 0 13.312-5.12t5.12-12.8zM438.784 388.352v-36.352q0-7.68-5.12-12.8t-13.312-5.632h-401.92q-7.68 0-12.8 5.632t-5.632 12.8v36.352q0 7.68 5.632 13.312t12.8 5.12h401.92q7.68 0 13.312-5.12t5.12-13.312z" horiz-adv-x="439" />
14<glyph unicode="&#xe803;" d="M235.52 459.52q97.28 0 166.4-69.12t69.12-166.4-69.12-166.4-166.4-69.12-166.4 69.12-69.12 166.4 69.12 166.4 166.4 69.12zM235.52 39.68q76.8 0 130.56 54.272t53.76 130.048q0 76.8-53.76 130.56t-130.56 53.76q-75.776 0-130.048-53.76t-54.272-130.56q0-75.776 54.272-130.048t130.048-54.272zM253.952 357.12v-124.928l76.8-76.8-25.6-25.6-87.040 87.040v140.288h35.84z" horiz-adv-x="471" />
15<glyph unicode="&#xe804;" d="M127.488 44.8q-17.408 0-28.672 14.336l-92.16 120.832q-8.192 12.288-6.144 26.624t13.312 23.552 26.112 7.168 24.064-14.336l60.416-78.848 151.552 242.688q8.192 12.288 22.016 15.36t27.136-4.096q12.288-8.192 15.36-22.016t-4.096-27.136l-179.2-286.72q-10.24-16.384-28.672-16.384z" horiz-adv-x="342" />
16<glyph unicode="&#xe805;" d="M225.28 449.28l61.44-172.032h163.84l-134.144-100.352 48.128-178.176-139.264 106.496-139.264-106.496 48.128 178.176-134.144 100.352h163.84z" horiz-adv-x="451" />
17<glyph unicode="&#xe806;" d="M460.8 49.92q-44.032 77.824-106.496 100.864t-168.96 23.040v-111.616l-185.344 171.008 185.344 164.864v-98.304q46.080 0 86.016-13.824t67.072-35.84 49.152-48.64 35.328-53.248 22.528-48.64 12.288-35.328z" horiz-adv-x="461" />
18<glyph unicode="&#xe807;" d="M471.040 370.432q-18.432-27.648-48.128-50.176v-12.288q0-66.56-30.72-128t-95.232-103.936-148.48-42.496q-81.92 0-148.48 43.008 7.168-1.024 23.552-1.024 67.584 0 119.808 40.96-31.744 1.024-56.32 19.456t-33.792 48.128q5.12-2.048 17.408-2.048 13.312 0 25.6 3.072-33.792 7.168-55.296 33.792t-21.504 61.44v1.024q18.432-10.24 43.008-12.288-43.008 29.696-43.008 80.896 0 24.576 13.312 48.128 78.848-96.256 199.68-100.352-3.072 9.216-3.072 21.504 0 39.936 28.16 68.096t69.12 28.16q41.984 0 69.632-29.696 30.72 6.144 61.44 22.528-10.24-33.792-41.984-53.248 28.672 4.096 55.296 15.36z" horiz-adv-x="471" />
19<glyph unicode="&#xe809;" d="M0 314.112l75.776 75.776 180.224-179.712 180.224 179.712 75.776-75.776-256-256-75.776 75.776z" />
20<glyph unicode="&#xe80a;" d="M475.648 50.432v219.136q-9.216-10.24-19.968-18.944-76.288-58.368-121.856-96.256-14.336-12.288-23.552-19.456t-24.576-13.824-29.184-6.656h-1.024q-13.312 0-29.184 6.656t-24.576 13.824-23.552 19.456q-45.056 37.888-121.856 96.256-10.752 8.704-19.968 18.944v-219.136q0-4.096 3.072-6.656t6.144-2.56h420.864q3.584 0 6.144 2.56t3.072 6.656zM475.648 350.464v7.168t-0.512 3.584-0.512 3.584-1.536 2.56-2.56 2.048-4.096 1.024h-420.864q-3.584 0-6.144-3.072t-3.072-6.144q0-48.128 41.984-81.408 55.296-43.52 114.688-90.624 2.048-1.024 10.24-8.192t12.8-10.752 12.8-9.216 14.336-7.68 12.288-2.56h1.024q5.632 0 12.288 2.56t14.336 7.68 12.8 9.216 12.8 10.752 10.24 8.192q59.392 47.104 114.688 90.624 15.36 12.288 28.672 33.28t13.312 37.376zM512 361.216v-310.784q0-18.944-13.312-32.256t-32.256-13.824h-420.864q-18.432 0-32.256 13.824t-13.312 32.256v310.784q0 18.944 13.312 32.256t32.256 13.312h420.864q18.944 0 32.256-13.312t13.312-32.256z" />
21<glyph unicode="&#xe80b;" d="M0 133.888l256 256 256-256-75.776-75.776-180.224 179.712-180.224-179.712z" />
22<glyph unicode="&#xe80c;" d="M25.6 279.296q62.464-35.84 168.96-35.84t168.96 35.84l-27.648-248.832q-1.024-7.168-17.92-18.432t-51.2-22.016-72.192-10.752-71.68 10.752-51.2 22.016-18.432 18.432zM275.456 432.896q48.128-9.216 80.896-28.16t32.768-36.352v-5.12q0-29.696-57.344-50.688t-137.216-20.992-137.216 20.992-57.344 50.688v5.12q0 17.408 32.768 36.352t80.896 28.16l21.504 24.576q11.264 13.312 35.84 13.312h47.104q26.624 0 35.84-13.312zM247.808 375.552h43.008q-47.104 56.32-53.248 64.512-7.168 8.192-16.384 8.192h-52.224q-11.264 0-16.384-8.192l-54.272-64.512h43.008l32.768 33.792h41.984z" horiz-adv-x="389" />
23</font></defs></svg> \ No newline at end of file
diff --git a/themes/courgette/font/icomoon.ttf b/themes/courgette/font/icomoon.ttf
deleted file mode 100755
index 52463a87..00000000
--- a/themes/courgette/font/icomoon.ttf
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/font/icomoon.woff b/themes/courgette/font/icomoon.woff
deleted file mode 100755
index ddb96f29..00000000
--- a/themes/courgette/font/icomoon.woff
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/home.twig b/themes/courgette/home.twig
deleted file mode 100755
index 811298eb..00000000
--- a/themes/courgette/home.twig
+++ /dev/null
@@ -1,62 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}
3{% if view == 'fav' %}
4{% trans "favoris" %}
5{% elseif view == 'archive' %}
6{% trans "archive" %}
7{% else %}
8{% trans "unread" %}
9{% endif %}
10{% endblock %}
11{% block menu %}
12{% include '_menu.twig' %}
13{% endblock %}
14{% block precontent %}
15 {% if entries|length > 1 %}
16 <ul id="sort">
17 <li><a href="./?sort=ia&amp;view={{ view }}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/top.png" alt="{% trans "by date asc" %}" title="{% trans "by date asc" %}" /></a> {% trans "by date" %} <a href="./?sort=id&amp;view={{ view }}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/down.png" alt="{% trans "by date desc" %}" title="{% trans "by date desc" %}" /></a></li>
18 <li><a href="./?sort=ta&amp;view={{ view }}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/top.png" alt="{% trans "by title asc" %}" title="{% trans "by title asc" %}" /></a> {% trans "by title" %} <a href="./?sort=td&amp;view={{ view }}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/down.png" alt="{% trans "by title desc" %}" title="{% trans "by title desc" %}" /></a></li>
19 </ul>
20 {% endif %}
21{% endblock %}
22{% block content %}
23 {% if entries is empty %}
24 <div class="messages warning"><p>{% trans "No link available here!" %}</p></div>
25 {% else %}
26 {% block pager %}
27 {% if nb_results > 1 %}
28 <div class="results">
29 <div class="nb-results">{{ nb_results }} {% trans "results" %}{% if search_term is defined %}{% trans " found for « " %} {{ search_term }} »{% endif %}</div>
30 {{ page_links | raw }}
31 </div>
32 {% elseif nb_results == 1 %}
33 {% if search_term is defined %}
34 <div class="results">
35 <div class="nb-results">{% trans "Only one result found for " %} « {{ search_term }} »</div>
36 </div>
37 {% endif %}
38 {% endif %}
39 {% endblock %}
40 {% for entry in entries %}
41 <div id="entry-{{ entry.id|e }}" class="entrie">
42 <h2><a href="index.php?view=view&amp;id={{ entry.id|e }}">{{ entry.title|raw }}</a></h2>
43 <ul class="tools">
44 <li><a title="{% trans "toggle mark as read" %}" class="tool {% if entry.is_read == 0 %}archive-off{% else %}archive{% endif %}" href="./?action=toggle_archive&amp;id={{ entry.id|e }}"><span>{% trans "toggle mark as read" %}</span></a></li>
45 <li><a title="{% trans "toggle favorite" %}" class="tool {% if entry.is_fav == 0 %}fav-off{% else %}fav{% endif %}" href="./?action=toggle_fav&amp;id={{ entry.id|e }}"><span>{% trans "toggle favorite" %}</span></a></li>
46 <li><a title="{% trans "delete" %}" class="tool delete" href="./?action=delete&amp;id={{ entry.id|e }}"><span>{% trans "delete" %}</span></a></li>
47 <li><a href="{{ entry.url|e }}" target="_blank" title="{% trans "original" %} : {{ entry.title|e }}" class="tool link"><span>{{ entry.url | e | getDomain }}</span></a></li>
48 <li><a target="_blank" title="{% trans "estimated reading time:" %} {{ entry.content| getReadingTime }} min" class="tool reading-time"><span>{{ entry.content| getReadingTime }} min</span></a></li>
49 </ul>
50 <p>{{ entry.content|striptags|slice(0, 300) }}...</p>
51 </div>
52 {% endfor %}
53
54 {{ block('pager') }}
55
56 {% if tag %}<a title="{% trans "Download the articles from this tag in an epub" %}" href="./?epub&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download the articles from this tag in an epub" %}</a>
57 {% elseif search_term is defined %}<a title="{% trans "Download the articles from this search in an epub" %}" href="./?epub&amp;method=search&amp;value={{ search_term }}">{% trans "Download the articles from this search in an epub" %}</a>
58 {% else %}<a title="{% trans "Download the articles from this category in an epub" %}" href="./?epub&amp;method=category&amp;value={{ view }}">{% trans "Download the articles from this category in an epub" %}</a>{% endif %}
59
60 {% endif %}
61
62{% endblock %} \ No newline at end of file
diff --git a/themes/courgette/img/apple-touch-icon-144x144-precomposed.png b/themes/courgette/img/apple-touch-icon-144x144-precomposed.png
deleted file mode 100755
index 557b479c..00000000
--- a/themes/courgette/img/apple-touch-icon-144x144-precomposed.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/apple-touch-icon-72x72-precomposed.png b/themes/courgette/img/apple-touch-icon-72x72-precomposed.png
deleted file mode 100755
index e167d3a4..00000000
--- a/themes/courgette/img/apple-touch-icon-72x72-precomposed.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/apple-touch-icon.png b/themes/courgette/img/apple-touch-icon.png
deleted file mode 100755
index 4d222fba..00000000
--- a/themes/courgette/img/apple-touch-icon.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/bg-select.png b/themes/courgette/img/bg-select.png
deleted file mode 100644
index 3a77d0eb..00000000
--- a/themes/courgette/img/bg-select.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/backtotop.png b/themes/courgette/img/default/backtotop.png
deleted file mode 100755
index 051238ef..00000000
--- a/themes/courgette/img/default/backtotop.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/bad-display.png b/themes/courgette/img/default/bad-display.png
deleted file mode 100755
index 6866799f..00000000
--- a/themes/courgette/img/default/bad-display.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/checkmark-off.png b/themes/courgette/img/default/checkmark-off.png
deleted file mode 100755
index 3db5a06d..00000000
--- a/themes/courgette/img/default/checkmark-off.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/checkmark-on.png b/themes/courgette/img/default/checkmark-on.png
deleted file mode 100755
index cd3abb2c..00000000
--- a/themes/courgette/img/default/checkmark-on.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/clock.png b/themes/courgette/img/default/clock.png
deleted file mode 100755
index 6164e92b..00000000
--- a/themes/courgette/img/default/clock.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/down.png b/themes/courgette/img/default/down.png
deleted file mode 100755
index b9d536a7..00000000
--- a/themes/courgette/img/default/down.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/envelop.png b/themes/courgette/img/default/envelop.png
deleted file mode 100755
index 6be1c886..00000000
--- a/themes/courgette/img/default/envelop.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/flattr.png b/themes/courgette/img/default/flattr.png
deleted file mode 100755
index 0404aaea..00000000
--- a/themes/courgette/img/default/flattr.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/left.png b/themes/courgette/img/default/left.png
deleted file mode 100755
index a0a53631..00000000
--- a/themes/courgette/img/default/left.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/link.png b/themes/courgette/img/default/link.png
deleted file mode 100755
index db62819d..00000000
--- a/themes/courgette/img/default/link.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/remove.png b/themes/courgette/img/default/remove.png
deleted file mode 100755
index f8ad56a3..00000000
--- a/themes/courgette/img/default/remove.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/shaarli.png b/themes/courgette/img/default/shaarli.png
deleted file mode 100755
index 1eb30f60..00000000
--- a/themes/courgette/img/default/shaarli.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/star-off.png b/themes/courgette/img/default/star-off.png
deleted file mode 100755
index 6a0133a7..00000000
--- a/themes/courgette/img/default/star-off.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/star-on.png b/themes/courgette/img/default/star-on.png
deleted file mode 100755
index a9f96eaa..00000000
--- a/themes/courgette/img/default/star-on.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/top.png b/themes/courgette/img/default/top.png
deleted file mode 100755
index 954a8c0a..00000000
--- a/themes/courgette/img/default/top.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/default/twitter.png b/themes/courgette/img/default/twitter.png
deleted file mode 100755
index cfcfe419..00000000
--- a/themes/courgette/img/default/twitter.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/favicon.ico b/themes/courgette/img/favicon.ico
deleted file mode 100755
index 0e9ff779..00000000
--- a/themes/courgette/img/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/logo.png b/themes/courgette/img/logo.png
deleted file mode 100755
index 5305c77d..00000000
--- a/themes/courgette/img/logo.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/logo.svg b/themes/courgette/img/logo.svg
deleted file mode 100644
index 865da440..00000000
--- a/themes/courgette/img/logo.svg
+++ /dev/null
@@ -1,8 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="64" height="64">
3 <circle cx="32" cy="32" r="29.5" style="fill:#000" />
4 <path d="m 16,18 33,0 0,26 -16.5,6 -16.5,-6 z" fill="#fff" />
5 <rect width="9" height="2.5" x="17.5" y="24.5" fill="#000" />
6 <rect width="9" height="2.5" x="28" y="24.5" fill="#000" />
7 <rect width="9" height="2.5" x="38.5" y="24.5" fill="#000" />
8</svg>
diff --git a/themes/courgette/img/messages/close.png b/themes/courgette/img/messages/close.png
deleted file mode 100755
index 731aa018..00000000
--- a/themes/courgette/img/messages/close.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/messages/cross.png b/themes/courgette/img/messages/cross.png
deleted file mode 100755
index 1514d51a..00000000
--- a/themes/courgette/img/messages/cross.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/messages/help.png b/themes/courgette/img/messages/help.png
deleted file mode 100755
index 5c870176..00000000
--- a/themes/courgette/img/messages/help.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/messages/tick.png b/themes/courgette/img/messages/tick.png
deleted file mode 100755
index a9925a06..00000000
--- a/themes/courgette/img/messages/tick.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/img/messages/warning.png b/themes/courgette/img/messages/warning.png
deleted file mode 100755
index 628cf2da..00000000
--- a/themes/courgette/img/messages/warning.png
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/js/init.js b/themes/courgette/js/init.js
deleted file mode 100755
index dca83906..00000000
--- a/themes/courgette/js/init.js
+++ /dev/null
@@ -1,6 +0,0 @@
1$.fn.ready(function () {
2 $('#menu').on('click', function(){
3 $('body').toggleClass('menuOpen');
4 $('#menuContainer, #article_toolbar').toggleClass('open');
5 });
6}) \ No newline at end of file
diff --git a/themes/courgette/layout.twig b/themes/courgette/layout.twig
deleted file mode 100755
index 57c2cc98..00000000
--- a/themes/courgette/layout.twig
+++ /dev/null
@@ -1,32 +0,0 @@
1<!DOCTYPE html>
2<!--[if lte IE 6]><html class="no-js ie6 ie67 ie678" lang="{{ lang }}"><![endif]-->
3<!--[if lte IE 7]><html class="no-js ie7 ie67 ie678" lang="{{ lang }}"><![endif]-->
4<!--[if IE 8]><html class="no-js ie8 ie678" lang="{{ lang }}"><![endif]-->
5<!--[if gt IE 8]><html class="no-js" lang="{{ lang }}"><![endif]-->
6<html lang="{{ lang }}">
7 <head>
8 <meta name="viewport" content="initial-scale=1.0">
9 <meta charset="utf-8">
10 <!--[if IE]>
11 <meta http-equiv="X-UA-Compatible" content="IE=10">
12 <![endif]-->
13 <title>{% block title %}{% endblock %} - wallabag</title>
14{% include '_head.twig' %}
15{% include '_bookmarklet.twig' %}
16 </head>
17 <body>
18 {% include '_top.twig' %}
19 <div id="main">
20 <button id="menu"><span>Menu</span></button>
21 {% block menu %}{% endblock %}
22 {% block precontent %}{% endblock %}
23 {% block messages %}
24 {% include '_messages.twig' %}
25 {% endblock %}
26 <div id="content" class="w600p center">
27 {% block content %}{% endblock %}
28 </div>
29 </div>
30{% include '_footer.twig' %}
31 </body>
32</html> \ No newline at end of file
diff --git a/themes/courgette/login.twig b/themes/courgette/login.twig
deleted file mode 100755
index 1fec0fc9..00000000
--- a/themes/courgette/login.twig
+++ /dev/null
@@ -1,32 +0,0 @@
1{% extends "layout.twig" %}
2
3{% block title %}{% trans "login to your wallabag" %}{% endblock %}
4{% block content %}
5 <form method="post" action="?login" name="loginform" id="loginForm">
6 <fieldset class="w500p center">
7 <h2 class="mbs txtcenter">{% trans "login to your wallabag" %}</h2>
8 {% if constant('MODE_DEMO') == 1 %}<p>{% trans "you are in demo mode, some features may be disabled." %}</p>{% endif %}
9 <div class="row">
10 <label class="col w150p" for="login">{% trans "Login" %}</label>
11 <input class="col" type="text" id="login" name="login" placeholder="Login" tabindex="1" autofocus {% if constant('MODE_DEMO') == 1 %}value="poche"{% endif %} />
12 </div>
13
14 <div class="row">
15 <label class="col w150p" for="password">{% trans "Password" %}</label>
16 <input class="col" type="password" id="password" name="password" placeholder="Password" tabindex="2" {% if constant('MODE_DEMO') == 1 %}value="poche"{% endif %} />
17 </div>
18 <div class="row">
19 <label class="col w150p" for="longlastingsession">{% trans "Stay signed in" %}</label>
20 <div class="col">
21 <input type="checkbox" id="longlastingsession" name="longlastingsession" tabindex="3">
22 <small class="inbl">{% trans "(Do not check on public computers)" %}</small>
23 </div>
24 </div>
25 <div class="row mts txtcenter">
26 <button class="bouton" type="submit" tabindex="4">{% trans "Login" %}</button>
27 </div>
28 </fieldset>
29 <input type="hidden" name="returnurl" value="{{ referer }}">
30 <input type="hidden" name="token" value="{{ token }}">
31 </form>
32{% endblock %} \ No newline at end of file
diff --git a/themes/courgette/screenshot.jpg b/themes/courgette/screenshot.jpg
deleted file mode 100755
index 44ee4b63..00000000
--- a/themes/courgette/screenshot.jpg
+++ /dev/null
Binary files differ
diff --git a/themes/courgette/tags.twig b/themes/courgette/tags.twig
deleted file mode 100755
index b11dce28..00000000
--- a/themes/courgette/tags.twig
+++ /dev/null
@@ -1,8 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}tags{% endblock %}
3{% block menu %}
4{% include '_menu.twig' %}
5{% endblock %}
6{% block content %}
7{% for tag in tags %}<a class="tag" href="./?view=tag&amp;id={{ tag.id }}">{{ tag.value }}</a> {% if token != '' %}<a href="?feed&amp;type=tag&amp;user_id={{ user_id }}&amp;tag_id={{ tag.id }}&amp;token={{ token }}" target="_blank"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/rss.png" /></a>{% endif %} {% endfor %}
8{% endblock %} \ No newline at end of file
diff --git a/themes/courgette/theme.ini b/themes/courgette/theme.ini
deleted file mode 100644
index 996d171f..00000000
--- a/themes/courgette/theme.ini
+++ /dev/null
@@ -1,3 +0,0 @@
1name = Courgette
2description = Responsive black and white theme especially adapted to smartphones.
3requirements[] = default
diff --git a/themes/default/_head.twig b/themes/default/_head.twig
index 8c939e30..277e3833 100755
--- a/themes/default/_head.twig
+++ b/themes/default/_head.twig
@@ -1,14 +1,36 @@
1 <link rel="shortcut icon" type="image/x-icon" href="{{ poche_url }}themes/default/img/favicon.ico" /> 1 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-152.png" sizes="152x152">
2 <link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ poche_url }}themes/default/img/apple-touch-icon-144x144-precomposed.png"> 2 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-152.png" sizes="152x152">
3 <link rel="apple-touch-icon-precomposed" sizes="72x72" href="{{ poche_url }}themes/default/img/apple-touch-icon-72x72-precomposed.png"> 3
4 <link rel="apple-touch-icon-precomposed" href="{{ poche_url }}themes/default/img/apple-touch-icon-precomposed.png"> 4 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-144.png" sizes="144x144">
5 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-144.png" sizes="144x144">
6
7 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-120.png" sizes="120x120">
8 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-120.png" sizes="120x120">
9
10 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-114.png" sizes="114x114">
11 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-114.png" sizes="114x114">
12
13 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-76.png" sizes="76x76">
14 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-76.png" sizes="76x76">
15
16 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-72.png" sizes="72x72">
17 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-72.png" sizes="72x72">
18
19 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-57.png" sizes="57x57">
20 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-57.png" sizes="57x57">
21
22 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon.png">
23 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon.png">
24
25 <link rel="shortcut icon" type="image/x-icon" href="{{ poche_url }}themes/_global/img/appicon/favicon.ico">
26
5 <link rel="stylesheet" href="{{ poche_url }}themes/default/css/knacss.css" media="all"> 27 <link rel="stylesheet" href="{{ poche_url }}themes/default/css/knacss.css" media="all">
6 <link rel="stylesheet" href="{{ poche_url }}themes/default/css/style.css" media="all"> 28 <link rel="stylesheet" href="{{ poche_url }}themes/default/css/style.css" media="all">
7 <link rel="stylesheet" href="{{ poche_url }}themes/{{ theme }}/css/style-{{ theme }}.css" media="all" title="{{ theme }} theme"> 29 <link rel="stylesheet" href="{{ poche_url }}themes/{{ theme }}/css/style-{{ theme }}.css" media="all" title="{{ theme }} theme">
8 <link rel="stylesheet" href="{{ poche_url }}themes/default/css/messages.css" media="all"> 30 <link rel="stylesheet" href="{{ poche_url }}themes/default/css/messages.css" media="all">
9 <link rel="stylesheet" href="{{ poche_url }}themes/default/css/print.css" media="print"> 31 <link rel="stylesheet" href="{{ poche_url }}themes/default/css/print.css" media="print">
10 <script src="{{ poche_url }}themes/default/js/jquery-2.0.3.min.js"></script> 32 <script src="{{ poche_url }}themes/_global/js/jquery-2.0.3.min.js"></script>
11 <script src="{{ poche_url }}themes/default/js/autoClose.js"></script> 33 <script src="{{ poche_url }}themes/_global/js/autoClose.js"></script>
12 <script src="{{ poche_url }}themes/default/js/closeMessage.js"></script> 34 <script src="{{ poche_url }}themes/default/js/closeMessage.js"></script>
13 <script src="{{ poche_url }}themes/default/js/saveLink.js"></script> 35 <script src="{{ poche_url }}themes/_global/js/saveLink.js"></script>
14 <script src="{{ poche_url }}themes/default/js/popupForm.js"></script> \ No newline at end of file 36 <script src="{{ poche_url }}themes/_global/js/popupForm.js"></script>
diff --git a/themes/default/_highlight.twig b/themes/default/_highlight.twig
new file mode 100755
index 00000000..cdb7c6bf
--- /dev/null
+++ b/themes/default/_highlight.twig
@@ -0,0 +1,4 @@
1 {# include excelent highlight.js library for code highligting, see http://highlightjs.org/ #}
2<link rel="stylesheet" href="{{ poche_url }}themes/default/highlightjs/styles/github.css">
3<script src="{{ poche_url }}themes/default/highlightjs/highlight.pack.js"></script>
4<script>hljs.initHighlightingOnLoad();</script>
diff --git a/themes/default/_menu.twig b/themes/default/_menu.twig
index 9b9a6062..eedf84f1 100644
--- a/themes/default/_menu.twig
+++ b/themes/default/_menu.twig
@@ -6,6 +6,7 @@
6 <li><a href="javascript: void(null);" id="bagit">{% trans "save a link" %}</a><span id="bagit-arrow"></span></li> 6 <li><a href="javascript: void(null);" id="bagit">{% trans "save a link" %}</a><span id="bagit-arrow"></span></li>
7 <li><a href="javascript: void(null);" id="search">{% trans "search" %}</a><span id="search-arrow"></span></li> 7 <li><a href="javascript: void(null);" id="search">{% trans "search" %}</a><span id="search-arrow"></span></li>
8 <li><a href="./?view=config" {% if view == 'config' %}class="current"{% endif %}>{% trans "config" %}</a></li> 8 <li><a href="./?view=config" {% if view == 'config' %}class="current"{% endif %}>{% trans "config" %}</a></li>
9 <li><a href="./?view=about" {% if view == 'about' %}class="current"{% endif %}>{% trans "about" %}</a></li>
9 <li><a href="./?logout" title="{% trans "logout" %}">{% trans "logout" %}</a></li> 10 <li><a href="./?logout" title="{% trans "logout" %}">{% trans "logout" %}</a></li>
10 </ul> 11 </ul>
11 {% include '_pocheit-form.twig' %} 12 {% include '_pocheit-form.twig' %}
diff --git a/themes/default/_search-form.twig b/themes/default/_search-form.twig
index 33bea20d..0cf6097a 100755
--- a/themes/default/_search-form.twig
+++ b/themes/default/_search-form.twig
@@ -2,7 +2,7 @@
2<form method="get" action="index.php"> 2<form method="get" action="index.php">
3 <p> 3 <p>
4 <input type="hidden" name="view" value="search"></input> 4 <input type="hidden" name="view" value="search"></input>
5 <label>{% trans "Search" %}</label> : <input type="text" placeholder="{% trans "Enter your search here" %}" name="search" /> 5 <label>{% trans "Search" %}</label> : <input type="text" required placeholder="{% trans "Enter your search here" %}" name="search" id="searchfield" />
6 <input type="submit" value="{% trans "Search" %} !"></input> 6 <input type="submit" value="{% trans "Search" %} !"></input>
7 </p> 7 </p>
8</form> 8</form>
diff --git a/themes/default/_sorting.twig b/themes/default/_sorting.twig
index ce3d38bc..3ce9b949 100755
--- a/themes/default/_sorting.twig
+++ b/themes/default/_sorting.twig
@@ -1,6 +1,6 @@
1{% if entries|length > 1 %} 1{% if entries|length > 1 %}
2 <ul id="sort"> 2 <ul id="sort">
3 <li><a href="./?sort=ia&amp;view={{ view }}{% if search_term is defined %}&amp;search={{ search_term }}{% endif %}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/top.png" alt="{% trans "by date asc" %}" title="{% trans "by date asc" %}" /></a> {% trans "by date" %} <a href="./?sort=id&amp;view={{ view }}{% if search_term is defined %}&amp;search={{ search_term }}{% endif %}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/down.png" alt="{% trans "by date desc" %}" title="{% trans "by date desc" %}" /></a></li> 3 <li><a href="./?sort=ia&amp;view={{ view }}{% if searchterm is defined %}&amp;search={{ searchterm }}{% endif %}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/top.png" alt="{% trans "by date asc" %}" title="{% trans "by date asc" %}" /></a> {% trans "by date" %} <a href="./?sort=id&amp;view={{ view }}{% if searchterm is defined %}&amp;search={{ searchterm }}{% endif %}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/down.png" alt="{% trans "by date desc" %}" title="{% trans "by date desc" %}" /></a></li>
4 <li><a href="./?sort=ta&amp;view={{ view }}{% if search_term is defined %}&amp;search={{ search_term }}{% endif %}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/top.png" alt="{% trans "by title asc" %}" title="{% trans "by title asc" %}" /></a> {% trans "by title" %} <a href="./?sort=td&amp;view={{ view }}{% if search_term is defined %}&amp;search={{ search_term }}{% endif %}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/down.png" alt="{% trans "by title desc" %}" title="{% trans "by title desc" %}" /></a></li> 4 <li><a href="./?sort=ta&amp;view={{ view }}{% if searchterm is defined %}&amp;search={{ searchterm }}{% endif %}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/top.png" alt="{% trans "by title asc" %}" title="{% trans "by title asc" %}" /></a> {% trans "by title" %} <a href="./?sort=td&amp;view={{ view }}{% if searchterm is defined %}&amp;search={{ searchterm }}{% endif %}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/down.png" alt="{% trans "by title desc" %}" title="{% trans "by title desc" %}" /></a></li>
5 </ul> 5 </ul>
6{% endif %} 6{% endif %}
diff --git a/themes/default/about.twig b/themes/default/about.twig
new file mode 100755
index 00000000..5ca3217c
--- /dev/null
+++ b/themes/default/about.twig
@@ -0,0 +1,74 @@
1{% extends "layout.twig" %}
2
3{% block title %}{% trans "About wallabag" %}{% endblock %}
4{% block menu %}
5{% include '_menu.twig' %}
6{% endblock %}
7{% block content %}
8 <h2>{% trans "About wallabag" %}</h2>
9
10 <dl>
11 <dt>{% trans "Project website" %}</dt>
12 <dd><a href="http://www.wallabag.org">http://www.wallabag.org</a></dd>
13
14 <dt>{% trans "Main developer" %}</dt>
15 <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{% trans "website" %}</a></dd>
16
17 <dt>{% trans "Contributors:" %}</dt>
18 <dd><a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans "on Github" %}</a></dd>
19
20 <dt>{% trans "Bug reports" %}</dt>
21 <dd><a href="http://support.wallabag.org">{% trans "On our support website" %}</a> {% trans "or" %} <a href="https://github.com/wallabag/wallabag/issues">{% trans "on Github" %}</a></dd>
22
23 <dt>{% trans "License" %}</dt>
24 <dd><a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dd>
25
26 <dt>{% trans "Version" %}</dt>
27 <dd>{{ constant('POCHE') }}</dd>
28 </dl>
29
30 <p>{% trans "wallabag is a read-it-later application: you can save a web page by keeping only content. Elements like ads or menus are deleted." %}</p>
31
32 <h2>{% trans "Helping wallabag" %}</h2>
33
34 <p>{% trans "wallabag is free and opensource. You can help us:" %}</p>
35
36 <dl>
37 <dt><a href="http://www.wallabag.org">{% trans "via Paypal" %}</a></dt>
38
39 <dt><a href="http://www.wallabag.org">{% trans "via Flattr" %}</a></dt>
40 </dl>
41
42 <h2>{% trans "Credits" %}</h2>
43 <dl>
44 <dt>PHP Readability</dt>
45 <dd><a href="https://bitbucket.org/fivefilters/php-readability">https://bitbucket.org/fivefilters/php-readability</a></dd>
46
47 <dt>Full Text RSS</dt>
48 <dd><a href="http://code.fivefilters.org/full-text-rss/src">http://code.fivefilters.org/full-text-rss/src</a></dd>
49
50 <dt>logo by Maylis Agniel</dt>
51 <dd><a href="https://github.com/wallabag/logo">https://github.com/wallabag/logo</a></dd>
52
53 <dt>icons</dt>
54 <dd><a href="http://icomoon.io">http://icomoon.io</a></dd>
55
56 <dt>PHP Simple HTML DOM Parser</dt>
57 <dd><a href="http://simplehtmldom.sourceforge.net/">http://simplehtmldom.sourceforge.net/</a></dd>
58
59 <dt>Session</dt>
60 <dd><a href="https://github.com/tontof/kriss_feed/blob/master/src/class/Session.php">https://github.com/tontof/kriss_feed/blob/master/src/class/Session.php</a></dd>
61
62 <dt>Twig</dt>
63 <dd><a href="http://twig.sensiolabs.org">http://twig.sensiolabs.org</a></dd>
64
65 <dt>Flash messages</dt>
66 <dd><a href="https://github.com/plasticbrain/PHP-Flash-Messages">https://github.com/plasticbrain/PHP-Flash-Messages</a></dd>
67
68 <dt>Pagination</dt>
69 <dd><a href="https://github.com/daveismyname/pagination">https://github.com/daveismyname/pagination</a></dd>
70
71 <dt>PHPePub</dt>
72 <dd><a href="https://github.com/Grandt/PHPePub/">https://github.com/Grandt/PHPePub/</a></dd>
73 </dl>
74{% endblock %}
diff --git a/themes/default/config.twig b/themes/default/config.twig
index a65d2b2c..bac563cf 100755
--- a/themes/default/config.twig
+++ b/themes/default/config.twig
@@ -6,29 +6,29 @@
6{% endblock %} 6{% endblock %}
7{% block content %} 7{% block content %}
8 <h2>{% trans "Saving articles" %}</h2> 8 <h2>{% trans "Saving articles" %}</h2>
9 <p>{% trans "There are several ways to save an article:" %} (<a href="http://doc.wallabag.org/" title="{% trans "read the documentation" %}">?</a>)</p> 9 <p>{% trans "There are several ways to save an article:" %} {% trans "(<a href=\"http://doc.wallabag.org/en/User_documentation/Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)" %}</p>
10 <p>
11 <form method="get" action="index.php">
12 <label class="addurl" for="config_plainurl">{% trans "By filling this field" %}:</label><br>
13 <input required placeholder="example.com/article" class="addurl" id="config_plainurl" name="plainurl" type="url" />
14 <input type="submit" value="{% trans "bag it!" %}" />
15 </form>
16 </p>
17 <h3>Browser Plugins</h3>
10 <ul> 18 <ul>
11 <li>Firefox: <a href="https://addons.mozilla.org/firefox/addon/wallabag/" title="download the firefox extension">{% trans "download the extension" %}</a></li> 19 <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans "Firefox Add-On" %}</a></li>
12 <li>Chrome: <a href="http://doc.wallabag.org/doku.php?id=users:chrome_extension" title="download the chrome extension">{% trans "download the extension" %}</a></li> 20 <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans "Chrome Extension" %}</a></li>
13 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" title="download the application">{% trans "via F-Droid" %}</a> {% trans " or " %} <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" title="download the application">{% trans "via Google Play" %}</a></li>
14 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" title="download the iOS application">{% trans "download the application" %}</a></li>
15 <li>Windows Phone: <a href="http://www.windowsphone.com/en-us/store/app/wallabag/ff890514-348c-4d0b-9b43-153fff3f7450" title="download the window phone application">{% trans "download the application" %}</a></li>
16 <li>
17 <form method="get" action="index.php">
18 <label class="addurl" for="config_plainurl">{% trans "By filling this field" %}:</label>
19 <input required placeholder="example.com/article" class="addurl" id="config_plainurl" name="plainurl" type="url" />
20 <input type="submit" value="{% trans "bag it!" %}" />
21 </form>
22 </li>
23 <li>{% trans "Bookmarklet: drag & drop this link to your bookmarks bar" %} <a id="bookmarklet" ondragend="this.click();" title="i am a bookmarklet, use me !" href="javascript:if(top['bookmarklet-url@wallabag.org']){top['bookmarklet-url@wallabag.org'];}else{(function(){var%20url%20=%20location.href%20||%20url;window.open('{{ poche_url }}?action=add&url='%20+%20btoa(url),'_self');})();void(0);}">{% trans "bag it!" %}</a></li>
24 </ul> 21 </ul>
25 22 <h3>Mobile Apps</h3>
26 <h2>{% trans "Upgrading wallabag" %}</h2>
27 <ul> 23 <ul>
28 <li>{% trans "Installed version" %} : <strong>{{ constant('POCHE') }}</strong></li> 24 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" target="_blank">{% trans "via F-Droid" %}</a> {% trans " or " %} <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" target="_blank">{% trans "via Google Play" %}</a></li>
29 <li>{% trans "Latest stable version" %} : {{ prod }}. {% if compare_prod == -1 %}<strong><a href="http://wallabag.org/">{% trans "A more recent stable version is available." %}</a></strong>{% else %}{% trans "You are up to date." %}{% endif %}</li> 25 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{% trans "download the application" %}</a></li>
30 {% if constant('DEBUG_POCHE') == 1 %}<li>{% trans "Latest dev version" %} : {{ dev }}. {% if compare_dev == -1 %}<strong><a href="http://wallabag.org/">{% trans "A more recent development version is available." %}</a></strong>{% else %}{% trans "You are up to date." %}{% endif %}</li>{% endif %} 26 <li>Windows Phone: <a href="http://www.windowsphone.com/en-us/store/app/wallabag/ff890514-348c-4d0b-9b43-153fff3f7450" target="_blank">{% trans "download the application" %}</a></li>
31 </ul> 27 </ul>
28 <h3>{% trans "Bookmarklet" %}</h3>
29 <p>
30 {% trans "Drag &amp; drop this link to your bookmarks bar:" %} <a id="bookmarklet" ondragend="this.click();" href="javascript:if(top['bookmarklet-url@wallabag.org']){top['bookmarklet-url@wallabag.org'];}else{(function(){var%20url%20=%20location.href%20||%20url;window.open('{{ poche_url }}?action=add&url='%20+%20btoa(url),'_self');})();void(0);}">{% trans "bag it!" %}</a>
31 </p>
32 32
33 <h2>{% trans "Feeds" %}</h2> 33 <h2>{% trans "Feeds" %}</h2>
34 {% if token == '' %} 34 {% if token == '' %}
@@ -39,14 +39,16 @@
39 <li><a href="?feed&amp;type=fav&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Favorites feed" %}</a></li> 39 <li><a href="?feed&amp;type=fav&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Favorites feed" %}</a></li>
40 <li><a href="?feed&amp;type=archive&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Archive feed" %}</a></li> 40 <li><a href="?feed&amp;type=archive&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Archive feed" %}</a></li>
41 </ul> 41 </ul>
42 <p>{% trans "Your token:" %} <strong>{{token}}</strong></p> 42 <p class="more-info">
43 <p>{% trans "Your user id:" %} <strong>{{user_id}}</strong></p> 43 {% trans "Your token:" %} <strong>{{token}}</strong><br>
44 <p>{% trans "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>." %}</p> 44 {% trans "Your user id:" %} <strong>{{user_id}}</strong><br>
45 {% trans "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>." %}
46 </p>
45 {% endif %} 47 {% endif %}
46 48
47 <h2>{% trans "Change your theme" %}</h2> 49 <h2>{% trans "Change your theme" %}</h2>
48 <form method="post" action="?updatetheme" name="changethemeform"> 50 <form method="post" action="?updatetheme" name="changethemeform">
49 <fieldset class="w500p"> 51 <fieldset class="w500p inline">
50 <div class="row"> 52 <div class="row">
51 <label class="col w150p" for="theme">{% trans "Theme:" %}</label> 53 <label class="col w150p" for="theme">{% trans "Theme:" %}</label>
52 <select class="col" id="theme" name="theme"> 54 <select class="col" id="theme" name="theme">
@@ -65,7 +67,7 @@
65 67
66 <h2>{% trans "Change your language" %}</h2> 68 <h2>{% trans "Change your language" %}</h2>
67 <form method="post" action="?updatelanguage" name="changelanguageform"> 69 <form method="post" action="?updatelanguage" name="changelanguageform">
68 <fieldset class="w500p"> 70 <fieldset class="w500p inline">
69 <div class="row"> 71 <div class="row">
70 <label class="col w150p" for="language">{% trans "Language:" %}</label> 72 <label class="col w150p" for="language">{% trans "Language:" %}</label>
71 <select class="col" id="language" name="language"> 73 <select class="col" id="language" name="language">
@@ -82,35 +84,14 @@
82 <input type="hidden" name="token" value="{{ token }}"> 84 <input type="hidden" name="token" value="{{ token }}">
83 </form> 85 </form>
84 86
85 {% if http_auth == 0 %} 87 <h2><a name="import"></a>{% trans "Import" %}</h2>
86 <h2>{% trans "Change your password" %}</h2>
87 <form method="post" action="?config" name="loginform">
88 <fieldset class="w500p">
89 <div class="row">
90 <label class="col w150p" for="password">{% trans "New password:" %}</label>
91 <input class="col" type="password" id="password" name="password" placeholder="{% trans "Password" %}" tabindex="2">
92 </div>
93 <div class="row">
94 <label class="col w150p" for="password_repeat">{% trans "Repeat your new password:" %}</label>
95 <input class="col" type="password" id="password_repeat" name="password_repeat" placeholder="{% trans "Password" %}" tabindex="3">
96 </div>
97 <div class="row mts txtcenter">
98 <button class="bouton" type="submit" tabindex="4">{% trans "Update" %}</button>
99 </div>
100 </fieldset>
101 <input type="hidden" name="returnurl" value="{{ referer }}">
102 <input type="hidden" name="token" value="{{ token }}">
103 </form>
104 {% endif %}
105
106 <h2>{% trans "Import" %}</h2>
107 <p>{% trans "You can import your Pocket, Readability, Instapaper, Wallabag or any data in appropriate json or html format." %}</p> 88 <p>{% trans "You can import your Pocket, Readability, Instapaper, Wallabag or any data in appropriate json or html format." %}</p>
108 <p>{% trans "Please select export file on your computer and press \"Import\" button below.<br>Wallabag will parse your file, insert all URLs and start fetching of articles if required.<br>Fetching process is controlled by two constants in your config file: IMPORT_LIMIT (how many articles are fetched at once) and IMPORT_DELAY (delay between fetch of next batch of articles)." %}</p> 89 <p>{% trans "Please select export file on your computer and press \"Import\" button below. Wallabag will parse your file, insert all URLs and start fetching of articles if required." %}</p>
109 <form method="post" action="?import" name="uploadfile" enctype="multipart/form-data"> 90 <form method="post" action="?import" name="uploadfile" enctype="multipart/form-data">
110 <fieldset class="w500p"> 91 <fieldset class="w500p">
111 <div class="row"> 92 <div class="row">
112 <label class="col w150p" for="file">{% trans "File:" %}</label> 93 <label class="col w150p" for="file">{% trans "File:" %}</label>
113 <input class="col" type="file" id="file" name="file" tabindex="4"> 94 <input class="col" type="file" id="file" name="file" tabindex="4" required="required">
114 </div> 95 </div>
115 <div class="row mts txtcenter"> 96 <div class="row mts txtcenter">
116 <button class="bouton" type="submit" tabindex="4">{% trans "Import" %}</button> 97 <button class="bouton" type="submit" tabindex="4">{% trans "Import" %}</button>
@@ -118,11 +99,11 @@
118 </fieldset> 99 </fieldset>
119 </form> 100 </form>
120 <p><a href="?import">{% trans "You can click here to fetch content for articles with no content." %}</a></p> 101 <p><a href="?import">{% trans "You can click here to fetch content for articles with no content." %}</a></p>
102 <p class="more-info">{% trans "Fetching process is controlled by two constants in your config file: IMPORT_LIMIT (how many articles are fetched at once) and IMPORT_DELAY (delay between fetch of next batch of articles)." %}</p>
121 103
122 <h2>{% trans "Export your wallabag data" %}</h2> 104 <h2>{% trans "Export your wallabag data" %}</h2>
123 {% if constant('STORAGE') == 'sqlite' %} 105 <p><a href="?export" target="_blank">{% trans "Export JSON" %}</a><br>
124 <p><a href="?download" target="_blank">{% trans "Click here" %}</a> {% trans "to download your database." %}</p>{% endif %} 106 <span class="more-info">Data will be exported in a single JSON file.</span></p>
125 <p><a href="?export" target="_blank">{% trans "Click here" %}</a> {% trans "to export your wallabag data." %}</p>
126 107
127 <h2>{% trans "Fancy an E-Book ?" %}</h2> 108 <h2>{% trans "Fancy an E-Book ?" %}</h2>
128 <p>{% trans "Click to get all your articles in one ebook :" %} 109 <p>{% trans "Click to get all your articles in one ebook :" %}
@@ -131,31 +112,56 @@
131 <li><a href="./?mobi&amp;method=all" title="Generate Mobi file">Mobi</a></li> 112 <li><a href="./?mobi&amp;method=all" title="Generate Mobi file">Mobi</a></li>
132 <li><a href="./?pdf&amp;method=all" title="Generate PDF file">PDF</a></li> 113 <li><a href="./?pdf&amp;method=all" title="Generate PDF file">PDF</a></li>
133 </ul> 114 </ul>
115 </p>
134 116
135 <br>{% trans "This can <b>take a while</b> and can <b>even fail</b> if you have too many articles, depending on your server configuration." %}</p> 117 <span class="more-info">{% trans "This can <b>take a while</b> and can <b>even fail</b> if you have too many articles, depending on your server configuration." %}</span></p>
136 118
119 <h2><a name="cache"></a>{% trans "Cache" %}</h2>
120 <p><a href="?empty-cache">{% trans "Delete Cache" %}</a><br>
121 <span class="more-info">Deleting the cache may help with display or other problems.</span></p>
122
123 {% if http_auth == 0 %}
124 <h2>{% trans "Change your password" %}</h2>
125 <form method="post" action="?config" name="loginform">
126 <fieldset class="w500p">
127 <div class="row">
128 <label class="col w150p" for="password">{% trans "New password:" %}</label>
129 <input class="col" type="password" id="password" name="password" placeholder="{% trans "Password" %}" tabindex="2">
130 </div>
131 <div class="row">
132 <label class="col w150p" for="password_repeat">{% trans "Repeat your new password:" %}</label>
133 <input class="col" type="password" id="password_repeat" name="password_repeat" placeholder="{% trans "Password" %}" tabindex="3">
134 </div>
135 <div class="row mts txtcenter">
136 <button class="bouton" type="submit" tabindex="4">{% trans "Update" %}</button>
137 </div>
138 </fieldset>
139 <input type="hidden" name="returnurl" value="{{ referer }}">
140 <input type="hidden" name="token" value="{{ token }}">
141 </form>
142 {% endif %}
137 143
138 <h2>{% trans "Cache" %}</h2>
139 <p><a href="?empty-cache">{% trans "Click here" %}</a> {% trans "to delete cache." %}</p>
140
141 <h2>{% trans 'Add user' %}</h2> 144 <h2>{% trans 'Add user' %}</h2>
142 <p>{% trans 'Add a new user :' %}</p>
143 <form method="post" action="?newuser"> 145 <form method="post" action="?newuser">
144 <fieldset class="w500p"> 146 <fieldset class="w500p">
145 <div class="row"> 147 <div class="row">
146 <label class="col w150p" for="newusername">{% trans 'Login for new user' %}</label> 148 <label class="col w150p" for="newusername">{% trans 'Login for new user' %}</label>
147 <input class="col" type="text" id="newusername" name="newusername" placeholder="{% trans 'Login' %}"> 149 <input class="col" type="text" id="newusername" name="newusername" placeholder="{% trans 'Login' %}" required>
148 </div> 150 </div>
149 <div class="row"> 151 <div class="row">
150 <label class="col w150p" for="password4newuser">{% trans "Password for new user" %}</label> 152 <label class="col w150p" for="password4newuser">{% trans "Password for new user" %}</label>
151 <input class="col" type="password" id="password4newuser" name="password4newuser" placeholder="{% trans "Password" %}"> 153 <input class="col" type="password" id="password4newuser" name="password4newuser" placeholder="{% trans 'Password' %}" required>
154 </div>
155 <div class="row">
156 <label class="col w150p" for="newuseremail">{% trans 'Email for new user (not required)' %}</label>
157 <input class="col" type="email" id="newuseremail" name="newuseremail" placeholder="{% trans 'Email' %}">
152 </div> 158 </div>
153 <div class="row mts txtcenter"> 159 <div class="row mts txtcenter">
154 <button type="submit">{% trans "Send" %}</button> 160 <button type="submit">{% trans "Add user" %}</button>
155 </div> 161 </div>
156 </fieldset> 162 </fieldset>
157 </form> 163 </form>
158 164
159 <h2>{% trans "Delete account" %}</h2> 165 <h2>{% trans "Delete account" %}</h2>
160 {% if not only_user %}<form method="post" action="?deluser"> 166 {% if not only_user %}<form method="post" action="?deluser">
161 <p>{% trans "You can delete your account by entering your password and validating." %}<br /><b>{% trans "Be careful, data will be erased forever (that is a very long time)." %}</b></p> 167 <p>{% trans "You can delete your account by entering your password and validating." %}<br /><b>{% trans "Be careful, data will be erased forever (that is a very long time)." %}</b></p>
@@ -165,9 +171,18 @@
165 <input class="col" type="password" id="password4deletinguser" name="password4deletinguser" placeholder="{% trans "Password" %}"> 171 <input class="col" type="password" id="password4deletinguser" name="password4deletinguser" placeholder="{% trans "Password" %}">
166 </div> 172 </div>
167 <div class="row mts txtcenter"> 173 <div class="row mts txtcenter">
168 <button type="submit">{% trans "Send" %}</button> 174 <button type="submit">{% trans "Delete account" %}</button>
169 </div> 175 </div>
170 </form> 176 </form>
171 {% else %}<p>{% trans "You are the only user, you cannot delete your own account." %}<br /> 177 {% else %}<p>{% trans "You are the only user, you cannot delete your own account." %}</p>
172 {% trans "To completely remove wallabag, delete the wallabag folder on your web server." %}</p>{% endif %} 178 <p>{% trans "To completely remove wallabag, delete the wallabag folder on your web server (and eventual databases)." %}</p>{% endif %}
179
180 <h2>{% trans "Upgrading wallabag" %}</h2>
181 <ul>
182 <li>{% trans "Installed version" %}: <strong>{{ constant('POCHE') }}</strong></li>
183 <li>{% trans "Latest stable version" %}: {{ prod }}. {% if compare_prod == -1 %}<strong><a href="http://wallabag.org/">{% trans "A more recent stable version is available." %}</a></strong>{% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_prod }})</li>
184 {% if constant('DEBUG_POCHE') == 1 %}<li>{% trans "Latest dev version" %}: {{ dev }}. {% if compare_dev == -1 %}<strong><a href="http://wallabag.org/">{% trans "A more recent development version is available." %}</a></strong>{% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_dev }}){% endif %}</li>
185 </ul>
186 <p class="more-info">{% trans "You can clear cache to check the latest release." %}</p>
187
173{% endblock %} 188{% endblock %}
diff --git a/themes/default/css/style-default.css b/themes/default/css/style-default.css
index 889a9f5c..4406d48f 100755
--- a/themes/default/css/style-default.css
+++ b/themes/default/css/style-default.css
@@ -38,6 +38,16 @@ a.flattr span {
38 background-image: url('../img/default/flattr.png'); 38 background-image: url('../img/default/flattr.png');
39} 39}
40 40
41a.carrot span {
42 background-image: url('../../_global/img/icons/carrot-icon--black.png');
43 background-size: 16px 16px;
44}
45
46a.diaspora span {
47 background-image: url('../../_global/img/icons/diaspora-icon--black.png');
48 background-size: 16px 16px;
49}
50
41a.email span { 51a.email span {
42 background-image: url('../img/default/envelop.png'); 52 background-image: url('../img/default/envelop.png');
43} 53}
@@ -56,4 +66,4 @@ a.bad-display span {
56 66
57a.print span { 67a.print span {
58 background-image: url('../img/default/print.png'); 68 background-image: url('../img/default/print.png');
59} \ No newline at end of file 69}
diff --git a/themes/default/css/style.css b/themes/default/css/style.css
index e58ef81a..b25373d6 100755
--- a/themes/default/css/style.css
+++ b/themes/default/css/style.css
@@ -417,6 +417,15 @@ a.add-to-wallabag-link-after:after {
417 padding-left: 10px; 417 padding-left: 10px;
418} 418}
419 419
420/* ==========================================================================
421 "Search" popup div related styles
422 ========================================================================== */
423
424/* Search form message needs a little more width, depending on translations */
425#search-form {
426 width: 420px;
427}
428
420.opacity03 { 429.opacity03 {
421 /*opacity: 0.3;*/ 430 /*opacity: 0.3;*/
422} 431}
@@ -429,4 +438,10 @@ a.add-to-wallabag-link-after:after {
429 text-indent: 0; 438 text-indent: 0;
430 color: black; 439 color: black;
431 width: 50px; 440 width: 50px;
432} \ No newline at end of file 441}
442
443pre code {
444 font-family: "Courier New", Courier, monospace;
445 border: 1px solid #ddd;
446 font-size: 0.96em;
447}
diff --git a/themes/default/edit-tags.twig b/themes/default/edit-tags.twig
index bd498d26..c29427e0 100755
--- a/themes/default/edit-tags.twig
+++ b/themes/default/edit-tags.twig
@@ -5,9 +5,9 @@
5{% endblock %} 5{% endblock %}
6{% block content %} 6{% block content %}
7 7
8<script src="{{ poche_url }}themes/default/js/jquery-ui-1.10.4.custom.min.js"></script> 8<script src="{{ poche_url }}themes/_global/js/jquery-ui-1.10.4.custom.min.js"></script>
9<script src="{{ poche_url }}themes/default/js/autoCompleteTags.js"></script> 9<script src="{{ poche_url }}themes/_global/js/autoCompleteTags.js"></script>
10<link rel="stylesheet" href="{{ poche_url }}themes/default/css/jquery-ui-1.10.4.custom.min.css" media="all"> 10<link rel="stylesheet" href="{{ poche_url }}themes/_global/css/jquery-ui-1.10.4.custom.min.css" media="all">
11 11
12<div id="article"> 12<div id="article">
13 <header class="mbm"> 13 <header class="mbm">
@@ -16,15 +16,15 @@
16</div> 16</div>
17 17
18{% if tags is empty %} 18{% if tags is empty %}
19no tags 19{% trans "no tags" %}
20{% endif %} 20{% endif %}
21<ul> 21<ul>
22{% for tag in tags %}<li>{{ tag.value }} <a href="./?action=remove_tag&amp;tag_id={{ tag.id }}&amp;id={{ entry_id }}">✘</a></li>{% endfor %} 22{% for tag in tags %}<li>{{ tag.value }} <a href="./?action=remove_tag&amp;tag_id={{ tag.id }}&amp;id={{ entry_id }}">✘</a></li>{% endfor %}
23</ul> 23</ul>
24<form method="post" action="./?action=add_tag" id="editTags"> 24<form method="post" action="./?action=add_tag" id="editTags">
25 <input type="hidden" name="entry_id" value="{{ entry_id }}" /> 25 <input type="hidden" name="entry_id" value="{{ entry_id }}" />
26 <label for="value">Add tags: </label> 26 <label for="value">{% trans "Add tags:" %}</label>
27 <input type="text" placeholder="interview, editorial, video" id="value" name="value" required="required" /> 27 <input type="text" placeholder="{% trans "interview" %}, {% trans "editorial" %}, {% trans "video" %}" id="value" name="value" required="required" />
28 <input type="submit" value="Tag" /> 28 <input type="submit" value="Tag" />
29 <p>{% trans "Start typing for auto complete." %}<br> 29 <p>{% trans "Start typing for auto complete." %}<br>
30 {% trans "You can enter multiple tags, separated by commas." %}</p> 30 {% trans "You can enter multiple tags, separated by commas." %}</p>
diff --git a/themes/default/highlightjs/highlight.pack.js b/themes/default/highlightjs/highlight.pack.js
new file mode 100644
index 00000000..10a21c34
--- /dev/null
+++ b/themes/default/highlightjs/highlight.pack.js
@@ -0,0 +1 @@
var hljs=new function(){function j(v){return v.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function t(v){return v.nodeName.toLowerCase()}function h(w,x){var v=w&&w.exec(x);return v&&v.index==0}function r(w){var v=(w.className+" "+(w.parentNode?w.parentNode.className:"")).split(/\s+/);v=v.map(function(x){return x.replace(/^lang(uage)?-/,"")});return v.filter(function(x){return i(x)||x=="no-highlight"})[0]}function o(x,y){var v={};for(var w in x){v[w]=x[w]}if(y){for(var w in y){v[w]=y[w]}}return v}function u(x){var v=[];(function w(y,z){for(var A=y.firstChild;A;A=A.nextSibling){if(A.nodeType==3){z+=A.nodeValue.length}else{if(t(A)=="br"){z+=1}else{if(A.nodeType==1){v.push({event:"start",offset:z,node:A});z=w(A,z);v.push({event:"stop",offset:z,node:A})}}}}return z})(x,0);return v}function q(w,y,C){var x=0;var F="";var z=[];function B(){if(!w.length||!y.length){return w.length?w:y}if(w[0].offset!=y[0].offset){return(w[0].offset<y[0].offset)?w:y}return y[0].event=="start"?w:y}function A(H){function G(I){return" "+I.nodeName+'="'+j(I.value)+'"'}F+="<"+t(H)+Array.prototype.map.call(H.attributes,G).join("")+">"}function E(G){F+="</"+t(G)+">"}function v(G){(G.event=="start"?A:E)(G.node)}while(w.length||y.length){var D=B();F+=j(C.substr(x,D[0].offset-x));x=D[0].offset;if(D==w){z.reverse().forEach(E);do{v(D.splice(0,1)[0]);D=B()}while(D==w&&D.length&&D[0].offset==x);z.reverse().forEach(A)}else{if(D[0].event=="start"){z.push(D[0].node)}else{z.pop()}v(D.splice(0,1)[0])}}return F+j(C.substr(x))}function m(y){function v(z){return(z&&z.source)||z}function w(A,z){return RegExp(v(A),"m"+(y.cI?"i":"")+(z?"g":""))}function x(D,C){if(D.compiled){return}D.compiled=true;D.k=D.k||D.bK;if(D.k){var z={};var E=function(G,F){if(y.cI){F=F.toLowerCase()}F.split(" ").forEach(function(H){var I=H.split("|");z[I[0]]=[G,I[1]?Number(I[1]):1]})};if(typeof D.k=="string"){E("keyword",D.k)}else{Object.keys(D.k).forEach(function(F){E(F,D.k[F])})}D.k=z}D.lR=w(D.l||/\b[A-Za-z0-9_]+\b/,true);if(C){if(D.bK){D.b="\\b("+D.bK.split(" ").join("|")+")\\b"}if(!D.b){D.b=/\B|\b/}D.bR=w(D.b);if(!D.e&&!D.eW){D.e=/\B|\b/}if(D.e){D.eR=w(D.e)}D.tE=v(D.e)||"";if(D.eW&&C.tE){D.tE+=(D.e?"|":"")+C.tE}}if(D.i){D.iR=w(D.i)}if(D.r===undefined){D.r=1}if(!D.c){D.c=[]}var B=[];D.c.forEach(function(F){if(F.v){F.v.forEach(function(G){B.push(o(F,G))})}else{B.push(F=="self"?D:F)}});D.c=B;D.c.forEach(function(F){x(F,D)});if(D.starts){x(D.starts,C)}var A=D.c.map(function(F){return F.bK?"\\.?("+F.b+")\\.?":F.b}).concat([D.tE,D.i]).map(v).filter(Boolean);D.t=A.length?w(A.join("|"),true):{exec:function(F){return null}};D.continuation={}}x(y)}function c(S,L,J,R){function v(U,V){for(var T=0;T<V.c.length;T++){if(h(V.c[T].bR,U)){return V.c[T]}}}function z(U,T){if(h(U.eR,T)){return U}if(U.eW){return z(U.parent,T)}}function A(T,U){return !J&&h(U.iR,T)}function E(V,T){var U=M.cI?T[0].toLowerCase():T[0];return V.k.hasOwnProperty(U)&&V.k[U]}function w(Z,X,W,V){var T=V?"":b.classPrefix,U='<span class="'+T,Y=W?"":"</span>";U+=Z+'">';return U+X+Y}function N(){if(!I.k){return j(C)}var T="";var W=0;I.lR.lastIndex=0;var U=I.lR.exec(C);while(U){T+=j(C.substr(W,U.index-W));var V=E(I,U);if(V){H+=V[1];T+=w(V[0],j(U[0]))}else{T+=j(U[0])}W=I.lR.lastIndex;U=I.lR.exec(C)}return T+j(C.substr(W))}function F(){if(I.sL&&!f[I.sL]){return j(C)}var T=I.sL?c(I.sL,C,true,I.continuation.top):e(C);if(I.r>0){H+=T.r}if(I.subLanguageMode=="continuous"){I.continuation.top=T.top}return w(T.language,T.value,false,true)}function Q(){return I.sL!==undefined?F():N()}function P(V,U){var T=V.cN?w(V.cN,"",true):"";if(V.rB){D+=T;C=""}else{if(V.eB){D+=j(U)+T;C=""}else{D+=T;C=U}}I=Object.create(V,{parent:{value:I}})}function G(T,X){C+=T;if(X===undefined){D+=Q();return 0}var V=v(X,I);if(V){D+=Q();P(V,X);return V.rB?0:X.length}var W=z(I,X);if(W){var U=I;if(!(U.rE||U.eE)){C+=X}D+=Q();do{if(I.cN){D+="</span>"}H+=I.r;I=I.parent}while(I!=W.parent);if(U.eE){D+=j(X)}C="";if(W.starts){P(W.starts,"")}return U.rE?0:X.length}if(A(X,I)){throw new Error('Illegal lexeme "'+X+'" for mode "'+(I.cN||"<unnamed>")+'"')}C+=X;return X.length||1}var M=i(S);if(!M){throw new Error('Unknown language: "'+S+'"')}m(M);var I=R||M;var D="";for(var K=I;K!=M;K=K.parent){if(K.cN){D+=w(K.cN,D,true)}}var C="";var H=0;try{var B,y,x=0;while(true){I.t.lastIndex=x;B=I.t.exec(L);if(!B){break}y=G(L.substr(x,B.index-x),B[0]);x=B.index+y}G(L.substr(x));for(var K=I;K.parent;K=K.parent){if(K.cN){D+="</span>"}}return{r:H,value:D,language:S,top:I}}catch(O){if(O.message.indexOf("Illegal")!=-1){return{r:0,value:j(L)}}else{throw O}}}function e(y,x){x=x||b.languages||Object.keys(f);var v={r:0,value:j(y)};var w=v;x.forEach(function(z){if(!i(z)){return}var A=c(z,y,false);A.language=z;if(A.r>w.r){w=A}if(A.r>v.r){w=v;v=A}});if(w.language){v.second_best=w}return v}function g(v){if(b.tabReplace){v=v.replace(/^((<[^>]+>|\t)+)/gm,function(w,z,y,x){return z.replace(/\t/g,b.tabReplace)})}if(b.useBR){v=v.replace(/\n/g,"<br>")}return v}function p(z){var y=b.useBR?z.innerHTML.replace(/\n/g,"").replace(/<br>|<br [^>]*>/g,"\n").replace(/<[^>]*>/g,""):z.textContent;var A=r(z);if(A=="no-highlight"){return}var v=A?c(A,y,true):e(y);var w=u(z);if(w.length){var x=document.createElementNS("http://www.w3.org/1999/xhtml","pre");x.innerHTML=v.value;v.value=q(w,u(x),y)}v.value=g(v.value);z.innerHTML=v.value;z.className+=" hljs "+(!A&&v.language||"");z.result={language:v.language,re:v.r};if(v.second_best){z.second_best={language:v.second_best.language,re:v.second_best.r}}}var b={classPrefix:"hljs-",tabReplace:null,useBR:false,languages:undefined};function s(v){b=o(b,v)}function l(){if(l.called){return}l.called=true;var v=document.querySelectorAll("pre code");Array.prototype.forEach.call(v,p)}function a(){addEventListener("DOMContentLoaded",l,false);addEventListener("load",l,false)}var f={};var n={};function d(v,x){var w=f[v]=x(this);if(w.aliases){w.aliases.forEach(function(y){n[y]=v})}}function k(){return Object.keys(f)}function i(v){return f[v]||f[n[v]]}this.highlight=c;this.highlightAuto=e;this.fixMarkup=g;this.highlightBlock=p;this.configure=s;this.initHighlighting=l;this.initHighlightingOnLoad=a;this.registerLanguage=d;this.listLanguages=k;this.getLanguage=i;this.inherit=o;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE]};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE]};this.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/};this.CLCM={cN:"comment",b:"//",e:"$",c:[this.PWM]};this.CBCM={cN:"comment",b:"/\\*",e:"\\*/",c:[this.PWM]};this.HCM={cN:"comment",b:"#",e:"$",c:[this.PWM]};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.CSSNM={cN:"number",b:this.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0};this.RM={cN:"regexp",b:/\//,e:/\/[gim]*/,i:/\n/,c:[this.BE,{b:/\[/,e:/\]/,r:0,c:[this.BE]}]};this.TM={cN:"title",b:this.IR,r:0};this.UTM={cN:"title",b:this.UIR,r:0}}();hljs.registerLanguage("bash",function(b){var a={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)\}/}]};var d={cN:"string",b:/"/,e:/"/,c:[b.BE,a,{cN:"variable",b:/\$\(/,e:/\)/,c:[b.BE]}]};var c={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for break continue while in do done exit return set declare case esac export exec",literal:"true false",built_in:"printf echo read cd pwd pushd popd dirs let eval unset typeset readonly getopts source shopt caller type hash bind help sudo",operator:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"shebang",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:true,c:[b.inherit(b.TM,{b:/\w[\w\d_]*/})],r:0},b.HCM,b.NM,d,c,a]}});hljs.registerLanguage("cs",function(b){var a="abstract as base bool break byte case catch char checked const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async await ascending descending from get group into join let orderby partial select set value var where yield";return{aliases:["csharp"],k:a,i:/::/,c:[{cN:"comment",b:"///",e:"$",rB:true,c:[{cN:"xmlDocTag",v:[{b:"///",r:0},{b:"<!--|-->"},{b:"</?",e:">"}]}]},b.CLCM,b.CBCM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},b.ASM,b.QSM,b.CNM,{bK:"protected public private internal",e:/[{;=]/,k:a,c:[{bK:"class namespace interface",starts:{c:[b.TM]}},{b:b.IR+"\\s*\\(",rB:true,c:[b.TM]}]}]}});hljs.registerLanguage("ruby",function(f){var j="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var i="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor";var b={cN:"yardoctag",b:"@[A-Za-z]+"};var c={cN:"value",b:"#<",e:">"};var k={cN:"comment",v:[{b:"#",e:"$",c:[b]},{b:"^\\=begin",e:"^\\=end",c:[b],r:10},{b:"^__END__",e:"\\n$"}]};var d={cN:"subst",b:"#\\{",e:"}",k:i};var e={cN:"string",c:[f.BE,d],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:"%[qw]?\\(",e:"\\)"},{b:"%[qw]?\\[",e:"\\]"},{b:"%[qw]?{",e:"}"},{b:"%[qw]?<",e:">"},{b:"%[qw]?/",e:"/"},{b:"%[qw]?%",e:"%"},{b:"%[qw]?-",e:"-"},{b:"%[qw]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]};var a={cN:"params",b:"\\(",e:"\\)",k:i};var h=[e,c,k,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[f.inherit(f.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+f.IR+"::)?"+f.IR}]},k]},{cN:"function",bK:"def",e:" |$|;",r:0,c:[f.inherit(f.TM,{b:j}),a,k]},{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:[e,{b:j}],r:0},{cN:"symbol",b:f.UIR+"(\\!|\\?)?:",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+f.RSR+")\\s*",c:[c,k,{cN:"regexp",c:[f.BE,d],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}],r:0}];d.c=h;a.c=h;var g=[{r:1,cN:"output",b:"^\\s*=> ",e:"$",rB:true,c:[{cN:"status",b:"^\\s*=>"},{b:" ",e:"$",c:h}]},{r:1,cN:"input",b:"^[^ ][^=>]*>+ ",e:"$",rB:true,c:[{cN:"prompt",b:"^[^ ][^=>]*>+"},{b:" ",e:"$",c:h}]}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:i,c:g.concat(h)}});hljs.registerLanguage("diff",function(a){return{aliases:["patch"],c:[{cN:"chunk",r:10,v:[{b:/^\@\@ +\-\d+,\d+ +\+\d+,\d+ +\@\@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"header",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}});hljs.registerLanguage("javascript",function(a){return{aliases:["js"],k:{keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document"},c:[{cN:"pi",b:/^\s*('|")use strict('|")/,r:10},a.ASM,a.QSM,a.CLCM,a.CBCM,a.CNM,{b:"("+a.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[a.CLCM,a.CBCM,a.RM,{b:/</,e:/>;/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,eE:true,c:[a.inherit(a.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,c:[a.CLCM,a.CBCM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+a.IR,r:0}]}});hljs.registerLanguage("xml",function(a){var c="[A-Za-z0-9\\._:-]+";var d={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"};var b={eW:true,i:/</,r:0,c:[d,{cN:"attribute",b:c,r:0},{b:"=",r:0,c:[{cN:"value",v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s\/>]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:true,c:[{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[b],starts:{e:"</style>",rE:true,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},d,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:"[^ /><]+",r:0},b]}]}});hljs.registerLanguage("markdown",function(a){return{aliases:["md","mkdown","mkd"],c:[{cN:"header",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}|\t)",e:"$",r:0}]},{cN:"horizontal_rule",b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].+?[\\)\\]]",rB:true,c:[{cN:"link_label",b:"\\[",e:"\\]",eB:true,rE:true,r:0},{cN:"link_url",b:"\\]\\(",e:"\\)",eB:true,eE:true},{cN:"link_reference",b:"\\]\\[",e:"\\]",eB:true,eE:true}],r:10},{b:"^\\[.+\\]:",e:"$",rB:true,c:[{cN:"link_reference",b:"\\[",e:"\\]",eB:true,eE:true},{cN:"link_url",b:"\\s",e:"$"}]}]}});hljs.registerLanguage("css",function(a){var b="[a-zA-Z-][a-zA-Z0-9_-]*";var c={cN:"function",b:b+"\\(",rB:true,eE:true,e:"\\("};return{cI:true,i:"[=/|']",c:[a.CBCM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:true,eE:true,r:0,c:[c,a.ASM,a.QSM,a.CSSNM]}]},{cN:"tag",b:b,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[a.CBCM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[c,a.CSSNM,a.QSM,a.ASM,a.CBCM,{cN:"hexcolor",b:"#[0-9A-Fa-f]+"},{cN:"important",b:"!important"}]}}]}]}]}});hljs.registerLanguage("http",function(a){return{i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:true,e:"$",c:[{cN:"string",b:" ",e:" ",eB:true,eE:true}]},{cN:"attribute",b:"^\\w",e:": ",eE:true,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:"",eW:true}}]}});hljs.registerLanguage("java",function(b){var a="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws";return{aliases:["jsp"],k:a,i:/<\//,c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",c:[{cN:"javadoctag",b:"(^|\\s)@[A-Za-z]+"}],r:10},b.CLCM,b.CBCM,b.ASM,b.QSM,{bK:"protected public private",e:/[{;=]/,k:a,c:[{cN:"class",bK:"class interface",eW:true,eE:true,i:/[:"\[\]]/,c:[{bK:"extends implements",r:10},b.UTM]},{b:b.UIR+"\\s*\\(",rB:true,c:[b.UTM]}]},b.CNM,{cN:"annotation",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("php",function(b){var e={cN:"variable",b:"(\\$|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"};var a={cN:"preprocessor",b:/<\?(php)?|\?>/};var c={cN:"string",c:[b.BE,a],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},b.inherit(b.ASM,{i:null}),b.inherit(b.QSM,{i:null})]};var d={v:[b.BNM,b.CNM]};return{aliases:["php3","php4","php5","php6"],cI:true,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[b.CLCM,b.HCM,{cN:"comment",b:"/\\*",e:"\\*/",c:[{cN:"phpdoc",b:"\\s@[A-Za-z]+"},a]},{cN:"comment",b:"__halt_compiler.+?;",eW:true,k:"__halt_compiler",l:b.UIR},{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[b.BE]},a,e,{cN:"function",bK:"function",e:/[;{]/,eE:true,i:"\\$|\\[|%",c:[b.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",e,b.CBCM,c,d]}]},{cN:"class",bK:"class interface",e:"{",eE:true,i:/[:\(\$"]/,c:[{bK:"extends implements",r:10},b.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[b.UTM]},{bK:"use",e:";",c:[b.UTM]},{b:"=>"},c,d]}});hljs.registerLanguage("python",function(a){var f={cN:"prompt",b:/^(>>>|\.\.\.) /};var b={cN:"string",c:[a.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[f],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[f],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},a.ASM,a.QSM]};var d={cN:"number",r:0,v:[{b:a.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:a.CNR+"[lLjJ]?"}]};var e={cN:"params",b:/\(/,e:/\)/,c:["self",f,d,b]};var c={e:/:/,i:/[${=;\n]/,c:[a.UTM,e]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[f,d,b,a.HCM,a.inherit(c,{cN:"function",bK:"def",r:10}),a.inherit(c,{cN:"class",bK:"class"}),{cN:"decorator",b:/@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("sql",function(a){var b={cN:"comment",b:"--",e:"$"};return{cI:true,i:/[<>]/,c:[{cN:"operator",bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate savepoint release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup",e:/;/,eW:true,k:{keyword:"abs absolute acos action add adddate addtime aes_decrypt aes_encrypt after aggregate all allocate alter analyze and any are as asc ascii asin assertion at atan atan2 atn2 authorization authors avg backup before begin benchmark between bin binlog bit_and bit_count bit_length bit_or bit_xor both by cache call cascade cascaded case cast catalog ceil ceiling chain change changed char_length character_length charindex charset check checksum checksum_agg choose close coalesce coercibility collate collation collationproperty column columns columns_updated commit compress concat concat_ws concurrent connect connection connection_id consistent constraint constraints continue contributors conv convert convert_tz corresponding cos cot count count_big crc32 create cross cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime data database databases datalength date_add date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts datetimeoffsetfromparts day dayname dayofmonth dayofweek dayofyear deallocate declare decode default deferrable deferred degrees delayed delete des_decrypt des_encrypt des_key_file desc describe descriptor diagnostics difference disconnect distinct distinctrow div do domain double drop dumpfile each else elt enclosed encode encrypt end end-exec engine engines eomonth errors escape escaped event eventdata events except exception exec execute exists exp explain export_set extended external extract fast fetch field fields find_in_set first first_value floor flush for force foreign format found found_rows from from_base64 from_days from_unixtime full function get get_format get_lock getdate getutcdate global go goto grant grants greatest group group_concat grouping grouping_id gtid_subset gtid_subtract handler having help hex high_priority hosts hour ident_current ident_incr ident_seed identified identity if ifnull ignore iif ilike immediate in index indicator inet6_aton inet6_ntoa inet_aton inet_ntoa infile initially inner innodb input insert install instr intersect into is is_free_lock is_ipv4 is_ipv4_compat is_ipv4_mapped is_not is_not_null is_used_lock isdate isnull isolation join key kill language last last_day last_insert_id last_value lcase lead leading least leaves left len lenght level like limit lines ln load load_file local localtime localtimestamp locate lock log log10 log2 logfile logs low_priority lower lpad ltrim make_set makedate maketime master master_pos_wait match matched max md5 medium merge microsecond mid min minute mod mode module month monthname mutex name_const names national natural nchar next no no_write_to_binlog not now nullif nvarchar oct octet_length of old_password on only open optimize option optionally or ord order outer outfile output pad parse partial partition password patindex percent_rank percentile_cont percentile_disc period_add period_diff pi plugin position pow power pragma precision prepare preserve primary prior privileges procedure procedure_analyze processlist profile profiles public publishingservername purge quarter query quick quote quotename radians rand read references regexp relative relaylog release release_lock rename repair repeat replace replicate reset restore restrict return returns reverse revoke right rlike rollback rollup round row row_count rows rpad rtrim savepoint schema scroll sec_to_time second section select serializable server session session_user set sha sha1 sha2 share show sign sin size slave sleep smalldatetimefromparts snapshot some soname soundex sounds_like space sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sql_variant_property sqlstate sqrt square start starting status std stddev stddev_pop stddev_samp stdev stdevp stop str str_to_date straight_join strcmp string stuff subdate substr substring subtime subtring_index sum switchoffset sysdate sysdatetime sysdatetimeoffset system_user sysutcdatetime table tables tablespace tan temporary terminated tertiary_weights then time time_format time_to_sec timediff timefromparts timestamp timestampadd timestampdiff timezone_hour timezone_minute to to_base64 to_days to_seconds todatetimeoffset trailing transaction translation trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse ucase uncompress uncompressed_length unhex unicode uninstall union unique unix_timestamp unknown unlock update upgrade upped upper usage use user user_resources using utc_date utc_time utc_timestamp uuid uuid_short validate_password_strength value values var var_pop var_samp variables variance varp version view warnings week weekday weekofyear weight_string when whenever where with work write xml xor year yearweek zon",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int integer interval number numeric real serial smallint varchar varying int8 serial8 text"},c:[{cN:"string",b:"'",e:"'",c:[a.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[a.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[a.BE]},a.CNM,a.CBCM,b]},a.CBCM,b]}});hljs.registerLanguage("ini",function(a){return{cI:true,i:/\S/,c:[{cN:"comment",b:";",e:"$"},{cN:"title",b:"^\\[",e:"\\]"},{cN:"setting",b:"^[a-z0-9\\[\\]_-]+[ \\t]*=[ \\t]*",e:"$",c:[{cN:"value",eW:true,k:"on off true false yes no",c:[a.QSM,a.NM],r:0}]}]}});hljs.registerLanguage("perl",function(c){var d="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when";var f={cN:"subst",b:"[$@]\\{",e:"\\}",k:d};var g={b:"->{",e:"}"};var a={cN:"variable",v:[{b:/\$\d/},{b:/[\$\%\@](\^\w\b|#\w+(\:\:\w+)*|{\w+}|\w+(\:\:\w*)*)/},{b:/[\$\%\@][^\s\w{]/,r:0}]};var e={cN:"comment",b:"^(__END__|__DATA__)",e:"\\n$",r:5};var h=[c.BE,f,a];var b=[a,c.HCM,e,{cN:"comment",b:"^\\=\\w",e:"\\=cut",eW:true},g,{cN:"string",c:h,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[c.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[c.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+c.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[c.HCM,e,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[c.BE],r:0}]},{cN:"sub",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",r:5},{cN:"operator",b:"-\\w\\b",r:0}];f.c=b;g.c=b;return{aliases:["pl"],k:d,c:b}});hljs.registerLanguage("objectivec",function(a){var d={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"NSString NSDictionary CGRect CGPoint UIButton UILabel UITextView UIWebView MKMapView NSView NSViewController NSWindow NSWindowController NSSet NSUUID NSIndexSet UISegmentedControl NSObject UITableViewDelegate UITableViewDataSource NSThread UIActivityIndicator UITabbar UIToolBar UIBarButtonItem UIImageView NSAutoreleasePool UITableView BOOL NSInteger CGFloat NSException NSLog NSMutableString NSMutableArray NSMutableDictionary NSURL NSIndexPath CGSize UITableViewCell UIView UIViewController UINavigationBar UINavigationController UITabBarController UIPopoverController UIPopoverControllerDelegate UIImage NSNumber UISearchBar NSFetchedResultsController NSFetchedResultsChangeType UIScrollView UIScrollViewDelegate UIEdgeInsets UIColor UIFont UIApplication NSNotFound NSNotificationCenter NSNotification UILocalNotification NSBundle NSFileManager NSTimeInterval NSDate NSCalendar NSUserDefaults UIWindow NSRange NSArray NSError NSURLRequest NSURLConnection UIInterfaceOrientation MPMoviePlayerController dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"};var c=/[a-zA-Z@][a-zA-Z0-9_]*/;var b="@interface @class @protocol @implementation";return{aliases:["m","mm","objc","obj-c"],k:d,l:c,i:"</",c:[a.CLCM,a.CBCM,a.CNM,a.QSM,{cN:"string",v:[{b:'@"',e:'"',i:"\\n",c:[a.BE]},{b:"'",e:"[^\\\\]'",i:"[^\\\\][^']"}]},{cN:"preprocessor",b:"#",e:"$",c:[{cN:"title",v:[{b:'"',e:'"'},{b:"<",e:">"}]}]},{cN:"class",b:"("+b.split(" ").join("|")+")\\b",e:"({|$)",eE:true,k:b,l:c,c:[a.UTM]},{cN:"variable",b:"\\."+a.UIR,r:0}]}});hljs.registerLanguage("coffeescript",function(c){var b={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",reserved:"case default function var void with const let enum export import native __hasProp __extends __slice __bind __indexOf",built_in:"npm require console print module global window document"};var a="[A-Za-z$_][0-9A-Za-z$_]*";var f=c.inherit(c.TM,{b:a});var e={cN:"subst",b:/#\{/,e:/}/,k:b};var d=[c.BNM,c.inherit(c.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[c.BE]},{b:/'/,e:/'/,c:[c.BE]},{b:/"""/,e:/"""/,c:[c.BE,e]},{b:/"/,e:/"/,c:[c.BE,e]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[e,c.HCM]},{b:"//[gim]*",r:0},{b:"/\\S(\\\\.|[^\\n])*?/[gim]*(?=\\s|\\W|$)"}]},{cN:"property",b:"@"+a},{b:"`",e:"`",eB:true,eE:true,sL:"javascript"}];e.c=d;return{aliases:["coffee","cson","iced"],k:b,c:d.concat([{cN:"comment",b:"###",e:"###"},c.HCM,{cN:"function",b:"("+a+"\\s*=\\s*)?(\\(.*\\))?\\s*\\B[-=]>",e:"[-=]>",rB:true,c:[f,{cN:"params",b:"\\(",rB:true,c:[{b:/\(/,e:/\)/,k:b,c:["self"].concat(d)}]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:true,i:/[:="\[\]]/,c:[f]},f]},{cN:"attribute",b:a+":",e:":",rB:true,eE:true,r:0}])}});hljs.registerLanguage("nginx",function(c){var b={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+c.UIR}]};var a={eW:true,l:"[a-z/_]+",k:{built_in:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[c.HCM,{cN:"string",c:[c.BE,b],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{cN:"url",b:"([a-z]+):/",e:"\\s",eW:true,eE:true},{cN:"regexp",c:[c.BE,b],v:[{b:"\\s\\^",e:"\\s|{|;",rE:true},{b:"~\\*?\\s+",e:"\\s|{|;",rE:true},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},b]};return{aliases:["nginxconf"],c:[c.HCM,{b:c.UIR+"\\s",e:";|{",rB:true,c:[{cN:"title",b:c.UIR,starts:a}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("json",function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}});hljs.registerLanguage("apache",function(a){var b={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:true,c:[a.HCM,{cN:"tag",b:"</?",e:">"},{cN:"keyword",b:/\w+/,r:0,k:{common:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"sqbracket",b:"\\s\\[",e:"\\]$"},{cN:"cbracket",b:"[\\$%]\\{",e:"\\}",c:["self",b]},b,a.QSM]}}],i:/\S/}});hljs.registerLanguage("cpp",function(a){var b={keyword:"false int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long throw volatile static protected bool template mutable if public friend do return goto auto void enum else break new extern using true class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue wchar_t inline delete alignof char16_t char32_t constexpr decltype noexcept nullptr static_assert thread_local restrict _Bool complex _Complex _Imaginary",built_in:"std string cin cout cerr clog stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf"};return{aliases:["c","h","c++","h++"],k:b,i:"</",c:[a.CLCM,a.CBCM,a.QSM,{cN:"string",b:"'\\\\?.",e:"'",i:"."},{cN:"number",b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},a.CNM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line pragma",c:[{b:'include\\s*[<"]',e:'[>"]',k:"include",i:"\\n"},a.CLCM]},{cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:b,c:["self"]},{b:a.IR+"::"}]}});hljs.registerLanguage("makefile",function(a){var b={cN:"variable",b:/\$\(/,e:/\)/,c:[a.BE]};return{aliases:["mk","mak"],c:[a.HCM,{b:/^\w+\s*\W*=/,rB:true,r:0,starts:{cN:"constant",e:/\s*\W*=/,eE:true,starts:{e:/$/,r:0,c:[b]}}},{cN:"title",b:/^[\w]+:\s*$/},{cN:"phony",b:/^\.PHONY:/,e:/$/,k:".PHONY",l:/[\.\w]+/},{b:/^\t+/,e:/$/,c:[a.QSM,b]}]}}); \ No newline at end of file
diff --git a/themes/default/highlightjs/styles/default.css b/themes/default/highlightjs/styles/default.css
new file mode 100644
index 00000000..e5bd2801
--- /dev/null
+++ b/themes/default/highlightjs/styles/default.css
@@ -0,0 +1,152 @@
1/*
2
3Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
4
5*/
6
7.hljs {
8 display: block;
9 overflow-x: auto;
10 padding: 0.5em;
11 background: #f0f0f0;
12}
13
14.hljs,
15.hljs-subst,
16.hljs-tag .hljs-title,
17.lisp .hljs-title,
18.clojure .hljs-built_in,
19.nginx .hljs-title {
20 color: black;
21}
22
23.hljs-string,
24.hljs-title,
25.hljs-constant,
26.hljs-parent,
27.hljs-tag .hljs-value,
28.hljs-rules .hljs-value,
29.hljs-preprocessor,
30.hljs-pragma,
31.haml .hljs-symbol,
32.ruby .hljs-symbol,
33.ruby .hljs-symbol .hljs-string,
34.hljs-template_tag,
35.django .hljs-variable,
36.smalltalk .hljs-class,
37.hljs-addition,
38.hljs-flow,
39.hljs-stream,
40.bash .hljs-variable,
41.apache .hljs-tag,
42.apache .hljs-cbracket,
43.tex .hljs-command,
44.tex .hljs-special,
45.erlang_repl .hljs-function_or_atom,
46.asciidoc .hljs-header,
47.markdown .hljs-header,
48.coffeescript .hljs-attribute {
49 color: #800;
50}
51
52.smartquote,
53.hljs-comment,
54.hljs-annotation,
55.hljs-template_comment,
56.diff .hljs-header,
57.hljs-chunk,
58.asciidoc .hljs-blockquote,
59.markdown .hljs-blockquote {
60 color: #888;
61}
62
63.hljs-number,
64.hljs-date,
65.hljs-regexp,
66.hljs-literal,
67.hljs-hexcolor,
68.smalltalk .hljs-symbol,
69.smalltalk .hljs-char,
70.go .hljs-constant,
71.hljs-change,
72.lasso .hljs-variable,
73.makefile .hljs-variable,
74.asciidoc .hljs-bullet,
75.markdown .hljs-bullet,
76.asciidoc .hljs-link_url,
77.markdown .hljs-link_url {
78 color: #080;
79}
80
81.hljs-label,
82.hljs-javadoc,
83.ruby .hljs-string,
84.hljs-decorator,
85.hljs-filter .hljs-argument,
86.hljs-localvars,
87.hljs-array,
88.hljs-attr_selector,
89.hljs-important,
90.hljs-pseudo,
91.hljs-pi,
92.haml .hljs-bullet,
93.hljs-doctype,
94.hljs-deletion,
95.hljs-envvar,
96.hljs-shebang,
97.apache .hljs-sqbracket,
98.nginx .hljs-built_in,
99.tex .hljs-formula,
100.erlang_repl .hljs-reserved,
101.hljs-prompt,
102.asciidoc .hljs-link_label,
103.markdown .hljs-link_label,
104.vhdl .hljs-attribute,
105.clojure .hljs-attribute,
106.asciidoc .hljs-attribute,
107.lasso .hljs-attribute,
108.coffeescript .hljs-property,
109.hljs-phony {
110 color: #88f;
111}
112
113.hljs-keyword,
114.hljs-id,
115.hljs-title,
116.hljs-built_in,
117.css .hljs-tag,
118.hljs-javadoctag,
119.hljs-phpdoc,
120.hljs-yardoctag,
121.smalltalk .hljs-class,
122.hljs-winutils,
123.bash .hljs-variable,
124.apache .hljs-tag,
125.go .hljs-typename,
126.tex .hljs-command,
127.asciidoc .hljs-strong,
128.markdown .hljs-strong,
129.hljs-request,
130.hljs-status {
131 font-weight: bold;
132}
133
134.asciidoc .hljs-emphasis,
135.markdown .hljs-emphasis {
136 font-style: italic;
137}
138
139.nginx .hljs-built_in {
140 font-weight: normal;
141}
142
143.coffeescript .javascript,
144.javascript .xml,
145.lasso .markup,
146.tex .hljs-formula,
147.xml .javascript,
148.xml .vbscript,
149.xml .css,
150.xml .hljs-cdata {
151 opacity: 0.5;
152}
diff --git a/themes/default/highlightjs/styles/github.css b/themes/default/highlightjs/styles/github.css
new file mode 100644
index 00000000..47fc2651
--- /dev/null
+++ b/themes/default/highlightjs/styles/github.css
@@ -0,0 +1,127 @@
1/*
2
3github.com style (c) Vasily Polovnyov <vast@whiteants.net>
4
5*/
6
7.hljs {
8 display: block;
9 overflow-x: auto;
10 padding: 0.5em;
11 color: #333;
12 background: #f8f8f8;
13}
14
15.hljs-comment,
16.hljs-template_comment,
17.diff .hljs-header,
18.hljs-javadoc {
19 color: #998;
20 font-style: italic;
21}
22
23.hljs-keyword,
24.css .rule .hljs-keyword,
25.hljs-winutils,
26.javascript .hljs-title,
27.nginx .hljs-title,
28.hljs-subst,
29.hljs-request,
30.hljs-status {
31 color: #333;
32 font-weight: bold;
33}
34
35.hljs-number,
36.hljs-hexcolor,
37.ruby .hljs-constant {
38 color: #099;
39}
40
41.hljs-string,
42.hljs-tag .hljs-value,
43.hljs-phpdoc,
44.tex .hljs-formula {
45 color: #d14;
46}
47
48.hljs-title,
49.hljs-id,
50.coffeescript .hljs-params,
51.scss .hljs-preprocessor {
52 color: #900;
53 font-weight: bold;
54}
55
56.javascript .hljs-title,
57.lisp .hljs-title,
58.clojure .hljs-title,
59.hljs-subst {
60 font-weight: normal;
61}
62
63.hljs-class .hljs-title,
64.haskell .hljs-type,
65.vhdl .hljs-literal,
66.tex .hljs-command {
67 color: #458;
68 font-weight: bold;
69}
70
71.hljs-tag,
72.hljs-tag .hljs-title,
73.hljs-rules .hljs-property,
74.django .hljs-tag .hljs-keyword {
75 color: #000080;
76 font-weight: normal;
77}
78
79.hljs-attribute,
80.hljs-variable,
81.lisp .hljs-body {
82 color: #008080;
83}
84
85.hljs-regexp {
86 color: #009926;
87}
88
89.hljs-symbol,
90.ruby .hljs-symbol .hljs-string,
91.lisp .hljs-keyword,
92.tex .hljs-special,
93.hljs-prompt {
94 color: #990073;
95}
96
97.hljs-built_in,
98.lisp .hljs-title,
99.clojure .hljs-built_in {
100 color: #0086b3;
101}
102
103.hljs-preprocessor,
104.hljs-pragma,
105.hljs-pi,
106.hljs-doctype,
107.hljs-shebang,
108.hljs-cdata {
109 color: #999;
110 font-weight: bold;
111}
112
113.hljs-deletion {
114 background: #fdd;
115}
116
117.hljs-addition {
118 background: #dfd;
119}
120
121.diff .hljs-change {
122 background: #0086b3;
123}
124
125.hljs-chunk {
126 color: #aaa;
127}
diff --git a/themes/default/highlightjs/styles/googlecode.css b/themes/default/highlightjs/styles/googlecode.css
new file mode 100644
index 00000000..fd237367
--- /dev/null
+++ b/themes/default/highlightjs/styles/googlecode.css
@@ -0,0 +1,148 @@
1/*
2
3Google Code style (c) Aahan Krish <geekpanth3r@gmail.com>
4
5*/
6
7.hljs {
8 display: block;
9 overflow-x: auto;
10 padding: 0.5em;
11 background: white;
12 color: black;
13}
14
15.hljs-comment,
16.hljs-template_comment,
17.hljs-javadoc {
18 color: #800;
19}
20
21.hljs-keyword,
22.method,
23.hljs-list .hljs-title,
24.clojure .hljs-built_in,
25.nginx .hljs-title,
26.hljs-tag .hljs-title,
27.setting .hljs-value,
28.hljs-winutils,
29.tex .hljs-command,
30.http .hljs-title,
31.hljs-request,
32.hljs-status {
33 color: #008;
34}
35
36.hljs-envvar,
37.tex .hljs-special {
38 color: #660;
39}
40
41.hljs-string,
42.hljs-tag .hljs-value,
43.hljs-cdata,
44.hljs-filter .hljs-argument,
45.hljs-attr_selector,
46.apache .hljs-cbracket,
47.hljs-date,
48.hljs-regexp,
49.coffeescript .hljs-attribute {
50 color: #080;
51}
52
53.hljs-sub .hljs-identifier,
54.hljs-pi,
55.hljs-tag,
56.hljs-tag .hljs-keyword,
57.hljs-decorator,
58.ini .hljs-title,
59.hljs-shebang,
60.hljs-prompt,
61.hljs-hexcolor,
62.hljs-rules .hljs-value,
63.hljs-literal,
64.hljs-symbol,
65.ruby .hljs-symbol .hljs-string,
66.hljs-number,
67.css .hljs-function,
68.clojure .hljs-attribute {
69 color: #066;
70}
71
72.hljs-class .hljs-title,
73.haskell .hljs-type,
74.smalltalk .hljs-class,
75.hljs-javadoctag,
76.hljs-yardoctag,
77.hljs-phpdoc,
78.hljs-typename,
79.hljs-tag .hljs-attribute,
80.hljs-doctype,
81.hljs-class .hljs-id,
82.hljs-built_in,
83.setting,
84.hljs-params,
85.hljs-variable,
86.clojure .hljs-title {
87 color: #606;
88}
89
90.css .hljs-tag,
91.hljs-rules .hljs-property,
92.hljs-pseudo,
93.hljs-subst {
94 color: #000;
95}
96
97.css .hljs-class,
98.css .hljs-id {
99 color: #9b703f;
100}
101
102.hljs-value .hljs-important {
103 color: #ff7700;
104 font-weight: bold;
105}
106
107.hljs-rules .hljs-keyword {
108 color: #c5af75;
109}
110
111.hljs-annotation,
112.apache .hljs-sqbracket,
113.nginx .hljs-built_in {
114 color: #9b859d;
115}
116
117.hljs-preprocessor,
118.hljs-preprocessor *,
119.hljs-pragma {
120 color: #444;
121}
122
123.tex .hljs-formula {
124 background-color: #eee;
125 font-style: italic;
126}
127
128.diff .hljs-header,
129.hljs-chunk {
130 color: #808080;
131 font-weight: bold;
132}
133
134.diff .hljs-change {
135 background-color: #bccff9;
136}
137
138.hljs-addition {
139 background-color: #baeeba;
140}
141
142.hljs-deletion {
143 background-color: #ffc8bd;
144}
145
146.hljs-comment .hljs-yardoctag {
147 font-weight: bold;
148}
diff --git a/themes/default/home.twig b/themes/default/home.twig
index 093c2dc5..59615691 100755
--- a/themes/default/home.twig
+++ b/themes/default/home.twig
@@ -31,13 +31,13 @@
31 {% block pager %} 31 {% block pager %}
32 {% if nb_results > 1 %} 32 {% if nb_results > 1 %}
33 <div class="results"> 33 <div class="results">
34 <div class="nb-results">{{ nb_results }} {% trans "results" %}{% if search_term is defined %}{% trans " found for « " %} {{ search_term }} »{% endif %}</div> 34 <div class="nb-results">{{ nb_results }} {% trans "results" %}{% if searchterm is defined %}{% trans " found for « " %} {{ searchterm }} »{% endif %}</div>
35 {{ page_links | raw }} 35 {{ page_links | raw }}
36 </div> 36 </div>
37 {% elseif nb_results == 1 %} 37 {% elseif nb_results == 1 %}
38 {% if search_term is defined %} 38 {% if searchterm is defined %}
39 <div class="results"> 39 <div class="results">
40 <div class="nb-results">{% trans "Only one result found for " %} « {{ search_term }} »</div> 40 <div class="nb-results">{% trans "Only one result found for " %} « {{ searchterm }} »</div>
41 </div> 41 </div>
42 {% endif %} 42 {% endif %}
43 {% endif %} 43 {% endif %}
@@ -57,12 +57,22 @@
57 {% endfor %} 57 {% endfor %}
58 58
59 {{ block('pager') }} 59 {{ block('pager') }}
60 {% if view == 'home' %}{% if nb_results > 1 %}<p><a title="{% trans "Mark all the entries as read" %}" href="./?action=archive_all">{% trans "Mark all the entries as read" %}</a></p>{% endif %}{% endif %}
61 {% if searchterm is defined %}<a title="{% trans "Tag these results as" %} {{ searchterm }}" href="./?action=add_tag&search={{ searchterm }}">{% trans "Tag these results as" %} {{ searchterm }}</a>{% endif %}<br />
60 62
61 {% if view == 'home' %}{% if nb_results > 1 %}<a title="{% trans "mark all the entries as read" %}" href="./?action=archive_all">{% trans "mark all the entries as read" %}</a>{% endif %}{% endif %} 63 {% if tag %}
62 64 <a title="{% trans "Download the articles from this tag in an epub file" %}" href="./?epub&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as ePub3" %}</a>
63 {% if tag %}<a title="{% trans "Download the articles from this tag in an epub" %}" href="./?epub&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download the articles from this tag in an epub" %}</a> 65 <a title="{% trans "Download the articles from this tag in a mobi file" %}" href="./?mobi&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as Mobi" %}</a>
64 {% elseif search_term is defined %}<a title="{% trans "Download the articles from this search in an epub" %}" href="./?epub&amp;method=search&amp;value={{ search_term }}">{% trans "Download the articles from this search in an epub" %}</a> 66 <a title="{% trans "Download the articles from this tag in a pdf file" %}" href="./?pdf&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as PDF" %}</a>
65 {% else %}<a title="{% trans "Download the articles from this category in an epub" %}" href="./?epub&amp;method=category&amp;value={{ view }}">{% trans "Download the articles from this category in an epub" %}</a>{% endif %} 67 {% elseif searchterm is defined %}
68 <a title="{% trans "Download the articles from this search in an epub" %}" href="./?epub&amp;method=search&amp;value={{ searchterm }}">{% trans "Download as ePub3" %}</a>
69 <a title="{% trans "Download the articles from this search in a mobi file" %}" href="./?mobi&amp;method=search&amp;value={{ searchterm }}">{% trans "Download as Mobi" %}</a>
70 <a title="{% trans "Download the articles from this search in a pdf file" %}" href="./?pdf&amp;method=search&amp;value={{ searchterm }}">{% trans "Download as PDF" %}</a>
71 {% else %}
72 <a title="{% trans "Download the articles from this category in an epub" %}" href="./?epub&amp;method=category&amp;value={{ view }}">{% trans "Download as ePub3" %}</a>
73 <a title="{% trans "Download the articles from this category in a mobi file" %}" href="./?mobi&amp;method=category&amp;value={{ view }}">{% trans "Download as Mobi" %}</a>
74 <a title="{% trans "Download the articles from this category in a pdf file" %}" href="./?pdf&amp;method=category&amp;value={{ view }}">{% trans "Download as PDF" %}</a>
75 {% endif %}
66 76
67 {% endif %} 77 {% endif %}
68{% endblock %} 78{% endblock %}
diff --git a/themes/default/img/apple-touch-icon-144x144-precomposed.png b/themes/default/img/apple-touch-icon-144x144-precomposed.png
deleted file mode 100644
index 9e951230..00000000
--- a/themes/default/img/apple-touch-icon-144x144-precomposed.png
+++ /dev/null
Binary files differ
diff --git a/themes/default/img/apple-touch-icon-72x72-precomposed.png b/themes/default/img/apple-touch-icon-72x72-precomposed.png
deleted file mode 100644
index 263419b1..00000000
--- a/themes/default/img/apple-touch-icon-72x72-precomposed.png
+++ /dev/null
Binary files differ
diff --git a/themes/default/img/apple-touch-icon.png b/themes/default/img/apple-touch-icon.png
deleted file mode 100644
index ac8a1cf0..00000000
--- a/themes/default/img/apple-touch-icon.png
+++ /dev/null
Binary files differ
diff --git a/themes/default/img/favicon.ico b/themes/default/img/favicon.ico
deleted file mode 100644
index 0e9ff779..00000000
--- a/themes/default/img/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/themes/default/js/popupForm.js b/themes/default/js/popupForm.js
deleted file mode 100644
index 06be3f0c..00000000
--- a/themes/default/js/popupForm.js
+++ /dev/null
@@ -1,20 +0,0 @@
1$(document).ready(function() {
2
3 $("#search-form").hide();
4
5 function closeSearch() {
6 $("#search-form").toggle();
7 $("#search").toggleClass("current");
8 $("#search-arrow").toggleClass("arrow-down");
9 }
10
11 $("#search").click(function(){
12 closeSearch();
13 });
14
15 $("#search-form-close").click(function(){
16 closeSearch();
17 });
18
19
20}); \ No newline at end of file
diff --git a/themes/default/js/restoreScroll.js b/themes/default/js/restoreScroll.js
deleted file mode 100644
index 331c9e19..00000000
--- a/themes/default/js/restoreScroll.js
+++ /dev/null
@@ -1,25 +0,0 @@
1function supportsLocalStorage() {
2 try {
3 return 'localStorage' in window && window['localStorage'] !== null;
4 } catch (e) {
5 return false;
6 }
7}
8
9function savePercent(id, percent) {
10 if (!supportsLocalStorage()) { return false; }
11 localStorage["poche.article." + id + ".percent"] = percent;
12 return true;
13}
14
15function retrievePercent(id) {
16 if (!supportsLocalStorage()) { return false; }
17
18 var bheight = $(document).height();
19 var percent = localStorage["poche.article." + id + ".percent"];
20 var scroll = bheight * percent;
21
22 $('html,body').animate({scrollTop: scroll}, 'fast');
23
24 return true;
25} \ No newline at end of file
diff --git a/themes/default/view.twig b/themes/default/view.twig
index 90b11839..181e1284 100755
--- a/themes/default/view.twig
+++ b/themes/default/view.twig
@@ -1,6 +1,7 @@
1{% extends "layout.twig" %} 1{% extends "layout.twig" %}
2{% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %} 2{% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %}
3{% block content %} 3{% block content %}
4 {% include '_highlight.twig' %}
4 {% include '_pocheit-form.twig' %} 5 {% include '_pocheit-form.twig' %}
5 <div id="article_toolbar"> 6 <div id="article_toolbar">
6 <ul> 7 <ul>
@@ -13,7 +14,9 @@
13 {% if constant('SHARE_TWITTER') == 1 %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter" title="{% trans "Tweet" %}"><span>{% trans "Tweet" %}</span></a></li>{% endif %} 14 {% if constant('SHARE_TWITTER') == 1 %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter" title="{% trans "Tweet" %}"><span>{% trans "Tweet" %}</span></a></li>{% endif %}
14 {% if constant('SHARE_MAIL') == 1 %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email" title="{% trans "Email" %}"><span>{% trans "Email" %}</span></a></li>{% endif %} 15 {% if constant('SHARE_MAIL') == 1 %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email" title="{% trans "Email" %}"><span>{% trans "Email" %}</span></a></li>{% endif %}
15 {% if constant('SHARE_SHAARLI') == 1 %}<li><a href="{{ constant('SHAARLI_URL') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans "shaarli" %}"><span>{% trans "shaarli" %}</span></a></li>{% endif %} 16 {% if constant('SHARE_SHAARLI') == 1 %}<li><a href="{{ constant('SHAARLI_URL') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans "shaarli" %}"><span>{% trans "shaarli" %}</span></a></li>{% endif %}
16 {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}<li><a href="http://flattr.com/submit/auto?url={{ entry.url }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span></a></li>{% elseif flattr.status == constant('FLATTRED') %}<li><a href="{{ flattr.flattrItemURL }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span>{{ flattr.numflattrs }}</a></li>{% endif %}{% endif %} 17 {% if constant('SHARE_DIASPORA') == 1 %}<li><a href="{{ constant('DIASPORA_URL') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora" title="{% trans "diaspora" %}"><span>{% trans "diaspora" %}</span></a></li>{% endif %}
18 {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}<li><a href="http://flattr.com/submit/auto?url={{ entry.url }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span></a></li>{% elseif flattr.status == constant('FLATTRED') %}<li><a href="{{ flattr.flattrItemURL }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span>{{ flattr.numFlattrs }}</a></li>{% endif %}{% endif %}
19 {% if constant('CARROT') == 1 %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon" target="_blank" title="{% trans "carrot" %}"><span>{% trans "carrot" %}</span></a></li>{% endif %}
17 {% if constant('SHOW_PRINTLINK') == 1 %}<li><a title="{% trans "Print" %}" class="tool print" href="javascript: window.print();"><span>{% trans "Print" %}</span></a></li>{% endif %} 20 {% if constant('SHOW_PRINTLINK') == 1 %}<li><a title="{% trans "Print" %}" class="tool print" href="javascript: window.print();"><span>{% trans "Print" %}</span></a></li>{% endif %}
18 <li><a href="./?epub&amp;method=id&amp;value={{ entry.id|e }}" title="Generate epub file">EPUB</a></li> 21 <li><a href="./?epub&amp;method=id&amp;value={{ entry.id|e }}" title="Generate epub file">EPUB</a></li>
19 <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{% trans "Does this article appear wrong?" %}" class="tool bad-display"><span>{% trans "Does this article appear wrong?" %}</span></a></li> 22 <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{% trans "Does this article appear wrong?" %}" class="tool bad-display"><span>{% trans "Does this article appear wrong?" %}</span></a></li>
@@ -34,7 +37,7 @@
34 </article> 37 </article>
35 {{ block('tags') }} 38 {{ block('tags') }}
36 </div> 39 </div>
37 <script src="{{ poche_url }}themes/{{theme}}/js/restoreScroll.js"></script> 40 <script src="{{ poche_url }}themes/_global/js/restoreScroll.js"></script>
38 <script type="text/javascript"> 41 <script type="text/javascript">
39 $(document).ready(function() { 42 $(document).ready(function() {
40 43
@@ -117,4 +120,3 @@
117 }); 120 });
118 </script> 121 </script>
119{% endblock %} 122{% endblock %}
120