diff options
36 files changed, 435 insertions, 165 deletions
diff --git a/inc/3rdparty/site_config/standard/bastamag.net.txt b/inc/3rdparty/site_config/standard/bastamag.net.txt new file mode 100644 index 00000000..142c959c --- /dev/null +++ b/inc/3rdparty/site_config/standard/bastamag.net.txt | |||
@@ -0,0 +1,10 @@ | |||
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.bastamag.net%2FEncadrement-des-loyers-pourquoi-Anne-Hidalgo-ferait-bien-de-visiter-Vienne-l | ||
4 | |||
5 | body: //div[@id='content']//article | ||
6 | |||
7 | strip_id_or_class: appel-soutien | ||
8 | strip_id_or_class: liste dossiers-content | ||
9 | |||
10 | test_url: http://www.bastamag.net/Encadrement-des-loyers-pourquoi-Anne-Hidalgo-ferait-bien-de-visiter-Vienne-l | ||
diff --git a/inc/3rdparty/site_config/standard/bearmetal.eu.txt b/inc/3rdparty/site_config/standard/bearmetal.eu.txt new file mode 100644 index 00000000..44d34655 --- /dev/null +++ b/inc/3rdparty/site_config/standard/bearmetal.eu.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=https%3A%2F%2Fbearmetal.eu%2Ftheden%2Fits-not-about-you%2F | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' entry-content ')] | ||
6 | test_url: https://bearmetal.eu/theden/its-not-about-you/ | ||
diff --git a/inc/3rdparty/site_config/standard/blog.cloudflare.com.txt b/inc/3rdparty/site_config/standard/blog.cloudflare.com.txt index db80a35f..9b7cf25c 100755 --- a/inc/3rdparty/site_config/standard/blog.cloudflare.com.txt +++ b/inc/3rdparty/site_config/standard/blog.cloudflare.com.txt | |||
@@ -3,7 +3,11 @@ title: substring-before(//title, '-') | |||
3 | 3 | ||
4 | author: //a[ contains(@href, '/people') ] | 4 | author: //a[ contains(@href, '/people') ] |
5 | 5 | ||
6 | body: //div[ @class='post' ] | 6 | body: //article[contains(concat(' ',normalize-space(@class),' '),' post ')] |
7 | |||
8 | strip_id_or_class: section learn-more | ||
9 | strip_id_or_class: section comments | ||
10 | strip_id_or_class: disqus_thread | ||
7 | 11 | ||
8 | # Date is impossible to retrieve since they use those stupid "fuzzy" dates, inserted through javascript, at posterous. | 12 | # Date is impossible to retrieve since they use those stupid "fuzzy" dates, inserted through javascript, at posterous. |
9 | test_url: http://blog.cloudflare.com/understanding-analytics-when-is-a-page-view-n \ No newline at end of file | 13 | test_url: http://blog.cloudflare.com/understanding-analytics-when-is-a-page-view-n |
diff --git a/inc/3rdparty/site_config/standard/blog.niqnutn.com.txt b/inc/3rdparty/site_config/standard/blog.niqnutn.com.txt new file mode 100644 index 00000000..aa2f1865 --- /dev/null +++ b/inc/3rdparty/site_config/standard/blog.niqnutn.com.txt | |||
@@ -0,0 +1,9 @@ | |||
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%2Fblog.niqnutn.com%2Farticle35%2Fsteganographie-l-art-de-dissimuler-un-message | ||
4 | |||
5 | body: //article[contains(concat(' ',normalize-space(@class),' '),' article-content ')]//section | ||
6 | |||
7 | strip_id_or_class: sommaire | ||
8 | |||
9 | test_url: http://blog.niqnutn.com/article35/steganographie-l-art-de-dissimuler-un-message | ||
diff --git a/inc/3rdparty/site_config/standard/captaineconomics.fr.txt b/inc/3rdparty/site_config/standard/captaineconomics.fr.txt new file mode 100644 index 00000000..036e0281 --- /dev/null +++ b/inc/3rdparty/site_config/standard/captaineconomics.fr.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.captaineconomics.fr%2F-les-immigres-recemment-arrives-en-france-qui-sont-ils-insee | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' post_content ')] | ||
6 | test_url: http://www.captaineconomics.fr/-les-immigres-recemment-arrives-en-france-qui-sont-ils-insee | ||
diff --git a/inc/3rdparty/site_config/standard/cloudacademy.com.txt b/inc/3rdparty/site_config/standard/cloudacademy.com.txt new file mode 100644 index 00000000..f5b67840 --- /dev/null +++ b/inc/3rdparty/site_config/standard/cloudacademy.com.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%2Fcloudacademy.com%2Fblog%2Fberkshelf-manage-chef-cookbooks%2F | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' entry-content ')] | ||
6 | test_url: http://cloudacademy.com/blog/berkshelf-manage-chef-cookbooks/ \ No newline at end of file | ||
diff --git a/inc/3rdparty/site_config/standard/codebase64.org.txt b/inc/3rdparty/site_config/standard/codebase64.org.txt new file mode 100644 index 00000000..d992d2f1 --- /dev/null +++ b/inc/3rdparty/site_config/standard/codebase64.org.txt | |||
@@ -0,0 +1,9 @@ | |||
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%2Fcodebase64.org%2Fdoku.php%3Fid%3Dbase%3Ademo_coding_introduction | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' page ')] | ||
6 | |||
7 | strip_id_or_class: dw__toc | ||
8 | |||
9 | test_url: http://codebase64.org/doku.php?id=base:demo_coding_introduction | ||
diff --git a/inc/3rdparty/site_config/standard/cyrille-borne.com.txt b/inc/3rdparty/site_config/standard/cyrille-borne.com.txt new file mode 100644 index 00000000..7b41aa0b --- /dev/null +++ b/inc/3rdparty/site_config/standard/cyrille-borne.com.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.cyrille-borne.com%2Farticle511%2Fun-an-de-zte-open-c-plus-tard | ||
4 | |||
5 | body: //article//section | ||
6 | test_url: http://www.cyrille-borne.com/article511/un-an-de-zte-open-c-plus-tard \ No newline at end of file | ||
diff --git a/inc/3rdparty/site_config/standard/des-livres-pour-changer-de-vie.fr.txt b/inc/3rdparty/site_config/standard/des-livres-pour-changer-de-vie.fr.txt new file mode 100644 index 00000000..56b0ea27 --- /dev/null +++ b/inc/3rdparty/site_config/standard/des-livres-pour-changer-de-vie.fr.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.des-livres-pour-changer-de-vie.fr%2Fbit-literacy-2%2F | ||
4 | |||
5 | body: //div[@id='getsocialmain'] | ||
6 | test_url: http://www.des-livres-pour-changer-de-vie.fr/bit-literacy-2/ \ No newline at end of file | ||
diff --git a/inc/3rdparty/site_config/standard/espacepolitique.revues.org.txt b/inc/3rdparty/site_config/standard/espacepolitique.revues.org.txt new file mode 100644 index 00000000..c4acb26e --- /dev/null +++ b/inc/3rdparty/site_config/standard/espacepolitique.revues.org.txt | |||
@@ -0,0 +1,10 @@ | |||
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%2Fespacepolitique.revues.org%2F284 | ||
4 | |||
5 | body: //div[@id='text'] | ||
6 | |||
7 | strip_id_or_class: paranumber | ||
8 | strip_id_or_class: go-top | ||
9 | |||
10 | test_url: http://espacepolitique.revues.org/284 | ||
diff --git a/inc/3rdparty/site_config/standard/frankdenneman.nl.txt b/inc/3rdparty/site_config/standard/frankdenneman.nl.txt new file mode 100644 index 00000000..c6011002 --- /dev/null +++ b/inc/3rdparty/site_config/standard/frankdenneman.nl.txt | |||
@@ -0,0 +1,2 @@ | |||
1 | body: //*[(@class = "content")] | ||
2 | test_url: http://frankdenneman.nl/ | ||
diff --git a/inc/3rdparty/site_config/standard/frontburner.dmagazine.com.txt b/inc/3rdparty/site_config/standard/frontburner.dmagazine.com.txt new file mode 100644 index 00000000..73f44324 --- /dev/null +++ b/inc/3rdparty/site_config/standard/frontburner.dmagazine.com.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%2Ffrontburner.dmagazine.com%2F2015%2F04%2F23%2Fthe-barrett-brown-review-of-arts-and-letters-and-jail-a-sign-of-things-to-come%2F | ||
4 | |||
5 | body: //div[@id='article-body'] | ||
6 | test_url: http://frontburner.dmagazine.com/2015/04/23/the-barrett-brown-review-of-arts-and-letters-and-jail-a-sign-of-things-to-come/ | ||
diff --git a/inc/3rdparty/site_config/standard/ganglia.info.txt b/inc/3rdparty/site_config/standard/ganglia.info.txt new file mode 100644 index 00000000..2ae27b48 --- /dev/null +++ b/inc/3rdparty/site_config/standard/ganglia.info.txt | |||
@@ -0,0 +1,2 @@ | |||
1 | body: //*[(@id = "mid")] | ||
2 | test_url: http://ganglia.info/ | ||
diff --git a/inc/3rdparty/site_config/standard/gokulkrishh.github.io.txt b/inc/3rdparty/site_config/standard/gokulkrishh.github.io.txt new file mode 100644 index 00000000..b395fa9e --- /dev/null +++ b/inc/3rdparty/site_config/standard/gokulkrishh.github.io.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=https%3A%2F%2Fgokulkrishh.github.io%2FJavascript-Guidelines%2F | ||
4 | |||
5 | body: //section[contains(concat(' ',normalize-space(@class),' '),' main-content ')] | ||
6 | test_url: https://gokulkrishh.github.io/Javascript-Guidelines/ | ||
diff --git a/inc/3rdparty/site_config/standard/hackersrepublic.org.txt b/inc/3rdparty/site_config/standard/hackersrepublic.org.txt new file mode 100644 index 00000000..da01c213 --- /dev/null +++ b/inc/3rdparty/site_config/standard/hackersrepublic.org.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.hackersrepublic.org%2Fculture-du-hacking%2Fune-histoire-de-privileges | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' field-name-body ')]//div[contains(concat(' ',normalize-space(@class),' '),' field-items ')]//div[contains(concat(' ',normalize-space(@class),' '),' field-item ') and (contains(concat(' ',normalize-space(@class),' '),' even '))] | ||
6 | test_url: http://www.hackersrepublic.org/culture-du-hacking/une-histoire-de-privileges | ||
diff --git a/inc/3rdparty/site_config/standard/iceblog.free.fr.txt b/inc/3rdparty/site_config/standard/iceblog.free.fr.txt new file mode 100644 index 00000000..9d1ce214 --- /dev/null +++ b/inc/3rdparty/site_config/standard/iceblog.free.fr.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | |||
2 | # Generated by FiveFilters.org's web-based selection tool | ||
3 | # Place this file inside your site_config/custom/ folder | ||
4 | # Source: http://siteconfig.fivefilters.org/grab.php?url=http%3A%2F%2Ficeblog.free.fr%2Findex.php%3Farticle102%2Fweb-histoire-geek-4 | ||
5 | |||
6 | body: //article//section | ||
7 | test_url: http://iceblog.free.fr/index.php?article102/web-histoire-geek-4 | ||
diff --git a/inc/3rdparty/site_config/standard/iso.500px.com.txt b/inc/3rdparty/site_config/standard/iso.500px.com.txt new file mode 100644 index 00000000..ffa29a1d --- /dev/null +++ b/inc/3rdparty/site_config/standard/iso.500px.com.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=https%3A%2F%2Fiso.500px.com%2Fhow-i-post-processed-the-most-successful-image-of-my-career%2F | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' post-content ')] | ||
6 | test_url: https://iso.500px.com/how-i-post-processed-the-most-successful-image-of-my-career/ | ||
diff --git a/inc/3rdparty/site_config/standard/it-connect.fr.txt b/inc/3rdparty/site_config/standard/it-connect.fr.txt new file mode 100644 index 00000000..80c95e68 --- /dev/null +++ b/inc/3rdparty/site_config/standard/it-connect.fr.txt | |||
@@ -0,0 +1,9 @@ | |||
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.it-connect.fr%2Fdebuter-avec-docker-et-les-containers-sous-debian-8%2F | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' post_inner_wrapper ')] | ||
6 | |||
7 | strip_id_or_class: toc_container | ||
8 | |||
9 | test_url: http://www.it-connect.fr/debuter-avec-docker-et-les-containers-sous-debian-8/ | ||
diff --git a/inc/3rdparty/site_config/standard/jsforcats.com.txt b/inc/3rdparty/site_config/standard/jsforcats.com.txt new file mode 100644 index 00000000..f2699ef1 --- /dev/null +++ b/inc/3rdparty/site_config/standard/jsforcats.com.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%2Fjsforcats.com%2F | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' post-content ')] | ||
6 | test_url: http://jsforcats.com/ | ||
diff --git a/inc/3rdparty/site_config/standard/lapin-blanc.blogs.docteo.net.txt b/inc/3rdparty/site_config/standard/lapin-blanc.blogs.docteo.net.txt new file mode 100644 index 00000000..38835a90 --- /dev/null +++ b/inc/3rdparty/site_config/standard/lapin-blanc.blogs.docteo.net.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%2Flapin-blanc.blogs.docteo.net%2F2015%2F01%2F20%2Flencadrement-doctoral-deviendrait-il-un-sujet-dactualite%2F | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' entry-content ')] | ||
6 | test_url: http://lapin-blanc.blogs.docteo.net/2015/01/20/lencadrement-doctoral-deviendrait-il-un-sujet-dactualite/ | ||
diff --git a/inc/3rdparty/site_config/standard/lececil.org.txt b/inc/3rdparty/site_config/standard/lececil.org.txt new file mode 100644 index 00000000..8a38bbf3 --- /dev/null +++ b/inc/3rdparty/site_config/standard/lececil.org.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.lececil.org%2Fnode%2F7688 | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' field-body ')] | ||
6 | test_url: http://www.lececil.org/node/7688 | ||
diff --git a/inc/3rdparty/site_config/standard/metrocop.net.txt b/inc/3rdparty/site_config/standard/metrocop.net.txt new file mode 100644 index 00000000..9535f125 --- /dev/null +++ b/inc/3rdparty/site_config/standard/metrocop.net.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%2Fmetrocop.net%2Fmythic-comics%2Fissue-1%2F | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' entry ')] | ||
6 | test_url: http://metrocop.net/mythic-comics/issue-1/ | ||
diff --git a/inc/3rdparty/site_config/standard/pérotin.com.txt b/inc/3rdparty/site_config/standard/pérotin.com.txt new file mode 100644 index 00000000..7784fa4c --- /dev/null +++ b/inc/3rdparty/site_config/standard/pérotin.com.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=xn--protin-bva.com%2Fpost%2F2009%2F06%2F09%2FSAV-Free-un-sketch-kafkaien | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' post ')] | ||
6 | test_url: http://xn--protin-bva.com/post/2009/06/09/SAV-Free-un-sketch-kafkaien | ||
diff --git a/inc/3rdparty/site_config/standard/reddit.com.txt b/inc/3rdparty/site_config/standard/reddit.com.txt index ba342c7c..c3f2d3e5 100755 --- a/inc/3rdparty/site_config/standard/reddit.com.txt +++ b/inc/3rdparty/site_config/standard/reddit.com.txt | |||
@@ -7,7 +7,9 @@ author: //p[@class="tagline"]/a | |||
7 | # this doesn't work for some reason...? | 7 | # this doesn't work for some reason...? |
8 | date: //p[@class="tagline"]//@datetime | 8 | date: //p[@class="tagline"]//@datetime |
9 | 9 | ||
10 | body: (//div[contains(@class, 'noncollapsed')]//div[contains(@class, 'usertext-body')])[1] | 10 | #body: (//div[contains(@class, 'noncollapsed')]//div[contains(@class, 'usertext-body')])[1] |
11 | |||
12 | body: //div[contains(concat(' ',normalize-space(@class),' '),' usertext-body ') and (contains(concat(' ',normalize-space(@class),' '),' may-blank-within ')) and (contains(concat(' ',normalize-space(@class),' '),' md-container '))]//div[contains(concat(' ',normalize-space(@class),' '),' md ')] | ||
11 | 13 | ||
12 | strip_id_or_class: tagline | 14 | strip_id_or_class: tagline |
13 | strip_id_or_class: unvotable-message | 15 | strip_id_or_class: unvotable-message |
@@ -18,4 +20,4 @@ single_page_link: //p[@class="title"]/a[contains(@href, 'http://')] | |||
18 | 20 | ||
19 | test_url: http://www.reddit.com/r/truegaming/comments/wfe7r/i_wrote_about_the_problems_i_honestly_feel_that/ | 21 | test_url: http://www.reddit.com/r/truegaming/comments/wfe7r/i_wrote_about_the_problems_i_honestly_feel_that/ |
20 | test_url: http://www.reddit.com/r/worldnews/comments/1as37r/twelve_north_korean_soldiers_attempting_to_defect/ | 22 | test_url: http://www.reddit.com/r/worldnews/comments/1as37r/twelve_north_korean_soldiers_attempting_to_defect/ |
21 | test_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 | 23 | test_url: http://www.reddit.com/r/WritingPrompts/comments/2786lw/wp_in_a_world_where_puns_are_illegal_one_man/chybk8e |
diff --git a/inc/3rdparty/site_config/standard/spiil.org.txt b/inc/3rdparty/site_config/standard/spiil.org.txt new file mode 100644 index 00000000..dd12fb88 --- /dev/null +++ b/inc/3rdparty/site_config/standard/spiil.org.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=https%3A%2F%2Fwww.spiil.org%2Fguide-bonnes-pratiques-editeurs-de-presse-ligne | ||
4 | |||
5 | body: //div[contains(concat(' ',normalize-space(@class),' '),' node-content ')] | ||
6 | test_url: https://www.spiil.org/guide-bonnes-pratiques-editeurs-de-presse-ligne | ||
diff --git a/inc/3rdparty/site_config/standard/yosko.net.txt b/inc/3rdparty/site_config/standard/yosko.net.txt new file mode 100644 index 00000000..99e711e3 --- /dev/null +++ b/inc/3rdparty/site_config/standard/yosko.net.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.yosko.net%2Farticle33%2Fsnippet-06-javascript-capturer-des-raccourcis-clavier-utilises-par-votre-navigateur | ||
4 | |||
5 | body: //article//section | ||
6 | test_url: http://www.yosko.net/article33/snippet-06-javascript-capturer-des-raccourcis-clavier-utilises-par-votre-navigateur | ||
diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php index 7be7a394..7ec1602d 100755 --- a/inc/poche/Database.class.php +++ b/inc/poche/Database.class.php | |||
@@ -156,11 +156,14 @@ class Database { | |||
156 | { | 156 | { |
157 | $sql = "SELECT * FROM users_config WHERE user_id = ?"; | 157 | $sql = "SELECT * FROM users_config WHERE user_id = ?"; |
158 | $query = $this->executeQuery($sql, array($id)); | 158 | $query = $this->executeQuery($sql, array($id)); |
159 | $result = $query->fetchAll(); | 159 | $result = ($query) ? $query->fetchAll() : false; |
160 | $user_config = array(); | 160 | $user_config = false; |
161 | if ($query) { | ||
162 | $user_config = array(); | ||
161 | 163 | ||
162 | foreach ($result as $key => $value) { | 164 | foreach ($result as $key => $value) { |
163 | $user_config[$value['name']] = $value['value']; | 165 | $user_config[$value['name']] = $value['value']; |
166 | } | ||
164 | } | 167 | } |
165 | 168 | ||
166 | return $user_config; | 169 | return $user_config; |
@@ -171,11 +174,7 @@ class Database { | |||
171 | $sql = "SELECT * FROM users WHERE username=?"; | 174 | $sql = "SELECT * FROM users WHERE username=?"; |
172 | $query = $this->executeQuery($sql, array($username)); | 175 | $query = $this->executeQuery($sql, array($username)); |
173 | $login = $query->fetchAll(); | 176 | $login = $query->fetchAll(); |
174 | if (isset($login[0])) { | 177 | return (isset($login[0]) && $query) ? true : false; |
175 | return true; | ||
176 | } else { | ||
177 | return false; | ||
178 | } | ||
179 | } | 178 | } |
180 | 179 | ||
181 | public function login($username, $password, $isauthenticated = FALSE) | 180 | public function login($username, $password, $isauthenticated = FALSE) |
@@ -187,10 +186,10 @@ class Database { | |||
187 | $sql = "SELECT * FROM users WHERE username=? AND password=?"; | 186 | $sql = "SELECT * FROM users WHERE username=? AND password=?"; |
188 | $query = $this->executeQuery($sql, array($username, $password)); | 187 | $query = $this->executeQuery($sql, array($username, $password)); |
189 | } | 188 | } |
190 | $login = $query->fetchAll(); | 189 | $login = ($query) ? $query->fetchAll() : false; |
191 | 190 | ||
192 | $user = array(); | 191 | $user = array(); |
193 | if (isset($login[0])) { | 192 | if ($login[0]) { |
194 | $user['id'] = $login[0]['id']; | 193 | $user['id'] = $login[0]['id']; |
195 | $user['username'] = $login[0]['username']; | 194 | $user['username'] = $login[0]['username']; |
196 | $user['password'] = $login[0]['password']; | 195 | $user['password'] = $login[0]['password']; |
@@ -243,7 +242,7 @@ class Database { | |||
243 | { | 242 | { |
244 | $sql = 'SELECT count(*) FROM users'.( $username ? ' WHERE username=?' : ''); | 243 | $sql = 'SELECT count(*) FROM users'.( $username ? ' WHERE username=?' : ''); |
245 | $query = $this->executeQuery($sql, ( $username ? array($username) : array())); | 244 | $query = $this->executeQuery($sql, ( $username ? array($username) : array())); |
246 | list($count) = $query->fetch(); | 245 | list($count) = ($query) ? $query->fetch() : false; |
247 | return $count; | 246 | return $count; |
248 | } | 247 | } |
249 | 248 | ||
@@ -252,7 +251,7 @@ class Database { | |||
252 | $sql = "SELECT * FROM users WHERE id=?"; | 251 | $sql = "SELECT * FROM users WHERE id=?"; |
253 | $query = $this->executeQuery($sql, array($userID)); | 252 | $query = $this->executeQuery($sql, array($userID)); |
254 | $password = $query->fetchAll(); | 253 | $password = $query->fetchAll(); |
255 | return isset($password[0]['password']) ? $password[0]['password'] : null; | 254 | return ($query) ? $password[0]['password'] : false; |
256 | } | 255 | } |
257 | 256 | ||
258 | public function deleteUserConfig($userID) | 257 | public function deleteUserConfig($userID) |
@@ -260,18 +259,22 @@ class Database { | |||
260 | $sql_action = 'DELETE from users_config WHERE user_id=?'; | 259 | $sql_action = 'DELETE from users_config WHERE user_id=?'; |
261 | $params_action = array($userID); | 260 | $params_action = array($userID); |
262 | $query = $this->executeQuery($sql_action, $params_action); | 261 | $query = $this->executeQuery($sql_action, $params_action); |
263 | return $query; | 262 | return ($query) ? $query : false; |
264 | } | 263 | } |
265 | 264 | ||
266 | public function deleteTagsEntriesAndEntries($userID) | 265 | public function deleteTagsEntriesAndEntries($userID) |
267 | { | 266 | { |
268 | $entries = $this->retrieveAll($userID); | 267 | $entries = $this->retrieveAll($userID); |
269 | foreach($entries as $entryid) { | 268 | if ($entries) { |
270 | $tags = $this->retrieveTagsByEntry($entryid); | 269 | foreach($entries as $entry) { |
271 | foreach($tags as $tag) { | 270 | $tags = $this->retrieveTagsByEntry($entry['id']); |
272 | $this->removeTagForEntry($entryid,$tags); | 271 | foreach($tags as $tag) { |
272 | $this->removeTagForEntry($entry['id'], $tags); | ||
273 | } | ||
274 | $this->deleteById($entryid,$userID); | ||
273 | } | 275 | } |
274 | $this->deleteById($entryid,$userID); | 276 | } else { |
277 | return false; | ||
275 | } | 278 | } |
276 | } | 279 | } |
277 | 280 | ||
@@ -302,7 +305,7 @@ class Database { | |||
302 | $query = $this->executeQuery($sql, array($user_id)); | 305 | $query = $this->executeQuery($sql, array($user_id)); |
303 | $entries = $query->fetchAll(); | 306 | $entries = $query->fetchAll(); |
304 | 307 | ||
305 | return $entries; | 308 | return ($query) ? $entries : false; |
306 | } | 309 | } |
307 | 310 | ||
308 | public function retrieveUnfetchedEntriesCount($user_id) | 311 | public function retrieveUnfetchedEntriesCount($user_id) |
@@ -320,44 +323,44 @@ class Database { | |||
320 | $query = $this->executeQuery($sql, array($user_id)); | 323 | $query = $this->executeQuery($sql, array($user_id)); |
321 | $entries = $query->fetchAll(); | 324 | $entries = $query->fetchAll(); |
322 | 325 | ||
323 | return $entries; | 326 | return ($query) ? $entries : false; |
324 | } | 327 | } |
325 | 328 | ||
326 | public function retrieveAllWithTags($user_id) | 329 | public function retrieveAllWithTags($user_id) |
327 | { | 330 | { |
328 | $entries = $this->retrieveAll($user_id); | 331 | $entries = $this->retrieveAll($user_id); |
329 | $count = count($entries); | 332 | if ($entries) { |
330 | for ($i = 0; $i < $count; $i++) { | 333 | $count = count($entries); |
331 | $tag_entries = $this->retrieveTagsByEntry($entries[$i]['id']); | 334 | for ($i = 0; $i < $count; $i++) { |
332 | $tags = []; | 335 | $tag_entries = $this->retrieveTagsByEntry($entries[$i]['id']); |
333 | foreach ($tag_entries as $tag) { | 336 | $tags = []; |
334 | $tags[] = $tag[1]; | 337 | foreach ($tag_entries as $tag) { |
335 | } | 338 | $tags[] = $tag[1]; |
336 | $entries[$i]['tags'] = implode(',', $tags); | 339 | } |
340 | $entries[$i]['tags'] = implode(',', $tags); | ||
341 | } | ||
337 | } | 342 | } |
338 | return $entries; | 343 | return $entries; |
339 | } | 344 | } |
340 | 345 | ||
341 | public function retrieveOneById($id, $user_id) | 346 | public function retrieveOneById($id, $user_id) |
342 | { | 347 | { |
343 | $entry = NULL; | ||
344 | $sql = "SELECT * FROM entries WHERE id=? AND user_id=?"; | 348 | $sql = "SELECT * FROM entries WHERE id=? AND user_id=?"; |
345 | $params = array(intval($id), $user_id); | 349 | $params = array(intval($id), $user_id); |
346 | $query = $this->executeQuery($sql, $params); | 350 | $query = $this->executeQuery($sql, $params); |
347 | $entry = $query->fetchAll(); | 351 | $entry = $query->fetchAll(); |
348 | 352 | ||
349 | return isset($entry[0]) ? $entry[0] : null; | 353 | return ($query) ? $entry[0] : false; |
350 | } | 354 | } |
351 | 355 | ||
352 | public function retrieveOneByURL($url, $user_id) | 356 | public function retrieveOneByURL($url, $user_id) |
353 | { | 357 | { |
354 | $entry = NULL; | ||
355 | $sql = "SELECT * FROM entries WHERE url=? AND user_id=?"; | 358 | $sql = "SELECT * FROM entries WHERE url=? AND user_id=?"; |
356 | $params = array($url, $user_id); | 359 | $params = array($url, $user_id); |
357 | $query = $this->executeQuery($sql, $params); | 360 | $query = $this->executeQuery($sql, $params); |
358 | $entry = $query->fetchAll(); | 361 | $entry = $query->fetchAll(); |
359 | 362 | ||
360 | return isset($entry[0]) ? $entry[0] : null; | 363 | return ($query) ? $entry[0] : false; |
361 | } | 364 | } |
362 | 365 | ||
363 | public function reassignTags($old_entry_id, $new_entry_id) | 366 | public function reassignTags($old_entry_id, $new_entry_id) |
@@ -395,7 +398,8 @@ class Database { | |||
395 | $query = $this->executeQuery($sql, $params); | 398 | $query = $this->executeQuery($sql, $params); |
396 | $entries = $query->fetchAll(); | 399 | $entries = $query->fetchAll(); |
397 | 400 | ||
398 | return $entries; | 401 | return ($query) ? $entries : false; |
402 | |||
399 | } | 403 | } |
400 | 404 | ||
401 | public function getEntriesByViewCount($view, $user_id, $tag_id = 0) | 405 | public function getEntriesByViewCount($view, $user_id, $tag_id = 0) |
@@ -422,7 +426,7 @@ class Database { | |||
422 | } | 426 | } |
423 | 427 | ||
424 | $query = $this->executeQuery($sql, $params); | 428 | $query = $this->executeQuery($sql, $params); |
425 | list($count) = $query->fetch(); | 429 | list($count) = ($query) ? $query->fetch() : array(false); |
426 | 430 | ||
427 | return $count; | 431 | return $count; |
428 | } | 432 | } |
@@ -445,26 +449,34 @@ class Database { | |||
445 | $query = $this->executeQuery($sql, $params); | 449 | $query = $this->executeQuery($sql, $params); |
446 | $id = $query->fetchAll(); | 450 | $id = $query->fetchAll(); |
447 | 451 | ||
448 | return $id; | 452 | return ($query) ? $id : false; |
449 | } | 453 | } |
450 | 454 | ||
451 | public function getPreviousArticle($id, $user_id) | 455 | public function getPreviousArticle($id, $user_id) |
452 | { | 456 | { |
453 | $sql = "SELECT id FROM entries WHERE id = (SELECT max(id) FROM entries WHERE id < ? AND is_read=0) AND user_id=? AND is_read=0"; | 457 | $sqlcondition = "is_read=0"; |
458 | if (STORAGE == 'postgres') { | ||
459 | $sqlcondition = "is_read=false"; | ||
460 | } | ||
461 | $sql = "SELECT id FROM entries WHERE id = (SELECT max(id) FROM entries WHERE id < ? AND " . $sqlcondition . ") AND user_id=? AND " . $sqlcondition; | ||
454 | $params = array($id, $user_id); | 462 | $params = array($id, $user_id); |
455 | $query = $this->executeQuery($sql, $params); | 463 | $query = $this->executeQuery($sql, $params); |
456 | $id_entry = $query->fetchAll(); | 464 | $id_entry = ($query) ? $query->fetchAll() : false; |
457 | $id = $id_entry[0][0]; | 465 | $id = ($query) ? $id_entry[0][0] : false; |
458 | return $id; | 466 | return $id; |
459 | } | 467 | } |
460 | 468 | ||
461 | public function getNextArticle($id, $user_id) | 469 | public function getNextArticle($id, $user_id) |
462 | { | 470 | { |
463 | $sql = "SELECT id FROM entries WHERE id = (SELECT min(id) FROM entries WHERE id > ? AND is_read=0) AND user_id=? AND is_read=0"; | 471 | $sqlcondition = "is_read=0"; |
472 | if (STORAGE == 'postgres') { | ||
473 | $sqlcondition = "is_read=false"; | ||
474 | } | ||
475 | $sql = "SELECT id FROM entries WHERE id = (SELECT min(id) FROM entries WHERE id > ? AND " . $sqlcondition . ") AND user_id=? AND " . $sqlcondition; | ||
464 | $params = array($id, $user_id); | 476 | $params = array($id, $user_id); |
465 | $query = $this->executeQuery($sql, $params); | 477 | $query = $this->executeQuery($sql, $params); |
466 | $id_entry = $query->fetchAll(); | 478 | $id_entry = ($query) ? $query->fetchAll() : false; |
467 | $id = $id_entry[0][0]; | 479 | $id = ($query) ? $id_entry[0][0] : false; |
468 | return $id; | 480 | return $id; |
469 | } | 481 | } |
470 | 482 | ||
@@ -540,7 +552,7 @@ class Database { | |||
540 | $sql_action .= $this->getEntriesOrder().' ' . $limit; | 552 | $sql_action .= $this->getEntriesOrder().' ' . $limit; |
541 | $params_action = array($user_id, $search, $search, $search); | 553 | $params_action = array($user_id, $search, $search, $search); |
542 | $query = $this->executeQuery($sql_action, $params_action); | 554 | $query = $this->executeQuery($sql_action, $params_action); |
543 | return $query->fetchAll(); | 555 | return ($query) ? $query->fetchAll() : false; |
544 | } | 556 | } |
545 | 557 | ||
546 | public function retrieveAllTags($user_id, $term = NULL) | 558 | public function retrieveAllTags($user_id, $term = NULL) |
@@ -553,23 +565,23 @@ class Database { | |||
553 | GROUP BY tags.id, tags.value | 565 | GROUP BY tags.id, tags.value |
554 | ORDER BY tags.value"; | 566 | ORDER BY tags.value"; |
555 | $query = $this->executeQuery($sql, (($term)? array($user_id, strtolower('%'.$term.'%')) : array($user_id) )); | 567 | $query = $this->executeQuery($sql, (($term)? array($user_id, strtolower('%'.$term.'%')) : array($user_id) )); |
556 | $tags = $query->fetchAll(); | 568 | $tags = ($query) ? $query->fetchAll() : false; |
557 | 569 | ||
558 | return $tags; | 570 | return $tags; |
559 | } | 571 | } |
560 | 572 | ||
561 | public function retrieveTag($id, $user_id) | 573 | public function retrieveTag($id, $user_id) |
562 | { | 574 | { |
563 | $tag = NULL; | ||
564 | $sql = "SELECT DISTINCT tags.* FROM tags | 575 | $sql = "SELECT DISTINCT tags.* FROM tags |
565 | LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id | 576 | LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id |
566 | LEFT JOIN entries ON tags_entries.entry_id=entries.id | 577 | LEFT JOIN entries ON tags_entries.entry_id=entries.id |
567 | WHERE tags.id=? AND entries.user_id=?"; | 578 | WHERE tags.id=? AND entries.user_id=?"; |
568 | $params = array(intval($id), $user_id); | 579 | $params = array(intval($id), $user_id); |
569 | $query = $this->executeQuery($sql, $params); | 580 | $query = $this->executeQuery($sql, $params); |
570 | $tag = $query->fetchAll(); | 581 | $tags = ($query) ? $query->fetchAll() : false; |
582 | $tag = ($query) ? $tags[0] : false; | ||
571 | 583 | ||
572 | return isset($tag[0]) ? $tag[0] : NULL; | 584 | return $tag[0]; |
573 | } | 585 | } |
574 | 586 | ||
575 | public function retrieveEntriesByTag($tag_id, $user_id) | 587 | public function retrieveEntriesByTag($tag_id, $user_id) |
@@ -579,7 +591,7 @@ class Database { | |||
579 | LEFT JOIN tags_entries ON tags_entries.entry_id=entries.id | 591 | LEFT JOIN tags_entries ON tags_entries.entry_id=entries.id |
580 | WHERE tags_entries.tag_id = ? AND entries.user_id=? ORDER by entries.id DESC"; | 592 | WHERE tags_entries.tag_id = ? AND entries.user_id=? ORDER by entries.id DESC"; |
581 | $query = $this->executeQuery($sql, array($tag_id, $user_id)); | 593 | $query = $this->executeQuery($sql, array($tag_id, $user_id)); |
582 | $entries = $query->fetchAll(); | 594 | $entries = ($query) ? $query->fetchAll() : false; |
583 | 595 | ||
584 | return $entries; | 596 | return $entries; |
585 | } | 597 | } |
@@ -591,7 +603,7 @@ class Database { | |||
591 | LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id | 603 | LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id |
592 | WHERE tags_entries.entry_id = ?"; | 604 | WHERE tags_entries.entry_id = ?"; |
593 | $query = $this->executeQuery($sql, array($entry_id)); | 605 | $query = $this->executeQuery($sql, array($entry_id)); |
594 | $tags = $query->fetchAll(); | 606 | $tags = ($query) ? $query->fetchAll() : false; |
595 | 607 | ||
596 | return $tags; | 608 | return $tags; |
597 | } | 609 | } |
@@ -601,38 +613,40 @@ class Database { | |||
601 | $sql_action = "DELETE FROM tags_entries WHERE tag_id=? AND entry_id=?"; | 613 | $sql_action = "DELETE FROM tags_entries WHERE tag_id=? AND entry_id=?"; |
602 | $params_action = array($tag_id, $entry_id); | 614 | $params_action = array($tag_id, $entry_id); |
603 | $query = $this->executeQuery($sql_action, $params_action); | 615 | $query = $this->executeQuery($sql_action, $params_action); |
604 | return $query; | 616 | return ($query) ? $query : false; |
605 | } | 617 | } |
606 | 618 | ||
607 | public function cleanUnusedTag($tag_id) | 619 | public function cleanUnusedTag($tag_id) |
608 | { | 620 | { |
609 | $sql_action = "SELECT tags.* FROM tags JOIN tags_entries ON tags_entries.tag_id=tags.id WHERE tags.id=?"; | 621 | $sql_action = "SELECT tags.* FROM tags JOIN tags_entries ON tags_entries.tag_id=tags.id WHERE tags.id=?"; |
610 | $query = $this->executeQuery($sql_action,array($tag_id)); | 622 | $query = $this->executeQuery($sql_action,array($tag_id)); |
611 | $tagstokeep = $query->fetchAll(); | 623 | $tagstokeep = ($query) ? $query->fetchAll() : false; |
612 | $sql_action = "SELECT tags.* FROM tags LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id WHERE tags.id=?"; | 624 | $sql_action = "SELECT tags.* FROM tags LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id WHERE tags.id=?"; |
613 | $query = $this->executeQuery($sql_action,array($tag_id)); | 625 | $query = $this->executeQuery($sql_action,array($tag_id)); |
614 | $alltags = $query->fetchAll(); | 626 | $alltags = ($query) ? $query->fetchAll() : false; |
615 | 627 | ||
616 | foreach ($alltags as $tag) { | 628 | if ($tagstokeep && $alltags) { |
617 | if ($tag && !in_array($tag,$tagstokeep)) { | 629 | foreach ($alltags as $tag) { |
618 | $sql_action = "DELETE FROM tags WHERE id=?"; | 630 | if ($tag && !in_array($tag,$tagstokeep)) { |
619 | $params_action = array($tag[0]); | 631 | $sql_action = "DELETE FROM tags WHERE id=?"; |
620 | $this->executeQuery($sql_action, $params_action); | 632 | $params_action = array($tag[0]); |
621 | return true; | 633 | $this->executeQuery($sql_action, $params_action); |
634 | return true; | ||
635 | } | ||
622 | } | 636 | } |
637 | } else { | ||
638 | return false; | ||
623 | } | 639 | } |
624 | |||
625 | } | 640 | } |
626 | 641 | ||
627 | public function retrieveTagByValue($value) | 642 | public function retrieveTagByValue($value) |
628 | { | 643 | { |
629 | $tag = NULL; | ||
630 | $sql = "SELECT * FROM tags WHERE value=?"; | 644 | $sql = "SELECT * FROM tags WHERE value=?"; |
631 | $params = array($value); | 645 | $params = array($value); |
632 | $query = $this->executeQuery($sql, $params); | 646 | $query = $this->executeQuery($sql, $params); |
633 | $tag = $query->fetchAll(); | 647 | $tag = ($query) ? $query->fetchAll() : false; |
634 | 648 | ||
635 | return isset($tag[0]) ? $tag[0] : null; | 649 | return ($query) ? $tag[0] : false; |
636 | } | 650 | } |
637 | 651 | ||
638 | public function createTag($value) | 652 | public function createTag($value) |
@@ -640,7 +654,7 @@ class Database { | |||
640 | $sql_action = 'INSERT INTO tags ( value ) VALUES (?)'; | 654 | $sql_action = 'INSERT INTO tags ( value ) VALUES (?)'; |
641 | $params_action = array($value); | 655 | $params_action = array($value); |
642 | $query = $this->executeQuery($sql_action, $params_action); | 656 | $query = $this->executeQuery($sql_action, $params_action); |
643 | return $query; | 657 | return ($query) ? $query : false; |
644 | } | 658 | } |
645 | 659 | ||
646 | public function setTagToEntry($tag_id, $entry_id) | 660 | public function setTagToEntry($tag_id, $entry_id) |
@@ -648,7 +662,7 @@ class Database { | |||
648 | $sql_action = 'INSERT INTO tags_entries ( tag_id, entry_id ) VALUES (?, ?)'; | 662 | $sql_action = 'INSERT INTO tags_entries ( tag_id, entry_id ) VALUES (?, ?)'; |
649 | $params_action = array($tag_id, $entry_id); | 663 | $params_action = array($tag_id, $entry_id); |
650 | $query = $this->executeQuery($sql_action, $params_action); | 664 | $query = $this->executeQuery($sql_action, $params_action); |
651 | return $query; | 665 | return ($query) ? $query : false; |
652 | } | 666 | } |
653 | 667 | ||
654 | private function getEntriesOrder() | 668 | private function getEntriesOrder() |
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index baa08788..ea196ce2 100755 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php | |||
@@ -266,6 +266,15 @@ class Poche | |||
266 | } | 266 | } |
267 | foreach($entry_ids as $id) { | 267 | foreach($entry_ids as $id) { |
268 | $msg = 'delete link #' . $id; | 268 | $msg = 'delete link #' . $id; |
269 | |||
270 | // deleting tags and tags_entries | ||
271 | $tags = $this->store->retrieveTagsByEntry($id); | ||
272 | foreach ($tags as $tag) { | ||
273 | $this->store->removeTagForEntry($id, $tag['id']); | ||
274 | $this->store->cleanUnusedTag($tag['id']); | ||
275 | } | ||
276 | |||
277 | // deleting pictures | ||
269 | if ($this->store->deleteById($id, $this->user->getId())) { | 278 | if ($this->store->deleteById($id, $this->user->getId())) { |
270 | if (DOWNLOAD_PICTURES) { | 279 | if (DOWNLOAD_PICTURES) { |
271 | Picture::removeDirectory(ABS_PATH . $id); | 280 | Picture::removeDirectory(ABS_PATH . $id); |
@@ -278,7 +287,7 @@ class Poche | |||
278 | } | 287 | } |
279 | Tools::logm($msg); | 288 | Tools::logm($msg); |
280 | } | 289 | } |
281 | Tools::redirect(); | 290 | Tools::redirect('?'); |
282 | break; | 291 | break; |
283 | case 'toggle_fav' : | 292 | case 'toggle_fav' : |
284 | $this->store->favoriteById($id, $this->user->getId()); | 293 | $this->store->favoriteById($id, $this->user->getId()); |
@@ -441,6 +450,7 @@ class Poche | |||
441 | $token = $this->user->getConfigValue('token'); | 450 | $token = $this->user->getConfigValue('token'); |
442 | $http_auth = (isset($_SERVER['PHP_AUTH_USER']) || isset($_SERVER['REMOTE_USER'])) ? true : false; | 451 | $http_auth = (isset($_SERVER['PHP_AUTH_USER']) || isset($_SERVER['REMOTE_USER'])) ? true : false; |
443 | $only_user = ($this->store->listUsers() > 1) ? false : true; | 452 | $only_user = ($this->store->listUsers() > 1) ? false : true; |
453 | $https = substr(Tools::getPocheUrl(), 0, 5) == 'https'; | ||
444 | $tpl_vars = array( | 454 | $tpl_vars = array( |
445 | 'themes' => $themes, | 455 | 'themes' => $themes, |
446 | 'languages' => $languages, | 456 | 'languages' => $languages, |
@@ -453,7 +463,8 @@ class Poche | |||
453 | 'token' => $token, | 463 | 'token' => $token, |
454 | 'user_id' => $this->user->getId(), | 464 | 'user_id' => $this->user->getId(), |
455 | 'http_auth' => $http_auth, | 465 | 'http_auth' => $http_auth, |
456 | 'only_user' => $only_user | 466 | 'only_user' => $only_user, |
467 | 'https' => $https | ||
457 | ); | 468 | ); |
458 | Tools::logm('config view'); | 469 | Tools::logm('config view'); |
459 | break; | 470 | break; |
@@ -590,7 +601,7 @@ class Poche | |||
590 | 601 | ||
591 | $count = $this->store->getEntriesByViewCount($view, $this->user->getId(), $id); | 602 | $count = $this->store->getEntriesByViewCount($view, $this->user->getId(), $id); |
592 | 603 | ||
593 | if ($count > 0) { | 604 | if ($count && $count > 0) { |
594 | $this->pagination->set_total($count); | 605 | $this->pagination->set_total($count); |
595 | $page_links = str_replace(array('previous', 'next'), array(_('previous'), _('next')), | 606 | $page_links = str_replace(array('previous', 'next'), array(_('previous'), _('next')), |
596 | $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . (($id)?'&id='.$id:'') . '&' )); | 607 | $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . (($id)?'&id='.$id:'') . '&' )); |
@@ -894,14 +905,18 @@ class Poche | |||
894 | */ | 905 | */ |
895 | public function export() | 906 | public function export() |
896 | { | 907 | { |
897 | $filename = "wallabag-export-".$this->user->getId()."-".date("Y-m-d").".json"; | 908 | $filename = "wallabag-export-".$this->user->getId()."-".date("Y-m-d").".json"; |
898 | header('Content-Disposition: attachment; filename='.$filename); | 909 | header('Content-Disposition: attachment; filename='.$filename); |
899 | 910 | ||
900 | $entries = $this->store->retrieveAllWithTags($this->user->getId()); | 911 | $entries = $this->store->retrieveAllWithTags($this->user->getId()); |
901 | echo $this->tpl->render('export.twig', array( | 912 | if ($entries) { |
902 | 'export' => Tools::renderJson($entries), | 913 | echo $this->tpl->render('export.twig', array( |
903 | )); | 914 | 'export' => Tools::renderJson($entries), |
904 | Tools::logm('export view'); | 915 | )); |
916 | Tools::logm('export view'); | ||
917 | } else { | ||
918 | Tools::logm('error accessing database while exporting'); | ||
919 | } | ||
905 | } | 920 | } |
906 | 921 | ||
907 | /** | 922 | /** |
@@ -977,7 +992,7 @@ class Poche | |||
977 | if (0 == $limit) { | 992 | if (0 == $limit) { |
978 | $limit = count($entries); | 993 | $limit = count($entries); |
979 | } | 994 | } |
980 | if (count($entries) > 0) { | 995 | if ($entries && count($entries) > 0) { |
981 | for ($i = 0; $i < min(count($entries), $limit); $i++) { | 996 | for ($i = 0; $i < min(count($entries), $limit); $i++) { |
982 | $entry = $entries[$i]; | 997 | $entry = $entries[$i]; |
983 | $newItem = $feed->createNewItem(); | 998 | $newItem = $feed->createNewItem(); |
@@ -989,7 +1004,10 @@ class Poche | |||
989 | $feed->addItem($newItem); | 1004 | $feed->addItem($newItem); |
990 | } | 1005 | } |
991 | } | 1006 | } |
992 | 1007 | else | |
1008 | { | ||
1009 | Tools::logm("database error while generating feeds"); | ||
1010 | } | ||
993 | $feed->genarateFeed(); | 1011 | $feed->genarateFeed(); |
994 | exit; | 1012 | exit; |
995 | } | 1013 | } |
diff --git a/install/index.php b/install/index.php index bb351095..f5bce50d 100755 --- a/install/index.php +++ b/install/index.php | |||
@@ -94,10 +94,14 @@ else if (isset($_POST['install'])) { | |||
94 | $errors[] = 'Impossible to create the SQLite database file. Please check your file permissions.'; | 94 | $errors[] = 'Impossible to create the SQLite database file. Please check your file permissions.'; |
95 | } | 95 | } |
96 | else { | 96 | else { |
97 | $db_path = 'sqlite:' . realpath('') . '/db/poche.sqlite'; | 97 | try { |
98 | $handle = new PDO($db_path); | 98 | $db_path = 'sqlite:' . realpath('') . '/db/poche.sqlite'; |
99 | $handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); | 99 | $handle = new PDO($db_path); |
100 | $sql_structure = ""; | 100 | $handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); |
101 | $sql_structure = ""; | ||
102 | } catch (PDOException $e) { | ||
103 | $errors[] = "SQLite has encountered an issue : " . $e->getMessage(); | ||
104 | } | ||
101 | } | 105 | } |
102 | } else { | 106 | } else { |
103 | // MySQL and Postgre | 107 | // MySQL and Postgre |
@@ -254,7 +258,6 @@ else if (isset($_POST['install'])) { | |||
254 | <link rel="apple-touch-icon-precomposed" sizes="144x144" href="themes/baggy/img/apple-touch-icon-144x144-precomposed.png"> | 258 | <link rel="apple-touch-icon-precomposed" sizes="144x144" href="themes/baggy/img/apple-touch-icon-144x144-precomposed.png"> |
255 | <link rel="apple-touch-icon-precomposed" sizes="72x72" href="themes/baggy/img/apple-touch-icon-72x72-precomposed.png"> | 259 | <link rel="apple-touch-icon-precomposed" sizes="72x72" href="themes/baggy/img/apple-touch-icon-72x72-precomposed.png"> |
256 | <link rel="apple-touch-icon-precomposed" href="themes/baggy/img/apple-touch-icon-precomposed.png"> | 260 | <link rel="apple-touch-icon-precomposed" href="themes/baggy/img/apple-touch-icon-precomposed.png"> |
257 | <link href='//fonts.googleapis.com/css?family=PT+Sans:700' rel='stylesheet' type='text/css'> | ||
258 | <link rel="stylesheet" href="themes/baggy/css/ratatouille.css" media="all"> | 261 | <link rel="stylesheet" href="themes/baggy/css/ratatouille.css" media="all"> |
259 | <link rel="stylesheet" href="themes/baggy/css/font.css" media="all"> | 262 | <link rel="stylesheet" href="themes/baggy/css/font.css" media="all"> |
260 | <link rel="stylesheet" href="themes/baggy/css/main.css" media="all"> | 263 | <link rel="stylesheet" href="themes/baggy/css/main.css" media="all"> |
diff --git a/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.mo b/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.mo index 2fcb356a..99e1ad59 100644 --- a/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.mo +++ 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 index 2fe4b352..6fca6d79 100644 --- a/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.po +++ b/locale/en_US.utf8/LC_MESSAGES/en_US.utf8.po | |||
@@ -9,7 +9,7 @@ msgstr "" | |||
9 | "MIME-Version: 1.0\n" | 9 | "MIME-Version: 1.0\n" |
10 | "Content-Type: text/plain; charset=iso-8859-1\n" | 10 | "Content-Type: text/plain; charset=iso-8859-1\n" |
11 | "Content-Transfer-Encoding: 8bit\n" | 11 | "Content-Transfer-Encoding: 8bit\n" |
12 | "X-Generator: Poedit 1.7.5\n" | 12 | "X-Generator: Poedit 1.5.4\n" |
13 | 13 | ||
14 | msgid "wallabag, a read it later open source system" | 14 | msgid "wallabag, a read it later open source system" |
15 | msgstr "wallabag, a read it later open source system" | 15 | msgstr "wallabag, a read it later open source system" |
@@ -112,6 +112,9 @@ msgstr "Standard Firefox Add-On" | |||
112 | msgid "Mozilla Services (Social API) Extension" | 112 | msgid "Mozilla Services (Social API) Extension" |
113 | msgstr "Mozilla Services (Social API) Extension" | 113 | msgstr "Mozilla Services (Social API) Extension" |
114 | 114 | ||
115 | msgid "Mozilla Services (Social API) Extension needs an https connection" | ||
116 | msgstr "Mozilla Services (Social API) Extension needs an https connection" | ||
117 | |||
115 | msgid "Chrome Extension" | 118 | msgid "Chrome Extension" |
116 | msgstr "Chrome Extension" | 119 | msgstr "Chrome Extension" |
117 | 120 | ||
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 f46ef600..626b0258 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 e8ba1547..a5e7bcd1 100644 --- a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po +++ b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po | |||
@@ -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.7.5\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 | ||
18 | msgid "wallabag, a read it later open source system" | 18 | msgid "wallabag, a read it later open source system" |
@@ -46,7 +46,8 @@ msgid "Login to wallabag" | |||
46 | msgstr "Se connecter à wallabag" | 46 | msgstr "Se connecter à wallabag" |
47 | 47 | ||
48 | msgid "you are in demo mode, some features may be disabled." | 48 | msgid "you are in demo mode, some features may be disabled." |
49 | msgstr "vous êtes en mode démo, certaines fonctionnalités peuvent être désactivées." | 49 | msgstr "" |
50 | "vous êtes en mode démo, certaines fonctionnalités peuvent être désactivées." | ||
50 | 51 | ||
51 | msgid "Username" | 52 | msgid "Username" |
52 | msgstr "Nom d'utilisateur" | 53 | msgstr "Nom d'utilisateur" |
@@ -82,7 +83,9 @@ msgid "Tag" | |||
82 | msgstr "Tag" | 83 | msgstr "Tag" |
83 | 84 | ||
84 | msgid "No tags found. You must view an article to set tags for it." | 85 | msgid "No tags found. You must view an article to set tags for it." |
85 | msgstr "Pas de tags trouvés. Vous devez vous rendre sur un article pour choisir de lui associer des tags." | 86 | msgstr "" |
87 | "Pas de tags trouvés. Vous devez vous rendre sur un article pour choisir de " | ||
88 | "lui associer des tags." | ||
86 | 89 | ||
87 | msgid "No articles found." | 90 | msgid "No articles found." |
88 | msgstr "Aucun article trouvé." | 91 | msgstr "Aucun article trouvé." |
@@ -127,11 +130,12 @@ msgid "About wallabag" | |||
127 | msgstr "À propos de wallabag" | 130 | msgstr "À propos de wallabag" |
128 | 131 | ||
129 | msgid "" | 132 | msgid "" |
130 | "wallabag is a read-it-later application: you can save a web page by keeping only content. Elements like " | 133 | "wallabag is a read-it-later application: you can save a web page by keeping " |
131 | "ads or menus are deleted." | 134 | "only content. Elements like ads or menus are deleted." |
132 | msgstr "" | 135 | msgstr "" |
133 | "wallabag est une application de lecture différée : vous pouvez sauver une page web et garder uniquement " | 136 | "wallabag est une application de lecture différée : vous pouvez sauver une " |
134 | "son contenu. Les élements comme les publicités ou les menus sont supprimés." | 137 | "page web et garder uniquement son contenu. Les élements comme les publicités " |
138 | "ou les menus sont supprimés." | ||
135 | 139 | ||
136 | msgid "Project website" | 140 | msgid "Project website" |
137 | msgstr "Site web du projet" | 141 | msgstr "Site web du projet" |
@@ -167,11 +171,11 @@ msgid "Documentation" | |||
167 | msgstr "Documentation" | 171 | msgstr "Documentation" |
168 | 172 | ||
169 | msgid "" | 173 | msgid "" |
170 | "<a href=\"docs/\">Offline documentation</a> and <a href=\"https://doc.wallabag.org/\">online " | 174 | "<a href=\"docs/\">Offline documentation</a> and <a href=\"https://doc." |
171 | "documentation</a> (up to date)" | 175 | "wallabag.org/\">online documentation</a> (up to date)" |
172 | msgstr "" | 176 | msgstr "" |
173 | "<a href=\"docs/\">Documentation hors-ligne</a> et <a href=\"https://doc.wallabag.org/\">documentation " | 177 | "<a href=\"docs/\">Documentation hors-ligne</a> et <a href=\"https://doc." |
174 | "en ligne</a> (à jour)" | 178 | "wallabag.org/\">documentation en ligne</a> (à jour)" |
175 | 179 | ||
176 | msgid "Helping wallabag" | 180 | msgid "Helping wallabag" |
177 | msgstr "Aider wallabag" | 181 | msgstr "Aider wallabag" |
@@ -206,6 +210,10 @@ msgstr "Add-On Firefox classique" | |||
206 | msgid "Mozilla Services (Social API) Extension" | 210 | msgid "Mozilla Services (Social API) Extension" |
207 | msgstr "Extension Mozilla Services (Social API)" | 211 | msgstr "Extension Mozilla Services (Social API)" |
208 | 212 | ||
213 | msgid "Mozilla Services (Social API) Extension needs an https connection" | ||
214 | msgstr "" | ||
215 | "L'extension Mozilla Services (Social API) nécessite une connection https" | ||
216 | |||
209 | msgid "Chrome Extension" | 217 | msgid "Chrome Extension" |
210 | msgstr "Extension Chrome" | 218 | msgstr "Extension Chrome" |
211 | 219 | ||
@@ -261,17 +269,19 @@ msgid "A more recent development version is available." | |||
261 | msgstr "Une version de développement plus récente est disponible." | 269 | msgstr "Une version de développement plus récente est disponible." |
262 | 270 | ||
263 | msgid "You can clear cache to check the latest release." | 271 | msgid "You can clear cache to check the latest release." |
264 | msgstr "Vous pouvez vider le cache pour vérifier que vous avez la dernière version." | 272 | msgstr "" |
273 | "Vous pouvez vider le cache pour vérifier que vous avez la dernière version." | ||
265 | 274 | ||
266 | msgid "Feeds" | 275 | msgid "Feeds" |
267 | msgstr "Flux" | 276 | msgstr "Flux" |
268 | 277 | ||
269 | msgid "" | 278 | msgid "" |
270 | "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?" | 279 | "Your feed token is currently empty and must first be generated to enable " |
271 | "feed&action=generate'>here to generate it</a>." | 280 | "feeds. Click <a href='?feed&action=generate'>here to generate it</a>." |
272 | msgstr "" | 281 | msgstr "" |
273 | "Votre jeton de flux est actuellement vide et doit d'abord être généré pour activer les flux. Cliquez <a " | 282 | "Votre jeton de flux est actuellement vide et doit d'abord être généré pour " |
274 | "href='?feed&action=generate'>ici</a> pour le générer." | 283 | "activer les flux. Cliquez <a href='?feed&action=generate'>ici</a> pour " |
284 | "le générer." | ||
275 | 285 | ||
276 | msgid "Unread feed" | 286 | msgid "Unread feed" |
277 | msgstr "Flux des non lus" | 287 | msgstr "Flux des non lus" |
@@ -288,8 +298,12 @@ msgstr "Votre jeton :" | |||
288 | msgid "Your user id:" | 298 | msgid "Your user id:" |
289 | msgstr "Votre ID utilisateur :" | 299 | msgstr "Votre ID utilisateur :" |
290 | 300 | ||
291 | msgid "You can regenerate your token: <a href='?feed&action=generate'>generate!</a>." | 301 | msgid "" |
292 | msgstr "Vous pouvez regénérer votre jeton : <a href='?feed&action=generate'>génération !</a>." | 302 | "You can regenerate your token: <a href='?feed&action=generate'>generate!" |
303 | "</a>." | ||
304 | msgstr "" | ||
305 | "Vous pouvez regénérer votre jeton : <a href='?feed&" | ||
306 | "action=generate'>génération !</a>." | ||
293 | 307 | ||
294 | msgid "Change your theme" | 308 | msgid "Change your theme" |
295 | msgstr "Changer votre thème" | 309 | msgstr "Changer votre thème" |
@@ -319,33 +333,38 @@ msgid "Import" | |||
319 | msgstr "Importer" | 333 | msgstr "Importer" |
320 | 334 | ||
321 | msgid "" | 335 | msgid "" |
322 | "You can import your Pocket, Readability, Instapaper, Wallabag or any data in appropriate json or html " | 336 | "You can import your Pocket, Readability, Instapaper, Wallabag or any data in " |
323 | "format." | 337 | "appropriate json or html format." |
324 | msgstr "" | 338 | msgstr "" |
325 | "Vous pouvez importer depuis Pocket, Readability, Instapaper, wallabag, ou n'importe quel fichier au " | 339 | "Vous pouvez importer depuis Pocket, Readability, Instapaper, wallabag, ou " |
326 | "format JSON ou HTML approprié." | 340 | "n'importe quel fichier au format JSON ou HTML approprié." |
327 | 341 | ||
328 | msgid "" | 342 | msgid "" |
329 | "Please select export file on your computer and press \"Import\" button below. Wallabag will parse your " | 343 | "Please select export file on your computer and press \"Import\" button " |
330 | "file, insert all URLs and start fetching of articles if required." | 344 | "below. Wallabag will parse your file, insert all URLs and start fetching of " |
345 | "articles if required." | ||
331 | msgstr "" | 346 | msgstr "" |
332 | "Sélectionnez le fichier à importer sur votre disque dur, et pressez le bouton « Importer » ci-dessous. " | 347 | "Sélectionnez le fichier à importer sur votre disque dur, et pressez le " |
333 | "wallabag analysera votre fichier, ajoutera toutes les URL trouvées et commencera à télécharger les " | 348 | "bouton « Importer » ci-dessous. wallabag analysera votre fichier, ajoutera " |
334 | "contenus si nécessaire." | 349 | "toutes les URL trouvées et commencera à télécharger les contenus si " |
350 | "nécessaire." | ||
335 | 351 | ||
336 | msgid "" | 352 | msgid "" |
337 | "Fetching process is controlled by two constants in your config file: IMPORT_LIMIT (how many articles " | 353 | "Fetching process is controlled by two constants in your config file: " |
338 | "are fetched at once) and IMPORT_DELAY (delay between fetch of next batch of articles)." | 354 | "IMPORT_LIMIT (how many articles are fetched at once) and IMPORT_DELAY (delay " |
355 | "between fetch of next batch of articles)." | ||
339 | msgstr "" | 356 | msgstr "" |
340 | "Le processus d'import peut être paramétré par deux constantes dans votre fichier de configuration : " | 357 | "Le processus d'import peut être paramétré par deux constantes dans votre " |
341 | "IMPORT_LIMIT (combien d'articles sont téléchargés à la fois) et IMPORT_DELAY (le délai entre le " | 358 | "fichier de configuration : IMPORT_LIMIT (combien d'articles sont téléchargés " |
342 | "téléchargement du prochain lot d'articles)." | 359 | "à la fois) et IMPORT_DELAY (le délai entre le téléchargement du prochain lot " |
360 | "d'articles)." | ||
343 | 361 | ||
344 | msgid "File:" | 362 | msgid "File:" |
345 | msgstr "Fichier : " | 363 | msgstr "Fichier : " |
346 | 364 | ||
347 | msgid "You can click here to fetch content for articles with no content." | 365 | msgid "You can click here to fetch content for articles with no content." |
348 | msgstr "Vous pouvez cliquer ici pour télécharger le contenu des articles vides." | 366 | msgstr "" |
367 | "Vous pouvez cliquer ici pour télécharger le contenu des articles vides." | ||
349 | 368 | ||
350 | msgid "Export your wallabag data" | 369 | msgid "Export your wallabag data" |
351 | msgstr "Exporter vos données de wallabag" | 370 | msgstr "Exporter vos données de wallabag" |
@@ -372,7 +391,8 @@ msgid "Delete Cache" | |||
372 | msgstr "Vider le cache" | 391 | msgstr "Vider le cache" |
373 | 392 | ||
374 | msgid "Deleting the cache may help with display or other problems." | 393 | msgid "Deleting the cache may help with display or other problems." |
375 | msgstr "Vider le cache peut résoudre des problèmes d'affichage ou d'autres problèmes." | 394 | msgstr "" |
395 | "Vider le cache peut résoudre des problèmes d'affichage ou d'autres problèmes." | ||
376 | 396 | ||
377 | msgid "Add user" | 397 | msgid "Add user" |
378 | msgstr "Ajouter un utilisateur" | 398 | msgstr "Ajouter un utilisateur" |
@@ -399,7 +419,9 @@ msgid "Delete account" | |||
399 | msgstr "Supprimer le compte" | 419 | msgstr "Supprimer le compte" |
400 | 420 | ||
401 | msgid "You can delete your account by entering your password and validating." | 421 | msgid "You can delete your account by entering your password and validating." |
402 | msgstr "Vous pouvez supprimer votre compte en entrant votre mot de passe et en validant." | 422 | msgstr "" |
423 | "Vous pouvez supprimer votre compte en entrant votre mot de passe et en " | ||
424 | "validant." | ||
403 | 425 | ||
404 | msgid "Be careful, data will be erased forever (that is a very long time)." | 426 | msgid "Be careful, data will be erased forever (that is a very long time)." |
405 | msgstr "Attention, les données seront perdues pour toujours." | 427 | msgstr "Attention, les données seront perdues pour toujours." |
@@ -408,13 +430,16 @@ msgid "Type here your password" | |||
408 | msgstr "Entrez votre mot de passe ici" | 430 | msgstr "Entrez votre mot de passe ici" |
409 | 431 | ||
410 | msgid "You are the only user, you cannot delete your own account." | 432 | msgid "You are the only user, you cannot delete your own account." |
411 | msgstr "Vous êtes l'unique utilisateur, vous ne pouvez pas supprimer votre compte." | 433 | msgstr "" |
434 | "Vous êtes l'unique utilisateur, vous ne pouvez pas supprimer votre compte." | ||
412 | 435 | ||
413 | msgid "" | 436 | msgid "" |
414 | "To completely remove wallabag, delete the wallabag folder on your web server (and eventual databases)." | 437 | "To completely remove wallabag, delete the wallabag folder on your web server " |
438 | "(and eventual databases)." | ||
415 | msgstr "" | 439 | msgstr "" |
416 | "Pour désinstaller complètement wallabag, supprimez le répertoire <code>wallabag</code> de votre serveur " | 440 | "Pour désinstaller complètement wallabag, supprimez le répertoire " |
417 | "Web (ainsi que les bases de données éventuelles)." | 441 | "<code>wallabag</code> de votre serveur Web (ainsi que les bases de données " |
442 | "éventuelles)." | ||
418 | 443 | ||
419 | msgid "Save a link" | 444 | msgid "Save a link" |
420 | msgstr "Ajouter un lien" | 445 | msgstr "Ajouter un lien" |
@@ -522,7 +547,9 @@ msgid "a more recent development version is available." | |||
522 | msgstr "une version de développement plus récente est disponible." | 547 | msgstr "une version de développement plus récente est disponible." |
523 | 548 | ||
524 | msgid "Please execute the import script locally, it can take a very long time." | 549 | msgid "Please execute the import script locally, it can take a very long time." |
525 | msgstr "Merci d'exécuter le script d'importation en local car cela peut prendre du temps." | 550 | msgstr "" |
551 | "Merci d'exécuter le script d'importation en local car cela peut prendre du " | ||
552 | "temps." | ||
526 | 553 | ||
527 | msgid "More infos in the official doc:" | 554 | msgid "More infos in the official doc:" |
528 | msgstr "Plus d'infos dans la documentation officielle :" | 555 | msgstr "Plus d'infos dans la documentation officielle :" |
@@ -589,11 +616,13 @@ msgid "install your wallabag" | |||
589 | msgstr "installez votre wallabag" | 616 | msgstr "installez votre wallabag" |
590 | 617 | ||
591 | msgid "" | 618 | msgid "" |
592 | "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to <a " | 619 | "wallabag is still not installed. Please fill the below form to install it. " |
593 | "href='http://doc.wallabag.org/'>read the documentation on wallabag website</a>." | 620 | "Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation " |
621 | "on wallabag website</a>." | ||
594 | msgstr "" | 622 | msgstr "" |
595 | "wallabag n'est pas encore installé. Merci de remplir le formulaire suivant pour l'installer. N'hésitez " | 623 | "wallabag n'est pas encore installé. Merci de remplir le formulaire suivant " |
596 | "pas à <a href='http://doc.wallabag.org'>lire la documentation sur le site de wallabag</a>." | 624 | "pour l'installer. N'hésitez pas à <a href='http://doc.wallabag.org'>lire la " |
625 | "documentation sur le site de wallabag</a>." | ||
597 | 626 | ||
598 | msgid "Repeat your password" | 627 | msgid "Repeat your password" |
599 | msgstr "Répétez votre mot de passe" | 628 | msgstr "Répétez votre mot de passe" |
@@ -601,8 +630,12 @@ msgstr "Répétez votre mot de passe" | |||
601 | msgid "Install" | 630 | msgid "Install" |
602 | msgstr "Installer" | 631 | msgstr "Installer" |
603 | 632 | ||
604 | msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>." | 633 | msgid "" |
605 | msgstr "Vous pouvez vérifier votre configuration <a href='wallabag_compatibility_test.php'>ici</a>." | 634 | "You can <a href='wallabag_compatibility_test.php'>check your configuration " |
635 | "here</a>." | ||
636 | msgstr "" | ||
637 | "Vous pouvez vérifier votre configuration <a " | ||
638 | "href='wallabag_compatibility_test.php'>ici</a>." | ||
606 | 639 | ||
607 | msgid "Tags" | 640 | msgid "Tags" |
608 | msgstr "Tags" | 641 | msgstr "Tags" |
@@ -641,9 +674,12 @@ msgid "Enter your search here" | |||
641 | msgstr "Entrez votre recherche ici" | 674 | msgstr "Entrez votre recherche ici" |
642 | 675 | ||
643 | #, php-format | 676 | #, php-format |
644 | msgid "The new user %s has been installed. Do you want to <a href=\"?logout\">logout ?</a>" | 677 | msgid "" |
678 | "The new user %s has been installed. Do you want to <a href=\"?logout" | ||
679 | "\">logout ?</a>" | ||
645 | msgstr "" | 680 | msgstr "" |
646 | "Le nouvel utilisateur « %s » a été ajouté. Voulez-vous vous <a href=\"?logout\">déconnecter ?</a>" | 681 | "Le nouvel utilisateur « %s » a été ajouté. Voulez-vous vous <a href=\"?" |
682 | "logout\">déconnecter ?</a>" | ||
647 | 683 | ||
648 | #, php-format | 684 | #, php-format |
649 | msgid "Error : An user with the name %s already exists !" | 685 | msgid "Error : An user with the name %s already exists !" |
@@ -657,7 +693,9 @@ msgid "Error : The password is wrong !" | |||
657 | msgstr "Erreur : le mot de passe est incorrect !" | 693 | msgstr "Erreur : le mot de passe est incorrect !" |
658 | 694 | ||
659 | msgid "Error : You are the only user, you cannot delete your account !" | 695 | msgid "Error : You are the only user, you cannot delete your account !" |
660 | msgstr "Erreur : Vous êtes l'unique utilisateur, vous ne pouvez pas supprimer votre compte !" | 696 | msgstr "" |
697 | "Erreur : Vous êtes l'unique utilisateur, vous ne pouvez pas supprimer votre " | ||
698 | "compte !" | ||
661 | 699 | ||
662 | msgid "Untitled" | 700 | msgid "Untitled" |
663 | msgstr "Sans titre" | 701 | msgstr "Sans titre" |
@@ -689,8 +727,12 @@ msgstr "en mode démo, vous ne pouvez pas mettre à jour votre mot de passe" | |||
689 | msgid "your password has been updated" | 727 | msgid "your password has been updated" |
690 | msgstr "votre mot de passe a été mis à jour" | 728 | msgstr "votre mot de passe a été mis à jour" |
691 | 729 | ||
692 | msgid "the two fields have to be filled & the password must be the same in the two fields" | 730 | msgid "" |
693 | msgstr "les deux champs doivent être remplis & le mot de passe doit être le même dans les deux" | 731 | "the two fields have to be filled & the password must be the same in the two " |
732 | "fields" | ||
733 | msgstr "" | ||
734 | "les deux champs doivent être remplis & le mot de passe doit être le même " | ||
735 | "dans les deux" | ||
694 | 736 | ||
695 | msgid "still using the \"" | 737 | msgid "still using the \"" |
696 | msgstr "vous utilisez toujours \"" | 738 | msgstr "vous utilisez toujours \"" |
@@ -826,11 +868,11 @@ msgid "Generate PDF file" | |||
826 | msgstr "Générer fichier PDF" | 868 | msgstr "Générer fichier PDF" |
827 | 869 | ||
828 | msgid "" | 870 | msgid "" |
829 | "This can <b>take a while</b> and can <b>even fail</b> if you have too many articles, depending on your " | 871 | "This can <b>take a while</b> and can <b>even fail</b> if you have too many " |
830 | "server configuration." | 872 | "articles, depending on your server configuration." |
831 | msgstr "" | 873 | msgstr "" |
832 | "Ceci peut <b>prendre un moment</b> et même <b>échouer</b> si vous avez trop d'articles, selon la " | 874 | "Ceci peut <b>prendre un moment</b> et même <b>échouer</b> si vous avez trop " |
833 | "configuration matérielle de votre serveur." | 875 | "d'articles, selon la configuration matérielle de votre serveur." |
834 | 876 | ||
835 | msgid "Download the articles from this tag in an epub" | 877 | msgid "Download the articles from this tag in an epub" |
836 | msgstr "Télécharger les articles de ce tag dans un epub" | 878 | msgstr "Télécharger les articles de ce tag dans un epub" |
@@ -911,11 +953,12 @@ msgid "Produced by wallabag with PHPePub" | |||
911 | msgstr "Produit par wallabag avec PHPePub" | 953 | msgstr "Produit par wallabag avec PHPePub" |
912 | 954 | ||
913 | msgid "" | 955 | msgid "" |
914 | "Please open <a href='https://github.com/wallabag/wallabag/issues'>an issue</a> if you have trouble with " | 956 | "Please open <a href='https://github.com/wallabag/wallabag/issues'>an issue</" |
915 | "the display of this E-Book on your device." | 957 | "a> if you have trouble with the display of this E-Book on your device." |
916 | msgstr "" | 958 | msgstr "" |
917 | "Merci d'ouvrir <a href='https://github.com/wallabag/wallabag/issues'>un ticket</a> si vous avez des " | 959 | "Merci d'ouvrir <a href='https://github.com/wallabag/wallabag/issues'>un " |
918 | "problèmes d'affichage de cet E-Book sur votre appareil." | 960 | "ticket</a> si vous avez des problèmes d'affichage de cet E-Book sur votre " |
961 | "appareil." | ||
919 | 962 | ||
920 | msgid "Produced by wallabag with PHPMobi" | 963 | msgid "Produced by wallabag with PHPMobi" |
921 | msgstr "Produit par wallabag avec PHPMobi" | 964 | msgstr "Produit par wallabag avec PHPMobi" |
@@ -928,7 +971,8 @@ msgid "Hi, %1$s" | |||
928 | msgstr "Salut, %1$s" | 971 | msgstr "Salut, %1$s" |
929 | 972 | ||
930 | msgid "Someone just created a wallabag account for you on %1$s." | 973 | msgid "Someone just created a wallabag account for you on %1$s." |
931 | msgstr "Quelqu'un vient juste de créer un compte wallabag pour vous à l'adresse %1$s." | 974 | msgstr "" |
975 | "Quelqu'un vient juste de créer un compte wallabag pour vous à l'adresse %1$s." | ||
932 | 976 | ||
933 | msgid "You've just created a wallabag account on %1$s" | 977 | msgid "You've just created a wallabag account on %1$s" |
934 | msgstr "Vous venez juste de vous créer un compte wallabag sur %1$s" | 978 | msgstr "Vous venez juste de vous créer un compte wallabag sur %1$s" |
@@ -939,32 +983,49 @@ msgstr "Votre identifiant is %1$s." | |||
939 | msgid "Have fun with it !" | 983 | msgid "Have fun with it !" |
940 | msgstr "Amusez-vous bien !" | 984 | msgstr "Amusez-vous bien !" |
941 | 985 | ||
942 | msgid "This is an automatically generated message, no one will answer if you respond to it." | 986 | msgid "" |
943 | msgstr "Ceci est un message généré automatiquement, personne ne vous répondra si vous y répondez." | 987 | "This is an automatically generated message, no one will answer if you " |
988 | "respond to it." | ||
989 | msgstr "" | ||
990 | "Ceci est un message généré automatiquement, personne ne vous répondra si " | ||
991 | "vous y répondez." | ||
944 | 992 | ||
945 | msgid "" | 993 | msgid "" |
946 | "Note : The password has been chosen by the person who created your account. Get in touch with that " | 994 | "Note : The password has been chosen by the person who created your account. " |
947 | "person to know your password and change it as soon as possible" | 995 | "Get in touch with that person to know your password and change it as soon as " |
996 | "possible" | ||
948 | msgstr "" | 997 | msgstr "" |
949 | "Note : Votre mot de passe a été défini par la personne ayant créé votre compte. Vous devriez entrer en " | 998 | "Note : Votre mot de passe a été défini par la personne ayant créé votre " |
950 | "contact avec cette personne pour connaître votre mot de passe et le changer dès que possible" | 999 | "compte. Vous devriez entrer en contact avec cette personne pour connaître " |
1000 | "votre mot de passe et le changer dès que possible" | ||
951 | 1001 | ||
952 | msgid "The new user %1$s has been sent an email at %2$s. You may have to check spam folder." | 1002 | msgid "" |
1003 | "The new user %1$s has been sent an email at %2$s. You may have to check spam " | ||
1004 | "folder." | ||
953 | msgstr "" | 1005 | msgstr "" |
954 | "Un email a été envoyé au nouvel utilisateur %1$s à l'adresse %2$s. Il peut être nécessaire de vérifier " | 1006 | "Un email a été envoyé au nouvel utilisateur %1$s à l'adresse %2$s. Il peut " |
955 | "le dossier des spams." | 1007 | "être nécessaire de vérifier le dossier des spams." |
956 | 1008 | ||
957 | msgid "A problem has been encountered while sending the confirmation email" | 1009 | msgid "A problem has been encountered while sending the confirmation email" |
958 | msgstr "Un problème a été rencontré lors de l'envoi de l'email de confirmation" | 1010 | msgstr "Un problème a été rencontré lors de l'envoi de l'email de confirmation" |
959 | 1011 | ||
960 | msgid "The server did not authorize sending a confirmation email, but the user was created." | 1012 | msgid "" |
961 | msgstr "Le serveur n'autorise pas l'envoi d'un email de confirmation, mais l'utilisateur a été créé." | 1013 | "The server did not authorize sending a confirmation email, but the user was " |
1014 | "created." | ||
1015 | msgstr "" | ||
1016 | "Le serveur n'autorise pas l'envoi d'un email de confirmation, mais " | ||
1017 | "l'utilisateur a été créé." | ||
962 | 1018 | ||
963 | msgid "The user was created, but no email was sent because email was not filled in" | 1019 | msgid "" |
964 | msgstr "L'utilisateur a été créé, mais aucun mail n'a été envoyé car l'email n'était pas renseigné" | 1020 | "The user was created, but no email was sent because email was not filled in" |
1021 | msgstr "" | ||
1022 | "L'utilisateur a été créé, mais aucun mail n'a été envoyé car l'email n'était " | ||
1023 | "pas renseigné" | ||
965 | 1024 | ||
966 | msgid "Mail function is disabled. You can't send emails from your server" | 1025 | msgid "Mail function is disabled. You can't send emails from your server" |
967 | msgstr "La fonction mail est désactivée. Vous ne pouvez pas envoyer d'E-mails depuis votre serveur" | 1026 | msgstr "" |
1027 | "La fonction mail est désactivée. Vous ne pouvez pas envoyer d'E-mails depuis " | ||
1028 | "votre serveur" | ||
968 | 1029 | ||
969 | msgid "You didn't set your kindle's email adress !" | 1030 | msgid "You didn't set your kindle's email adress !" |
970 | msgstr "Vous n'avez pas renseigné l'adresse E-mail de votre Kindle !" | 1031 | msgstr "Vous n'avez pas renseigné l'adresse E-mail de votre Kindle !" |
diff --git a/themes/_global/js/keyboard.js b/themes/_global/js/keyboard.js index 4469248d..04000f47 100644 --- a/themes/_global/js/keyboard.js +++ b/themes/_global/js/keyboard.js | |||
@@ -63,6 +63,9 @@ function actionArticle(id) { | |||
63 | case 77: | 63 | case 77: |
64 | markReadArticle(id); // m key letter | 64 | markReadArticle(id); // m key letter |
65 | break; | 65 | break; |
66 | case 78: | ||
67 | markReadAndNextArticle(id); // n letter | ||
68 | break; | ||
66 | } | 69 | } |
67 | 70 | ||
68 | }, false); | 71 | }, false); |
@@ -86,6 +89,12 @@ function markReadArticle(id) { | |||
86 | } | 89 | } |
87 | } | 90 | } |
88 | 91 | ||
92 | function markReadAndNextArticle(id) { | ||
93 | if (id) { | ||
94 | window.location = window.location.origin + window.location.pathname + '?action=archive_and_next&id=' + id; | ||
95 | } | ||
96 | } | ||
97 | |||
89 | function homeNavigation() { | 98 | function homeNavigation() { |
90 | selectedArticle = $('.entrie:first'); | 99 | selectedArticle = $('.entrie:first'); |
91 | window.addEventListener("keydown", function (event) { | 100 | window.addEventListener("keydown", function (event) { |
@@ -144,5 +153,7 @@ function goSelectPrev(selectedArticle,number) { | |||
144 | } | 153 | } |
145 | 154 | ||
146 | function enterArticle(selectedArticle) { | 155 | function enterArticle(selectedArticle) { |
147 | window.location = selectedArticle.find('a:first').attr('href'); | 156 | if (!$("#bagit").hasClass("current")) { |
157 | window.location = selectedArticle.find('a:first').attr('href'); | ||
158 | } | ||
148 | } \ No newline at end of file | 159 | } \ No newline at end of file |
diff --git a/themes/baggy/config.twig b/themes/baggy/config.twig index 2e40178e..6f55cd75 100755 --- a/themes/baggy/config.twig +++ b/themes/baggy/config.twig | |||
@@ -17,7 +17,7 @@ | |||
17 | <h3>{% trans "Browser Addons" %}</h3> | 17 | <h3>{% trans "Browser Addons" %}</h3> |
18 | <ul> | 18 | <ul> |
19 | <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans "Standard Firefox Add-On" %}</a></li> | 19 | <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans "Standard Firefox Add-On" %}</a></li> |
20 | <li><button onclick="activateSocialFeature(this)">{% trans "Mozilla Services (Social API) Extension" %}</button></li> | 20 | {% if https %}<li><button onclick="activateSocialFeature(this)">{% trans "Mozilla Services (Social API) Extension" %}</button></li>{% else %}<li>{% trans "Mozilla Services (Social API) Extension needs an https connection" %}</li>{% endif %} |
21 | <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans "Chrome Extension" %}</a></li> | 21 | <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans "Chrome Extension" %}</a></li> |
22 | </ul> | 22 | </ul> |
23 | <h3>{% trans "Mobile Apps" %}</h3> | 23 | <h3>{% trans "Mobile Apps" %}</h3> |
diff --git a/themes/default/config.twig b/themes/default/config.twig index e39826c3..24e3e570 100755 --- a/themes/default/config.twig +++ b/themes/default/config.twig | |||
@@ -17,7 +17,7 @@ | |||
17 | <h3>Browser Plugins</h3> | 17 | <h3>Browser Plugins</h3> |
18 | <ul> | 18 | <ul> |
19 | <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans "Standard Firefox Add-On" %}</a></li> | 19 | <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans "Standard Firefox Add-On" %}</a></li> |
20 | <li><button onclick="activateSocialFeature(this)">{% trans "Mozilla Services (Social API) Extension" %}</button></li> | 20 | {% if https %}<li><button onclick="activateSocialFeature(this)">{% trans "Mozilla Services (Social API) Extension" %}</button></li>{% else %}<li>{% trans "Mozilla Services (Social API) Extension needs an https connection" %}</li>{% endif %} |
21 | <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans "Chrome Extension" %}</a></li> | 21 | <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans "Chrome Extension" %}</a></li> |
22 | </ul> | 22 | </ul> |
23 | <h3>Mobile Apps</h3> | 23 | <h3>Mobile Apps</h3> |